From 662633e47533725fb5f4d7a1e05cb76af2d6878a Mon Sep 17 00:00:00 2001 From: Keegan Date: Sat, 30 May 2026 11:36:30 -0400 Subject: [PATCH 01/17] Add ERC1155 marketplace implementation --- abis/ERC1155ApprovalManager.json | 1 + abis/IERC1155ApprovalManager.json | 1 + abis/IRareERC1155.json | 1 + abis/IRareERC1155ContractFactory.json | 1 + abis/IRareERC1155Marketplace.json | 1 + abis/MarketUtils.json | 2 +- abis/MarketUtilsV2.json | 2 +- abis/RareERC1155.json | 1 + abis/RareERC1155ContractFactory.json | 1 + abis/RareERC1155Marketplace.json | 1 + abis/SuperRareBazaarBase.json | 2 +- .../ApprovalManagerDeploy.s.sol | 10 +- .../RareERC1155MarketplaceDeploy.s.sol | 62 + .../RareERC1155MarketplaceLogicUpdate.s.sol | 29 + .../ERC1155/RareERC1155FactoryDeploy.s.sol | 33 + src/bazaar/SuperRareBazaarBase.sol | 453 ++- src/marketplace/IRareERC1155Marketplace.sol | 617 ++++ src/marketplace/RareERC1155Marketplace.sol | 1073 +++++++ src/test/bazaar/BazaarBase.t.sol | 1131 ++++--- .../marketplace/RareERC1155Marketplace.t.sol | 1181 +++++++ src/test/token/ERC1155/RareERC1155.t.sol | 182 ++ src/test/utils/MarketUtils.t.sol | 1150 +++---- .../v2/approver/ERC1155ApprovalManager.t.sol | 193 ++ src/test/v2/utils/MarketUtilsV2.t.sol | 2797 ++++++++--------- src/token/ERC1155/IRareERC1155.sol | 180 ++ .../ERC1155/IRareERC1155ContractFactory.sol | 48 + src/token/ERC1155/RareERC1155.sol | 294 ++ .../ERC1155/RareERC1155ContractFactory.sol | 56 + src/utils/MarketUtils.sol | 436 +-- .../ERC1155/ERC1155ApprovalManager.sol | 112 + .../ERC1155/IERC1155ApprovalManager.sol | 70 + src/v2/utils/MarketUtilsV2.sol | 628 ++-- 32 files changed, 7432 insertions(+), 3317 deletions(-) create mode 100644 abis/ERC1155ApprovalManager.json create mode 100644 abis/IERC1155ApprovalManager.json create mode 100644 abis/IRareERC1155.json create mode 100644 abis/IRareERC1155ContractFactory.json create mode 100644 abis/IRareERC1155Marketplace.json create mode 100644 abis/RareERC1155.json create mode 100644 abis/RareERC1155ContractFactory.json create mode 100644 abis/RareERC1155Marketplace.json create mode 100644 script/marketplace/RareERC1155MarketplaceDeploy.s.sol create mode 100644 script/marketplace/RareERC1155MarketplaceLogicUpdate.s.sol create mode 100644 script/token/ERC1155/RareERC1155FactoryDeploy.s.sol create mode 100644 src/marketplace/IRareERC1155Marketplace.sol create mode 100644 src/marketplace/RareERC1155Marketplace.sol create mode 100644 src/test/marketplace/RareERC1155Marketplace.t.sol create mode 100644 src/test/token/ERC1155/RareERC1155.t.sol create mode 100644 src/test/v2/approver/ERC1155ApprovalManager.t.sol create mode 100644 src/token/ERC1155/IRareERC1155.sol create mode 100644 src/token/ERC1155/IRareERC1155ContractFactory.sol create mode 100644 src/token/ERC1155/RareERC1155.sol create mode 100644 src/token/ERC1155/RareERC1155ContractFactory.sol create mode 100644 src/v2/approver/ERC1155/ERC1155ApprovalManager.sol create mode 100644 src/v2/approver/ERC1155/IERC1155ApprovalManager.sol diff --git a/abis/ERC1155ApprovalManager.json b/abis/ERC1155ApprovalManager.json new file mode 100644 index 0000000..87aa2dc --- /dev/null +++ b/abis/ERC1155ApprovalManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MANAGER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"batchGrantOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchRevokeOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disable","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"disabler","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ContractDisabledError","inputs":[]},{"type":"error","name":"NotManager","inputs":[{"name":"caller","type":"address","internalType":"address"}]},{"type":"error","name":"NotOperator","inputs":[]}],"bytecode":{"object":"0x60806040818152346100ed576000808052602091818352808220338352835260ff8183205416156100b7575b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0892838352828152818320338452815260ff82842054161561007e575b6001805460ff19169055610fa885816100f38239f35b83835282815281832090338452528120600160ff19825416179055339160008051602061109b833981519152339280a438808080610068565b8180528183528082203383528352808220600160ff1982541617905533338360008051602061109b8339815191528180a461002b565b600080fdfe60e060a060408152816040526004918236101561001b57600080fd5b600092833560e01c91826301eed9b1146108615750816301ffc9a71461080a5781631e48244714610774578163248a9ca31461074757816327ac0c58146106f65781632f2770db146106835781632f2ff15d146105d957816336568abe146105465781637ee7f69b146103ad57816391d1485414610364578163a217fddf14610348578163b219f7d7146102de578163d547741f1461029a578163eb46c45b1461015e57508063ec87621c14610135578063ee070805146101115763f5b541a6146100e557600080fd5b3461010d578160031936011261010d576020905151600080516020610f538339815191528152f35b5080fd5b503461010d578160031936011261010d5760209060ff600154169051519015158152f35b503461010d578160031936011261010d576020905151600080516020610f338339815191528152f35b8391503461010d5760c036600319011261010d5761017a610939565b9261018361094f565b61018b610965565b9260a4356001600160401b038111610296576101aa903690830161097b565b92909660ff6001541661028557600080516020610f5383398151915287528660205284518088203360005260205260ff816000205416156102765750869760018060a01b0380921692833b15610272576102428996928793858a51519b8c998a988997637921219560e11b895216908701521660248501526064356044850152608435606485015289608485015260a4840191610eed565b03925af190811561026857506102555750f35b61025e90610cec565b6102655780f35b80fd5b51513d84823e3d90fd5b8880fd5b51631f0853c160e21b81528390fd5b845151631a8854fd60e31b81528390fd5b8580fd5b919050346102da5780513660031901126102da576102d791356102d260016102c061094f565b938387528660205251862001546109a8565b610e4d565b80f35b8280fd5b9050346102da5760203660031901126102da576102f9610939565b91600080516020610f33833981519152845283602052518084203360005260205260ff8160002054161561033157836102d784610db3565b602492505190632a19e83360e01b82523390820152fd5b50503461010d578160031936011261010d575151908152602090f35b8391503461010d57825136600319011261010d5760209261038361094f565b91358352828452518092209060018060a01b0316600052825260ff81600020541690519015158152f35b83833461010d5760c0906003198281360112610542576103cb610939565b906103d461094f565b916103dd610965565b6080526001600160401b039260643584811161053e576104009036908a01610904565b93909260843586811161053a5761041a9036908c01610904565b9660a435908111610536576104329036908d0161097b565b97909560ff6001541661052557600080516020610f538339815191528c528b6020528b60ff8b5182818094203382526020522054161561051657509a9b999a98998c996001600160a01b0394851698893b156105125760a48e8e886104c7966104d99a6104f09d845151808752631759616b60e11b905216908451015260805116602483510152604482510152510191610f0e565b918b5160648682860301910152610f0e565b906084895191828403019101528751948593610eed565b0390838651915af19081156102685750610508575080f35b6102d79051610cec565b8b80fd5b51631f0853c160e21b81528d90fd5b895151631a8854fd60e31b81528d90fd5b8a80fd5b8980fd5b8780fd5b8380fd5b83833461010d5751918260031936011261010d5761056261094f565b90336001600160a01b0383160361057e57906102d79135610e4d565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b9050346102da578151908160031936011261054257359161060e60016105fd61094f565b9385875286602052862001546109a8565b82845283602052518084209160018060a01b03169182855260205260ff818520541615610639578380f35b828452836020528084208285526020528320600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8480a43880808380f35b919050346102da57826003193601126102da57600080516020610f338339815191528352826020525180832033845260205260ff8184205416156103315782600160ff1981541617600155337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd8280a280f35b9050346102da5760203660031901126102da57610711610939565b91600080516020610f338339815191528452836020525180842033855260205260ff81852054161561033157836102d784610d15565b9050346102da5760203660031901126102da57602092916001913583528284525180922001549051908152f35b9050346102da5760203660031901126102da5780356001600160401b038111610542576107a49036908301610904565b919092600080516020610f338339815191528552846020525180852033865260205260ff818620541615610331575050825b8181106107e1578380f35b806108006107fb6107f6610805948688610ec9565b610ed9565b610db3565b610ea4565b6107d6565b9050346102da5760203660031901126102da57359063ffffffff60e01b82168092036102da5760209250637965db0b60e01b8214918215610850575b5051519015158152f35b6301ffc9a760e01b14915038610846565b849250346102da5760203660031901126102da5781356001600160401b038111610542576108929036908401610904565b919092600080516020610f338339815191528552846020526040852033865260205260ff604086205416156108ef575050825b8181106108d0578380f35b806108006108e56107f66108ea948688610ec9565b610d15565b6108c5565b632a19e83360e01b8252339082015260249150fd5b9181601f84011215610934578235916001600160401b038311610934576020808501948460051b01011161093457565b600080fd5b600435906001600160a01b038216820361093457565b602435906001600160a01b038216820361093457565b604435906001600160a01b038216820361093457565b9181601f84011215610934578235916001600160401b038311610934576020838186019501011161093457565b6000818152602091818352604092838320338452815260ff8484205416156109d05750505050565b83516001600160401b03939092336060850186811186821017610cb5578752602a85528385019187368437855115610ca15760308353855191600192831015610c8d576078602188015360295b838111610c235750610b4d578751906080820182811089821117610c0f57895260428252858201926060368537825115610bfb57603084538251811015610bfb57607860218401536041905b808211610b8f575050610b4d5791610ae294939188936067989951968793610ab88886019a76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8c525180926037880190610cc9565b8401917001034b99036b4b9b9b4b733903937b6329607d1b60378401525180936048840190610cc9565b0103602881018552601f19968791011684019684881090881117610b39575092610b3060449593601f938880975262461bcd60e51b8752600487015251809281602488015287870190610cc9565b01168101030190fd5b634e487b7160e01b81526041600452602490fd5b60648589519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015610be7576f181899199a1a9b1b9c1cb0b131b232b360811b901a610bbe8486610e7d565b5360041c918015610bd3576000190190610a69565b634e487b7160e01b87526011600452602487fd5b634e487b7160e01b88526032600452602488fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b86526041600452602486fd5b90600f81166010811015610c79576f181899199a1a9b1b9c1cb0b131b232b360811b901a610c51838a610e7d565b5360041c908015610c655760001901610a1d565b634e487b7160e01b86526011600452602486fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b84526032600452602484fd5b634e487b7160e01b84526041600452602484fd5b60005b838110610cdc5750506000910152565b8181015183820152602001610ccc565b6001600160401b038111610cff57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b031660008181527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f6020526040812054909190600080516020610f538339815191529060ff1615610d6c57505050565b808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4565b6001600160a01b031660008181527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f6020526040812054909190600080516020610f538339815191529060ff16610e0957505050565b80835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416610e0957505050565b908151811015610e8e570160200190565b634e487b7160e01b600052603260045260246000fd5b6000198114610eb35760010190565b634e487b7160e01b600052601160045260246000fd5b9190811015610e8e5760051b0190565b356001600160a01b03811681036109345790565b908060209392818452848401376000828201840152601f01601f1916010190565b81835290916001600160fb1b0383116109345760209260051b80928483013701019056fe241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0897667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929a2646970667358221220ab138f897f93ba50f6d43f3b70edf45f1b4ea413c7bb5ece5694d2dc865eceb164736f6c634300081200332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","sourceMap":"547:4180:76:-:0;;;;;;;;2198:4:37;547:4180:76;;;;;;;;;;;1173:10;547:4180;;;;;;;;;;7669:23:37;7665:149;;-1:-1:-1;711:25:76;547:4180;;;;;;;;;;1173:10;547:4180;;;;;;;;;;7669:23:37;7665:149;;-1:-1:-1;1410:16:76;711:25;;-1:-1:-1;;711:25:76;;;547:4180;711:25;547:4180;;711:25;547:4180;;7665:149:37;547:4180:76;;;;;;;;;1173:10;;547:4180;;;;;7740:4:37;711:25:76;;;;;;;;1173:10;;-1:-1:-1;;;;;;;;;;;1173:10:76;7763:40:37;;;7665:149;;;;;;;547:4180:76;;;;;;;;;1173:10;547:4180;;;;;;;7740:4:37;711:25:76;;;;;;;;1173:10;;7763:40:37;-1:-1:-1;;;;;;;;;;;7763:40:37;;;7665:149;;547:4180:76;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60e060a060408152816040526004918236101561001b57600080fd5b600092833560e01c91826301eed9b1146108615750816301ffc9a71461080a5781631e48244714610774578163248a9ca31461074757816327ac0c58146106f65781632f2770db146106835781632f2ff15d146105d957816336568abe146105465781637ee7f69b146103ad57816391d1485414610364578163a217fddf14610348578163b219f7d7146102de578163d547741f1461029a578163eb46c45b1461015e57508063ec87621c14610135578063ee070805146101115763f5b541a6146100e557600080fd5b3461010d578160031936011261010d576020905151600080516020610f538339815191528152f35b5080fd5b503461010d578160031936011261010d5760209060ff600154169051519015158152f35b503461010d578160031936011261010d576020905151600080516020610f338339815191528152f35b8391503461010d5760c036600319011261010d5761017a610939565b9261018361094f565b61018b610965565b9260a4356001600160401b038111610296576101aa903690830161097b565b92909660ff6001541661028557600080516020610f5383398151915287528660205284518088203360005260205260ff816000205416156102765750869760018060a01b0380921692833b15610272576102428996928793858a51519b8c998a988997637921219560e11b895216908701521660248501526064356044850152608435606485015289608485015260a4840191610eed565b03925af190811561026857506102555750f35b61025e90610cec565b6102655780f35b80fd5b51513d84823e3d90fd5b8880fd5b51631f0853c160e21b81528390fd5b845151631a8854fd60e31b81528390fd5b8580fd5b919050346102da5780513660031901126102da576102d791356102d260016102c061094f565b938387528660205251862001546109a8565b610e4d565b80f35b8280fd5b9050346102da5760203660031901126102da576102f9610939565b91600080516020610f33833981519152845283602052518084203360005260205260ff8160002054161561033157836102d784610db3565b602492505190632a19e83360e01b82523390820152fd5b50503461010d578160031936011261010d575151908152602090f35b8391503461010d57825136600319011261010d5760209261038361094f565b91358352828452518092209060018060a01b0316600052825260ff81600020541690519015158152f35b83833461010d5760c0906003198281360112610542576103cb610939565b906103d461094f565b916103dd610965565b6080526001600160401b039260643584811161053e576104009036908a01610904565b93909260843586811161053a5761041a9036908c01610904565b9660a435908111610536576104329036908d0161097b565b97909560ff6001541661052557600080516020610f538339815191528c528b6020528b60ff8b5182818094203382526020522054161561051657509a9b999a98998c996001600160a01b0394851698893b156105125760a48e8e886104c7966104d99a6104f09d845151808752631759616b60e11b905216908451015260805116602483510152604482510152510191610f0e565b918b5160648682860301910152610f0e565b906084895191828403019101528751948593610eed565b0390838651915af19081156102685750610508575080f35b6102d79051610cec565b8b80fd5b51631f0853c160e21b81528d90fd5b895151631a8854fd60e31b81528d90fd5b8a80fd5b8980fd5b8780fd5b8380fd5b83833461010d5751918260031936011261010d5761056261094f565b90336001600160a01b0383160361057e57906102d79135610e4d565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b9050346102da578151908160031936011261054257359161060e60016105fd61094f565b9385875286602052862001546109a8565b82845283602052518084209160018060a01b03169182855260205260ff818520541615610639578380f35b828452836020528084208285526020528320600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8480a43880808380f35b919050346102da57826003193601126102da57600080516020610f338339815191528352826020525180832033845260205260ff8184205416156103315782600160ff1981541617600155337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd8280a280f35b9050346102da5760203660031901126102da57610711610939565b91600080516020610f338339815191528452836020525180842033855260205260ff81852054161561033157836102d784610d15565b9050346102da5760203660031901126102da57602092916001913583528284525180922001549051908152f35b9050346102da5760203660031901126102da5780356001600160401b038111610542576107a49036908301610904565b919092600080516020610f338339815191528552846020525180852033865260205260ff818620541615610331575050825b8181106107e1578380f35b806108006107fb6107f6610805948688610ec9565b610ed9565b610db3565b610ea4565b6107d6565b9050346102da5760203660031901126102da57359063ffffffff60e01b82168092036102da5760209250637965db0b60e01b8214918215610850575b5051519015158152f35b6301ffc9a760e01b14915038610846565b849250346102da5760203660031901126102da5781356001600160401b038111610542576108929036908401610904565b919092600080516020610f338339815191528552846020526040852033865260205260ff604086205416156108ef575050825b8181106108d0578380f35b806108006108e56107f66108ea948688610ec9565b610d15565b6108c5565b632a19e83360e01b8252339082015260249150fd5b9181601f84011215610934578235916001600160401b038311610934576020808501948460051b01011161093457565b600080fd5b600435906001600160a01b038216820361093457565b602435906001600160a01b038216820361093457565b604435906001600160a01b038216820361093457565b9181601f84011215610934578235916001600160401b038311610934576020838186019501011161093457565b6000818152602091818352604092838320338452815260ff8484205416156109d05750505050565b83516001600160401b03939092336060850186811186821017610cb5578752602a85528385019187368437855115610ca15760308353855191600192831015610c8d576078602188015360295b838111610c235750610b4d578751906080820182811089821117610c0f57895260428252858201926060368537825115610bfb57603084538251811015610bfb57607860218401536041905b808211610b8f575050610b4d5791610ae294939188936067989951968793610ab88886019a76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8c525180926037880190610cc9565b8401917001034b99036b4b9b9b4b733903937b6329607d1b60378401525180936048840190610cc9565b0103602881018552601f19968791011684019684881090881117610b39575092610b3060449593601f938880975262461bcd60e51b8752600487015251809281602488015287870190610cc9565b01168101030190fd5b634e487b7160e01b81526041600452602490fd5b60648589519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015610be7576f181899199a1a9b1b9c1cb0b131b232b360811b901a610bbe8486610e7d565b5360041c918015610bd3576000190190610a69565b634e487b7160e01b87526011600452602487fd5b634e487b7160e01b88526032600452602488fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b86526041600452602486fd5b90600f81166010811015610c79576f181899199a1a9b1b9c1cb0b131b232b360811b901a610c51838a610e7d565b5360041c908015610c655760001901610a1d565b634e487b7160e01b86526011600452602486fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b84526032600452602484fd5b634e487b7160e01b84526041600452602484fd5b60005b838110610cdc5750506000910152565b8181015183820152602001610ccc565b6001600160401b038111610cff57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b031660008181527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f6020526040812054909190600080516020610f538339815191529060ff1615610d6c57505050565b808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4565b6001600160a01b031660008181527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f6020526040812054909190600080516020610f538339815191529060ff16610e0957505050565b80835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416610e0957505050565b908151811015610e8e570160200190565b634e487b7160e01b600052603260045260246000fd5b6000198114610eb35760010190565b634e487b7160e01b600052601160045260246000fd5b9190811015610e8e5760051b0190565b356001600160a01b03811681036109345790565b908060209392818452848401376000828201840152601f01601f1916010190565b81835290916001600160fb1b0383116109345760209260051b80928483013701019056fe241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0897667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929a2646970667358221220ab138f897f93ba50f6d43f3b70edf45f1b4ea413c7bb5ece5694d2dc865eceb164736f6c63430008120033","sourceMap":"547:4180:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;929:29;547:4180;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;547:4180:76;;;;;;;;;;;:::i;:::-;;;;;;;;1637:44;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;;;3786:10;547:4180;;;;;;;;;;3762:35;3758:61;;547:4180;;;;;;;;;;;3981:52;;;;;;547:4180;;;;;;;;;;;;;;;;;;;;3981:52;;547:4180;3981:52;;;547:4180;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3981:52;;;;;;;;;;;;547:4180;;3981:52;;;;:::i;:::-;547:4180;;3981:52;547:4180;;;;3981:52;547:4180;;;;;;;;;3981:52;547:4180;;;3758:61;547:4180;-1:-1:-1;;;3806:13:76;;547:4180;;3806:13;1637:44;547:4180;;;-1:-1:-1;;;1658:23:76;;547:4180;;1658:23;547:4180;;;;;;;;;;;;;;-1:-1:-1;;547:4180:76;;;;5486:7:37;547:4180:76;;2642:4:37;547:4180:76;;;:::i;:::-;;;;;;;;;;;4604:22:37;547:4180:76;2642:4:37;:::i;:::-;5486:7;:::i;:::-;547:4180:76;;;;;;;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;2737:8;;;;:::i;1910:69::-;547:4180;;;;1957:22;;;;;;1937:10;1957:22;;;547:4180;1957:22;547:4180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;;;;;547:4180:76;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;1641:8;547:4180;;1637:44;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;;;;;;;4463:10;547:4180;;;;;;;4439:35;4435:61;;-1:-1:-1;547:4180:76;;;;;;;;-1:-1:-1;;;;;547:4180:76;;;;4659:59;;;;;547:4180;;;;;;;;;;;;;4659:59;;;547:4180;;;4659:59;;547:4180;4659:59;;;;547:4180;;;;;4659:59;;547:4180;;;4659:59;;547:4180;;4659:59;547:4180;;;:::i;:::-;4659:59;;;547:4180;;;;;;;;;;:::i;:::-;4659:59;547:4180;4659:59;;547:4180;;;;;;;;4659:59;;547:4180;;;;:::i;:::-;4659:59;;;;;;;;;;;;;;;;547:4180;;;4659:59;;;;;:::i;:::-;547:4180;;;4435:61;547:4180;-1:-1:-1;;;4483:13:76;;547:4180;;4483:13;1637:44;547:4180;;;-1:-1:-1;;;1658:23:76;;547:4180;;1658:23;547:4180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;719:10:52;;-1:-1:-1;;;;;547:4180:76;;6133:23:37;547:4180:76;;;6237:7:37;547:4180:76;;6237:7:37;:::i;547:4180:76:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;2642:4:37;547:4180:76;;;:::i;:::-;;;;;;;;;;4604:22:37;547:4180:76;2642:4:37;:::i;:::-;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7669:23:37;7665:149;;547:4180:76;;;7665:149:37;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;;719:10:52;7763:40:37;;;;;7665:149;;;547:4180:76;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;547:4180;2179:4;547:4180;;;;;;2179:4;547:4180;1937:10;2198:28;;;;547:4180;;;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;2482:8;;;;:::i;547:4180::-;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;;;;;;;;;;;;;;4604:22:37;547:4180:76;;;;;;;;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;-1:-1:-1;;;;;547:4180:76;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;3242:13;;;3257:20;;;;;;547:4180;;;3279:3;3402:12;;;;3279:3;3402:12;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;3279:3;:::i;:::-;3242:13;;547:4180;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2840:47:37;;;:87;;;;547:4180:76;;;;;;;;;;2840:87:37;-1:-1:-1;;;937:40:55;;-1:-1:-1;2840:87:37;;;547:4180:76;;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;-1:-1:-1;;;;;547:4180:76;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;2901:13;;;2916:20;;;;;;547:4180;;;2938:3;3063:12;;;;2938:3;3063:12;;;;:::i;:::-;;:::i;2938:3::-;2901:13;;1910:69;-1:-1:-1;;;1957:22:76;;1937:10;1957:22;;;547:4180;;;-1:-1:-1;1957:22:76;547:4180;;;;;;;;;;;;;-1:-1:-1;;;;;547:4180:76;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;547:4180:76;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;547:4180:76;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;547:4180:76;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;547:4180:76;;;;;;;;;;;;;;;:::o;3460:103:37:-;3130:6;547:4180:76;;;;;;;;;;;;;719:10:52;547:4180:76;;;;;;;;;;3931:23:37;3927:390;;3460:103;;;;:::o;3927:390::-;547:4180:76;;-1:-1:-1;;;;;547:4180:76;;;719:10:52;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:15:53;;;547:4180:76;;;;;;;;;;2000:15:53;547:4180:76;;;2000:15:53;547:4180:76;2058:5:53;;;;;;2170:10;278:18;;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:15:53;;;547:4180:76;;;;;;;2000:15:53;547:4180:76;;;2000:15:53;547:4180:76;2025:128:53;2058:5;;;;;;2170:10;;278:18;;547:4180:76;;;;;;;;;;;4022:252:37;;;547:4180:76;4022:252:37;;;547:4180:76;-1:-1:-1;;;547:4180:76;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;547:4180:76;;;;;;;;;;;;:::i;:::-;;4022:252:37;;;;;;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:336:37;;2141:1:53;3970:336:37;;547:4180:76;;;;;;;;;;;;;;:::i;:::-;;;;;3970:336:37;;;;547:4180:76;-1:-1:-1;;;547:4180:76;;;2141:1:53;547:4180:76;;;;278:18:53;;547:4180:76;;;;;;;278:18:53;;;2141:1;278:18;;;;;;547:4180:76;278:18:53;547:4180:76;;;278:18:53;;2065:3;2105:11;;2113:3;2105:11;;2096:21;;;;;;-1:-1:-1;;;2096:21:53;;2084:33;;;;:::i;:::-;;2141:1;547:4180:76;2065:3:53;547:4180:76;;;;-1:-1:-1;;547:4180:76;;2030:26:53;;547:4180:76;-1:-1:-1;;;547:4180:76;;;2141:1:53;547:4180:76;;;;2096:21:53;-1:-1:-1;;;547:4180:76;;;2141:1:53;547:4180:76;;;;;-1:-1:-1;;;547:4180:76;;;2141:1:53;547:4180:76;;;;;-1:-1:-1;;;547:4180:76;;;2141:1:53;547:4180:76;;;;2065:3:53;2105:11;2113:3;2105:11;;2096:21;;;;;;-1:-1:-1;;;2096:21:53;;2084:33;;;;:::i;:::-;;2141:1;547:4180:76;2065:3:53;547:4180:76;;;;-1:-1:-1;;547:4180:76;2030:26:53;;547:4180:76;-1:-1:-1;;;547:4180:76;;;2141:1:53;547:4180:76;;;;2096:21:53;-1:-1:-1;;;547:4180:76;;;2141:1:53;547:4180:76;;;;;-1:-1:-1;;;547:4180:76;;;;;;;;;-1:-1:-1;;;547:4180:76;;;;;;;;;-1:-1:-1;;;547:4180:76;;;;;;;;;;;;;;;;-1:-1:-1;;547:4180:76;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;547:4180:76;;;;;;:::o;:::-;;;;;;;;;;;;7587:233:37;-1:-1:-1;;;;;547:4180:76;3130:6:37;547:4180:76;;;;;;;;;;3130:6:37;;547:4180:76;-1:-1:-1;;;;;;;;;;;846:26:76;547:4180;;7669:23:37;7665:149;;7587:233;;;:::o;7665:149::-;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;;;7763:40:37;719:10:52;7763:40:37;;;7587:233::o;7991:234::-;-1:-1:-1;;;;;547:4180:76;3130:6:37;547:4180:76;;;;;;;;;;3130:6:37;;547:4180:76;-1:-1:-1;;;;;;;;;;;846:26:76;547:4180;;8070:149:37;;7991:234;;;:::o;8070:149::-;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;8168:40:37;719:10:52;8168:40:37;;;7991:234::o;:::-;;3130:6;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8070:149:37;;7991:234;;;:::o;547:4180:76:-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;547:4180:76;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;547:4180:76;;;;;;;;-1:-1:-1;;547:4180:76;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;547:4180:76;;;;;;;;;;;;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","MANAGER_ROLE()":"ec87621c","OPERATOR_ROLE()":"f5b541a6","batchGrantOperatorRole(address[])":"01eed9b1","batchRevokeOperatorRole(address[])":"1e482447","disable()":"2f2770db","disabled()":"ee070805","getRoleAdmin(bytes32)":"248a9ca3","grantOperatorRole(address)":"27ac0c58","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeOperatorRole(address)":"b219f7d7","revokeRole(bytes32,address)":"d547741f","safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":"7ee7f69b","safeTransferFrom(address,address,address,uint256,uint256,bytes)":"eb46c45b","supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ContractDisabledError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"NotManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disabler\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchGrantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchRevokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"grantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Users approve this manager on ERC1155 collections, and operator contracts execute transfers through it.\",\"errors\":{\"NotManager(address)\":[{\"params\":{\"caller\":\"The account that attempted a manager-only operation.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"disabler\":\"The manager that disabled the approval manager.\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to grant the role to.\"}},\"batchRevokeOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to revoke the role from.\"}},\"disable()\":{\"details\":\"Callable by an account with the manager role.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to grant the role to.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to revoke the role from.\"}},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"params\":{\"amounts\":\"The amounts of each token id to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"ids\":\"The token ids to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount of tokens to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"id\":\"The token id to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"title\":\"ERC1155ApprovalManager\",\"version\":1},\"userdoc\":{\"errors\":{\"ContractDisabledError()\":[{\"notice\":\"Error thrown when contract is disabled.\"}],\"NotManager(address)\":[{\"notice\":\"Error thrown when caller is not a manager.\"}],\"NotOperator()\":[{\"notice\":\"Error thrown when caller is not an operator.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Event emitted when contract is disabled.\"}},\"kind\":\"user\",\"methods\":{\"MANAGER_ROLE()\":{\"notice\":\"Role for managing operators.\"},\"OPERATOR_ROLE()\":{\"notice\":\"Role for contracts allowed to transfer tokens.\"},\"batchGrantOperatorRole(address[])\":{\"notice\":\"Grants operator transfer permissions to multiple contracts.\"},\"batchRevokeOperatorRole(address[])\":{\"notice\":\"Revokes operator transfer permissions from multiple contracts.\"},\"constructor\":{\"notice\":\"Grants deployer admin and manager roles.\"},\"disable()\":{\"notice\":\"Disables token transfers through the approval manager permanently.\"},\"disabled()\":{\"notice\":\"Whether the contract is disabled.\"},\"grantOperatorRole(address)\":{\"notice\":\"Grants operator transfer permissions to a contract.\"},\"revokeOperatorRole(address)\":{\"notice\":\"Revokes operator transfer permissions from a contract.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Safely transfer a batch of ERC1155 tokens from a user to a recipient.\"},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"notice\":\"Safely transfer ERC1155 tokens from a user to a recipient.\"}},\"notice\":\"A central approval manager for ERC1155 tokens that allows whitelisted contracts to transfer tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol\":\"ERC1155ApprovalManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xbc7fc49ba05b312e318d3d7b517ed0254489320bedef2e91f80c3bd4e904fc0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e411d112f89fcadbff89da0579d61eafdf76272aaa91fb18728a86337440bb88\",\"dweb:/ipfs/QmfKJqMJ2CF1mw4UwDajoFdrrfKWSZwetkAByUP56EeqSQ\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x2626d8ab3dfdad0fad630c212ad146d59473d0f48b771784c61a7c1dbbea1f3f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7c144532f1e7c76ac95fb6a8f617c1f740d7a73442a907eb60910e99dfa1fbf\",\"dweb:/ipfs/QmZsGyooD6emxB8JCuugRjnRYS2MPZEL586uuV7dgC8Jng\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4\",\"dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol\":{\"keccak256\":\"0x7c95928decb621e78548535c0603ca55c0b85021efbd7af0a8d287a9998db00c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ac51589d1c771a9591eb24f77e67812957228733baf985b68dd29df5a3a76fd\",\"dweb:/ipfs/QmbNSexx5ifBpSy2rs2PbTTaQ6Q3S1mVDHWLf9Bu5TmVJU\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ContractDisabledError"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"type":"error","name":"NotManager"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[{"internalType":"address","name":"disabler","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantOperatorRole"},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchRevokeOperatorRole"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disable"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantOperatorRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeOperatorRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"batchGrantOperatorRole(address[])":{"params":{"operators":"Contract addresses to grant the role to."}},"batchRevokeOperatorRole(address[])":{"params":{"operators":"Contract addresses to revoke the role from."}},"disable()":{"details":"Callable by an account with the manager role."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantOperatorRole(address)":{"params":{"operator":"The contract address to grant the role to."}},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event."},"revokeOperatorRole(address)":{"params":{"operator":"The contract address to revoke the role from."}},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"params":{"amounts":"The amounts of each token id to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","ids":"The token ids to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"params":{"amount":"The amount of tokens to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","id":"The token id to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"MANAGER_ROLE()":{"notice":"Role for managing operators."},"OPERATOR_ROLE()":{"notice":"Role for contracts allowed to transfer tokens."},"batchGrantOperatorRole(address[])":{"notice":"Grants operator transfer permissions to multiple contracts."},"batchRevokeOperatorRole(address[])":{"notice":"Revokes operator transfer permissions from multiple contracts."},"constructor":{"notice":"Grants deployer admin and manager roles."},"disable()":{"notice":"Disables token transfers through the approval manager permanently."},"disabled()":{"notice":"Whether the contract is disabled."},"grantOperatorRole(address)":{"notice":"Grants operator transfer permissions to a contract."},"revokeOperatorRole(address)":{"notice":"Revokes operator transfer permissions from a contract."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"notice":"Safely transfer a batch of ERC1155 tokens from a user to a recipient."},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"notice":"Safely transfer ERC1155 tokens from a user to a recipient."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol":"ERC1155ApprovalManager"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xbc7fc49ba05b312e318d3d7b517ed0254489320bedef2e91f80c3bd4e904fc0c","urls":["bzz-raw://e411d112f89fcadbff89da0579d61eafdf76272aaa91fb18728a86337440bb88","dweb:/ipfs/QmfKJqMJ2CF1mw4UwDajoFdrrfKWSZwetkAByUP56EeqSQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57","urls":["bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a","dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x2626d8ab3dfdad0fad630c212ad146d59473d0f48b771784c61a7c1dbbea1f3f","urls":["bzz-raw://d7c144532f1e7c76ac95fb6a8f617c1f740d7a73442a907eb60910e99dfa1fbf","dweb:/ipfs/QmZsGyooD6emxB8JCuugRjnRYS2MPZEL586uuV7dgC8Jng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b","urls":["bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d","dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858","urls":["bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4","dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc","urls":["bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7","dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6"],"license":"MIT"},"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol":{"keccak256":"0x7c95928decb621e78548535c0603ca55c0b85021efbd7af0a8d287a9998db00c","urls":["bzz-raw://4ac51589d1c771a9591eb24f77e67812957228733baf985b68dd29df5a3a76fd","dweb:/ipfs/QmbNSexx5ifBpSy2rs2PbTTaQ6Q3S1mVDHWLf9Bu5TmVJU"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"}},"version":1},"id":76} \ No newline at end of file diff --git a/abis/IERC1155ApprovalManager.json b/abis/IERC1155ApprovalManager.json new file mode 100644 index 0000000..3cfeb83 --- /dev/null +++ b/abis/IERC1155ApprovalManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"batchGrantOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchRevokeOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disable","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"grantOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"disabler","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ContractDisabledError","inputs":[]},{"type":"error","name":"NotManager","inputs":[{"name":"caller","type":"address","internalType":"address"}]},{"type":"error","name":"NotOperator","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"batchGrantOperatorRole(address[])":"01eed9b1","batchRevokeOperatorRole(address[])":"1e482447","disable()":"2f2770db","disabled()":"ee070805","grantOperatorRole(address)":"27ac0c58","revokeOperatorRole(address)":"b219f7d7","safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":"7ee7f69b","safeTransferFrom(address,address,address,uint256,uint256,bytes)":"eb46c45b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ContractDisabledError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"NotManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disabler\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchGrantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchRevokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"grantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"NotManager(address)\":[{\"params\":{\"caller\":\"The account that attempted a manager-only operation.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"disabler\":\"The manager that disabled the approval manager.\"}}},\"kind\":\"dev\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to grant the role to.\"}},\"batchRevokeOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to revoke the role from.\"}},\"disable()\":{\"details\":\"Callable by an account with the manager role.\"},\"disabled()\":{\"returns\":{\"_0\":\"True when token transfer execution is disabled.\"}},\"grantOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to grant the role to.\"}},\"revokeOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to revoke the role from.\"}},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"params\":{\"amounts\":\"The amounts of each token id to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"ids\":\"The token ids to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount of tokens to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"id\":\"The token id to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}}},\"title\":\"IERC1155ApprovalManager\",\"version\":1},\"userdoc\":{\"errors\":{\"ContractDisabledError()\":[{\"notice\":\"Error thrown when contract is disabled.\"}],\"NotManager(address)\":[{\"notice\":\"Error thrown when caller is not a manager.\"}],\"NotOperator()\":[{\"notice\":\"Error thrown when caller is not an operator.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Event emitted when contract is disabled.\"}},\"kind\":\"user\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"notice\":\"Grants operator transfer permissions to multiple contracts.\"},\"batchRevokeOperatorRole(address[])\":{\"notice\":\"Revokes operator transfer permissions from multiple contracts.\"},\"disable()\":{\"notice\":\"Disables token transfers through the approval manager permanently.\"},\"disabled()\":{\"notice\":\"Returns whether the approval manager is permanently disabled.\"},\"grantOperatorRole(address)\":{\"notice\":\"Grants operator transfer permissions to a contract.\"},\"revokeOperatorRole(address)\":{\"notice\":\"Revokes operator transfer permissions from a contract.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Safely transfer a batch of ERC1155 tokens from a user to a recipient.\"},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"notice\":\"Safely transfer ERC1155 tokens from a user to a recipient.\"}},\"notice\":\"Interface for managing ERC1155 token approvals and transfers.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":\"IERC1155ApprovalManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ContractDisabledError"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"type":"error","name":"NotManager"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[{"internalType":"address","name":"disabler","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantOperatorRole"},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchRevokeOperatorRole"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disable"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantOperatorRole"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeOperatorRole"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"}],"devdoc":{"kind":"dev","methods":{"batchGrantOperatorRole(address[])":{"params":{"operators":"Contract addresses to grant the role to."}},"batchRevokeOperatorRole(address[])":{"params":{"operators":"Contract addresses to revoke the role from."}},"disable()":{"details":"Callable by an account with the manager role."},"disabled()":{"returns":{"_0":"True when token transfer execution is disabled."}},"grantOperatorRole(address)":{"params":{"operator":"The contract address to grant the role to."}},"revokeOperatorRole(address)":{"params":{"operator":"The contract address to revoke the role from."}},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"params":{"amounts":"The amounts of each token id to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","ids":"The token ids to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"params":{"amount":"The amount of tokens to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","id":"The token id to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}}},"version":1},"userdoc":{"kind":"user","methods":{"batchGrantOperatorRole(address[])":{"notice":"Grants operator transfer permissions to multiple contracts."},"batchRevokeOperatorRole(address[])":{"notice":"Revokes operator transfer permissions from multiple contracts."},"disable()":{"notice":"Disables token transfers through the approval manager permanently."},"disabled()":{"notice":"Returns whether the approval manager is permanently disabled."},"grantOperatorRole(address)":{"notice":"Grants operator transfer permissions to a contract."},"revokeOperatorRole(address)":{"notice":"Revokes operator transfer permissions from a contract."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"notice":"Safely transfer a batch of ERC1155 tokens from a user to a recipient."},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"notice":"Safely transfer ERC1155 tokens from a user to a recipient."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":"IERC1155ApprovalManager"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"}},"version":1},"id":77} \ No newline at end of file diff --git a/abis/IRareERC1155.json b/abis/IRareERC1155.json new file mode 100644 index 0000000..0ac79a7 --- /dev/null +++ b/abis/IRareERC1155.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"},{"name":"_royaltyReceiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyReceiverForToken","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"_interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"},{"name":"royaltyReceiver","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"createToken(string,uint256)":"72b3b620","createToken(string,uint256,address)":"1542bb95","disableContract()":"894ba833","disabled()":"ee070805","init(string,string,string,address,address)":"a7eae21c","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","setRoyaltyReceiverForToken(address,uint256)":"efc32cd4","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"royaltyReceiver\",\"type\":\"address\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_royaltyReceiver\",\"type\":\"address\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"setRoyaltyReceiverForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Extends the RARE `ITokenCreator` interface so marketplace and royalty infrastructure can resolve creators per token id.\",\"errors\":{\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,uint256,string,address)\":{\"params\":{\"creator\":\"RARE creator recorded for the token id.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"royaltyReceiver\":\"ERC2981 royalty receiver configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}}},\"kind\":\"dev\",\"methods\":{\"createToken(string,uint256)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"createToken(string,uint256,address)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_royaltyReceiver\":\"Address that receives ERC2981 royalties for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"disabled()\":{\"returns\":{\"_0\":\"True when disabled.\"}},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and default royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"The minted token id.\"}},\"name()\":{\"returns\":{\"_0\":\"Collection name.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"setRoyaltyReceiverForToken(address,uint256)\":{\"params\":{\"_receiver\":\"New royalty receiver for the token id.\",\"_tokenId\":\"Token id whose royalty receiver is updated.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"Interface id to inspect.\"},\"returns\":{\"_0\":\"True when the interface id is supported.\"}},\"symbol()\":{\"returns\":{\"_0\":\"Collection symbol.\"}},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"title\":\"IRareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,uint256,string,address)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"createToken(string,uint256)\":{\"notice\":\"Creates a new token type using the caller as the royalty receiver.\"},\"createToken(string,uint256,address)\":{\"notice\":\"Creates a new token type with a token-specific URI, max supply, and royalty receiver.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints an existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the fallback royalty receiver for tokens that rely on default royalties.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes minter approval for an address.\"},\"setRoyaltyReceiverForToken(address,uint256)\":{\"notice\":\"Updates the royalty receiver for a specific token id.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Returns whether this contract supports an interface id.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Interface for the RARE Protocol ERC1155 token.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/IRareERC1155.sol\":\"IRareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x9dc23a2064e31818e89092b5935ab96079a99b29e1aa1456565ee698d3fd23a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5aaa41dbed645e29ec41a7159bee7a10519ebaa71fb86187bd109aba732db40\",\"dweb:/ipfs/Qma3yM1SZuHAxo6HS16uFMX1yVVqikkXX9v6n5op5Tss1V\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false},{"internalType":"address","name":"royaltyReceiver","type":"address","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"address","name":"_royaltyReceiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyReceiverForToken"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"createToken(string,uint256)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"createToken(string,uint256,address)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_royaltyReceiver":"Address that receives ERC2981 royalties for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"disabled()":{"returns":{"_0":"True when disabled."}},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and default royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"The minted token id."}},"name()":{"returns":{"_0":"Collection name."}},"setDefaultRoyaltyReceiver(address)":{"params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"setRoyaltyReceiverForToken(address,uint256)":{"params":{"_receiver":"New royalty receiver for the token id.","_tokenId":"Token id whose royalty receiver is updated."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"Interface id to inspect."},"returns":{"_0":"True when the interface id is supported."}},"symbol()":{"returns":{"_0":"Collection symbol."}},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"createToken(string,uint256)":{"notice":"Creates a new token type using the caller as the royalty receiver."},"createToken(string,uint256,address)":{"notice":"Creates a new token type with a token-specific URI, max supply, and royalty receiver."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintTo(address,uint256,uint256)":{"notice":"Mints an existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the fallback royalty receiver for tokens that rely on default royalties."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes minter approval for an address."},"setRoyaltyReceiverForToken(address,uint256)":{"notice":"Updates the royalty receiver for a specific token id."},"supportsInterface(bytes4)":{"notice":"Returns whether this contract supports an interface id."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/IRareERC1155.sol":"IRareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x9dc23a2064e31818e89092b5935ab96079a99b29e1aa1456565ee698d3fd23a6","urls":["bzz-raw://d5aaa41dbed645e29ec41a7159bee7a10519ebaa71fb86187bd109aba732db40","dweb:/ipfs/Qma3yM1SZuHAxo6HS16uFMX1yVVqikkXX9v6n5op5Tss1V"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":211} \ No newline at end of file diff --git a/abis/IRareERC1155ContractFactory.json b/abis/IRareERC1155ContractFactory.json new file mode 100644 index 0000000..d9139e9 --- /dev/null +++ b/abis/IRareERC1155ContractFactory.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"createRareERC1155Contract","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"}],"outputs":[{"name":"clone","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"defaultMinter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"rareERC1155","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setDefaultMinter","inputs":[{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRareERC1155","inputs":[{"name":"_rareERC1155","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefaultMinterUpdated","inputs":[{"name":"defaultMinter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155ContractCreated","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155Updated","inputs":[{"name":"rareERC1155","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"createRareERC1155Contract(string,string,string)":"8667f619","defaultMinter()":"389dee18","rareERC1155()":"014812a2","setDefaultMinter(address)":"18cf6f42","setRareERC1155(address)":"e2be1a08"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"defaultMinter\",\"type\":\"address\"}],\"name\":\"DefaultMinterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"RareERC1155ContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rareERC1155\",\"type\":\"address\"}],\"name\":\"RareERC1155Updated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createRareERC1155Contract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"clone\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultMinter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rareERC1155\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"setDefaultMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rareERC1155\",\"type\":\"address\"}],\"name\":\"setRareERC1155\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"events\":{\"DefaultMinterUpdated(address)\":{\"params\":{\"defaultMinter\":\"New default minter address. Zero address disables default minter approval.\"}},\"RareERC1155ContractCreated(address,address)\":{\"params\":{\"contractAddress\":\"Address of the newly created ERC1155 clone.\",\"owner\":\"Initial owner of the clone.\"}},\"RareERC1155Updated(address)\":{\"params\":{\"rareERC1155\":\"New ERC1155 implementation address.\"}}},\"kind\":\"dev\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"params\":{\"_baseURI\":\"Base URI used by the collection when a token id has no token-specific URI.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"},\"returns\":{\"clone\":\"Address of the newly created ERC1155 clone.\"}},\"defaultMinter()\":{\"returns\":{\"_0\":\"Default minter address. Zero address means no default minter.\"}},\"rareERC1155()\":{\"returns\":{\"_0\":\"ERC1155 implementation address.\"}},\"setDefaultMinter(address)\":{\"params\":{\"_defaultMinter\":\"Address approved to mint on newly created clones, or zero address for none.\"}},\"setRareERC1155(address)\":{\"params\":{\"_rareERC1155\":\"Address of the replacement implementation.\"}}},\"title\":\"IRareERC1155ContractFactory\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an implementation address is the zero address.\"}]},\"events\":{\"DefaultMinterUpdated(address)\":{\"notice\":\"Emitted when the owner changes the default minter for new clones.\"},\"RareERC1155ContractCreated(address,address)\":{\"notice\":\"Emitted when the factory creates and initializes a collection clone.\"},\"RareERC1155Updated(address)\":{\"notice\":\"Emitted when the owner changes the implementation cloned by the factory.\"}},\"kind\":\"user\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"notice\":\"Creates a new initialized ERC1155 collection clone.\"},\"defaultMinter()\":{\"notice\":\"Returns the optional minter approved on each newly created collection.\"},\"rareERC1155()\":{\"notice\":\"Returns the ERC1155 implementation address cloned by the factory.\"},\"setDefaultMinter(address)\":{\"notice\":\"Updates the optional minter approved during clone initialization.\"},\"setRareERC1155(address)\":{\"notice\":\"Updates the ERC1155 implementation address cloned by future factory calls.\"}},\"notice\":\"Interface for the RARE Protocol ERC1155 clone factory.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":\"IRareERC1155ContractFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":{\"keccak256\":\"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179\",\"dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"defaultMinter","type":"address","indexed":true}],"type":"event","name":"DefaultMinterUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"RareERC1155ContractCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"rareERC1155","type":"address","indexed":true}],"type":"event","name":"RareERC1155Updated","anonymous":false},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createRareERC1155Contract","outputs":[{"internalType":"address","name":"clone","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultMinter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rareERC1155","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultMinter"},{"inputs":[{"internalType":"address","name":"_rareERC1155","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRareERC1155"}],"devdoc":{"kind":"dev","methods":{"createRareERC1155Contract(string,string,string)":{"params":{"_baseURI":"Base URI used by the collection when a token id has no token-specific URI.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."},"returns":{"clone":"Address of the newly created ERC1155 clone."}},"defaultMinter()":{"returns":{"_0":"Default minter address. Zero address means no default minter."}},"rareERC1155()":{"returns":{"_0":"ERC1155 implementation address."}},"setDefaultMinter(address)":{"params":{"_defaultMinter":"Address approved to mint on newly created clones, or zero address for none."}},"setRareERC1155(address)":{"params":{"_rareERC1155":"Address of the replacement implementation."}}},"version":1},"userdoc":{"kind":"user","methods":{"createRareERC1155Contract(string,string,string)":{"notice":"Creates a new initialized ERC1155 collection clone."},"defaultMinter()":{"notice":"Returns the optional minter approved on each newly created collection."},"rareERC1155()":{"notice":"Returns the ERC1155 implementation address cloned by the factory."},"setDefaultMinter(address)":{"notice":"Updates the optional minter approved during clone initialization."},"setRareERC1155(address)":{"notice":"Updates the ERC1155 implementation address cloned by future factory calls."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/IRareERC1155ContractFactory.sol":"IRareERC1155ContractFactory"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/token/ERC1155/IRareERC1155ContractFactory.sol":{"keccak256":"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63","urls":["bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179","dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb"],"license":"MIT"}},"version":1},"id":212} \ No newline at end of file diff --git a/abis/IRareERC1155Marketplace.json b/abis/IRareERC1155Marketplace.json new file mode 100644 index 0000000..378b910 --- /dev/null +++ b/abis/IRareERC1155Marketplace.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"buy","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"cancelSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getDirectSaleConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Marketplace.DirectSaleConfig","components":[{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getERC1155ApprovalManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getMarketConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct MarketConfigV2.Config","components":[{"name":"networkBeneficiary","type":"address","internalType":"address"},{"name":"marketplaceSettings","type":"address","internalType":"contract IMarketplaceSettings"},{"name":"spaceOperatorRegistry","type":"address","internalType":"contract ISpaceOperatorRegistry"},{"name":"royaltyEngine","type":"address","internalType":"contract IRoyaltyEngineV1"},{"name":"payments","type":"address","internalType":"contract IPayments"},{"name":"approvedTokenRegistry","type":"address","internalType":"contract IApprovedTokenRegistry"},{"name":"stakingSettings","type":"address","internalType":"contract IStakingSettings"},{"name":"stakingRegistry","type":"address","internalType":"contract IRareStakingRegistry"},{"name":"erc20ApprovalManager","type":"address","internalType":"contract IERC20ApprovalManager"},{"name":"erc721ApprovalManager","type":"address","internalType":"contract IERC721ApprovalManager"}]}],"stateMutability":"view"},{"type":"function","name":"getSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Marketplace.SalePrice","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenAllowListConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Marketplace.AllowListConfig","components":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenMintsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"},{"name":"_marketplaceSettings","type":"address","internalType":"address"},{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"},{"name":"_royaltyEngine","type":"address","internalType":"address"},{"name":"_payments","type":"address","internalType":"address"},{"name":"_approvedTokenRegistry","type":"address","internalType":"address"},{"name":"_stakingSettings","type":"address","internalType":"address"},{"name":"_stakingRegistry","type":"address","internalType":"address"},{"name":"_erc20ApprovalManager","type":"address","internalType":"address"},{"name":"_erc721ApprovalManager","type":"address","internalType":"address"},{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mintDirectSale","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_proof","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"prepareMintDirectSale","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_startTime","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovedTokenRegistry","inputs":[{"name":"_approvedTokenRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setContractPaused","inputs":[{"name":"_isPaused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC1155ApprovalManager","inputs":[{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20ApprovalManager","inputs":[{"name":"_erc20ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC721ApprovalManager","inputs":[{"name":"_erc721ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketplaceSettings","inputs":[{"name":"_marketplaceSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkBeneficiary","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPayments","inputs":[{"name":"_payments","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyEngine","inputs":[{"name":"_royaltyEngine","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpaceOperatorRegistry","inputs":[{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingRegistry","inputs":[{"name":"_stakingRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingSettings","inputs":[{"name":"_stakingSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenAllowListConfig","inputs":[{"name":"_root","type":"bytes32","internalType":"bytes32"},{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"buy(address,uint256,address,address,uint256,uint256)":"6afaf006","cancelSalePrice(address,uint256)":"3f83e9e0","getDirectSaleConfig(address,uint256)":"6e2f4d8b","getERC1155ApprovalManager()":"c7c83d17","getMarketConfig()":"614bd944","getSalePrice(address,uint256,address)":"369679a4","getTokenAllowListConfig(address,uint256)":"bf3d90f8","getTokenMintLimit(address,uint256)":"8760251a","getTokenMintsPerAddress(address,uint256,address)":"28fbba03","getTokenTxLimit(address,uint256)":"552f791d","getTokenTxsPerAddress(address,uint256,address)":"5a501f8f","initialize(address,address,address,address,address,address,address,address,address,address,address)":"76902b83","isPaused()":"b187bd26","mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])":"99273b3d","prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])":"d5f339a8","setApprovedTokenRegistry(address)":"e4e87e3b","setContractPaused(bool)":"882796f1","setERC1155ApprovalManager(address)":"ff5c83a4","setERC20ApprovalManager(address)":"d7a9fb7c","setERC721ApprovalManager(address)":"d80b23e3","setMarketplaceSettings(address)":"176ab440","setNetworkBeneficiary(address)":"3492e5a8","setPayments(address)":"af231a58","setRoyaltyEngine(address)":"21ede032","setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])":"5faec406","setSpaceOperatorRegistry(address)":"7f358230","setStakingRegistry(address)":"2c740844","setStakingSettings(address)":"f1035744","setTokenAllowListConfig(bytes32,uint256,address,uint256)":"b64843b2","setTokenMintLimit(address,uint256,uint256)":"b8aefc63","setTokenTxLimit(address,uint256,uint256)":"7b2db4bb"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"buy\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"cancelSalePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDirectSaleConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155Marketplace.DirectSaleConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC1155ApprovalManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"contract IPayments\",\"name\":\"payments\",\"type\":\"address\"},{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IStakingSettings\",\"name\":\"stakingSettings\",\"type\":\"address\"},{\"internalType\":\"contract IRareStakingRegistry\",\"name\":\"stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IERC20ApprovalManager\",\"name\":\"erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC721ApprovalManager\",\"name\":\"erc721ApprovalManager\",\"type\":\"address\"}],\"internalType\":\"struct MarketConfigV2.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"getSalePrice\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155Marketplace.SalePrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenAllowListConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Marketplace.AllowListConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenMintLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getTokenMintsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenTxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getTokenTxsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"_proof\",\"type\":\"bytes32[]\"}],\"name\":\"mintDirectSale\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"prepareMintDirectSale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"}],\"name\":\"setApprovedTokenRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isPaused\",\"type\":\"bool\"}],\"name\":\"setContractPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC1155ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC20ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC721ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"}],\"name\":\"setMarketplaceSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"}],\"name\":\"setNetworkBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"}],\"name\":\"setPayments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"}],\"name\":\"setRoyaltyEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"setSalePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"}],\"name\":\"setSpaceOperatorRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"}],\"name\":\"setStakingRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"}],\"name\":\"setStakingSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"setTokenAllowListConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"setTokenMintLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"setTokenTxLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Primary sales are configured per `(collection, tokenId)`. Secondary listings are approval-based and keyed by `(collection, tokenId, seller)`. Secondary listings intentionally do not expire on-chain; they remain fillable until sold, cancelled, or made invalid by seller balance, ERC1155 approval, or currency policy.\",\"errors\":{\"AddressNotAllowlisted(address)\":[{\"params\":{\"_account\":\"Buyer account that failed allowlist verification.\"}}],\"ContractHasNoOwner(address)\":[{\"params\":{\"_contractAddress\":\"Contract that did not expose a valid `owner()`.\"}}],\"CurrencyMismatch(address,address)\":[{\"params\":{\"_configuredCurrency\":\"Currency stored in marketplace configuration.\",\"_suppliedCurrency\":\"Currency supplied by the caller.\"}}],\"CurrencyNotApproved(address)\":[{\"params\":{\"_currencyAddress\":\"Currency that failed approval.\"}}],\"DirectSaleNotConfigured(address,uint256)\":[{\"params\":{\"_contractAddress\":\"Collection address.\",\"_tokenId\":\"Token id missing a primary sale config.\"}}],\"ERC20FeeOnTransferUnsupported(address,uint256,uint256)\":[{\"params\":{\"_currencyAddress\":\"ERC20 token address.\",\"_expectedAmount\":\"Amount expected by the marketplace.\",\"_receivedAmount\":\"Amount actually received by the marketplace.\"}}],\"IncorrectETHAmount(uint256,uint256)\":[{\"params\":{\"_requiredAmount\":\"Amount required by the marketplace.\",\"_suppliedAmount\":\"Amount supplied as `msg.value`.\"}}],\"InsufficientTokenBalance(address,address,uint256,uint256,uint256)\":[{\"params\":{\"_account\":\"Account whose balance was checked.\",\"_availableQuantity\":\"Quantity available at check time.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_requestedQuantity\":\"Quantity required by the operation.\",\"_tokenId\":\"Token id whose balance was checked.\"}}],\"InvalidERC1155Contract(address)\":[{\"params\":{\"_contractAddress\":\"Collection address that failed validation.\"}}],\"InvalidERC1155Transfer(address,uint256,address,address,uint256)\":[{\"params\":{\"_buyer\":\"Buyer whose balance should increase.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_quantity\":\"Quantity that should be transferred.\",\"_seller\":\"Seller whose balance should decrease.\",\"_tokenId\":\"Token id transferred.\"}}],\"MarketConfigAddressCannotBeZero(bytes32)\":[{\"params\":{\"_field\":\"Name of the dependency field that was zero.\"}}],\"MarketplaceNotApproved(address,address)\":[{\"params\":{\"_account\":\"ERC1155 owner that must approve the marketplace.\",\"_contractAddress\":\"ERC1155 collection address.\"}}],\"MaxMintExceeded(uint256,uint256)\":[{\"params\":{\"_maxMints\":\"Configured max quantity per transaction.\",\"_requestedQuantity\":\"Requested mint quantity.\"}}],\"MintLimitExceeded(address,uint256,address,uint256,uint256,uint256)\":[{\"params\":{\"_account\":\"Buyer account.\",\"_contractAddress\":\"Collection address.\",\"_limit\":\"Configured mint limit.\",\"_mintedQuantity\":\"Quantity already minted by the account.\",\"_requestedQuantity\":\"Requested mint quantity.\",\"_tokenId\":\"Token id being minted.\"}}],\"NotContractOwner(address,address)\":[{\"params\":{\"_account\":\"Account that failed the owner check.\",\"_contractAddress\":\"Collection address whose owner was checked.\"}}],\"PayoutFailed(bytes)\":[{\"params\":{\"_revertData\":\"Raw revert data returned by the failed payout call.\"}}],\"PayoutLengthMismatch(uint256,uint256)\":[{\"params\":{\"_amountsLength\":\"Number of payout amounts supplied.\",\"_recipientsLength\":\"Number of payout recipients supplied.\"}}],\"PayoutTotalMismatch(uint256,uint256)\":[{\"params\":{\"_actualAmount\":\"Sum of supplied payout amounts.\",\"_expectedAmount\":\"Amount expected to be paid by the batch.\"}}],\"PlatformCommissionExceeded(uint256,uint256)\":[{\"params\":{\"_maxPlatformCommission\":\"Maximum supported platform commission percentage.\",\"_platformCommission\":\"Supplied primary platform commission percentage.\"}}],\"PriceMismatch(uint256,uint256)\":[{\"params\":{\"_configuredPrice\":\"Price stored in marketplace configuration.\",\"_suppliedPrice\":\"Price supplied by the caller.\"}}],\"QuantityExceedsSalePriceQuantity(uint256,uint256)\":[{\"params\":{\"_availableQuantity\":\"Quantity currently listed.\",\"_requestedQuantity\":\"Quantity requested by the buyer.\"}}],\"RoyaltiesExceedSaleAmount(uint256,uint256)\":[{\"params\":{\"_royalties\":\"Total royalties returned by the royalty engine.\",\"_saleAmount\":\"Gross sale amount before royalty deduction.\"}}],\"SaleNotStarted(uint256)\":[{\"params\":{\"_startTime\":\"Configured sale start timestamp.\"}}],\"SalePriceDoesNotExist(address,uint256,address)\":[{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_seller\":\"Seller whose listing was requested.\",\"_tokenId\":\"Token id requested.\"}}],\"SelfPurchaseUnsupported(address)\":[{\"params\":{\"_seller\":\"Seller whose listing was targeted.\"}}],\"SplitLengthMismatch(uint256,uint256)\":[{\"params\":{\"_ratiosLength\":\"Supplied ratio count.\",\"_recipientsLength\":\"Supplied recipient count.\"}}],\"SplitRatioCannotBeZero(uint256)\":[{\"params\":{\"_index\":\"Index of the invalid split ratio.\"}}],\"SplitRecipientCannotBeZero(uint256)\":[{\"params\":{\"_index\":\"Index of the invalid split recipient.\"}}],\"SplitRecipientsExceededMax(uint256,uint256)\":[{\"params\":{\"_maxRecipients\":\"Maximum supported recipient count.\",\"_recipientsLength\":\"Supplied recipient count.\"}}],\"SplitTotalInvalid(uint256,uint256)\":[{\"params\":{\"_requiredTotal\":\"Required ratio total.\",\"_totalRatio\":\"Supplied ratio total.\"}}],\"StakingFeeExceedsMarketplaceFee(uint256,uint256)\":[{\"params\":{\"_marketplaceFee\":\"Total marketplace fee collected from the buyer.\",\"_stakingFee\":\"Staking portion requested by staking settings.\"}}],\"TokenNotFound(address,uint256)\":[{\"params\":{\"_contractAddress\":\"Collection address.\",\"_tokenId\":\"Missing token id.\"}}],\"TransactionLimitExceeded(address,uint256,address,uint256,uint256)\":[{\"params\":{\"_account\":\"Buyer account.\",\"_contractAddress\":\"Collection address.\",\"_limit\":\"Configured transaction limit.\",\"_tokenId\":\"Token id being minted.\",\"_usedTransactions\":\"Transactions already used by the account.\"}}]},\"events\":{\"MintDirectSale(address,uint256,address,address,uint256,address,uint256)\":{\"params\":{\"buyer\":\"Address that paid for and received the mint.\",\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Sale currency. Zero address indicates ETH.\",\"price\":\"Unit price paid.\",\"quantity\":\"Quantity minted.\",\"seller\":\"Creator/seller that received proceeds.\",\"tokenId\":\"Minted token id.\"}},\"PrepareMintDirectSale(address,uint256,address,address,uint256,uint256,uint256,address[],uint8[])\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Sale currency. Zero address indicates ETH.\",\"maxMints\":\"Max quantity per transaction. Zero means unlimited.\",\"price\":\"Unit price per token.\",\"seller\":\"Creator/seller that receives sale proceeds.\",\"splitRatios\":\"Percentages for `splitRecipients`.\",\"splitRecipients\":\"Recipients that split seller proceeds.\",\"startTime\":\"Timestamp when minting may begin.\",\"tokenId\":\"Token id sold by the primary sale.\"}},\"SalePriceCancelled(address,address,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"seller\":\"Seller that cancelled the listing.\",\"tokenId\":\"Token id whose listing was cancelled.\"}},\"SalePriceSet(address,address,uint256,address,uint256,uint256,address[],uint8[])\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Listing currency. Zero address indicates ETH.\",\"price\":\"Unit price per token.\",\"quantity\":\"Quantity listed.\",\"seller\":\"Seller that owns the listed ERC1155 balance.\",\"splitRatios\":\"Percentages for `splitRecipients`.\",\"splitRecipients\":\"Recipients that split seller proceeds.\",\"tokenId\":\"Listed token id.\"}},\"SetTokenAllowListConfig(address,uint256,bytes32,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"endTimestamp\":\"Timestamp when allowlist enforcement expires.\",\"root\":\"Merkle root for allowlisted buyers.\",\"tokenId\":\"Token id controlled by the allowlist.\"}},\"Sold(address,address,address,uint256,address,uint256,uint256)\":{\"params\":{\"buyer\":\"Buyer that paid and received the ERC1155 tokens.\",\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Purchase currency. Zero address indicates ETH.\",\"price\":\"Unit price paid.\",\"quantity\":\"Quantity purchased.\",\"seller\":\"Seller that transferred the ERC1155 tokens.\",\"tokenId\":\"Purchased token id.\"}},\"TokenMintLimitSet(address,uint256,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"limit\":\"Max quantity each address may mint while the limit is enabled. Zero disables the limit.\",\"tokenId\":\"Token id controlled by the limit.\"}},\"TokenTxLimitSet(address,uint256,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"limit\":\"Max mint transactions each address may submit while the limit is enabled. Zero disables the limit.\",\"tokenId\":\"Token id controlled by the limit.\"}}},\"kind\":\"dev\",\"methods\":{\"buy(address,uint256,address,address,uint256,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Currency expected by the buyer.\",\"_price\":\"Unit price expected by the buyer.\",\"_quantity\":\"Quantity to buy.\",\"_seller\":\"Seller whose listing is being filled.\",\"_tokenId\":\"Token id to buy.\"}},\"cancelSalePrice(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Listed token id.\"}},\"getDirectSaleConfig(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Primary sale config for the token id.\"}},\"getERC1155ApprovalManager()\":{\"returns\":{\"_0\":\"Current ERC1155 approval manager address.\"}},\"getMarketConfig()\":{\"returns\":{\"_0\":\"Current market config struct.\"}},\"getSalePrice(address,uint256,address)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_seller\":\"Seller whose listing is returned.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Secondary fixed-price listing for the seller and token id.\"}},\"getTokenAllowListConfig(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Allowlist config for the token id.\"}},\"getTokenMintLimit(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Mint quantity limit. Zero means disabled/unlimited.\"}},\"getTokenMintsPerAddress(address,uint256,address)\":{\"params\":{\"_address\":\"Address whose minted quantity is returned.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Quantity minted by `_address` during enabled mint-limit periods.\"}},\"getTokenTxLimit(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Transaction limit. Zero means disabled/unlimited.\"}},\"getTokenTxsPerAddress(address,uint256,address)\":{\"params\":{\"_address\":\"Address whose transaction count is returned.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Number of mint transactions used by `_address` during enabled tx-limit periods.\"}},\"initialize(address,address,address,address,address,address,address,address,address,address,address)\":{\"params\":{\"_approvedTokenRegistry\":\"Registry of approved ERC20 currencies.\",\"_erc1155ApprovalManager\":\"ERC1155 transfer manager for seller token approvals.\",\"_erc20ApprovalManager\":\"ERC20 transfer manager for buyer currency approvals.\",\"_erc721ApprovalManager\":\"ERC721 transfer manager kept in shared V2 market config.\",\"_marketplaceSettings\":\"Marketplace settings contract.\",\"_networkBeneficiary\":\"Address receiving network marketplace fees.\",\"_payments\":\"Payments contract used for ETH fan-out.\",\"_royaltyEngine\":\"Royalty engine contract.\",\"_spaceOperatorRegistry\":\"Space operator registry contract.\",\"_stakingRegistry\":\"Staking registry contract.\",\"_stakingSettings\":\"Staking fee settings contract.\"}},\"isPaused()\":{\"returns\":{\"_0\":\"True when paused.\"}},\"mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Currency expected by the buyer.\",\"_price\":\"Unit price expected by the buyer.\",\"_proof\":\"Merkle proof for active allowlist sales.\",\"_quantity\":\"Quantity to mint.\",\"_tokenId\":\"Token id to mint.\"}},\"prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Sale currency. Zero address indicates ETH.\",\"_maxMints\":\"Max quantity per mint transaction. Zero means unlimited.\",\"_price\":\"Unit price per token.\",\"_splitRatios\":\"Percentages for `splitRecipients`, totaling 100.\",\"_splitRecipients\":\"Recipients that split seller proceeds.\",\"_startTime\":\"Timestamp when minting may begin.\",\"_tokenId\":\"Token id to sell through primary minting.\"}},\"setApprovedTokenRegistry(address)\":{\"params\":{\"_approvedTokenRegistry\":\"New approved token registry contract.\"}},\"setContractPaused(bool)\":{\"params\":{\"_isPaused\":\"New pause state.\"}},\"setERC1155ApprovalManager(address)\":{\"params\":{\"_erc1155ApprovalManager\":\"New ERC1155 approval manager contract.\"}},\"setERC20ApprovalManager(address)\":{\"params\":{\"_erc20ApprovalManager\":\"New ERC20 approval manager contract.\"}},\"setERC721ApprovalManager(address)\":{\"params\":{\"_erc721ApprovalManager\":\"New ERC721 approval manager contract.\"}},\"setMarketplaceSettings(address)\":{\"params\":{\"_marketplaceSettings\":\"New marketplace settings contract.\"}},\"setNetworkBeneficiary(address)\":{\"params\":{\"_networkBeneficiary\":\"New network beneficiary.\"}},\"setPayments(address)\":{\"params\":{\"_payments\":\"New payments contract.\"}},\"setRoyaltyEngine(address)\":{\"params\":{\"_royaltyEngine\":\"New royalty engine contract.\"}},\"setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Listings intentionally have no expiry timestamp and can be cancelled by the seller with `cancelSalePrice`.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Listing currency. Zero address indicates ETH.\",\"_price\":\"Unit price per token.\",\"_quantity\":\"Quantity listed.\",\"_splitRatios\":\"Percentages for `splitRecipients`, totaling 100.\",\"_splitRecipients\":\"Recipients that split seller proceeds.\",\"_tokenId\":\"Token id to list.\"}},\"setSpaceOperatorRegistry(address)\":{\"params\":{\"_spaceOperatorRegistry\":\"New space operator registry contract.\"}},\"setStakingRegistry(address)\":{\"params\":{\"_stakingRegistry\":\"New staking registry contract.\"}},\"setStakingSettings(address)\":{\"params\":{\"_stakingSettings\":\"New staking settings contract.\"}},\"setTokenAllowListConfig(bytes32,uint256,address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_endTimestamp\":\"Timestamp when allowlist enforcement expires.\",\"_root\":\"Merkle root for allowlisted minters. Zero root disables allowlist enforcement.\",\"_tokenId\":\"Token id controlled by the allowlist.\"}},\"setTokenMintLimit(address,uint256,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_limit\":\"Max mint quantity per address. Zero disables the limit and disabled periods are not counted.\",\"_tokenId\":\"Token id controlled by the limit.\"}},\"setTokenTxLimit(address,uint256,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_limit\":\"Max transactions per address. Zero disables the limit and disabled periods are not counted.\",\"_tokenId\":\"Token id controlled by the limit.\"}}},\"title\":\"IRareERC1155Marketplace\",\"version\":1},\"userdoc\":{\"errors\":{\"AddressNotAllowlisted(address)\":[{\"notice\":\"Reverted when a buyer is not included in an active allowlist.\"}],\"ApprovalManagerCannotBeZero()\":[{\"notice\":\"Reverted when an approval manager address is zero.\"}],\"ContractHasNoOwner(address)\":[{\"notice\":\"Reverted when ownership cannot be read from a collection.\"}],\"ContractPaused()\":[{\"notice\":\"Reverted when a write function is called while the marketplace is paused.\"}],\"CurrencyMismatch(address,address)\":[{\"notice\":\"Reverted when a caller-supplied currency does not match the configured currency.\"}],\"CurrencyNotApproved(address)\":[{\"notice\":\"Reverted when a currency is neither ETH nor approved by the token registry.\"}],\"DirectSaleNotConfigured(address,uint256)\":[{\"notice\":\"Reverted when a primary mint is attempted before sale configuration exists.\"}],\"ERC20FeeOnTransferUnsupported(address,uint256,uint256)\":[{\"notice\":\"Reverted when an ERC20 transfer receives less or more than expected.\"}],\"IncorrectETHAmount(uint256,uint256)\":[{\"notice\":\"Reverted when an ETH purchase sends the wrong `msg.value`.\"}],\"InsufficientTokenBalance(address,address,uint256,uint256,uint256)\":[{\"notice\":\"Reverted when a seller does not have enough ERC1155 balance for a listing or purchase.\"}],\"InvalidERC1155Contract(address)\":[{\"notice\":\"Reverted when a secondary collection is not a deployed ERC1155 contract.\"}],\"InvalidERC1155Transfer(address,uint256,address,address,uint256)\":[{\"notice\":\"Reverted when an ERC1155 transfer completes without exact seller and buyer balance deltas.\"}],\"MarketConfigAddressCannotBeZero(bytes32)\":[{\"notice\":\"Reverted when a required market config dependency address is zero.\"}],\"MarketplaceNotApproved(address,address)\":[{\"notice\":\"Reverted when the marketplace is not approved to transfer a seller's ERC1155 tokens.\"}],\"MaxMintExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a mint quantity exceeds the sale's per-transaction max.\"}],\"MintLimitExceeded(address,uint256,address,uint256,uint256,uint256)\":[{\"notice\":\"Reverted when a mint would exceed a buyer's per-address mint limit for a token id.\"}],\"MsgValueMustBeZero()\":[{\"notice\":\"Reverted when a free mint includes ETH.\"}],\"MsgValueUnsupportedForERC20()\":[{\"notice\":\"Reverted when ETH is supplied for an ERC20 purchase.\"}],\"NotContractOwner(address,address)\":[{\"notice\":\"Reverted when a caller is not the owner of a collection.\"}],\"PayoutFailed(bytes)\":[{\"notice\":\"Reverted when ETH payout through the Payments contract fails.\"}],\"PayoutLengthMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when payout recipients and amounts have different lengths.\"}],\"PayoutTotalMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when payout amounts do not sum to the expected batch amount.\"}],\"PlatformCommissionExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when primary platform commission exceeds 100%.\"}],\"PriceMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when a caller-supplied price does not match the configured price.\"}],\"QuantityCannotBeZero()\":[{\"notice\":\"Reverted when a quantity argument is zero.\"}],\"QuantityExceedsSalePriceQuantity(uint256,uint256)\":[{\"notice\":\"Reverted when a purchase quantity exceeds listed quantity.\"}],\"RoyaltiesExceedSaleAmount(uint256,uint256)\":[{\"notice\":\"Reverted when royalties returned by the royalty engine exceed sale proceeds.\"}],\"SaleNotStarted(uint256)\":[{\"notice\":\"Reverted when a primary mint is attempted before the start time.\"}],\"SalePriceCannotBeZero()\":[{\"notice\":\"Reverted when a secondary listing price is zero.\"}],\"SalePriceDoesNotExist(address,uint256,address)\":[{\"notice\":\"Reverted when no secondary listing exists for a seller and token id.\"}],\"SelfPurchaseUnsupported(address)\":[{\"notice\":\"Reverted when a buyer tries to fill their own secondary listing.\"}],\"SplitLengthMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when split recipient and ratio arrays have different lengths.\"}],\"SplitRatioCannotBeZero(uint256)\":[{\"notice\":\"Reverted when a split ratio is zero.\"}],\"SplitRecipientCannotBeZero(uint256)\":[{\"notice\":\"Reverted when a split recipient is the zero address.\"}],\"SplitRecipientsExceededMax(uint256,uint256)\":[{\"notice\":\"Reverted when a sale config has more split recipients than supported.\"}],\"SplitRecipientsRequired()\":[{\"notice\":\"Reverted when a sale config has no split recipients.\"}],\"SplitTotalInvalid(uint256,uint256)\":[{\"notice\":\"Reverted when split ratios do not total 100.\"}],\"StakingFeeExceedsMarketplaceFee(uint256,uint256)\":[{\"notice\":\"Reverted when the staking fee exceeds the buyer-paid marketplace fee.\"}],\"TokenNotFound(address,uint256)\":[{\"notice\":\"Reverted when a token id has not been created on a collection.\"}],\"TransactionLimitExceeded(address,uint256,address,uint256,uint256)\":[{\"notice\":\"Reverted when a mint would exceed a buyer's per-address transaction limit for a token id.\"}]},\"events\":{\"MintDirectSale(address,uint256,address,address,uint256,address,uint256)\":{\"notice\":\"Emitted when a buyer mints through a primary sale.\"},\"PrepareMintDirectSale(address,uint256,address,address,uint256,uint256,uint256,address[],uint8[])\":{\"notice\":\"Emitted when a creator configures a primary mint sale.\"},\"SalePriceCancelled(address,address,uint256)\":{\"notice\":\"Emitted when a seller cancels a secondary listing.\"},\"SalePriceSet(address,address,uint256,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Emitted when a seller creates or replaces a secondary fixed-price listing.\"},\"SetTokenAllowListConfig(address,uint256,bytes32,uint256)\":{\"notice\":\"Emitted when a token allowlist config is set.\"},\"Sold(address,address,address,uint256,address,uint256,uint256)\":{\"notice\":\"Emitted when a buyer fills a secondary fixed-price listing.\"},\"TokenMintLimitSet(address,uint256,uint256)\":{\"notice\":\"Emitted when a per-address mint limit is set for a token id.\"},\"TokenTxLimitSet(address,uint256,uint256)\":{\"notice\":\"Emitted when a per-address transaction limit is set for a token id.\"}},\"kind\":\"user\",\"methods\":{\"buy(address,uint256,address,address,uint256,uint256)\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listing.\"},\"cancelSalePrice(address,uint256)\":{\"notice\":\"Cancels the caller's secondary listing for a token id.\"},\"getDirectSaleConfig(address,uint256)\":{\"notice\":\"Returns the primary mint sale config for a token id.\"},\"getERC1155ApprovalManager()\":{\"notice\":\"Returns the ERC1155 approval manager used for secondary transfers.\"},\"getMarketConfig()\":{\"notice\":\"Returns the marketplace dependency configuration.\"},\"getSalePrice(address,uint256,address)\":{\"notice\":\"Returns a seller's secondary fixed-price listing.\"},\"getTokenAllowListConfig(address,uint256)\":{\"notice\":\"Returns the allowlist config for a token id.\"},\"getTokenMintLimit(address,uint256)\":{\"notice\":\"Returns the per-address mint quantity limit for a token id.\"},\"getTokenMintsPerAddress(address,uint256,address)\":{\"notice\":\"Returns quantity minted by an address for a token id while the mint limit was enabled.\"},\"getTokenTxLimit(address,uint256)\":{\"notice\":\"Returns the per-address transaction limit for a token id.\"},\"getTokenTxsPerAddress(address,uint256,address)\":{\"notice\":\"Returns mint transactions used by an address for a token id while the tx limit was enabled.\"},\"initialize(address,address,address,address,address,address,address,address,address,address,address)\":{\"notice\":\"Initializes the UUPS marketplace implementation behind a proxy.\"},\"isPaused()\":{\"notice\":\"Returns whether marketplace writes are paused.\"},\"mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])\":{\"notice\":\"Mints tokens from a configured primary sale.\"},\"prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])\":{\"notice\":\"Configures or replaces a primary mint sale for a token id.\"},\"setApprovedTokenRegistry(address)\":{\"notice\":\"Updates the approved token registry address.\"},\"setContractPaused(bool)\":{\"notice\":\"Pauses or unpauses marketplace write operations.\"},\"setERC1155ApprovalManager(address)\":{\"notice\":\"Updates the ERC1155 approval manager address.\"},\"setERC20ApprovalManager(address)\":{\"notice\":\"Updates the ERC20 approval manager address.\"},\"setERC721ApprovalManager(address)\":{\"notice\":\"Updates the ERC721 approval manager address retained by the shared V2 market config.\"},\"setMarketplaceSettings(address)\":{\"notice\":\"Updates the marketplace settings contract address.\"},\"setNetworkBeneficiary(address)\":{\"notice\":\"Updates the network beneficiary address.\"},\"setPayments(address)\":{\"notice\":\"Updates the Payments contract address used for ETH fan-out.\"},\"setRoyaltyEngine(address)\":{\"notice\":\"Updates the royalty engine address.\"},\"setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Creates or replaces a secondary fixed-price listing.\"},\"setSpaceOperatorRegistry(address)\":{\"notice\":\"Updates the space operator registry address.\"},\"setStakingRegistry(address)\":{\"notice\":\"Updates the staking registry address.\"},\"setStakingSettings(address)\":{\"notice\":\"Updates the staking settings address.\"},\"setTokenAllowListConfig(bytes32,uint256,address,uint256)\":{\"notice\":\"Sets a token id allowlist configuration.\"},\"setTokenMintLimit(address,uint256,uint256)\":{\"notice\":\"Sets the max quantity each address may mint for a token id while the limit is enabled.\"},\"setTokenTxLimit(address,uint256,uint256)\":{\"notice\":\"Sets the max number of mint transactions each address may submit for a token id while the limit is enabled.\"}},\"notice\":\"Interface for RARE Protocol ERC1155 primary mint sales and ERC1155 fixed-price secondary sales.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155Marketplace.sol\":\"IRareERC1155Marketplace\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155Marketplace.sol\":{\"keccak256\":\"0xdc49e7eb0b48b0eb40aa5776b44b0fcb4f2f38223762b6ca2fbcc814f16ae3cb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86188372ffe2e7ff9025f1e8e0ee62940c9ac7ec787a892b176421eab3f7bae0\",\"dweb:/ipfs/Qmf83TtD6ax7M97dKtMEeQEohs1aKWPMrCWV4aB1NHtunb\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"stateMutability":"payable","type":"function","name":"buy"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"cancelSalePrice"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDirectSaleConfig","outputs":[{"internalType":"struct IRareERC1155Marketplace.DirectSaleConfig","name":"","type":"tuple","components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getERC1155ApprovalManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMarketConfig","outputs":[{"internalType":"struct MarketConfigV2.Config","name":"","type":"tuple","components":[{"internalType":"address","name":"networkBeneficiary","type":"address"},{"internalType":"contract IMarketplaceSettings","name":"marketplaceSettings","type":"address"},{"internalType":"contract ISpaceOperatorRegistry","name":"spaceOperatorRegistry","type":"address"},{"internalType":"contract IRoyaltyEngineV1","name":"royaltyEngine","type":"address"},{"internalType":"contract IPayments","name":"payments","type":"address"},{"internalType":"contract IApprovedTokenRegistry","name":"approvedTokenRegistry","type":"address"},{"internalType":"contract IStakingSettings","name":"stakingSettings","type":"address"},{"internalType":"contract IRareStakingRegistry","name":"stakingRegistry","type":"address"},{"internalType":"contract IERC20ApprovalManager","name":"erc20ApprovalManager","type":"address"},{"internalType":"contract IERC721ApprovalManager","name":"erc721ApprovalManager","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"stateMutability":"view","type":"function","name":"getSalePrice","outputs":[{"internalType":"struct IRareERC1155Marketplace.SalePrice","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenAllowListConfig","outputs":[{"internalType":"struct IRareERC1155Marketplace.AllowListConfig","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenTxsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"},{"internalType":"address","name":"_marketplaceSettings","type":"address"},{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"},{"internalType":"address","name":"_royaltyEngine","type":"address"},{"internalType":"address","name":"_payments","type":"address"},{"internalType":"address","name":"_approvedTokenRegistry","type":"address"},{"internalType":"address","name":"_stakingSettings","type":"address"},{"internalType":"address","name":"_stakingRegistry","type":"address"},{"internalType":"address","name":"_erc20ApprovalManager","type":"address"},{"internalType":"address","name":"_erc721ApprovalManager","type":"address"},{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"bytes32[]","name":"_proof","type":"bytes32[]"}],"stateMutability":"payable","type":"function","name":"mintDirectSale"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"prepareMintDirectSale"},{"inputs":[{"internalType":"address","name":"_approvedTokenRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setApprovedTokenRegistry"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setContractPaused"},{"inputs":[{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC1155ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc20ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC20ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc721ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC721ApprovalManager"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketplaceSettings"},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkBeneficiary"},{"inputs":[{"internalType":"address","name":"_payments","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPayments"},{"inputs":[{"internalType":"address","name":"_royaltyEngine","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyEngine"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"setSalePrice"},{"inputs":[{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSpaceOperatorRegistry"},{"inputs":[{"internalType":"address","name":"_stakingRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingRegistry"},{"inputs":[{"internalType":"address","name":"_stakingSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingSettings"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"},{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setTokenAllowListConfig"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setTokenMintLimit"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setTokenTxLimit"}],"devdoc":{"kind":"dev","methods":{"buy(address,uint256,address,address,uint256,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Currency expected by the buyer.","_price":"Unit price expected by the buyer.","_quantity":"Quantity to buy.","_seller":"Seller whose listing is being filled.","_tokenId":"Token id to buy."}},"cancelSalePrice(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Listed token id."}},"getDirectSaleConfig(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Primary sale config for the token id."}},"getERC1155ApprovalManager()":{"returns":{"_0":"Current ERC1155 approval manager address."}},"getMarketConfig()":{"returns":{"_0":"Current market config struct."}},"getSalePrice(address,uint256,address)":{"params":{"_contractAddress":"ERC1155 collection address.","_seller":"Seller whose listing is returned.","_tokenId":"Token id to inspect."},"returns":{"_0":"Secondary fixed-price listing for the seller and token id."}},"getTokenAllowListConfig(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Allowlist config for the token id."}},"getTokenMintLimit(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Mint quantity limit. Zero means disabled/unlimited."}},"getTokenMintsPerAddress(address,uint256,address)":{"params":{"_address":"Address whose minted quantity is returned.","_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Quantity minted by `_address` during enabled mint-limit periods."}},"getTokenTxLimit(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Transaction limit. Zero means disabled/unlimited."}},"getTokenTxsPerAddress(address,uint256,address)":{"params":{"_address":"Address whose transaction count is returned.","_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Number of mint transactions used by `_address` during enabled tx-limit periods."}},"initialize(address,address,address,address,address,address,address,address,address,address,address)":{"params":{"_approvedTokenRegistry":"Registry of approved ERC20 currencies.","_erc1155ApprovalManager":"ERC1155 transfer manager for seller token approvals.","_erc20ApprovalManager":"ERC20 transfer manager for buyer currency approvals.","_erc721ApprovalManager":"ERC721 transfer manager kept in shared V2 market config.","_marketplaceSettings":"Marketplace settings contract.","_networkBeneficiary":"Address receiving network marketplace fees.","_payments":"Payments contract used for ETH fan-out.","_royaltyEngine":"Royalty engine contract.","_spaceOperatorRegistry":"Space operator registry contract.","_stakingRegistry":"Staking registry contract.","_stakingSettings":"Staking fee settings contract."}},"isPaused()":{"returns":{"_0":"True when paused."}},"mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])":{"params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Currency expected by the buyer.","_price":"Unit price expected by the buyer.","_proof":"Merkle proof for active allowlist sales.","_quantity":"Quantity to mint.","_tokenId":"Token id to mint."}},"prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])":{"params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Sale currency. Zero address indicates ETH.","_maxMints":"Max quantity per mint transaction. Zero means unlimited.","_price":"Unit price per token.","_splitRatios":"Percentages for `splitRecipients`, totaling 100.","_splitRecipients":"Recipients that split seller proceeds.","_startTime":"Timestamp when minting may begin.","_tokenId":"Token id to sell through primary minting."}},"setApprovedTokenRegistry(address)":{"params":{"_approvedTokenRegistry":"New approved token registry contract."}},"setContractPaused(bool)":{"params":{"_isPaused":"New pause state."}},"setERC1155ApprovalManager(address)":{"params":{"_erc1155ApprovalManager":"New ERC1155 approval manager contract."}},"setERC20ApprovalManager(address)":{"params":{"_erc20ApprovalManager":"New ERC20 approval manager contract."}},"setERC721ApprovalManager(address)":{"params":{"_erc721ApprovalManager":"New ERC721 approval manager contract."}},"setMarketplaceSettings(address)":{"params":{"_marketplaceSettings":"New marketplace settings contract."}},"setNetworkBeneficiary(address)":{"params":{"_networkBeneficiary":"New network beneficiary."}},"setPayments(address)":{"params":{"_payments":"New payments contract."}},"setRoyaltyEngine(address)":{"params":{"_royaltyEngine":"New royalty engine contract."}},"setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])":{"details":"Listings intentionally have no expiry timestamp and can be cancelled by the seller with `cancelSalePrice`.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Listing currency. Zero address indicates ETH.","_price":"Unit price per token.","_quantity":"Quantity listed.","_splitRatios":"Percentages for `splitRecipients`, totaling 100.","_splitRecipients":"Recipients that split seller proceeds.","_tokenId":"Token id to list."}},"setSpaceOperatorRegistry(address)":{"params":{"_spaceOperatorRegistry":"New space operator registry contract."}},"setStakingRegistry(address)":{"params":{"_stakingRegistry":"New staking registry contract."}},"setStakingSettings(address)":{"params":{"_stakingSettings":"New staking settings contract."}},"setTokenAllowListConfig(bytes32,uint256,address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_endTimestamp":"Timestamp when allowlist enforcement expires.","_root":"Merkle root for allowlisted minters. Zero root disables allowlist enforcement.","_tokenId":"Token id controlled by the allowlist."}},"setTokenMintLimit(address,uint256,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_limit":"Max mint quantity per address. Zero disables the limit and disabled periods are not counted.","_tokenId":"Token id controlled by the limit."}},"setTokenTxLimit(address,uint256,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_limit":"Max transactions per address. Zero disables the limit and disabled periods are not counted.","_tokenId":"Token id controlled by the limit."}}},"version":1},"userdoc":{"kind":"user","methods":{"buy(address,uint256,address,address,uint256,uint256)":{"notice":"Buys tokens from a seller's secondary fixed-price listing."},"cancelSalePrice(address,uint256)":{"notice":"Cancels the caller's secondary listing for a token id."},"getDirectSaleConfig(address,uint256)":{"notice":"Returns the primary mint sale config for a token id."},"getERC1155ApprovalManager()":{"notice":"Returns the ERC1155 approval manager used for secondary transfers."},"getMarketConfig()":{"notice":"Returns the marketplace dependency configuration."},"getSalePrice(address,uint256,address)":{"notice":"Returns a seller's secondary fixed-price listing."},"getTokenAllowListConfig(address,uint256)":{"notice":"Returns the allowlist config for a token id."},"getTokenMintLimit(address,uint256)":{"notice":"Returns the per-address mint quantity limit for a token id."},"getTokenMintsPerAddress(address,uint256,address)":{"notice":"Returns quantity minted by an address for a token id while the mint limit was enabled."},"getTokenTxLimit(address,uint256)":{"notice":"Returns the per-address transaction limit for a token id."},"getTokenTxsPerAddress(address,uint256,address)":{"notice":"Returns mint transactions used by an address for a token id while the tx limit was enabled."},"initialize(address,address,address,address,address,address,address,address,address,address,address)":{"notice":"Initializes the UUPS marketplace implementation behind a proxy."},"isPaused()":{"notice":"Returns whether marketplace writes are paused."},"mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])":{"notice":"Mints tokens from a configured primary sale."},"prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])":{"notice":"Configures or replaces a primary mint sale for a token id."},"setApprovedTokenRegistry(address)":{"notice":"Updates the approved token registry address."},"setContractPaused(bool)":{"notice":"Pauses or unpauses marketplace write operations."},"setERC1155ApprovalManager(address)":{"notice":"Updates the ERC1155 approval manager address."},"setERC20ApprovalManager(address)":{"notice":"Updates the ERC20 approval manager address."},"setERC721ApprovalManager(address)":{"notice":"Updates the ERC721 approval manager address retained by the shared V2 market config."},"setMarketplaceSettings(address)":{"notice":"Updates the marketplace settings contract address."},"setNetworkBeneficiary(address)":{"notice":"Updates the network beneficiary address."},"setPayments(address)":{"notice":"Updates the Payments contract address used for ETH fan-out."},"setRoyaltyEngine(address)":{"notice":"Updates the royalty engine address."},"setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])":{"notice":"Creates or replaces a secondary fixed-price listing."},"setSpaceOperatorRegistry(address)":{"notice":"Updates the space operator registry address."},"setStakingRegistry(address)":{"notice":"Updates the staking registry address."},"setStakingSettings(address)":{"notice":"Updates the staking settings address."},"setTokenAllowListConfig(bytes32,uint256,address,uint256)":{"notice":"Sets a token id allowlist configuration."},"setTokenMintLimit(address,uint256,uint256)":{"notice":"Sets the max quantity each address may mint for a token id while the limit is enabled."},"setTokenTxLimit(address,uint256,uint256)":{"notice":"Sets the max number of mint transactions each address may submit for a token id while the limit is enabled."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155Marketplace.sol":"IRareERC1155Marketplace"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155Marketplace.sol":{"keccak256":"0xdc49e7eb0b48b0eb40aa5776b44b0fcb4f2f38223762b6ca2fbcc814f16ae3cb","urls":["bzz-raw://86188372ffe2e7ff9025f1e8e0ee62940c9ac7ec787a892b176421eab3f7bae0","dweb:/ipfs/Qmf83TtD6ax7M97dKtMEeQEohs1aKWPMrCWV4aB1NHtunb"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":62} \ No newline at end of file diff --git a/abis/MarketUtils.json b/abis/MarketUtils.json index c41ccda..cb6b411 100644 --- a/abis/MarketUtils.json +++ b/abis/MarketUtils.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220c564fe45611e5470ad1371e77e33259d6d50f068c47f50e612754e6f89822bbf64736f6c63430008120033","sourceMap":"407:10408:238:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x600080fdfea2646970667358221220c564fe45611e5470ad1371e77e33259d6d50f068c47f50e612754e6f89822bbf64736f6c63430008120033","sourceMap":"407:10408:238:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/MarketUtils.sol\":\"MarketUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib/v3-core/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/utils/MarketUtils.sol\":{\"keccak256\":\"0xcffb924151286062619d08ceaf4d742c1c16111fad968864933bd3d05bec4875\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b5e831ffeeb02a8de81b65284f80e937fc5bb9ec6f39de60993e8b4ec24e23da\",\"dweb:/ipfs/QmNuprBmoPbvvHMwTKAKkSLnnzw5j8X7yeXkYDu9cSWiHY\"]},\"src/utils/structs/MarketConfig.sol\":{\"keccak256\":\"0xb158a05edcb54b4a71d63db51d5f494576686aa7aa74688c5ae339dd085025f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6fb394a9a58e53d58a17b04d1d7f6bc6464766a522846d740aed4b07ab35d369\",\"dweb:/ipfs/QmePsh5LE7FY4jws3tep5PzA2xDL4EmmAwbQKBxGzrLtR6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/=lib/v3-core/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/utils/MarketUtils.sol":"MarketUtils"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/utils/MarketUtils.sol":{"keccak256":"0xcffb924151286062619d08ceaf4d742c1c16111fad968864933bd3d05bec4875","urls":["bzz-raw://b5e831ffeeb02a8de81b65284f80e937fc5bb9ec6f39de60993e8b4ec24e23da","dweb:/ipfs/QmNuprBmoPbvvHMwTKAKkSLnnzw5j8X7yeXkYDu9cSWiHY"],"license":"MIT"},"src/utils/structs/MarketConfig.sol":{"keccak256":"0xb158a05edcb54b4a71d63db51d5f494576686aa7aa74688c5ae339dd085025f1","urls":["bzz-raw://6fb394a9a58e53d58a17b04d1d7f6bc6464766a522846d740aed4b07ab35d369","dweb:/ipfs/QmePsh5LE7FY4jws3tep5PzA2xDL4EmmAwbQKBxGzrLtR6"],"license":"MIT"}},"version":1},"id":238} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220df770d1ab2462086c334200ed75140013b559e9948cb5c9f1fb7ee95fcfed5f864736f6c63430008120033","sourceMap":"407:11338:125:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x600080fdfea2646970667358221220df770d1ab2462086c334200ed75140013b559e9948cb5c9f1fb7ee95fcfed5f864736f6c63430008120033","sourceMap":"407:11338:125:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/MarketUtils.sol\":\"MarketUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/utils/MarketUtils.sol\":{\"keccak256\":\"0x37f875f220e8a17f99a201fb7463086516dd951ab175a7e997dc7f3d0a3fdd57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a95149772444291259c1c96e6b91285ffad94566d7fc810ebcc8936297d5510\",\"dweb:/ipfs/QmPKSKcyTj6a3FN6H73PsB4uYHGmnk9afqvL1ZovFFfH1H\"]},\"src/utils/structs/MarketConfig.sol\":{\"keccak256\":\"0xb158a05edcb54b4a71d63db51d5f494576686aa7aa74688c5ae339dd085025f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6fb394a9a58e53d58a17b04d1d7f6bc6464766a522846d740aed4b07ab35d369\",\"dweb:/ipfs/QmePsh5LE7FY4jws3tep5PzA2xDL4EmmAwbQKBxGzrLtR6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/utils/MarketUtils.sol":"MarketUtils"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/utils/MarketUtils.sol":{"keccak256":"0x37f875f220e8a17f99a201fb7463086516dd951ab175a7e997dc7f3d0a3fdd57","urls":["bzz-raw://9a95149772444291259c1c96e6b91285ffad94566d7fc810ebcc8936297d5510","dweb:/ipfs/QmPKSKcyTj6a3FN6H73PsB4uYHGmnk9afqvL1ZovFFfH1H"],"license":"MIT"},"src/utils/structs/MarketConfig.sol":{"keccak256":"0xb158a05edcb54b4a71d63db51d5f494576686aa7aa74688c5ae339dd085025f1","urls":["bzz-raw://6fb394a9a58e53d58a17b04d1d7f6bc6464766a522846d740aed4b07ab35d369","dweb:/ipfs/QmePsh5LE7FY4jws3tep5PzA2xDL4EmmAwbQKBxGzrLtR6"],"license":"MIT"}},"version":1},"id":125} \ No newline at end of file diff --git a/abis/MarketUtilsV2.json b/abis/MarketUtilsV2.json index 1cde889..cfa5325 100644 --- a/abis/MarketUtilsV2.json +++ b/abis/MarketUtilsV2.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212201176969aee730d67d8a7721342b4c4c9203e39e428909437baa9fb9ec859dced64736f6c63430008120033","sourceMap":"404:11779:256:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x600080fdfea26469706673582212201176969aee730d67d8a7721342b4c4c9203e39e428909437baa9fb9ec859dced64736f6c63430008120033","sourceMap":"404:11779:256:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v2/utils/MarketUtilsV2.sol\":\"MarketUtilsV2\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib/v3-core/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]},\"src/v2/utils/MarketUtilsV2.sol\":{\"keccak256\":\"0xca43b6b268ffc150f2ac6b851f199ff6c607044e98aeed7112456eb239ff8421\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9fa0b3d5dca64b8030123080188bb52ab33f52fece9cb48c802555ee946f042\",\"dweb:/ipfs/QmTBi8e1Mh1868XtA3W321w5RnoAsK18U1CeAM1ykjTZ18\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/=lib/v3-core/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v2/utils/MarketUtilsV2.sol":"MarketUtilsV2"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"},"src/v2/utils/MarketUtilsV2.sol":{"keccak256":"0xca43b6b268ffc150f2ac6b851f199ff6c607044e98aeed7112456eb239ff8421","urls":["bzz-raw://f9fa0b3d5dca64b8030123080188bb52ab33f52fece9cb48c802555ee946f042","dweb:/ipfs/QmTBi8e1Mh1868XtA3W321w5RnoAsK18U1CeAM1ykjTZ18"],"license":"MIT"}},"version":1},"id":256} \ No newline at end of file +{"abi":[{"type":"function","name":"MAX_ROYALTY_RECIPIENTS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"bytecode":{"object":"0x608080604052346018576075908161001e823930815050f35b600080fdfe6080806040526004361015601257600080fd5b60003560e01c6314a5454e14602657600080fd5b6000366003190112603a5780600560209252f35b600080fdfea2646970667358221220d2986f98529e8655947d03e6708b85adc34badb462c5eb7287969b9d1583d1b464736f6c63430008120033","sourceMap":"404:15800:138:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015601257600080fd5b60003560e01c6314a5454e14602657600080fd5b6000366003190112603a5780600560209252f35b600080fdfea2646970667358221220d2986f98529e8655947d03e6708b85adc34badb462c5eb7287969b9d1583d1b464736f6c63430008120033","sourceMap":"404:15800:138:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;404:15800:138;;;;;598:1;404:15800;;;;;;;","linkReferences":{}},"methodIdentifiers":{"MAX_ROYALTY_RECIPIENTS()":"14a5454e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MAX_ROYALTY_RECIPIENTS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"MAX_ROYALTY_RECIPIENTS()\":{\"notice\":\"Maximum number of royalty recipients allowed to prevent DoS attacks\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v2/utils/MarketUtilsV2.sol\":\"MarketUtilsV2\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]},\"src/v2/utils/MarketUtilsV2.sol\":{\"keccak256\":\"0xf6b5581ccab3f892486e65bf43b2059c457eccca887a69f71468de234a440fb4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6020c0be8f29416b2d682c2927191e9985c0bf76e377b1bac9d65569962545ba\",\"dweb:/ipfs/QmPky1J7ncSFEgQ8QuEVC5cu8h2kYBHFP7ZNiHavRxqy61\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_ROYALTY_RECIPIENTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"MAX_ROYALTY_RECIPIENTS()":{"notice":"Maximum number of royalty recipients allowed to prevent DoS attacks"}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v2/utils/MarketUtilsV2.sol":"MarketUtilsV2"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"},"src/v2/utils/MarketUtilsV2.sol":{"keccak256":"0xf6b5581ccab3f892486e65bf43b2059c457eccca887a69f71468de234a440fb4","urls":["bzz-raw://6020c0be8f29416b2d682c2927191e9985c0bf76e377b1bac9d65569962545ba","dweb:/ipfs/QmPky1J7ncSFEgQ8QuEVC5cu8h2kYBHFP7ZNiHavRxqy61"],"license":"MIT"}},"version":1},"id":138} \ No newline at end of file diff --git a/abis/RareERC1155.json b/abis/RareERC1155.json new file mode 100644 index 0000000..b60f50f --- /dev/null +++ b/abis/RareERC1155.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBatch","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnBatch","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"},{"name":"_royaltyReceiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"exists","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getDefaultRoyaltyPercentage","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getDefaultRoyaltyReceiver","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"royaltyAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyReceiverForToken","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"_interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"},{"name":"royaltyReceiver","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TransferBatch","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"values","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"TransferSingle","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"URI","inputs":[{"name":"value","type":"string","indexed":false,"internalType":"string"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x6080806040523461001657613003908161001c8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461248e57806301ffc9a7146123d457806306fdde03146123425780630de54ba0146122c95780630e89341c146121475780631542bb95146120de57806318e97fd114611f665780632a55205a14611ec55780632baf2acb14611beb5780632eb2c2d6146118115780633403c4e9146117e75780633a3d146f146117a75780633ebc82c51461175557806340c1a064146117205780634e1273f4146115825780634f558e79146115545780636b20c454146112fa578063715018a61461129d57806372b3b6201461122c578063894ba833146111dd5780638da5cb5b146111b457806395d89b41146110e1578063a22cb4651461100a578063a7eae21c14610997578063ab69607a14610978578063bd85b0391461094c578063c33ae88f1461091f578063e985e9c5146108c9578063ee070805146108a5578063efc32cd414610808578063f242432a1461043b578063f2fde38b146103ae578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101356020526020604060002054604051908152f35b600080fd5b346101be576101d1366125f3565b6001600160a01b0390921691903383148015610385575b6101f190612889565b8215926101fe8415612b5e565b61020782612b29565b9161021184612b29565b9460006040516102208161251b565b52610331575b60005b83518110156102c45761023c818561285f565b51610247828861285f565b51908060005260fb602081815260406000205492848410610280579061027b95949392916000525203604060002055612850565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020612fae833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612bb6565b8386526097602052604086208587526020520360408520556040519182526020820152600080516020612f6e83398151915260403392a461032f60405161251b565b005b929060005b835181101561037d578061034d610378928861285f565b51610358828761285f565b5160005260fb60205261037160406000209182546129a5565b9055612850565b610336565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103c76124b5565b6103cf61272a565b6001600160a01b038116156103e75761032f90612782565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be576104546124b5565b61045c6124cb565b90608480356001600160401b0381116101be5761047d9036906004016126d8565b6001600160a01b039190838316331480156107dd575b61049c90612889565b828516156104aa81156128ec565b6104b5604435612b29565b6104c0606435612b29565b918587161561079d575b6106ef575b505060443560005260209460978652604060002084861660005286526040600020546104ff606435821015612946565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061054a60643582546129a5565b90556040516044358152606435878201528482169085871690600080516020612f6e83398151915260403392a4803b61057f57005b60a060006105c9958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a4830190612557565b0393165af1600091816106c0575b506106965750506001906105e9612a9d565b6308c379a014610661575b506105fb57005b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608490fd5b0390fd5b610669612abb565b908161067557506105f4565b61065d60405192839262461bcd60e51b845260048401526024830190612557565b6001600160e01b03191614905061032f5760405162461bcd60e51b81528061065d60048201612a54565b6106e1919250843d86116106e8575b6106d98183612536565b810190612a34565b90846105d7565b503d6106cf565b92959194909360005b845181101561078e5761070b818661285f565b5190610717818861285f565b518260005260fb60205260406000205481811061074b576107469360005260fb60205203604060002055612850565b6106f8565b60405162461bcd60e51b81526020600482015260286024820152600080516020612fae833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104cf565b959260009794919592975b86518110156107cf57806107bf6107ca928b61285f565b51610358828a61285f565b6107a8565b5092959691949093966104ca565b50828416600052609860205260406000203360005260205261049c60ff604060002054169050610493565b346101be5760403660031901126101be576108216124b5565b6024359061082d61272a565b8160005261013560205260ff600260406000200154161561088c576001600160a01b031690811561087a57600090815261012f6020526040902080546001600160a01b0319169091179055005b604051637827912560e01b8152600490fd5b60405163c927e5bf60e01b815260048101839052602490fd5b346101be5760003660031901126101be57602060ff61013354166040519015158152f35b346101be5760403660031901126101be576108e26124b5565b6108ea6124cb565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be576004356000526101386020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760003660031901126101be57602061012e54604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be576109c79036906004016125c6565b906024356001600160401b0381116101be576109e79036906004016125c6565b6044939193356001600160401b0381116101be57610a099036906004016125c6565b6001600160a01b03959192909160643580881690036101be576084359487861686036101be576000549660ff8860081c161597888099610ffd575b8015610fe6575b15610f8a5760ff19811660011760005588610f78575b5088606435161561087a576001600160401b038211610d80578190610a88610131546124e1565b601f8111610f0a575b50600090601f8311600114610e8157600092610e76575b50508160011b916000199060031b1c191617610131555b6001600160401b038211610d8057610ad9610132546124e1565b601f8111610e14575b50600090601f8311600114610da157610b4d9493929160009183610d96575b50508160011b916000199060031b1c191617610132555b61013360ff198154169055610b3d60ff60005460081c16610b3881612c62565b612c62565b610b4633612782565b3691612692565b92610b6360ff60005460081c16610b3881612c62565b83516001600160401b038111610d8057610b7e6099546124e1565b601f8111610d1b575b50602094601f8211600114610cb457948192939495600092610ca9575b50508160011b916000199060031b1c1916176099555b610be160ff60005460081c16610bcf81612c62565b610bd881612c62565b610b3881612c62565b600a61012e5561012d80546001600160a01b0319166001600160a01b0360643516179055808216610c58575b5050610c1a606435612782565b610c2057005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6020817f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b592841660005261013782526040600020600160ff1982541617905560405193600185521692a28180610c0d565b015190508580610ba4565b601f198216956099600052806000209160005b888110610d0357508360019596979810610cea575b505050811b01609955610bba565b015160001960f88460031b161c19169055858080610cdc565b91926020600181928685015181550194019201610cc7565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610d76575b601f0160051c01905b818110610d6a5750610b87565b60008155600101610d5d565b9091508190610d54565b634e487b7160e01b600052604160045260246000fd5b013590508880610b01565b61013260005260206000209160005b601f1985168110610dfc5750918391600193610b4d979695601f19811610610de2575b505050811b0161013255610b18565b0135600019600384901b60f8161c19169055888080610dd3565b90926020600181928686013581550194019101610db0565b6101326000527fc53bdfd4aa1ab65dfdaf681ca6bda958ae4a123d4ed68c4277796592280e7835601f840160051c810160208510610e6f575b601f830160051c82018110610e63575050610ae2565b60008155600101610e4d565b5080610e4d565b013590508980610aa8565b610131600090815293507fbd987ad6ccdb7c7567f7335ea839f95dc944431abcf935b6924f70215963db73915b601f1984168510610ef2576001945083601f19811610610ed8575b505050811b0161013155610abf565b0135600019600384901b60f8161c19169055898080610ec9565b81810135835560209485019460019093019201610eae565b6101316000529091507fbd987ad6ccdb7c7567f7335ea839f95dc944431abcf935b6924f70215963db73601f840160051c810160208510610f71575b90849392915b601f830160051c82018110610f62575050610a91565b60008155859450600101610f4c565b5080610f46565b61ffff19166101011760005589610a61565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610a4b5750600160ff821614610a4b565b50600160ff821610610a44565b346101be5761101836612597565b6001600160a01b039091169033821461108a5733600052609860205260406000208260005260205261105a8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be57604051600090610132805490611107826124e1565b90818452600192838116908160001461118c575060011461114b575b6111478461113381880382612536565b604051918291602083526020830190612557565b0390f35b90935060005260209283600020916000925b8284106111795750505081611147936111339282010193611123565b805485850187015292850192810161115d565b61114796506111339450602092508593915060ff191682840152151560051b82010193611123565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be576111f661272a565b610133805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760403660031901126101be576004356001600160401b0381116101be5761125c9036906004016125c6565b61126461272a565b60ff610133541661128b57602091611283913391339160243591612ce3565b604051908152f35b604051637abbf1c960e01b8152600490fd5b346101be5760003660031901126101be576112b661272a565b603380546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101be5760603660031901126101be576113136124b5565b6024906001600160401b039082358281116101be57611336903690600401612634565b9160449081359081116101be57611351903690600401612634565b6001600160a01b0390921692338414801561152b575b61137090612889565b831561137c8115612b5e565b61138982518551146129b2565b60006040516113978161251b565b526114f3575b60005b8151811015611439576113b3818361285f565b516113be828661285f565b51908060005260fb6020818152604060002054928484106113f757906113f295949392916000525203604060002055612850565b6113a0565b60405162461bcd60e51b8152600481018390526028818d0152600080516020612fae833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b82518110156114ae57806114566114a9928561285f565b51611461828761285f565b519080600052609760209080825260406000208760005282526040600020549261148d85851015612bb6565b6000528152604060002090866000525203604060002055612850565b61143f565b50907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6114e5600094604051918291339583612a0f565b0390a461032f60405161251b565b9260009491945b8451811015611521578061151161151c928661285f565b51610358828861285f565b6114fa565b509293909361139d565b5083600052609860205260406000203360005260205261137060ff604060002054169050611367565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be578160040135906115bf8261261d565b926115cd6040519485612536565b82845260209260248486019160051b830101913683116101be57602401905b828210611701575050506024359081116101be5761160e903690600401612634565b82518151036116aa578251926116238461261d565b936116316040519586612536565b808552611640601f199161261d565b01368486013760005b81518110156116935761168e9061167e6001600160a01b0361166b838661285f565b5116611677838761285f565b51906127cb565b611688828861285f565b52612850565b611649565b5050506111476040519282849384528301906126f6565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115ec565b346101be5760203660031901126101be57600435600052610136602052602060018060a01b0360406000205416604051908152f35b346101be5760203660031901126101be5761176e6124b5565b61177661272a565b6001600160a01b0381161561087a5761012d80546001600160a01b0319166001600160a01b03909216919091179055005b346101be5760203660031901126101be576001600160a01b036117c86124b5565b16600052610137602052602060ff604060002054166040519015158152f35b346101be5760003660031901126101be5761012d546040516001600160a01b039091168152602090f35b346101be5760031960a0368201126101be5761182b6124b5565b906118346124cb565b6044908135926001600160401b03938481116101be57611858903690600401612634565b606480358681116101be57611871903690600401612634565b9460849687359081116101be5761188c9036906004016126d8565b6001600160a01b039489861633148015611bc0575b6118aa90612889565b6118b785518951146129b2565b858716156118c581156128ec565b868b1615611b7d575b611ac8575b60005b855181101561196b57806118ed611966928861285f565b518c6118f9838d61285f565b519180600052609790838c602094848652604060002082821660005286526040600020549161192a84841015612946565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c166000525261037160406000209182546129a5565b6118d6565b50888a989796949789604051887f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb89808d16941692806119ad87339583612a0f565b0390a4873b6119b857005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a487016119ec916126f6565b908487830301908701526119ff916126f6565b918483030190840152611a1191612557565b03921691815a602094600091f160009181611aa8575b50611a805750506001611a38612a9d565b6308c379a014611a49575b6105fb57005b611a51612abb565b80611a5c5750611a43565b60405162461bcd60e51b81526020600482015290819061065d906024830190612557565b6001600160e01b0319161461032f5760405162461bcd60e51b81528061065d60048201612a54565b611ac191925060203d81116106e8576106d98183612536565b9083611a27565b9796949060009993999692965b8551811015611b6d57611ae8818761285f565b51611af3828961285f565b519080600052602060fb815260406000205491838310611b2c57611b279493929160fb916000525203604060002055612850565b611ad5565b508b9067616c537570706c7960c01b8f600080516020612fae8339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b50909496979892989591956118d3565b99969498959392919060005b8a51811015611bb157808b61035882611ba5611bac958f61285f565b519261285f565b611b89565b509091929395989496996118ce565b50858a1660005260986020526040600020336000526020526118aa60ff6040600020541690506118a1565b346101be57611bf9366125f3565b60ff610133939293541661128b57826000526101359060209382855260ff6002604060002001541615611ead576001600160a01b038481169390841561087a576033541633141580611e94575b611e7c578215611e6a5781600052610138808752611c69846040600020546129a5565b91836000528752604060002054808311611e46575082600052865260406000205560405191611c978361251b565b60008352611ca482612b29565b93611cae82612b29565b9360005b888751821015611cf3575080611ccb611cee928861285f565b51611cd6828a61285f565b5160005260fb8b5261037160406000209182546129a5565b611cb2565b955050849087856000526097835260406000208460005283526040600020611d1c8682546129a5565b90558360006040518881528786820152600080516020612f6e83398151915260403392a43b611d4f575b50604051848152f35b600092611d939160405194858094819363f23a6e6160e01b998a84523360048501528460248501528b6044850152606484015260a0608484015260a4830190612557565b03925af160009181611e27575b50611dff5750506001611db1612a9d565b6308c379a014611dca575b6105fb575b82808381611d46565b611dd2612abb565b80611ddd5750611dbc565b8361065d60405192839262461bcd60e51b845260048401526024830190612557565b6001600160e01b03191614611dc15760405162461bcd60e51b81528061065d60048201612a54565b611e3f919250853d87116106e8576106d98183612536565b9085611da0565b836064918460405192630d6f5ed560e11b8452600484015260248301526044820152fd5b60405163d11b25af60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b5033600052610137865260ff6040600020541615611c46565b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760403660031901126101be57600435600090815261012f6020526040902054602435906001600160a01b039081168015611f5957905b6101306020526040600020548015611f4e57925b838102938185041490151715611f3857604092606491845193168352046020820152f35b634e487b7160e01b600052601160045260246000fd5b5061012e5492611f14565b508061012d541690611f00565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611f9a9036906004016125c6565b9190611fa461272a565b836000526101359160209280845260ff60026040600020015416156120c557856000528352600180604060002001918511610d8057611fed85611fe784546124e1565b84612c0e565b6000601f861160011461204e57918580600080516020612f8e8339815191529796959361203e95600093612043575b501b906000198760031b1c19161790555b604051938385948552840191612cc2565b0390a2005b85013592508a61201c565b601f1986169083600052856000209160005b8181106120b05750918796959391600080516020612f8e8339815191529861203e969410612096575b505085811b01905561202d565b840135600019600389901b60f8161c191690558880612089565b86830135845592840192918701918701612060565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576004356001600160401b0381116101be5761210e9036906004016125c6565b906044356001600160a01b03811681036101be5761212a61272a565b60ff610133541661128b5760209261128392339160243591612ce3565b346101be576020806003193601126101be57600435600052610135815260018060406000200190826040518093600090805490612183826124e1565b808552918681169081156122a85750600114612267575b50506121a892500383612536565b8151156121c65750905b611147604051928284938452830190612557565b90506040519060009083609954916121dd836124e1565b9283865285828216918260001461224757505060011461220d575b50505081612207910382612536565b906121b2565b91909250609960005282600020916000925b828410612234575050508201018183856121f8565b805486850186015292840192810161221f565b60ff19168482015293151560051b840190920193508591508690506121f8565b9091506000528260002090846000925b82841061229157505050916121a89282010185928761219a565b805488850187015287945092850192869101612277565b9150506121a894925060ff191682840152151560051b82010185928761219a565b346101be576122d736612597565b906122e061272a565b6001600160a01b031690811561087a5760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261013782526123378160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be57604051600090610131805490612368826124e1565b90818452600192838116908160001461118c5750600114612393576111478461113381880382612536565b90935060005260209283600020916000925b8284106123c15750505081611147936111339282010193611123565b80548585018701529285019281016123a5565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be5760209063d20de18960e01b811490811561247d575b8115612420575b506040519015158152f35b63152a902d60e11b81149150811561243a575b5082612415565b636cdb3d1360e11b81149150811561246c575b811561245b575b5082612433565b6301ffc9a760e01b14905082612454565b6303a24d0760e21b8114915061244d565b631030681960e21b8114915061240e565b346101be5760403660031901126101be5760206112836124ac6124b5565b602435906127cb565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c92168015612511575b60208310146124fb57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124f0565b602081019081106001600160401b03821117610d8057604052565b90601f801991011681019081106001600160401b03821117610d8057604052565b919082519283825260005b848110612583575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612562565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610d805760051b60200190565b81601f820112156101be5780359161264b8361261d565b926126596040519485612536565b808452602092838086019260051b8201019283116101be578301905b828210612683575050505090565b81358152908301908301612675565b9291926001600160401b038211610d8057604051916126bb601f8201601f191660200184612536565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be578160206126f393359101612692565b90565b90815180825260208080930193019160005b828110612716575050505090565b835185529381019392810192600101612708565b6033546001600160a01b0316330361273e57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b03169081156127f857600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b6000198114611f385760010190565b80518210156128735760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b1561289057565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b156128f357565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561294d57565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b91908201809211611f3857565b156129b957565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612a266126f3936040845260408401906126f6565b9160208184039101526126f6565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612aaa57565b905060046000803e60005160e01c90565b600060443d106126f357604051600319913d83016004833e81516001600160401b03918282113d602484011117612b1857818401948551938411612b20573d85010160208487010111612b1857506126f392910160200190612536565b949350505050565b50949350505050565b60405190604082018281106001600160401b03821117610d805760405260018252602082016020368237825115612873575290565b15612b6557565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612bbd57565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c1c57505050565b600091825260208220906020601f850160051c83019410612c58575b601f0160051c01915b828110612c4d57505050565b818155600101612c41565b9092508290612c38565b15612c6957565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9193908415612f5b576001600160a01b0382161561087a5761013494612d098654612850565b8096556040519260608401936001600160401b039481811086821117610d8057604052828152612d3a368588612692565b906020810191825260016040820152886000526101356020526040600020918151835551958651908111610d80578996612d8482612d7b60018701546124e1565b60018701612c0e565b602090601f8311600114612eb55760407f06ec8b3fb63a2a91fc1109b41eed7d76ac33c774d1d49f298836f97561ed07a4999a9484612dfc95612e949895600295600092612eaa575b50508160011b916000199060031b1c19161760018501555b0151151591019060ff801983541691151516179055565b8660005261013660205260406000209760018060a01b03169760018060a01b031990898282541617905561012f60205260406000209060018060a01b0385169082541617905561012e5461013060205260406000205586600080516020612f8e8339815191526040516020815280612e78602082018a87612cc2565b0390a26040519485948552606060208601526060850191612cc2565b6001600160a01b0390911660408301520390a390565b015190503880612dcd565b6001859493929a950160005260206000209060005b601f1984168110612f405750612dfc936001846002947f06ec8b3fb63a2a91fc1109b41eed7d76ac33c774d1d49f298836f97561ed07a49d9e604095612e949b9a98601f19811610612f27575b505050811b016001850155612de5565b015160001960f88460031b161c19169055388080612f17565b818c0151835560209b8c019b8e9b5060019093019201612eca565b604051631dd0e19360e01b8152600490fdfec3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f626bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a264697066735822122077965fa0e0e98965ee2091700b624025a480f5e36e32a78c2f0d090944ea05a164736f6c63430008120033","sourceMap":"975:10373:213:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461248e57806301ffc9a7146123d457806306fdde03146123425780630de54ba0146122c95780630e89341c146121475780631542bb95146120de57806318e97fd114611f665780632a55205a14611ec55780632baf2acb14611beb5780632eb2c2d6146118115780633403c4e9146117e75780633a3d146f146117a75780633ebc82c51461175557806340c1a064146117205780634e1273f4146115825780634f558e79146115545780636b20c454146112fa578063715018a61461129d57806372b3b6201461122c578063894ba833146111dd5780638da5cb5b146111b457806395d89b41146110e1578063a22cb4651461100a578063a7eae21c14610997578063ab69607a14610978578063bd85b0391461094c578063c33ae88f1461091f578063e985e9c5146108c9578063ee070805146108a5578063efc32cd414610808578063f242432a1461043b578063f2fde38b146103ae578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101356020526020604060002054604051908152f35b600080fd5b346101be576101d1366125f3565b6001600160a01b0390921691903383148015610385575b6101f190612889565b8215926101fe8415612b5e565b61020782612b29565b9161021184612b29565b9460006040516102208161251b565b52610331575b60005b83518110156102c45761023c818561285f565b51610247828861285f565b51908060005260fb602081815260406000205492848410610280579061027b95949392916000525203604060002055612850565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020612fae833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612bb6565b8386526097602052604086208587526020520360408520556040519182526020820152600080516020612f6e83398151915260403392a461032f60405161251b565b005b929060005b835181101561037d578061034d610378928861285f565b51610358828761285f565b5160005260fb60205261037160406000209182546129a5565b9055612850565b610336565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103c76124b5565b6103cf61272a565b6001600160a01b038116156103e75761032f90612782565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be576104546124b5565b61045c6124cb565b90608480356001600160401b0381116101be5761047d9036906004016126d8565b6001600160a01b039190838316331480156107dd575b61049c90612889565b828516156104aa81156128ec565b6104b5604435612b29565b6104c0606435612b29565b918587161561079d575b6106ef575b505060443560005260209460978652604060002084861660005286526040600020546104ff606435821015612946565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061054a60643582546129a5565b90556040516044358152606435878201528482169085871690600080516020612f6e83398151915260403392a4803b61057f57005b60a060006105c9958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a4830190612557565b0393165af1600091816106c0575b506106965750506001906105e9612a9d565b6308c379a014610661575b506105fb57005b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608490fd5b0390fd5b610669612abb565b908161067557506105f4565b61065d60405192839262461bcd60e51b845260048401526024830190612557565b6001600160e01b03191614905061032f5760405162461bcd60e51b81528061065d60048201612a54565b6106e1919250843d86116106e8575b6106d98183612536565b810190612a34565b90846105d7565b503d6106cf565b92959194909360005b845181101561078e5761070b818661285f565b5190610717818861285f565b518260005260fb60205260406000205481811061074b576107469360005260fb60205203604060002055612850565b6106f8565b60405162461bcd60e51b81526020600482015260286024820152600080516020612fae833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104cf565b959260009794919592975b86518110156107cf57806107bf6107ca928b61285f565b51610358828a61285f565b6107a8565b5092959691949093966104ca565b50828416600052609860205260406000203360005260205261049c60ff604060002054169050610493565b346101be5760403660031901126101be576108216124b5565b6024359061082d61272a565b8160005261013560205260ff600260406000200154161561088c576001600160a01b031690811561087a57600090815261012f6020526040902080546001600160a01b0319169091179055005b604051637827912560e01b8152600490fd5b60405163c927e5bf60e01b815260048101839052602490fd5b346101be5760003660031901126101be57602060ff61013354166040519015158152f35b346101be5760403660031901126101be576108e26124b5565b6108ea6124cb565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be576004356000526101386020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760003660031901126101be57602061012e54604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be576109c79036906004016125c6565b906024356001600160401b0381116101be576109e79036906004016125c6565b6044939193356001600160401b0381116101be57610a099036906004016125c6565b6001600160a01b03959192909160643580881690036101be576084359487861686036101be576000549660ff8860081c161597888099610ffd575b8015610fe6575b15610f8a5760ff19811660011760005588610f78575b5088606435161561087a576001600160401b038211610d80578190610a88610131546124e1565b601f8111610f0a575b50600090601f8311600114610e8157600092610e76575b50508160011b916000199060031b1c191617610131555b6001600160401b038211610d8057610ad9610132546124e1565b601f8111610e14575b50600090601f8311600114610da157610b4d9493929160009183610d96575b50508160011b916000199060031b1c191617610132555b61013360ff198154169055610b3d60ff60005460081c16610b3881612c62565b612c62565b610b4633612782565b3691612692565b92610b6360ff60005460081c16610b3881612c62565b83516001600160401b038111610d8057610b7e6099546124e1565b601f8111610d1b575b50602094601f8211600114610cb457948192939495600092610ca9575b50508160011b916000199060031b1c1916176099555b610be160ff60005460081c16610bcf81612c62565b610bd881612c62565b610b3881612c62565b600a61012e5561012d80546001600160a01b0319166001600160a01b0360643516179055808216610c58575b5050610c1a606435612782565b610c2057005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6020817f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b592841660005261013782526040600020600160ff1982541617905560405193600185521692a28180610c0d565b015190508580610ba4565b601f198216956099600052806000209160005b888110610d0357508360019596979810610cea575b505050811b01609955610bba565b015160001960f88460031b161c19169055858080610cdc565b91926020600181928685015181550194019201610cc7565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610d76575b601f0160051c01905b818110610d6a5750610b87565b60008155600101610d5d565b9091508190610d54565b634e487b7160e01b600052604160045260246000fd5b013590508880610b01565b61013260005260206000209160005b601f1985168110610dfc5750918391600193610b4d979695601f19811610610de2575b505050811b0161013255610b18565b0135600019600384901b60f8161c19169055888080610dd3565b90926020600181928686013581550194019101610db0565b6101326000527fc53bdfd4aa1ab65dfdaf681ca6bda958ae4a123d4ed68c4277796592280e7835601f840160051c810160208510610e6f575b601f830160051c82018110610e63575050610ae2565b60008155600101610e4d565b5080610e4d565b013590508980610aa8565b610131600090815293507fbd987ad6ccdb7c7567f7335ea839f95dc944431abcf935b6924f70215963db73915b601f1984168510610ef2576001945083601f19811610610ed8575b505050811b0161013155610abf565b0135600019600384901b60f8161c19169055898080610ec9565b81810135835560209485019460019093019201610eae565b6101316000529091507fbd987ad6ccdb7c7567f7335ea839f95dc944431abcf935b6924f70215963db73601f840160051c810160208510610f71575b90849392915b601f830160051c82018110610f62575050610a91565b60008155859450600101610f4c565b5080610f46565b61ffff19166101011760005589610a61565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610a4b5750600160ff821614610a4b565b50600160ff821610610a44565b346101be5761101836612597565b6001600160a01b039091169033821461108a5733600052609860205260406000208260005260205261105a8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be57604051600090610132805490611107826124e1565b90818452600192838116908160001461118c575060011461114b575b6111478461113381880382612536565b604051918291602083526020830190612557565b0390f35b90935060005260209283600020916000925b8284106111795750505081611147936111339282010193611123565b805485850187015292850192810161115d565b61114796506111339450602092508593915060ff191682840152151560051b82010193611123565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be576111f661272a565b610133805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760403660031901126101be576004356001600160401b0381116101be5761125c9036906004016125c6565b61126461272a565b60ff610133541661128b57602091611283913391339160243591612ce3565b604051908152f35b604051637abbf1c960e01b8152600490fd5b346101be5760003660031901126101be576112b661272a565b603380546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101be5760603660031901126101be576113136124b5565b6024906001600160401b039082358281116101be57611336903690600401612634565b9160449081359081116101be57611351903690600401612634565b6001600160a01b0390921692338414801561152b575b61137090612889565b831561137c8115612b5e565b61138982518551146129b2565b60006040516113978161251b565b526114f3575b60005b8151811015611439576113b3818361285f565b516113be828661285f565b51908060005260fb6020818152604060002054928484106113f757906113f295949392916000525203604060002055612850565b6113a0565b60405162461bcd60e51b8152600481018390526028818d0152600080516020612fae833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b82518110156114ae57806114566114a9928561285f565b51611461828761285f565b519080600052609760209080825260406000208760005282526040600020549261148d85851015612bb6565b6000528152604060002090866000525203604060002055612850565b61143f565b50907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6114e5600094604051918291339583612a0f565b0390a461032f60405161251b565b9260009491945b8451811015611521578061151161151c928661285f565b51610358828861285f565b6114fa565b509293909361139d565b5083600052609860205260406000203360005260205261137060ff604060002054169050611367565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be578160040135906115bf8261261d565b926115cd6040519485612536565b82845260209260248486019160051b830101913683116101be57602401905b828210611701575050506024359081116101be5761160e903690600401612634565b82518151036116aa578251926116238461261d565b936116316040519586612536565b808552611640601f199161261d565b01368486013760005b81518110156116935761168e9061167e6001600160a01b0361166b838661285f565b5116611677838761285f565b51906127cb565b611688828861285f565b52612850565b611649565b5050506111476040519282849384528301906126f6565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115ec565b346101be5760203660031901126101be57600435600052610136602052602060018060a01b0360406000205416604051908152f35b346101be5760203660031901126101be5761176e6124b5565b61177661272a565b6001600160a01b0381161561087a5761012d80546001600160a01b0319166001600160a01b03909216919091179055005b346101be5760203660031901126101be576001600160a01b036117c86124b5565b16600052610137602052602060ff604060002054166040519015158152f35b346101be5760003660031901126101be5761012d546040516001600160a01b039091168152602090f35b346101be5760031960a0368201126101be5761182b6124b5565b906118346124cb565b6044908135926001600160401b03938481116101be57611858903690600401612634565b606480358681116101be57611871903690600401612634565b9460849687359081116101be5761188c9036906004016126d8565b6001600160a01b039489861633148015611bc0575b6118aa90612889565b6118b785518951146129b2565b858716156118c581156128ec565b868b1615611b7d575b611ac8575b60005b855181101561196b57806118ed611966928861285f565b518c6118f9838d61285f565b519180600052609790838c602094848652604060002082821660005286526040600020549161192a84841015612946565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c166000525261037160406000209182546129a5565b6118d6565b50888a989796949789604051887f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb89808d16941692806119ad87339583612a0f565b0390a4873b6119b857005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a487016119ec916126f6565b908487830301908701526119ff916126f6565b918483030190840152611a1191612557565b03921691815a602094600091f160009181611aa8575b50611a805750506001611a38612a9d565b6308c379a014611a49575b6105fb57005b611a51612abb565b80611a5c5750611a43565b60405162461bcd60e51b81526020600482015290819061065d906024830190612557565b6001600160e01b0319161461032f5760405162461bcd60e51b81528061065d60048201612a54565b611ac191925060203d81116106e8576106d98183612536565b9083611a27565b9796949060009993999692965b8551811015611b6d57611ae8818761285f565b51611af3828961285f565b519080600052602060fb815260406000205491838310611b2c57611b279493929160fb916000525203604060002055612850565b611ad5565b508b9067616c537570706c7960c01b8f600080516020612fae8339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b50909496979892989591956118d3565b99969498959392919060005b8a51811015611bb157808b61035882611ba5611bac958f61285f565b519261285f565b611b89565b509091929395989496996118ce565b50858a1660005260986020526040600020336000526020526118aa60ff6040600020541690506118a1565b346101be57611bf9366125f3565b60ff610133939293541661128b57826000526101359060209382855260ff6002604060002001541615611ead576001600160a01b038481169390841561087a576033541633141580611e94575b611e7c578215611e6a5781600052610138808752611c69846040600020546129a5565b91836000528752604060002054808311611e46575082600052865260406000205560405191611c978361251b565b60008352611ca482612b29565b93611cae82612b29565b9360005b888751821015611cf3575080611ccb611cee928861285f565b51611cd6828a61285f565b5160005260fb8b5261037160406000209182546129a5565b611cb2565b955050849087856000526097835260406000208460005283526040600020611d1c8682546129a5565b90558360006040518881528786820152600080516020612f6e83398151915260403392a43b611d4f575b50604051848152f35b600092611d939160405194858094819363f23a6e6160e01b998a84523360048501528460248501528b6044850152606484015260a0608484015260a4830190612557565b03925af160009181611e27575b50611dff5750506001611db1612a9d565b6308c379a014611dca575b6105fb575b82808381611d46565b611dd2612abb565b80611ddd5750611dbc565b8361065d60405192839262461bcd60e51b845260048401526024830190612557565b6001600160e01b03191614611dc15760405162461bcd60e51b81528061065d60048201612a54565b611e3f919250853d87116106e8576106d98183612536565b9085611da0565b836064918460405192630d6f5ed560e11b8452600484015260248301526044820152fd5b60405163d11b25af60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b5033600052610137865260ff6040600020541615611c46565b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760403660031901126101be57600435600090815261012f6020526040902054602435906001600160a01b039081168015611f5957905b6101306020526040600020548015611f4e57925b838102938185041490151715611f3857604092606491845193168352046020820152f35b634e487b7160e01b600052601160045260246000fd5b5061012e5492611f14565b508061012d541690611f00565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611f9a9036906004016125c6565b9190611fa461272a565b836000526101359160209280845260ff60026040600020015416156120c557856000528352600180604060002001918511610d8057611fed85611fe784546124e1565b84612c0e565b6000601f861160011461204e57918580600080516020612f8e8339815191529796959361203e95600093612043575b501b906000198760031b1c19161790555b604051938385948552840191612cc2565b0390a2005b85013592508a61201c565b601f1986169083600052856000209160005b8181106120b05750918796959391600080516020612f8e8339815191529861203e969410612096575b505085811b01905561202d565b840135600019600389901b60f8161c191690558880612089565b86830135845592840192918701918701612060565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576004356001600160401b0381116101be5761210e9036906004016125c6565b906044356001600160a01b03811681036101be5761212a61272a565b60ff610133541661128b5760209261128392339160243591612ce3565b346101be576020806003193601126101be57600435600052610135815260018060406000200190826040518093600090805490612183826124e1565b808552918681169081156122a85750600114612267575b50506121a892500383612536565b8151156121c65750905b611147604051928284938452830190612557565b90506040519060009083609954916121dd836124e1565b9283865285828216918260001461224757505060011461220d575b50505081612207910382612536565b906121b2565b91909250609960005282600020916000925b828410612234575050508201018183856121f8565b805486850186015292840192810161221f565b60ff19168482015293151560051b840190920193508591508690506121f8565b9091506000528260002090846000925b82841061229157505050916121a89282010185928761219a565b805488850187015287945092850192869101612277565b9150506121a894925060ff191682840152151560051b82010185928761219a565b346101be576122d736612597565b906122e061272a565b6001600160a01b031690811561087a5760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261013782526123378160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be57604051600090610131805490612368826124e1565b90818452600192838116908160001461118c5750600114612393576111478461113381880382612536565b90935060005260209283600020916000925b8284106123c15750505081611147936111339282010193611123565b80548585018701529285019281016123a5565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be5760209063d20de18960e01b811490811561247d575b8115612420575b506040519015158152f35b63152a902d60e11b81149150811561243a575b5082612415565b636cdb3d1360e11b81149150811561246c575b811561245b575b5082612433565b6301ffc9a760e01b14905082612454565b6303a24d0760e21b8114915061244d565b631030681960e21b8114915061240e565b346101be5760403660031901126101be5760206112836124ac6124b5565b602435906127cb565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c92168015612511575b60208310146124fb57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124f0565b602081019081106001600160401b03821117610d8057604052565b90601f801991011681019081106001600160401b03821117610d8057604052565b919082519283825260005b848110612583575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612562565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610d805760051b60200190565b81601f820112156101be5780359161264b8361261d565b926126596040519485612536565b808452602092838086019260051b8201019283116101be578301905b828210612683575050505090565b81358152908301908301612675565b9291926001600160401b038211610d8057604051916126bb601f8201601f191660200184612536565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be578160206126f393359101612692565b90565b90815180825260208080930193019160005b828110612716575050505090565b835185529381019392810192600101612708565b6033546001600160a01b0316330361273e57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b03169081156127f857600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b6000198114611f385760010190565b80518210156128735760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b1561289057565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b156128f357565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561294d57565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b91908201809211611f3857565b156129b957565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612a266126f3936040845260408401906126f6565b9160208184039101526126f6565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612aaa57565b905060046000803e60005160e01c90565b600060443d106126f357604051600319913d83016004833e81516001600160401b03918282113d602484011117612b1857818401948551938411612b20573d85010160208487010111612b1857506126f392910160200190612536565b949350505050565b50949350505050565b60405190604082018281106001600160401b03821117610d805760405260018252602082016020368237825115612873575290565b15612b6557565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612bbd57565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c1c57505050565b600091825260208220906020601f850160051c83019410612c58575b601f0160051c01915b828110612c4d57505050565b818155600101612c41565b9092508290612c38565b15612c6957565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9193908415612f5b576001600160a01b0382161561087a5761013494612d098654612850565b8096556040519260608401936001600160401b039481811086821117610d8057604052828152612d3a368588612692565b906020810191825260016040820152886000526101356020526040600020918151835551958651908111610d80578996612d8482612d7b60018701546124e1565b60018701612c0e565b602090601f8311600114612eb55760407f06ec8b3fb63a2a91fc1109b41eed7d76ac33c774d1d49f298836f97561ed07a4999a9484612dfc95612e949895600295600092612eaa575b50508160011b916000199060031b1c19161760018501555b0151151591019060ff801983541691151516179055565b8660005261013660205260406000209760018060a01b03169760018060a01b031990898282541617905561012f60205260406000209060018060a01b0385169082541617905561012e5461013060205260406000205586600080516020612f8e8339815191526040516020815280612e78602082018a87612cc2565b0390a26040519485948552606060208601526060850191612cc2565b6001600160a01b0390911660408301520390a390565b015190503880612dcd565b6001859493929a950160005260206000209060005b601f1984168110612f405750612dfc936001846002947f06ec8b3fb63a2a91fc1109b41eed7d76ac33c774d1d49f298836f97561ed07a49d9e604095612e949b9a98601f19811610612f27575b505050811b016001850155612de5565b015160001960f88460031b161c19169055388080612f17565b818c0151835560209b8c019b8e9b5060019093019201612eca565b604051631dd0e19360e01b8152600490fdfec3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f626bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a264697066735822122077965fa0e0e98965ee2091700b624025a480f5e36e32a78c2f0d090944ea05a164736f6c63430008120033","sourceMap":"975:10373:213:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;7953:12;975:10373;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;;;;929:10:73;764:23:54;;:66;;;;975:10373:213;743:159:54;;;:::i;:::-;11246:18:51;;;11238:66;11246:18;;11238:66;:::i;:::-;11379:21;;;:::i;:::-;11437:25;;;;:::i;:::-;975:10373:213;;;;;;;:::i;:::-;;1658:156:55;;975:10373:213;;1896:3:55;975:10373:213;;1880:14:55;;;;;1932:6;;;;:::i;:::-;975:10373:213;1973:10:55;;;;:::i;:::-;975:10373:213;;;;;2018:12:55;975:10373:213;;;;;;;;2060:16:55;;;;975:10373:213;;;1896:3:55;975:10373:213;;;;;;;;;;;;;1896:3:55;:::i;:::-;1865:13;;975:10373:213;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;975:10373:213;;;;-1:-1:-1;;;975:10373:213;;;;;;;1880:14:55;975:10373:213;1880:14:55;;;975:10373:213;;;11572:9:51;975:10373:213;;;;;;;;;;;;;;;11601:70:51;11609:21;;;;11601:70;:::i;:::-;975:10373:213;;;11572:9:51;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;975:10373:213;929:10:73;11773:54:51;;975:10373:213;;;;:::i;:::-;;1658:156:55;1701:13;;975:10373:213;1732:3:55;975:10373:213;;1716:14:55;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;975:10373:213;1768:6:55;;;;:::i;:::-;975:10373:213;;;1755:12:55;975:10373:213;;1755:34:55;975:10373:213;;;;;;1755:34:55;:::i;:::-;975:10373:213;;1732:3:55;:::i;:::-;1701:13;;1716:14;;;;1658:156;;764:66:54;975:10373:213;;;;3873:18:51;975:10373:213;;;;;929:10:73;975:10373:213;;;;743:159:54;975:10373:213;;;;;;764:66:54;;;;975:10373:213;;;;;;-1:-1:-1;;975:10373:213;;;;;;:::i;:::-;1303:62:41;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;2402:22:41;975:10373:213;;2496:8:41;;;:::i;975:10373:213:-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;;;;929:10:73;4184:20:51;:60;;;;975:10373:213;4163:153:51;;;:::i;:::-;975:10373:213;;;5507:16:51;5499:66;5507:16;;5499:66;:::i;:::-;5640:21;975:10373:213;;5640:21:51;:::i;:::-;5698:25;975:10373:213;;5698:25:51;:::i;:::-;975:10373:213;;;;1662:18:55;1658:156;;975:10373:213;1824:424:55;;975:10373:213;;;;;;;;;5827:9:51;975:10373:213;;;;;;;;;;;;;;;;5856:76:51;975:10373:213;;5864:21:51;;;5856:76;:::i;:::-;975:10373:213;;;;5827:9:51;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;5827:9:51;975:10373:213;;;;;;;;;;;;;;;6028:27:51;975:10373:213;;;;6028:27:51;:::i;:::-;975:10373:213;;;;;;;;;;;;;;;;;;;;;929:10:73;-1:-1:-1;;;;;;;;;;;975:10373:213;929:10:73;6071:46:51;;1713:19:71;;15996:538:51;;975:10373:213;15996:538:51;975:10373:213;;;;;;;;;;;;;;;;;;;16035:83:51;;;;929:10:73;975:10373:213;16035:83:51;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16035:83:51;975:10373:213;;16035:83:51;;975:10373:213;;16035:83:51;;;15996:538;-1:-1:-1;16031:493:51;;;;975:10373:213;16031:493:51;;;:::i;:::-;;;;;;;;;975:10373:213;16031:493:51;975:10373:213;;-1:-1:-1;;;16447:62:51;;975:10373:213;;16447:62:51;;975:10373:213;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;16447:62:51;;;;;16031:493;16341:81;;:::i;:::-;;;;;16031:493;;;16341:81;975:10373:213;;;16257:50:51;;;;;;16393:14;;975:10373:213;16393:14:51;;975:10373:213;;;;;;:::i;16031:493:51:-;-1:-1:-1;;;;;;975:10373:213;16163:163:51;;-1:-1:-1;16031:493:51;16163:163;975:10373:213;;-1:-1:-1;;;16257:50:51;;975:10373:213;16257:50:51;975:10373:213;16257:50:51;;;:::i;16035:83::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1824:424:55;1865:13;;;;;;975:10373:213;1896:3:55;975:10373:213;;1880:14:55;;;;;1932:6;;;;:::i;:::-;975:10373:213;1973:10:55;;;;;:::i;:::-;975:10373:213;;;;2018:12:55;975:10373:213;;;;;;2060:16:55;;;975:10373:213;;1896:3:55;975:10373:213;;;2018:12:55;975:10373:213;;;;;;;1896:3:55;:::i;:::-;1865:13;;975:10373:213;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;975:10373:213;;;;-1:-1:-1;;;975:10373:213;;;;;;;1880:14:55;;;;;;;;;1824:424;;;;1658:156;1701:13;;975:10373:213;1701:13:55;;;;;;1732:3;975:10373:213;;1716:14:55;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;975:10373:213;1768:6:55;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;1658:156;;4184:60:51;975:10373:213;;;;;;3873:18:51;975:10373:213;;;;;929:10:73;975:10373:213;;;;4163:153:51;975:10373:213;;;;;;4184:60:51;;;;975:10373:213;;;;;;-1:-1:-1;;975:10373:213;;;;;;:::i;:::-;;;1303:62:41;;;:::i;:::-;975:10373:213;;;2281:12;975:10373;;;2281:29;975:10373;;;2281:29;975:10373;;2280:30;2276:70;;-1:-1:-1;;;;;975:10373:213;;6628:23;;6624:60;;975:10373;;;;1639:16:228;975:10373:213;;;;;;;-1:-1:-1;;;;;;975:10373:213;;;;;;;6624:60;975:10373;;-1:-1:-1;;;6660:24:213;;975:10373;;6660:24;2276:70;975:10373;;-1:-1:-1;;;2319:27:213;;975:10373;2319:27;;975:10373;;;;;2319:27;975:10373;;;;;;-1:-1:-1;;975:10373:213;;;;;;1224:29;975:10373;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;3873:18:51;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;8127:16;975:10373;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;1033:12:55;975:10373:213;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;2453:24:228;975:10373:213;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3301:14:47;3347:34;;;;;;975:10373:213;3346:108:47;;;;975:10373:213;;;;-1:-1:-1;;975:10373:213;;;;;;;3562:65:47;;975:10373:213;;;;;;2706:22;2702:59;;-1:-1:-1;;;;;975:10373:213;;;;;;;2862:12;975:10373;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2862:12;975:10373;;-1:-1:-1;;;;;975:10373:213;;;;;2884:16;975:10373;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:16;975:10373;;2910:16;975:10373;;;;;;;5366:69:47;975:10373:213;;;;;;5366:69:47;;;:::i;:::-;;:::i;:::-;1195:12:41;929:10:73;1195:12:41;:::i;:::-;975:10373:213;;;:::i;:::-;;5366:69:47;975:10373:213;;;;;;5366:69:47;;;:::i;:::-;975:10373:213;;-1:-1:-1;;;;;975:10373:213;;;;;8623:13:51;975:10373:213;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:51;975:10373:213;;5366:69:47;975:10373:213;;;;;;5366:69:47;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;3278:2:213;2197:38:228;975:10373:213;1492:34:228;975:10373:213;;-1:-1:-1;;;;;;975:10373:213;-1:-1:-1;;;;;975:10373:213;;;;;;;;;3338:252;;975:10373;;;3718:8;975:10373;;3718:8;:::i;:::-;3647:99:47;;975:10373:213;3647:99:47;975:10373:213;;;;;;;3721:14:47;975:10373:213;;;;;;3721:14:47;975:10373:213;3338:252;975:10373;;3536:43;975:10373;;;;;3479:15;975:10373;;;;;;;;;;;;;;;;;;;;;3536:43;;3338:252;;;;975:10373;;;;-1:-1:-1;975:10373:213;;;;;;;;;;8623:13:51;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:51;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:51;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;2884:16;975:10373;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:16;975:10373;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:16;975:10373;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;;;-1:-1:-1;975:10373:213;;;;;2862:12;975:10373;;;;;-1:-1:-1;975:10373:213;;;-1:-1:-1;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;2862:12;975:10373;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2862:12;975:10373;;;;-1:-1:-1;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;-1:-1:-1;975:10373:213;;;3562:65:47;-1:-1:-1;;975:10373:213;;;;;3562:65:47;;;975:10373:213;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;3346:108:47;3426:4;;1713:19:71;:23;3387:66:47;;3346:108;3387:66;975:10373:213;;;;;3436:17:47;3346:108;;3347:34;975:10373:213;;;;;3365:16:47;3347:34;;975:10373:213;;;;;;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;;;929:10:73;13309:17:51;;975:10373:213;;929:10:73;975:10373:213;;13382:18:51;975:10373:213;;;;;;;;;;13382:46:51;975:10373:213;;;;;;;;;;;;;;;;;;;13382:46:51;975:10373:213;;;;;;;13443:41:51;975:10373:213;929:10:73;13443:41:51;;975:10373:213;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;1189:29;;975:10373;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;1513:6:41;975:10373:213;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;1303:62:41;;:::i;:::-;7396:15:213;975:10373;;-1:-1:-1;;975:10373:213;7407:4;975:10373;;;7443:10;7426:28;-1:-1:-1;;7426:28:213;975:10373;;;;;;;-1:-1:-1;;975:10373:213;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;:::i;:::-;1303:62:41;;:::i;:::-;975:10373:213;1970:8;975:10373;;1966:41;;975:10373;4290:10;4254:59;4290:10;;;;975:10373;;;4254:59;;:::i;:::-;975:10373;;;;;;1966:41;975:10373;;-1:-1:-1;;;1987:20:213;;975:10373;;1987:20;975:10373;;;;;;-1:-1:-1;;975:10373:213;;;;1303:62:41;;:::i;:::-;2758:6;975:10373:213;;-1:-1:-1;;;;;;975:10373:213;;;;;;;-1:-1:-1;;;;;975:10373:213;2806:40:41;975:10373:213;;2806:40:41;975:10373:213;;;;;;;-1:-1:-1;;975:10373:213;;;;;;:::i;:::-;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;;;929:10:73;1080:23:54;;:66;;;;975:10373:213;1059:159:54;;;:::i;:::-;12266:18:51;;12258:66;12266:18;;12258:66;:::i;:::-;12334:81;975:10373:213;;;;12342:28:51;12334:81;:::i;:::-;975:10373:213;;;;;;:::i;:::-;;1658:156:55;;975:10373:213;;1896:3:55;975:10373:213;;1880:14:55;;;;;1932:6;;;;:::i;:::-;975:10373:213;1973:10:55;;;;:::i;:::-;975:10373:213;;;;;2018:12:55;975:10373:213;;;;;;;;2060:16:55;;;;975:10373:213;;;1896:3:55;975:10373:213;;;;;;;;;;;;;1896:3:55;:::i;:::-;1865:13;;975:10373:213;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;975:10373:213;;;;-1:-1:-1;;;975:10373:213;;;;;;;1880:14:55;;;;975:10373:213;12581:3:51;975:10373:213;;12565:14:51;;;;;12613:6;;12581:3;12613:6;;;:::i;:::-;975:10373:213;12650:10:51;;;;:::i;:::-;975:10373:213;;;;;12697:9:51;975:10373:213;;;;;;;;;;;;;;;;;12738:21:51;12730:70;12738:21;;;;12730:70;:::i;:::-;975:10373:213;;;;;;;;;;;;;;;;;12581:3:51;:::i;:::-;12550:13;;12565:14;;;12924:55;;975:10373:213;12565:14:51;975:10373:213;;929:10:73;;;;12924:55:51;;;:::i;:::-;;;;975:10373:213;;;;:::i;1658:156:55:-;1701:13;975:10373:213;1701:13:55;;;1732:3;975:10373:213;;1716:14:55;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;975:10373:213;1768:6:55;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;1658:156;;1080:66:54;975:10373:213;;;;3873:18:51;975:10373:213;;;;;929:10:73;975:10373:213;;;;1059:159:54;975:10373:213;;;;;;1080:66:54;;;;975:10373:213;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;1033:12:55;975:10373:213;;;;;;;1229:44:55;;975:10373:213;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;3146:29:51;975:10373:213;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3347:3:51;975:10373:213;;3326:19:51;;;;;3347:3;;3385:30;-1:-1:-1;;;;;3395:11:51;975:10373:213;3395:11:51;;:::i;:::-;975:10373:213;;3408:6:51;;;;:::i;:::-;975:10373:213;3385:30:51;;:::i;:::-;3366:49;;;;:::i;:::-;975:10373:213;3347:3:51;:::i;:::-;3311:13;;3326:19;;;;975:10373:213;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;7628:13;975:10373;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;:::i;:::-;1303:62:41;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;6198:23;6194:60;;1492:34:228;975:10373:213;;-1:-1:-1;;;;;;975:10373:213;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;-1:-1:-1;;;;;975:10373:213;;:::i;:::-;;;;7788:15;975:10373;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;2332:22:228;975:10373:213;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;;;929:10:73;4675:20:51;:60;;;;975:10373:213;4654:153:51;;;:::i;:::-;6817:81;975:10373:213;;;;6825:28:51;6817:81;:::i;:::-;975:10373:213;;;6916:16:51;6908:66;6916:16;;6908:66;:::i;:::-;975:10373:213;;;1662:18:55;1658:156;;975:10373:213;1824:424:55;;975:10373:213;;7134:3:51;975:10373:213;;7118:14:51;;;;;7166:6;;7134:3;7166:6;;;:::i;:::-;975:10373:213;7203:10:51;;;;;:::i;:::-;975:10373:213;;;;;7250:9:51;975:10373:213;;;;;;;;;;;;;;;;;;;;;;7291:21:51;7283:76;7291:21;;;;7283:76;:::i;:::-;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7471:27:51;975:10373:213;;;;;;7471:27:51;:::i;7134:3::-;7103:13;;7118:14;;;;;;;;;975:10373:213;;;;7524:47:51;975:10373:213;;;;;;929:10:73;;7524:47:51;929:10:73;;7524:47:51;;;:::i;:::-;;;;1713:19:71;;16774:580:51;;975:10373:213;16774:580:51;975:10373:213;;;;;;;;;;;16813:90:51;;;;929:10:73;975:10373:213;16813:90:51;;975:10373:213;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;16813:90:51;975:10373:213;;16813:90:51;;;975:10373:213;16813:90:51;975:10373:213;16813:90:51;;975:10373:213;;16813:90:51;;;16774:580;-1:-1:-1;16809:535:51;;;;975:10373:213;16809:535:51;;:::i;:::-;;;;;;;;975:10373:213;16809:535:51;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;975:10373:213;;-1:-1:-1;;;17213:14:51;;975:10373:213;;17213:14:51;;975:10373:213;;;;;;;;;;;:::i;16809:535:51:-;-1:-1:-1;;;;;;975:10373:213;16978:168:51;16809:535;16978:168;975:10373:213;;-1:-1:-1;;;17077:50:51;;975:10373:213;17077:50:51;975:10373:213;17077:50:51;;;:::i;16813:90::-;;;;;975:10373:213;16813:90:51;;;;;;;;;:::i;:::-;;;;;1824:424:55;1865:13;;;;975:10373:213;1865:13:55;;;;;;1896:3;975:10373:213;;1880:14:55;;;;;1932:6;;;;:::i;:::-;975:10373:213;1973:10:55;;;;:::i;:::-;975:10373:213;;;;;;2018:12:55;975:10373:213;;;;;;2060:16:55;;;;975:10373:213;;1896:3:55;975:10373:213;;;;2018:12:55;975:10373:213;;;;;;;;;1896:3:55;:::i;:::-;1865:13;;975:10373:213;;;;-1:-1:-1;;;975:10373:213;-1:-1:-1;;;;;;;;;;;975:10373:213;;;16257:50:51;;;;975:10373:213;;;;;;;;;;;;;;;;;;1880:14:55;;;;;;;;;;;;1824:424;;1658:156;1701:13;;;;;;;;;975:10373:213;1732:3:55;975:10373:213;;1716:14:55;;;;;1779:10;;1768:6;1779:10;;1732:3;1779:10;;;:::i;:::-;975:10373:213;1768:6:55;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;;1658:156;;4675:60:51;975:10373:213;;;;;;3873:18:51;975:10373:213;;;;;929:10:73;975:10373:213;;;;4654:153:51;975:10373:213;;;;;;4675:60:51;;;;975:10373:213;;;;;;;:::i;:::-;;1970:8;975:10373;;;;;1966:41;;975:10373;;;2281:12;975:10373;;;;;;;2281:29;975:10373;;;2281:29;975:10373;;2280:30;2276:70;;-1:-1:-1;;;;;975:10373:213;;;;;4650:23;;4646:60;;1513:6:41;975:10373:213;;4720:10;:21;;:53;;;975:10373;4716:94;;4824:12;;4820:45;;975:10373;;;4986:16;975:10373;;;4986:36;975:10373;;;;;4986:36;:::i;:::-;975:10373;;;;;;;;;;5098:32;;;5094:105;;975:10373;;;;;;;;;;;;;;;;:::i;:::-;;;;9254:21:51;;;:::i;:::-;9312:25;;;;:::i;:::-;1701:13:55;975:10373:213;1732:3:55;975:10373:213;;;1716:14:55;;;;;1779:10;;;1732:3;1779:10;;;:::i;:::-;975:10373:213;1768:6:55;;;;:::i;:::-;975:10373:213;;;1755:12:55;975:10373:213;;1755:34:55;975:10373:213;;;;;;1755:34:55;:::i;1732:3::-;1701:13;;1716:14;;;;;;;975:10373:213;;;9425:9:51;975:10373:213;;;;;;;;;;;;;9425:27:51;975:10373:213;;;9425:27:51;:::i;:::-;975:10373:213;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;975:10373:213;4720:10;9467:52:51;;1713:19:71;15996:538:51;;1696:108:55;-1:-1:-1;975:10373:213;;;;;;15996:538:51;975:10373:213;;;;;;;;;;;;;;;16035:83:51;;;;4720:10:213;975:10373;16035:83:51;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16035:83:51;;;;975:10373:213;;16035:83:51;;;15996:538;-1:-1:-1;16031:493:51;;;;975:10373:213;16031:493:51;;:::i;:::-;;;;;;;;;15996:538;;;;;;16031:493;16341:81;;:::i;:::-;;;;16031:493;;;16341:81;;975:10373:213;;;16257:50:51;;;;;;16393:14;;975:10373:213;16393:14:51;;975:10373:213;;;;;;:::i;16031:493:51:-;-1:-1:-1;;;;;;975:10373:213;16163:163:51;16031:493;16163:163;975:10373:213;;-1:-1:-1;;;16257:50:51;;975:10373:213;16257:50:51;975:10373:213;16257:50:51;;;:::i;16035:83::-;;;;;;;;;;;;;;;:::i;:::-;;;;;5094:105:213;975:10373;;;;;;5139:60;;;;;;975:10373;5139:60;;975:10373;;;;;;;;;5139:60;4820:45;975:10373;;-1:-1:-1;;;4845:20:213;;975:10373;;4845:20;4716:94;975:10373;;-1:-1:-1;;;4782:28:213;;4720:10;975:10373;4782:28;;975:10373;;;4782:28;4720:53;:10;;975:10373;;4746:15;975:10373;;;;;;;;4745:28;4720:53;;2276:70;975:10373;;;;2319:27;;;;;;975:10373;2319:27;;975:10373;2319:27;975:10373;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;;1049:16:228;975:10373:213;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;1049:40:228;;975:10373:213;;1049:118:228;;1238:18;975:10373:213;;;;;;1238:33:228;;;;:131;;975:10373:213;;;;;;;;;;;;;;;;1401:3:228;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;1238:131:228;975:10373:213;1345:24:228;975:10373:213;1238:131:228;;;1049:118;975:10373:213;;1145:22:228;975:10373:213;;1049:118:228;;;975:10373:213;;;;;;-1:-1:-1;;975:10373:213;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;:::i;:::-;1303:62:41;;;;:::i;:::-;975:10373:213;;;2281:12;975:10373;;;;;;;2281:29;975:10373;;;2281:29;975:10373;;2280:30;2276:70;;975:10373;;;;;;;;;;7055:31;975:10373;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7182:24;;;975:10373;;;;;;-1:-1:-1;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2276:70;975:10373;;-1:-1:-1;;;2319:27:213;;975:10373;2319:27;;975:10373;;;;;2319:27;975:10373;;;;;;-1:-1:-1;;975:10373:213;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;975:10373:213;;;;;;1303:62:41;;:::i;:::-;975:10373:213;1970:8;975:10373;;1966:41;;975:10373;4007:10;3971:65;4007:10;;975:10373;;;3971:65;;:::i;975:10373::-;;;;;;;;;;;;;;;;;8344:12;975:10373;;;;;;;8344:31;975:10373;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8392:26;:59;;;;;975:10373;;;;;;;;;;;;;:::i;8392:59::-;975:10373;;;;;;;;2440:4:51;975:10373:213;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8392:59;;;975:10373;;;;;2440:4:51;975:10373:213;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;-1:-1:-1;975:10373:213;;-1:-1:-1;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1303:62:41;;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;5763:21;;5759:58;;975:10373;5954:41;975:10373;;;;5903:15;975:10373;;5903:36;975:10373;;;;;;;;;;;;;;;;;;;5903:36;975:10373;;;;;;;5954:41;975:10373;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;1156:27;;975:10373;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8688:46:213;;;:97;;;;975:10373;8688:150;;;;975:10373;;;;;;;;;;8688:150;-1:-1:-1;;;2013:41:228;;;-1:-1:-1;2013:93:228;;;;8688:150:213;;;;;2013:93:228;-1:-1:-1;;;1759:52:51;;;-1:-1:-1;1759:131:51;;;;2013:93:228;1759:183:51;;;;2013:93:228;;;;;1759:183:51;-1:-1:-1;;;1168:51:77;;-1:-1:-1;1759:183:51;;;:131;-1:-1:-1;;;1827:63:51;;;-1:-1:-1;1759:131:51;;8688:97:213;-1:-1:-1;;;8738:47:213;;;-1:-1:-1;8688:97:213;;975:10373;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;-1:-1:-1;;;;;975:10373:213;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;975:10373:213;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;975:10373:213;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;1599:130:41;1513:6;975:10373:213;-1:-1:-1;;;;;975:10373:213;929:10:73;1662:23:41;975:10373:213;;1599:130:41:o;975:10373:213:-;;;;16257:50:51;;;975:10373:213;;;;;;;;;;;;;;;;;;2666:187:41;2758:6;975:10373:213;;-1:-1:-1;;;;;975:10373:213;;;-1:-1:-1;;;;;;975:10373:213;;;;;;;;;;2806:40:41;-1:-1:-1;;2806:40:41;2666:187::o;2593:227:51:-;-1:-1:-1;;;;;975:10373:213;;2706:21:51;;975:10373:213;;2725:1:51;975:10373:213;2791:9:51;975:10373:213;;;2725:1:51;975:10373:213;;2725:1:51;975:10373:213;;;;2725:1:51;975:10373:213;;2593:227:51;:::o;975:10373:213:-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;;975:10373:213;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;:::o;17366:193:51:-;975:10373:213;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;17499:1:51;975:10373:213;;;;;;;;;;;;;;;17366:193:51;:::o;975:10373:213:-;;;;:::o;:::-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;;;;:::o;:::-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;;;;-1:-1:-1;;975:10373:213;;;;:::o;9220:1126::-;;;;9484:15;;9480:51;;-1:-1:-1;;;;;975:10373:213;;9545:30;9541:67;;9698:16;975:10373;9698:16;975:10373;;9698:16;:::i;:::-;975:10373;;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;;;;;;:::i;:::-;9890:40;;;;975:10373;;;;;9890:40;;975:10373;;9498:1;975:10373;9866:12;9890:40;975:10373;;9498:1;975:10373;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;9890:40;975:10373;;;;;;;;;10242:72;975:10373;;;;;;;;;;;9498:1;975:10373;;;;;;;;;;;;;;;;;;;;;;;;9890:40;975:10373;;;;;;;;;;;;;;;;;;;;;;9498:1;975:10373;9940:13;9890:40;975:10373;;9498:1;975:10373;;;;;;;;;;;;;;;;;;;;;;;;1639:16:228;9890:40:213;975:10373;;9498:1;975:10373;;;;;;;;;;;;;;;;2453:24:228;975:10373:213;1794:18:228;9890:40:213;975:10373;;9498:1;975:10373;;;-1:-1:-1;;;;;;;;;;;975:10373:213;;9890:40;975:10373;;;;9890:40;975:10373;;;;;:::i;:::-;10204:23;;;975:10373;;;;;;;;9890:40;975:10373;;;;;;;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;;;;;;10242:72;;;9220:1126;:::o;975:10373::-;;;;-1:-1:-1;975:10373:213;;;;;;;;;;;;;9498:1;975:10373;9890:40;9498:1;975:10373;;9498:1;975:10373;-1:-1:-1;;975:10373:213;;;;;;;;;;;;;10242:72;975:10373;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9890:40;975:10373;;;;;;-1:-1:-1;975:10373:213;;;;;;;;9480:51;975:10373;;-1:-1:-1;;;9508:23:213;;;;","linkReferences":{}},"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","burn(address,uint256,uint256)":"f5298aca","burnBatch(address,uint256[],uint256[])":"6b20c454","createToken(string,uint256)":"72b3b620","createToken(string,uint256,address)":"1542bb95","disableContract()":"894ba833","disabled()":"ee070805","exists(uint256)":"4f558e79","getDefaultRoyaltyPercentage()":"ab69607a","getDefaultRoyaltyReceiver()":"3403c4e9","init(string,string,string,address,address)":"a7eae21c","isApprovedForAll(address,address)":"e985e9c5","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","royaltyInfo(uint256,uint256)":"2a55205a","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","setRoyaltyReceiverForToken(address,uint256)":"efc32cd4","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","totalSupply(uint256)":"bd85b039","transferOwnership(address)":"f2fde38b","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"royaltyReceiver\",\"type\":\"address\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"burnBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_royaltyReceiver\",\"type\":\"address\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultRoyaltyPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultRoyaltyReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"setRoyaltyReceiverForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Clone-safe upgradeable-style implementation used behind minimal proxies. Token ids start at 1.\",\"errors\":{\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}]},\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,uint256,string,address)\":{\"params\":{\"creator\":\"RARE creator recorded for the token id.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"royaltyReceiver\":\"ERC2981 royalty receiver configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"createToken(string,uint256)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"createToken(string,uint256,address)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_royaltyReceiver\":\"Address that receives ERC2981 royalties for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"exists(uint256)\":{\"details\":\"Indicates whether any token exist with a given id, or not.\"},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and default royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"The minted token id.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"royaltyInfo(uint256,uint256)\":{\"params\":{\"_salePrice\":\"- the sale price of the NFT asset specified by _tokenId\",\"_tokenId\":\"- the NFT asset queried for royalty information\"},\"returns\":{\"receiver\":\"- address of who should be sent the royalty payment\",\"royaltyAmount\":\"- the royalty payment amount for _salePrice\"}},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"setDefaultRoyaltyReceiver(address)\":{\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"setRoyaltyReceiverForToken(address,uint256)\":{\"params\":{\"_receiver\":\"New royalty receiver for the token id.\",\"_tokenId\":\"Token id whose royalty receiver is updated.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"Interface id to inspect.\"},\"returns\":{\"_0\":\"True when the interface id is supported.\"}},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"totalSupply(uint256)\":{\"details\":\"Total amount of tokens in with a given id.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"stateVariables\":{\"disabled\":{\"return\":\"True when disabled.\",\"returns\":{\"_0\":\"True when disabled.\"}},\"name\":{\"return\":\"Collection name.\",\"returns\":{\"_0\":\"Collection name.\"}},\"symbol\":{\"return\":\"Collection symbol.\",\"returns\":{\"_0\":\"Collection symbol.\"}}},\"title\":\"RareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,uint256,string,address)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"createToken(string,uint256)\":{\"notice\":\"Creates a new token type using the caller as the royalty receiver.\"},\"createToken(string,uint256,address)\":{\"notice\":\"Creates a new token type with a token-specific URI, max supply, and royalty receiver.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints an existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the fallback royalty receiver for tokens that rely on default royalties.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes minter approval for an address.\"},\"setRoyaltyReceiverForToken(address,uint256)\":{\"notice\":\"Updates the royalty receiver for a specific token id.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Returns whether this contract supports an interface id.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Basic RARE Protocol ERC1155 collection with creator and royalty support.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/RareERC1155.sol\":\"RareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7\",\"dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol\":{\"keccak256\":\"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98\",\"dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8\",\"dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/SafeMathUpgradeable.sol\":{\"keccak256\":\"0xb1561a6950b1aaa504c8f81b7d46bccfa77ccd10de3eb865cf34b1acd5ad505e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a56cb91629dacd161be24908fbf94315f3f45dd6fee8dad82b27af853cbc4ee\",\"dweb:/ipfs/QmNfEzdf4NTpxyhzWKAmeDwwSpJ6ZjNizK3GXw3TEuTTgn\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x9dc23a2064e31818e89092b5935ab96079a99b29e1aa1456565ee698d3fd23a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5aaa41dbed645e29ec41a7159bee7a10519ebaa71fb86187bd109aba732db40\",\"dweb:/ipfs/Qma3yM1SZuHAxo6HS16uFMX1yVVqikkXX9v6n5op5Tss1V\"]},\"src/token/ERC1155/RareERC1155.sol\":{\"keccak256\":\"0x894e428a8afbd1d06d8f988574d1f73de6eb679327ae9a3d91183e993f105cae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1afeff73784717afd6f5c83f4546aaa155cfaad67aaf99399b31590e4d7f259\",\"dweb:/ipfs/QmRs8jAGq33XapRmDCEJ2Pi89HqcrDhVUgAQeWLB3koAtT\"]},\"src/token/extensions/ERC2981Upgradeable.sol\":{\"keccak256\":\"0x62c64c84a127c5a388397fa20c990b8c0dbd22a1fa1b7176f55c8aae3238383d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e540b90c23c363b1d5fb122286c7c583a44c8b907f2764ddf0f2c0e7793b5465\",\"dweb:/ipfs/QmPn163efSqFyhWHC4qFmeJXgMMbEmoENa6gRZjM4wedhA\"]},\"src/token/extensions/IERC2981.sol\":{\"keccak256\":\"0x2435b55e1011401b85ed792513721df4fe905013926fa7385f502aa3e97cdffd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056bca27c266998358654b0a64b4286a9b66c1b4db464f70a679d44de0f3fa4b\",\"dweb:/ipfs/QmW7zACzmmzoHKdrRQVRKh6eNiGuMjKZrZbvndNW819Z1w\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false},{"internalType":"address","name":"royaltyReceiver","type":"address","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"values","type":"uint256[]","indexed":false}],"type":"event","name":"TransferBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"TransferSingle","anonymous":false},{"inputs":[{"internalType":"string","name":"value","type":"string","indexed":false},{"internalType":"uint256","name":"id","type":"uint256","indexed":true}],"type":"event","name":"URI","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"burnBatch"},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"address","name":"_royaltyReceiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getDefaultRoyaltyPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getDefaultRoyaltyReceiver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyReceiverForToken"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."},"createToken(string,uint256)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"createToken(string,uint256,address)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_royaltyReceiver":"Address that receives ERC2981 royalties for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"exists(uint256)":{"details":"Indicates whether any token exist with a given id, or not."},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and default royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedForAll(address,address)":{"details":"See {IERC1155-isApprovedForAll}."},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"The minted token id."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"royaltyInfo(uint256,uint256)":{"params":{"_salePrice":"- the sale price of the NFT asset specified by _tokenId","_tokenId":"- the NFT asset queried for royalty information"},"returns":{"receiver":"- address of who should be sent the royalty payment","royaltyAmount":"- the royalty payment amount for _salePrice"}},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"See {IERC1155-safeBatchTransferFrom}."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"See {IERC1155-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC1155-setApprovalForAll}."},"setDefaultRoyaltyReceiver(address)":{"params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"setRoyaltyReceiverForToken(address,uint256)":{"params":{"_receiver":"New royalty receiver for the token id.","_tokenId":"Token id whose royalty receiver is updated."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"Interface id to inspect."},"returns":{"_0":"True when the interface id is supported."}},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"totalSupply(uint256)":{"details":"Total amount of tokens in with a given id."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"createToken(string,uint256)":{"notice":"Creates a new token type using the caller as the royalty receiver."},"createToken(string,uint256,address)":{"notice":"Creates a new token type with a token-specific URI, max supply, and royalty receiver."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintTo(address,uint256,uint256)":{"notice":"Mints an existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the fallback royalty receiver for tokens that rely on default royalties."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes minter approval for an address."},"setRoyaltyReceiverForToken(address,uint256)":{"notice":"Updates the royalty receiver for a specific token id."},"supportsInterface(bytes4)":{"notice":"Returns whether this contract supports an interface id."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/RareERC1155.sol":"RareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol":{"keccak256":"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856","urls":["bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7","dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"keccak256":"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b","urls":["bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce","dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol":{"keccak256":"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8","urls":["bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83","dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol":{"keccak256":"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7","urls":["bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98","dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"keccak256":"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e","urls":["bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8","dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"keccak256":"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448","urls":["bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9","dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a","urls":["bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7","dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/SafeMathUpgradeable.sol":{"keccak256":"0xb1561a6950b1aaa504c8f81b7d46bccfa77ccd10de3eb865cf34b1acd5ad505e","urls":["bzz-raw://9a56cb91629dacd161be24908fbf94315f3f45dd6fee8dad82b27af853cbc4ee","dweb:/ipfs/QmNfEzdf4NTpxyhzWKAmeDwwSpJ6ZjNizK3GXw3TEuTTgn"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x9dc23a2064e31818e89092b5935ab96079a99b29e1aa1456565ee698d3fd23a6","urls":["bzz-raw://d5aaa41dbed645e29ec41a7159bee7a10519ebaa71fb86187bd109aba732db40","dweb:/ipfs/Qma3yM1SZuHAxo6HS16uFMX1yVVqikkXX9v6n5op5Tss1V"],"license":"MIT"},"src/token/ERC1155/RareERC1155.sol":{"keccak256":"0x894e428a8afbd1d06d8f988574d1f73de6eb679327ae9a3d91183e993f105cae","urls":["bzz-raw://e1afeff73784717afd6f5c83f4546aaa155cfaad67aaf99399b31590e4d7f259","dweb:/ipfs/QmRs8jAGq33XapRmDCEJ2Pi89HqcrDhVUgAQeWLB3koAtT"],"license":"MIT"},"src/token/extensions/ERC2981Upgradeable.sol":{"keccak256":"0x62c64c84a127c5a388397fa20c990b8c0dbd22a1fa1b7176f55c8aae3238383d","urls":["bzz-raw://e540b90c23c363b1d5fb122286c7c583a44c8b907f2764ddf0f2c0e7793b5465","dweb:/ipfs/QmPn163efSqFyhWHC4qFmeJXgMMbEmoENa6gRZjM4wedhA"],"license":"MIT"},"src/token/extensions/IERC2981.sol":{"keccak256":"0x2435b55e1011401b85ed792513721df4fe905013926fa7385f502aa3e97cdffd","urls":["bzz-raw://056bca27c266998358654b0a64b4286a9b66c1b4db464f70a679d44de0f3fa4b","dweb:/ipfs/QmW7zACzmmzoHKdrRQVRKh6eNiGuMjKZrZbvndNW819Z1w"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":213} \ No newline at end of file diff --git a/abis/RareERC1155ContractFactory.json b/abis/RareERC1155ContractFactory.json new file mode 100644 index 0000000..7381575 --- /dev/null +++ b/abis/RareERC1155ContractFactory.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createRareERC1155Contract","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"defaultMinter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"rareERC1155","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultMinter","inputs":[{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRareERC1155","inputs":[{"name":"_rareERC1155","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefaultMinterUpdated","inputs":[{"name":"defaultMinter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155ContractCreated","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155Updated","inputs":[{"name":"rareERC1155","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x608080604052346100b95760008054336001600160a01b031980831682178455936001600160a01b03939290919084167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08480a361301f818101906001600160401b038211838310176100a5579082916106a08339039082f09081156100995750169060015416176001556040516105e190816100bf8239f35b604051903d90823e3d90fd5b634e487b7160e01b84526041600452602484fd5b600080fdfe608060408181526004908136101561001657600080fd5b600092833560e01c908163014812a2146104da5750806318cf6f4214610473578063389dee181461044a578063715018a6146103ed5780638667f619146101f85780638da5cb5b146101cc578063e2be1a081461014a5763f2fde38b1461007c57600080fd5b34610146576020366003190112610146576001600160a01b03823581811693919290849003610142576100ad610532565b83156100f05750506000548260018060a01b0319821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8480fd5b8280fd5b5090346101465760203660031901126101465780356001600160a01b03811692908390036101c85761017a610532565b82156101bb575050600180546001600160a01b031916821790557fe329ca164c11428fa5ee865054c08ccee6f2d38eda61e9e6a35b3081a472daed8280a280f35b51637827912560e01b8152fd5b8380fd5b8382346101f457816003193601126101f457905490516001600160a01b039091168152602090f35b5080fd5b508290346101f457600319906060368301126101465767ffffffffffffffff84358181116101425761022d90369087016104ff565b91906024358281116103e95761024690369089016104ff565b95906044358481116103e55761025f9036908b016104ff565b600154608881901c62ffffff16763d602d80600a3d3981f3363d3d373d3d3d363d73000000178b5260781b6001600160781b0319166e5af43d82803e903d91602b57fd5bf3176020526001600160a01b039890929089603760098df016998a156103a95760025416958a3b156103a557938b9693610313610322948f979461030360a09a968f519e8f9c8d9c8d6329fab88760e21b90528d015260a48c019161058a565b91868a84030160248b015261058a565b9286840301604487015261058a565b903360648401526084830152038183885af1801561039b57610371575b5050602093505191817f0c069e30a19668076937a9266318f1876e9c7dabdae788aaad8f5c73599aea89339280a38152f35b81949294116103885760209450835291848061033f565b634e487b7160e01b825260418552602482fd5b83513d87823e3d90fd5b8b80fd5b895162461bcd60e51b81526020818f01526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606490fd5b8880fd5b8680fd5b8334610447578060031936011261044757610406610532565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b8382346101f457816003193601126101f45760025490516001600160a01b039091168152602090f35b5050346101f45760203660031901126101f457356001600160a01b038116908190036101f4576104a1610532565b600280546001600160a01b031916821790557feedfae894237292077aa1e4fcca7f9a0a2aabeda165c2ff69a08cfd365d7c9eb8280a280f35b8490346101f457816003193601126101f4576001546001600160a01b03168152602090f35b9181601f8401121561052d5782359167ffffffffffffffff831161052d576020838186019501011161052d57565b600080fd5b6000546001600160a01b0316330361054657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b908060209392818452848401376000828201840152601f01601f191601019056fea2646970667358221220c6cdc69dac480746e3b0a403a8be123871650849084015d4745cbdd2f7b9327664736f6c634300081200336080806040523461001657613003908161001c8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461248e57806301ffc9a7146123d457806306fdde03146123425780630de54ba0146122c95780630e89341c146121475780631542bb95146120de57806318e97fd114611f665780632a55205a14611ec55780632baf2acb14611beb5780632eb2c2d6146118115780633403c4e9146117e75780633a3d146f146117a75780633ebc82c51461175557806340c1a064146117205780634e1273f4146115825780634f558e79146115545780636b20c454146112fa578063715018a61461129d57806372b3b6201461122c578063894ba833146111dd5780638da5cb5b146111b457806395d89b41146110e1578063a22cb4651461100a578063a7eae21c14610997578063ab69607a14610978578063bd85b0391461094c578063c33ae88f1461091f578063e985e9c5146108c9578063ee070805146108a5578063efc32cd414610808578063f242432a1461043b578063f2fde38b146103ae578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101356020526020604060002054604051908152f35b600080fd5b346101be576101d1366125f3565b6001600160a01b0390921691903383148015610385575b6101f190612889565b8215926101fe8415612b5e565b61020782612b29565b9161021184612b29565b9460006040516102208161251b565b52610331575b60005b83518110156102c45761023c818561285f565b51610247828861285f565b51908060005260fb602081815260406000205492848410610280579061027b95949392916000525203604060002055612850565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020612fae833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612bb6565b8386526097602052604086208587526020520360408520556040519182526020820152600080516020612f6e83398151915260403392a461032f60405161251b565b005b929060005b835181101561037d578061034d610378928861285f565b51610358828761285f565b5160005260fb60205261037160406000209182546129a5565b9055612850565b610336565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103c76124b5565b6103cf61272a565b6001600160a01b038116156103e75761032f90612782565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be576104546124b5565b61045c6124cb565b90608480356001600160401b0381116101be5761047d9036906004016126d8565b6001600160a01b039190838316331480156107dd575b61049c90612889565b828516156104aa81156128ec565b6104b5604435612b29565b6104c0606435612b29565b918587161561079d575b6106ef575b505060443560005260209460978652604060002084861660005286526040600020546104ff606435821015612946565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061054a60643582546129a5565b90556040516044358152606435878201528482169085871690600080516020612f6e83398151915260403392a4803b61057f57005b60a060006105c9958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a4830190612557565b0393165af1600091816106c0575b506106965750506001906105e9612a9d565b6308c379a014610661575b506105fb57005b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608490fd5b0390fd5b610669612abb565b908161067557506105f4565b61065d60405192839262461bcd60e51b845260048401526024830190612557565b6001600160e01b03191614905061032f5760405162461bcd60e51b81528061065d60048201612a54565b6106e1919250843d86116106e8575b6106d98183612536565b810190612a34565b90846105d7565b503d6106cf565b92959194909360005b845181101561078e5761070b818661285f565b5190610717818861285f565b518260005260fb60205260406000205481811061074b576107469360005260fb60205203604060002055612850565b6106f8565b60405162461bcd60e51b81526020600482015260286024820152600080516020612fae833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104cf565b959260009794919592975b86518110156107cf57806107bf6107ca928b61285f565b51610358828a61285f565b6107a8565b5092959691949093966104ca565b50828416600052609860205260406000203360005260205261049c60ff604060002054169050610493565b346101be5760403660031901126101be576108216124b5565b6024359061082d61272a565b8160005261013560205260ff600260406000200154161561088c576001600160a01b031690811561087a57600090815261012f6020526040902080546001600160a01b0319169091179055005b604051637827912560e01b8152600490fd5b60405163c927e5bf60e01b815260048101839052602490fd5b346101be5760003660031901126101be57602060ff61013354166040519015158152f35b346101be5760403660031901126101be576108e26124b5565b6108ea6124cb565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be576004356000526101386020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760003660031901126101be57602061012e54604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be576109c79036906004016125c6565b906024356001600160401b0381116101be576109e79036906004016125c6565b6044939193356001600160401b0381116101be57610a099036906004016125c6565b6001600160a01b03959192909160643580881690036101be576084359487861686036101be576000549660ff8860081c161597888099610ffd575b8015610fe6575b15610f8a5760ff19811660011760005588610f78575b5088606435161561087a576001600160401b038211610d80578190610a88610131546124e1565b601f8111610f0a575b50600090601f8311600114610e8157600092610e76575b50508160011b916000199060031b1c191617610131555b6001600160401b038211610d8057610ad9610132546124e1565b601f8111610e14575b50600090601f8311600114610da157610b4d9493929160009183610d96575b50508160011b916000199060031b1c191617610132555b61013360ff198154169055610b3d60ff60005460081c16610b3881612c62565b612c62565b610b4633612782565b3691612692565b92610b6360ff60005460081c16610b3881612c62565b83516001600160401b038111610d8057610b7e6099546124e1565b601f8111610d1b575b50602094601f8211600114610cb457948192939495600092610ca9575b50508160011b916000199060031b1c1916176099555b610be160ff60005460081c16610bcf81612c62565b610bd881612c62565b610b3881612c62565b600a61012e5561012d80546001600160a01b0319166001600160a01b0360643516179055808216610c58575b5050610c1a606435612782565b610c2057005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6020817f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b592841660005261013782526040600020600160ff1982541617905560405193600185521692a28180610c0d565b015190508580610ba4565b601f198216956099600052806000209160005b888110610d0357508360019596979810610cea575b505050811b01609955610bba565b015160001960f88460031b161c19169055858080610cdc565b91926020600181928685015181550194019201610cc7565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610d76575b601f0160051c01905b818110610d6a5750610b87565b60008155600101610d5d565b9091508190610d54565b634e487b7160e01b600052604160045260246000fd5b013590508880610b01565b61013260005260206000209160005b601f1985168110610dfc5750918391600193610b4d979695601f19811610610de2575b505050811b0161013255610b18565b0135600019600384901b60f8161c19169055888080610dd3565b90926020600181928686013581550194019101610db0565b6101326000527fc53bdfd4aa1ab65dfdaf681ca6bda958ae4a123d4ed68c4277796592280e7835601f840160051c810160208510610e6f575b601f830160051c82018110610e63575050610ae2565b60008155600101610e4d565b5080610e4d565b013590508980610aa8565b610131600090815293507fbd987ad6ccdb7c7567f7335ea839f95dc944431abcf935b6924f70215963db73915b601f1984168510610ef2576001945083601f19811610610ed8575b505050811b0161013155610abf565b0135600019600384901b60f8161c19169055898080610ec9565b81810135835560209485019460019093019201610eae565b6101316000529091507fbd987ad6ccdb7c7567f7335ea839f95dc944431abcf935b6924f70215963db73601f840160051c810160208510610f71575b90849392915b601f830160051c82018110610f62575050610a91565b60008155859450600101610f4c565b5080610f46565b61ffff19166101011760005589610a61565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610a4b5750600160ff821614610a4b565b50600160ff821610610a44565b346101be5761101836612597565b6001600160a01b039091169033821461108a5733600052609860205260406000208260005260205261105a8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be57604051600090610132805490611107826124e1565b90818452600192838116908160001461118c575060011461114b575b6111478461113381880382612536565b604051918291602083526020830190612557565b0390f35b90935060005260209283600020916000925b8284106111795750505081611147936111339282010193611123565b805485850187015292850192810161115d565b61114796506111339450602092508593915060ff191682840152151560051b82010193611123565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be576111f661272a565b610133805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760403660031901126101be576004356001600160401b0381116101be5761125c9036906004016125c6565b61126461272a565b60ff610133541661128b57602091611283913391339160243591612ce3565b604051908152f35b604051637abbf1c960e01b8152600490fd5b346101be5760003660031901126101be576112b661272a565b603380546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101be5760603660031901126101be576113136124b5565b6024906001600160401b039082358281116101be57611336903690600401612634565b9160449081359081116101be57611351903690600401612634565b6001600160a01b0390921692338414801561152b575b61137090612889565b831561137c8115612b5e565b61138982518551146129b2565b60006040516113978161251b565b526114f3575b60005b8151811015611439576113b3818361285f565b516113be828661285f565b51908060005260fb6020818152604060002054928484106113f757906113f295949392916000525203604060002055612850565b6113a0565b60405162461bcd60e51b8152600481018390526028818d0152600080516020612fae833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b82518110156114ae57806114566114a9928561285f565b51611461828761285f565b519080600052609760209080825260406000208760005282526040600020549261148d85851015612bb6565b6000528152604060002090866000525203604060002055612850565b61143f565b50907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6114e5600094604051918291339583612a0f565b0390a461032f60405161251b565b9260009491945b8451811015611521578061151161151c928661285f565b51610358828861285f565b6114fa565b509293909361139d565b5083600052609860205260406000203360005260205261137060ff604060002054169050611367565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be578160040135906115bf8261261d565b926115cd6040519485612536565b82845260209260248486019160051b830101913683116101be57602401905b828210611701575050506024359081116101be5761160e903690600401612634565b82518151036116aa578251926116238461261d565b936116316040519586612536565b808552611640601f199161261d565b01368486013760005b81518110156116935761168e9061167e6001600160a01b0361166b838661285f565b5116611677838761285f565b51906127cb565b611688828861285f565b52612850565b611649565b5050506111476040519282849384528301906126f6565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115ec565b346101be5760203660031901126101be57600435600052610136602052602060018060a01b0360406000205416604051908152f35b346101be5760203660031901126101be5761176e6124b5565b61177661272a565b6001600160a01b0381161561087a5761012d80546001600160a01b0319166001600160a01b03909216919091179055005b346101be5760203660031901126101be576001600160a01b036117c86124b5565b16600052610137602052602060ff604060002054166040519015158152f35b346101be5760003660031901126101be5761012d546040516001600160a01b039091168152602090f35b346101be5760031960a0368201126101be5761182b6124b5565b906118346124cb565b6044908135926001600160401b03938481116101be57611858903690600401612634565b606480358681116101be57611871903690600401612634565b9460849687359081116101be5761188c9036906004016126d8565b6001600160a01b039489861633148015611bc0575b6118aa90612889565b6118b785518951146129b2565b858716156118c581156128ec565b868b1615611b7d575b611ac8575b60005b855181101561196b57806118ed611966928861285f565b518c6118f9838d61285f565b519180600052609790838c602094848652604060002082821660005286526040600020549161192a84841015612946565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c166000525261037160406000209182546129a5565b6118d6565b50888a989796949789604051887f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb89808d16941692806119ad87339583612a0f565b0390a4873b6119b857005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a487016119ec916126f6565b908487830301908701526119ff916126f6565b918483030190840152611a1191612557565b03921691815a602094600091f160009181611aa8575b50611a805750506001611a38612a9d565b6308c379a014611a49575b6105fb57005b611a51612abb565b80611a5c5750611a43565b60405162461bcd60e51b81526020600482015290819061065d906024830190612557565b6001600160e01b0319161461032f5760405162461bcd60e51b81528061065d60048201612a54565b611ac191925060203d81116106e8576106d98183612536565b9083611a27565b9796949060009993999692965b8551811015611b6d57611ae8818761285f565b51611af3828961285f565b519080600052602060fb815260406000205491838310611b2c57611b279493929160fb916000525203604060002055612850565b611ad5565b508b9067616c537570706c7960c01b8f600080516020612fae8339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b50909496979892989591956118d3565b99969498959392919060005b8a51811015611bb157808b61035882611ba5611bac958f61285f565b519261285f565b611b89565b509091929395989496996118ce565b50858a1660005260986020526040600020336000526020526118aa60ff6040600020541690506118a1565b346101be57611bf9366125f3565b60ff610133939293541661128b57826000526101359060209382855260ff6002604060002001541615611ead576001600160a01b038481169390841561087a576033541633141580611e94575b611e7c578215611e6a5781600052610138808752611c69846040600020546129a5565b91836000528752604060002054808311611e46575082600052865260406000205560405191611c978361251b565b60008352611ca482612b29565b93611cae82612b29565b9360005b888751821015611cf3575080611ccb611cee928861285f565b51611cd6828a61285f565b5160005260fb8b5261037160406000209182546129a5565b611cb2565b955050849087856000526097835260406000208460005283526040600020611d1c8682546129a5565b90558360006040518881528786820152600080516020612f6e83398151915260403392a43b611d4f575b50604051848152f35b600092611d939160405194858094819363f23a6e6160e01b998a84523360048501528460248501528b6044850152606484015260a0608484015260a4830190612557565b03925af160009181611e27575b50611dff5750506001611db1612a9d565b6308c379a014611dca575b6105fb575b82808381611d46565b611dd2612abb565b80611ddd5750611dbc565b8361065d60405192839262461bcd60e51b845260048401526024830190612557565b6001600160e01b03191614611dc15760405162461bcd60e51b81528061065d60048201612a54565b611e3f919250853d87116106e8576106d98183612536565b9085611da0565b836064918460405192630d6f5ed560e11b8452600484015260248301526044820152fd5b60405163d11b25af60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b5033600052610137865260ff6040600020541615611c46565b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760403660031901126101be57600435600090815261012f6020526040902054602435906001600160a01b039081168015611f5957905b6101306020526040600020548015611f4e57925b838102938185041490151715611f3857604092606491845193168352046020820152f35b634e487b7160e01b600052601160045260246000fd5b5061012e5492611f14565b508061012d541690611f00565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611f9a9036906004016125c6565b9190611fa461272a565b836000526101359160209280845260ff60026040600020015416156120c557856000528352600180604060002001918511610d8057611fed85611fe784546124e1565b84612c0e565b6000601f861160011461204e57918580600080516020612f8e8339815191529796959361203e95600093612043575b501b906000198760031b1c19161790555b604051938385948552840191612cc2565b0390a2005b85013592508a61201c565b601f1986169083600052856000209160005b8181106120b05750918796959391600080516020612f8e8339815191529861203e969410612096575b505085811b01905561202d565b840135600019600389901b60f8161c191690558880612089565b86830135845592840192918701918701612060565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576004356001600160401b0381116101be5761210e9036906004016125c6565b906044356001600160a01b03811681036101be5761212a61272a565b60ff610133541661128b5760209261128392339160243591612ce3565b346101be576020806003193601126101be57600435600052610135815260018060406000200190826040518093600090805490612183826124e1565b808552918681169081156122a85750600114612267575b50506121a892500383612536565b8151156121c65750905b611147604051928284938452830190612557565b90506040519060009083609954916121dd836124e1565b9283865285828216918260001461224757505060011461220d575b50505081612207910382612536565b906121b2565b91909250609960005282600020916000925b828410612234575050508201018183856121f8565b805486850186015292840192810161221f565b60ff19168482015293151560051b840190920193508591508690506121f8565b9091506000528260002090846000925b82841061229157505050916121a89282010185928761219a565b805488850187015287945092850192869101612277565b9150506121a894925060ff191682840152151560051b82010185928761219a565b346101be576122d736612597565b906122e061272a565b6001600160a01b031690811561087a5760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261013782526123378160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be57604051600090610131805490612368826124e1565b90818452600192838116908160001461118c5750600114612393576111478461113381880382612536565b90935060005260209283600020916000925b8284106123c15750505081611147936111339282010193611123565b80548585018701529285019281016123a5565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be5760209063d20de18960e01b811490811561247d575b8115612420575b506040519015158152f35b63152a902d60e11b81149150811561243a575b5082612415565b636cdb3d1360e11b81149150811561246c575b811561245b575b5082612433565b6301ffc9a760e01b14905082612454565b6303a24d0760e21b8114915061244d565b631030681960e21b8114915061240e565b346101be5760403660031901126101be5760206112836124ac6124b5565b602435906127cb565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c92168015612511575b60208310146124fb57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124f0565b602081019081106001600160401b03821117610d8057604052565b90601f801991011681019081106001600160401b03821117610d8057604052565b919082519283825260005b848110612583575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612562565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610d805760051b60200190565b81601f820112156101be5780359161264b8361261d565b926126596040519485612536565b808452602092838086019260051b8201019283116101be578301905b828210612683575050505090565b81358152908301908301612675565b9291926001600160401b038211610d8057604051916126bb601f8201601f191660200184612536565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be578160206126f393359101612692565b90565b90815180825260208080930193019160005b828110612716575050505090565b835185529381019392810192600101612708565b6033546001600160a01b0316330361273e57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b03169081156127f857600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b6000198114611f385760010190565b80518210156128735760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b1561289057565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b156128f357565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561294d57565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b91908201809211611f3857565b156129b957565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612a266126f3936040845260408401906126f6565b9160208184039101526126f6565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612aaa57565b905060046000803e60005160e01c90565b600060443d106126f357604051600319913d83016004833e81516001600160401b03918282113d602484011117612b1857818401948551938411612b20573d85010160208487010111612b1857506126f392910160200190612536565b949350505050565b50949350505050565b60405190604082018281106001600160401b03821117610d805760405260018252602082016020368237825115612873575290565b15612b6557565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612bbd57565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c1c57505050565b600091825260208220906020601f850160051c83019410612c58575b601f0160051c01915b828110612c4d57505050565b818155600101612c41565b9092508290612c38565b15612c6957565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9193908415612f5b576001600160a01b0382161561087a5761013494612d098654612850565b8096556040519260608401936001600160401b039481811086821117610d8057604052828152612d3a368588612692565b906020810191825260016040820152886000526101356020526040600020918151835551958651908111610d80578996612d8482612d7b60018701546124e1565b60018701612c0e565b602090601f8311600114612eb55760407f06ec8b3fb63a2a91fc1109b41eed7d76ac33c774d1d49f298836f97561ed07a4999a9484612dfc95612e949895600295600092612eaa575b50508160011b916000199060031b1c19161760018501555b0151151591019060ff801983541691151516179055565b8660005261013660205260406000209760018060a01b03169760018060a01b031990898282541617905561012f60205260406000209060018060a01b0385169082541617905561012e5461013060205260406000205586600080516020612f8e8339815191526040516020815280612e78602082018a87612cc2565b0390a26040519485948552606060208601526060850191612cc2565b6001600160a01b0390911660408301520390a390565b015190503880612dcd565b6001859493929a950160005260206000209060005b601f1984168110612f405750612dfc936001846002947f06ec8b3fb63a2a91fc1109b41eed7d76ac33c774d1d49f298836f97561ed07a49d9e604095612e949b9a98601f19811610612f27575b505050811b016001850155612de5565b015160001960f88460031b161c19169055388080612f17565b818c0151835560209b8c019b8e9b5060019093019201612eca565b604051631dd0e19360e01b8152600490fdfec3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f626bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a264697066735822122077965fa0e0e98965ee2091700b624025a480f5e36e32a78c2f0d090944ea05a164736f6c63430008120033","sourceMap":"542:1772:214:-:0;;;;;;;2518:6:86;542:1772:214;;719:10:111;-1:-1:-1;;;;;;542:1772:214;;;;;;;;-1:-1:-1;;;;;542:1772:214;2518:6:86;542:1772:214;;719:10:111;542:1772:214;;2566:40:86;2518:6;;2566:40;929:17:214;;;;;-1:-1:-1;;;;;929:17:214;;;;;;;;;;;;;;;;;;;;;;;542:1772;;;;;;;;;;;;;;;;;;929:17;542:1772;;;;;;;;;;929:17;-1:-1:-1;;;542:1772:214;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060408181526004908136101561001657600080fd5b600092833560e01c908163014812a2146104da5750806318cf6f4214610473578063389dee181461044a578063715018a6146103ed5780638667f619146101f85780638da5cb5b146101cc578063e2be1a081461014a5763f2fde38b1461007c57600080fd5b34610146576020366003190112610146576001600160a01b03823581811693919290849003610142576100ad610532565b83156100f05750506000548260018060a01b0319821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8480fd5b8280fd5b5090346101465760203660031901126101465780356001600160a01b03811692908390036101c85761017a610532565b82156101bb575050600180546001600160a01b031916821790557fe329ca164c11428fa5ee865054c08ccee6f2d38eda61e9e6a35b3081a472daed8280a280f35b51637827912560e01b8152fd5b8380fd5b8382346101f457816003193601126101f457905490516001600160a01b039091168152602090f35b5080fd5b508290346101f457600319906060368301126101465767ffffffffffffffff84358181116101425761022d90369087016104ff565b91906024358281116103e95761024690369089016104ff565b95906044358481116103e55761025f9036908b016104ff565b600154608881901c62ffffff16763d602d80600a3d3981f3363d3d373d3d3d363d73000000178b5260781b6001600160781b0319166e5af43d82803e903d91602b57fd5bf3176020526001600160a01b039890929089603760098df016998a156103a95760025416958a3b156103a557938b9693610313610322948f979461030360a09a968f519e8f9c8d9c8d6329fab88760e21b90528d015260a48c019161058a565b91868a84030160248b015261058a565b9286840301604487015261058a565b903360648401526084830152038183885af1801561039b57610371575b5050602093505191817f0c069e30a19668076937a9266318f1876e9c7dabdae788aaad8f5c73599aea89339280a38152f35b81949294116103885760209450835291848061033f565b634e487b7160e01b825260418552602482fd5b83513d87823e3d90fd5b8b80fd5b895162461bcd60e51b81526020818f01526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606490fd5b8880fd5b8680fd5b8334610447578060031936011261044757610406610532565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b8382346101f457816003193601126101f45760025490516001600160a01b039091168152602090f35b5050346101f45760203660031901126101f457356001600160a01b038116908190036101f4576104a1610532565b600280546001600160a01b031916821790557feedfae894237292077aa1e4fcca7f9a0a2aabeda165c2ff69a08cfd365d7c9eb8280a280f35b8490346101f457816003193601126101f4576001546001600160a01b03168152602090f35b9181601f8401121561052d5782359167ffffffffffffffff831161052d576020838186019501011161052d57565b600080fd5b6000546001600160a01b0316330361054657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b908060209392818452848401376000828201840152601f01601f191601019056fea2646970667358221220c6cdc69dac480746e3b0a403a8be123871650849084015d4745cbdd2f7b9327664736f6c63430008120033","sourceMap":"542:1772:214:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:214;;;;-1:-1:-1;;;;;542:1772:214;;;;;;;;;;;;;;1063:62:86;;:::i;:::-;2162:22;;542:1772:214;;;;;;;;;;;;;;;;;;;2566:40:86;542:1772:214;2566:40:86;;542:1772:214;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;542:1772:214;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:214;;;;;;-1:-1:-1;;;;;542:1772:214;;;;;;;;;1063:62:86;;:::i;:::-;1161:26:214;;1157:63;;-1:-1:-1;;542:1772:214;;;-1:-1:-1;;;;;;542:1772:214;;;;;1338:32;;;;542:1772;;1157:63;542:1772;-1:-1:-1;;;1196:24:214;;;542:1772;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:1772:214;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;2034:11;542:1772;1101:558:90;;;;;;;;;;;;-1:-1:-1;;;;;;1101:558:90;;;542:1772:214;1101:558:90;-1:-1:-1;;;;;542:1772:214;;;;;1101:558:90;;;;542:1772:214;1676:22:90;;;542:1772:214;;2207:13;542:1772;;2145:76;;;;;;542:1772;;;;;;;;;;;;;;;;;;;;;;;;;2145:76;;;;542:1772;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;2195:10;;542:1772;;;;;;;;2145:76;;;;;;;;;;;;542:1772;;;;;;;2195:10;;2237:45;2195:10;2237:45;;;542:1772;;;2145:76;542:1772;;;;;;;;;;;;2145:76;;;;;542:1772;-1:-1:-1;;;542:1772:214;;;;;;;;2145:76;542:1772;;;;;;;;;2145:76;542:1772;;;;;;-1:-1:-1;;;542:1772:214;;;;;;;;;;;;-1:-1:-1;;;542:1772:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;1063:62:86;;:::i;:::-;542:1772:214;;-1:-1:-1;;;;;;542:1772:214;;;;;;-1:-1:-1;;;;;542:1772:214;2566:40:86;542:1772:214;;2566:40:86;542:1772:214;;;;;;;;;;;;;;;;;;;665:37;542:1772;;;-1:-1:-1;;;;;542:1772:214;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:214;;;;;-1:-1:-1;;;;;542:1772:214;;;;;;;;1063:62:86;;:::i;:::-;1600:30:214;542:1772;;-1:-1:-1;;;;;;542:1772:214;;;;;1645:36;;;;542:1772;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:1772:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;1359:130:86;1273:6;542:1772:214;-1:-1:-1;;;;;542:1772:214;719:10:111;1422:23:86;542:1772:214;;1359:130:86:o;542:1772:214:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;542:1772:214;;;;;;;;-1:-1:-1;;542:1772:214;;;;:::o","linkReferences":{}},"methodIdentifiers":{"createRareERC1155Contract(string,string,string)":"8667f619","defaultMinter()":"389dee18","owner()":"8da5cb5b","rareERC1155()":"014812a2","renounceOwnership()":"715018a6","setDefaultMinter(address)":"18cf6f42","setRareERC1155(address)":"e2be1a08","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"defaultMinter\",\"type\":\"address\"}],\"name\":\"DefaultMinterUpdated\",\"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\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"RareERC1155ContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rareERC1155\",\"type\":\"address\"}],\"name\":\"RareERC1155Updated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createRareERC1155Contract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultMinter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rareERC1155\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"setDefaultMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rareERC1155\",\"type\":\"address\"}],\"name\":\"setRareERC1155\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Deploys EIP-1167 minimal proxies initialized with the caller as collection owner.\",\"events\":{\"DefaultMinterUpdated(address)\":{\"params\":{\"defaultMinter\":\"New default minter address. Zero address disables default minter approval.\"}},\"RareERC1155ContractCreated(address,address)\":{\"params\":{\"contractAddress\":\"Address of the newly created ERC1155 clone.\",\"owner\":\"Initial owner of the clone.\"}},\"RareERC1155Updated(address)\":{\"params\":{\"rareERC1155\":\"New ERC1155 implementation address.\"}}},\"kind\":\"dev\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"params\":{\"_baseURI\":\"Base URI used by the collection when a token id has no token-specific URI.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"},\"returns\":{\"_0\":\"Address of the newly created ERC1155 clone.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDefaultMinter(address)\":{\"params\":{\"_defaultMinter\":\"Address approved to mint on newly created clones, or zero address for none.\"}},\"setRareERC1155(address)\":{\"params\":{\"_rareERC1155\":\"Address of the replacement implementation.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"defaultMinter\":{\"return\":\"Default minter address. Zero address means no default minter.\",\"returns\":{\"_0\":\"Default minter address. Zero address means no default minter.\"}},\"rareERC1155\":{\"return\":\"ERC1155 implementation address.\",\"returns\":{\"_0\":\"ERC1155 implementation address.\"}}},\"title\":\"RareERC1155ContractFactory\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an implementation address is the zero address.\"}]},\"events\":{\"DefaultMinterUpdated(address)\":{\"notice\":\"Emitted when the owner changes the default minter for new clones.\"},\"RareERC1155ContractCreated(address,address)\":{\"notice\":\"Emitted when the factory creates and initializes a collection clone.\"},\"RareERC1155Updated(address)\":{\"notice\":\"Emitted when the owner changes the implementation cloned by the factory.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Deploys the initial ERC1155 implementation used for clones.\"},\"createRareERC1155Contract(string,string,string)\":{\"notice\":\"Creates a new initialized ERC1155 collection clone.\"},\"defaultMinter()\":{\"notice\":\"Returns the optional minter approved on each newly created collection.\"},\"rareERC1155()\":{\"notice\":\"Returns the ERC1155 implementation address cloned by the factory.\"},\"setDefaultMinter(address)\":{\"notice\":\"Updates the optional minter approved during clone initialization.\"},\"setRareERC1155(address)\":{\"notice\":\"Updates the ERC1155 implementation address cloned by future factory calls.\"}},\"notice\":\"Clone factory for RARE Protocol ERC1155 collections.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/RareERC1155ContractFactory.sol\":\"RareERC1155ContractFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7\",\"dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol\":{\"keccak256\":\"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98\",\"dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8\",\"dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/SafeMathUpgradeable.sol\":{\"keccak256\":\"0xb1561a6950b1aaa504c8f81b7d46bccfa77ccd10de3eb865cf34b1acd5ad505e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a56cb91629dacd161be24908fbf94315f3f45dd6fee8dad82b27af853cbc4ee\",\"dweb:/ipfs/QmNfEzdf4NTpxyhzWKAmeDwwSpJ6ZjNizK3GXw3TEuTTgn\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0x923b9774b81c1abfb992262ae7763b6e6de77b077a7180d53c6ebb7b1c8bd648\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53445dc0431f9b45c06f567c6091da961d4087bec0010cca5bd62100fa624a38\",\"dweb:/ipfs/QmNvBYpBv183czrAqNXr76E8M3LF93ouAJFeAcHfb59Rcx\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0x0e1fe02da411a6293004e5ee85bdd1facef5f1b6ef2aab8d36c73f0d77b448db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5bfd474499866fe24ac6b88eb92969395baf1e644a0f0b0054e66f9ae90c00e\",\"dweb:/ipfs/QmS5j268UauZARToNJazEBJDWvWM35j8kHx779PF3c5rib\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x9dc23a2064e31818e89092b5935ab96079a99b29e1aa1456565ee698d3fd23a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5aaa41dbed645e29ec41a7159bee7a10519ebaa71fb86187bd109aba732db40\",\"dweb:/ipfs/Qma3yM1SZuHAxo6HS16uFMX1yVVqikkXX9v6n5op5Tss1V\"]},\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":{\"keccak256\":\"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179\",\"dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb\"]},\"src/token/ERC1155/RareERC1155.sol\":{\"keccak256\":\"0x894e428a8afbd1d06d8f988574d1f73de6eb679327ae9a3d91183e993f105cae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1afeff73784717afd6f5c83f4546aaa155cfaad67aaf99399b31590e4d7f259\",\"dweb:/ipfs/QmRs8jAGq33XapRmDCEJ2Pi89HqcrDhVUgAQeWLB3koAtT\"]},\"src/token/ERC1155/RareERC1155ContractFactory.sol\":{\"keccak256\":\"0x1d75d40825831b017450e31e6b118bd27746a014099c3a3900b33f7e6c035036\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9584f968656c2d2c73993d8f3f4b2ae82dfb5788329544d1c620826d2d10b951\",\"dweb:/ipfs/QmT3VCoEuHKcBaVU3P6bRU9aroGmEQgjXB3QB6Liejdrjt\"]},\"src/token/extensions/ERC2981Upgradeable.sol\":{\"keccak256\":\"0x62c64c84a127c5a388397fa20c990b8c0dbd22a1fa1b7176f55c8aae3238383d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e540b90c23c363b1d5fb122286c7c583a44c8b907f2764ddf0f2c0e7793b5465\",\"dweb:/ipfs/QmPn163efSqFyhWHC4qFmeJXgMMbEmoENa6gRZjM4wedhA\"]},\"src/token/extensions/IERC2981.sol\":{\"keccak256\":\"0x2435b55e1011401b85ed792513721df4fe905013926fa7385f502aa3e97cdffd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056bca27c266998358654b0a64b4286a9b66c1b4db464f70a679d44de0f3fa4b\",\"dweb:/ipfs/QmW7zACzmmzoHKdrRQVRKh6eNiGuMjKZrZbvndNW819Z1w\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"defaultMinter","type":"address","indexed":true}],"type":"event","name":"DefaultMinterUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"RareERC1155ContractCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"rareERC1155","type":"address","indexed":true}],"type":"event","name":"RareERC1155Updated","anonymous":false},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createRareERC1155Contract","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultMinter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rareERC1155","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultMinter"},{"inputs":[{"internalType":"address","name":"_rareERC1155","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRareERC1155"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"createRareERC1155Contract(string,string,string)":{"params":{"_baseURI":"Base URI used by the collection when a token id has no token-specific URI.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."},"returns":{"_0":"Address of the newly created ERC1155 clone."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setDefaultMinter(address)":{"params":{"_defaultMinter":"Address approved to mint on newly created clones, or zero address for none."}},"setRareERC1155(address)":{"params":{"_rareERC1155":"Address of the replacement implementation."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Deploys the initial ERC1155 implementation used for clones."},"createRareERC1155Contract(string,string,string)":{"notice":"Creates a new initialized ERC1155 collection clone."},"defaultMinter()":{"notice":"Returns the optional minter approved on each newly created collection."},"rareERC1155()":{"notice":"Returns the ERC1155 implementation address cloned by the factory."},"setDefaultMinter(address)":{"notice":"Updates the optional minter approved during clone initialization."},"setRareERC1155(address)":{"notice":"Updates the ERC1155 implementation address cloned by future factory calls."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/RareERC1155ContractFactory.sol":"RareERC1155ContractFactory"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol":{"keccak256":"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856","urls":["bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7","dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"keccak256":"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b","urls":["bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce","dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol":{"keccak256":"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8","urls":["bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83","dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol":{"keccak256":"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7","urls":["bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98","dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"keccak256":"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e","urls":["bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8","dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"keccak256":"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448","urls":["bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9","dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a","urls":["bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7","dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/SafeMathUpgradeable.sol":{"keccak256":"0xb1561a6950b1aaa504c8f81b7d46bccfa77ccd10de3eb865cf34b1acd5ad505e","urls":["bzz-raw://9a56cb91629dacd161be24908fbf94315f3f45dd6fee8dad82b27af853cbc4ee","dweb:/ipfs/QmNfEzdf4NTpxyhzWKAmeDwwSpJ6ZjNizK3GXw3TEuTTgn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0x923b9774b81c1abfb992262ae7763b6e6de77b077a7180d53c6ebb7b1c8bd648","urls":["bzz-raw://53445dc0431f9b45c06f567c6091da961d4087bec0010cca5bd62100fa624a38","dweb:/ipfs/QmNvBYpBv183czrAqNXr76E8M3LF93ouAJFeAcHfb59Rcx"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0x0e1fe02da411a6293004e5ee85bdd1facef5f1b6ef2aab8d36c73f0d77b448db","urls":["bzz-raw://c5bfd474499866fe24ac6b88eb92969395baf1e644a0f0b0054e66f9ae90c00e","dweb:/ipfs/QmS5j268UauZARToNJazEBJDWvWM35j8kHx779PF3c5rib"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x9dc23a2064e31818e89092b5935ab96079a99b29e1aa1456565ee698d3fd23a6","urls":["bzz-raw://d5aaa41dbed645e29ec41a7159bee7a10519ebaa71fb86187bd109aba732db40","dweb:/ipfs/Qma3yM1SZuHAxo6HS16uFMX1yVVqikkXX9v6n5op5Tss1V"],"license":"MIT"},"src/token/ERC1155/IRareERC1155ContractFactory.sol":{"keccak256":"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63","urls":["bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179","dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb"],"license":"MIT"},"src/token/ERC1155/RareERC1155.sol":{"keccak256":"0x894e428a8afbd1d06d8f988574d1f73de6eb679327ae9a3d91183e993f105cae","urls":["bzz-raw://e1afeff73784717afd6f5c83f4546aaa155cfaad67aaf99399b31590e4d7f259","dweb:/ipfs/QmRs8jAGq33XapRmDCEJ2Pi89HqcrDhVUgAQeWLB3koAtT"],"license":"MIT"},"src/token/ERC1155/RareERC1155ContractFactory.sol":{"keccak256":"0x1d75d40825831b017450e31e6b118bd27746a014099c3a3900b33f7e6c035036","urls":["bzz-raw://9584f968656c2d2c73993d8f3f4b2ae82dfb5788329544d1c620826d2d10b951","dweb:/ipfs/QmT3VCoEuHKcBaVU3P6bRU9aroGmEQgjXB3QB6Liejdrjt"],"license":"MIT"},"src/token/extensions/ERC2981Upgradeable.sol":{"keccak256":"0x62c64c84a127c5a388397fa20c990b8c0dbd22a1fa1b7176f55c8aae3238383d","urls":["bzz-raw://e540b90c23c363b1d5fb122286c7c583a44c8b907f2764ddf0f2c0e7793b5465","dweb:/ipfs/QmPn163efSqFyhWHC4qFmeJXgMMbEmoENa6gRZjM4wedhA"],"license":"MIT"},"src/token/extensions/IERC2981.sol":{"keccak256":"0x2435b55e1011401b85ed792513721df4fe905013926fa7385f502aa3e97cdffd","urls":["bzz-raw://056bca27c266998358654b0a64b4286a9b66c1b4db464f70a679d44de0f3fa4b","dweb:/ipfs/QmW7zACzmmzoHKdrRQVRKh6eNiGuMjKZrZbvndNW819Z1w"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":214} \ No newline at end of file diff --git a/abis/RareERC1155Marketplace.json b/abis/RareERC1155Marketplace.json new file mode 100644 index 0000000..116a749 --- /dev/null +++ b/abis/RareERC1155Marketplace.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buy","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"cancelSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getDirectSaleConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Marketplace.DirectSaleConfig","components":[{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getERC1155ApprovalManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getMarketConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct MarketConfigV2.Config","components":[{"name":"networkBeneficiary","type":"address","internalType":"address"},{"name":"marketplaceSettings","type":"address","internalType":"contract IMarketplaceSettings"},{"name":"spaceOperatorRegistry","type":"address","internalType":"contract ISpaceOperatorRegistry"},{"name":"royaltyEngine","type":"address","internalType":"contract IRoyaltyEngineV1"},{"name":"payments","type":"address","internalType":"contract IPayments"},{"name":"approvedTokenRegistry","type":"address","internalType":"contract IApprovedTokenRegistry"},{"name":"stakingSettings","type":"address","internalType":"contract IStakingSettings"},{"name":"stakingRegistry","type":"address","internalType":"contract IRareStakingRegistry"},{"name":"erc20ApprovalManager","type":"address","internalType":"contract IERC20ApprovalManager"},{"name":"erc721ApprovalManager","type":"address","internalType":"contract IERC721ApprovalManager"}]}],"stateMutability":"view"},{"type":"function","name":"getSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Marketplace.SalePrice","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenAllowListConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Marketplace.AllowListConfig","components":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenMintsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"},{"name":"_marketplaceSettings","type":"address","internalType":"address"},{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"},{"name":"_royaltyEngine","type":"address","internalType":"address"},{"name":"_payments","type":"address","internalType":"address"},{"name":"_approvedTokenRegistry","type":"address","internalType":"address"},{"name":"_stakingSettings","type":"address","internalType":"address"},{"name":"_stakingRegistry","type":"address","internalType":"address"},{"name":"_erc20ApprovalManager","type":"address","internalType":"address"},{"name":"_erc721ApprovalManager","type":"address","internalType":"address"},{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mintDirectSale","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_proof","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"prepareMintDirectSale","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_startTime","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovedTokenRegistry","inputs":[{"name":"_approvedTokenRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setContractPaused","inputs":[{"name":"_isPaused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC1155ApprovalManager","inputs":[{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20ApprovalManager","inputs":[{"name":"_erc20ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC721ApprovalManager","inputs":[{"name":"_erc721ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketplaceSettings","inputs":[{"name":"_marketplaceSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkBeneficiary","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPayments","inputs":[{"name":"_payments","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyEngine","inputs":[{"name":"_royaltyEngine","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpaceOperatorRegistry","inputs":[{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingRegistry","inputs":[{"name":"_stakingRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingSettings","inputs":[{"name":"_stakingSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenAllowListConfig","inputs":[{"name":"_root","type":"bytes32","internalType":"bytes32"},{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeTo","inputs":[{"name":"newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60a08060405234620000e157306080526000549060ff8260081c166200008f575060ff8082160362000053575b6040516158199081620000e7823960805181818161056201528181610a1d0152612cfe0152f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a1386200002c565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8063176ab4401461026757806321ede0321461026257806328fbba031461025d5780632c740844146102585780633492e5a8146102535780633659cfe61461024e578063369679a4146102495780633f83e9e0146102445780634f1ef2861461023f57806352d1902d1461023a578063552f791d146102355780635a501f8f146102305780635faec4061461022b578063614bd944146102265780636afaf006146102215780636e2f4d8b1461021c578063715018a61461021757806376902b83146102125780637b2db4bb1461020d5780637f358230146102085780638760251a14610203578063882796f1146101fe5780638da5cb5b146101f957806399273b3d146101f4578063af231a58146101ef578063b187bd26146101ea578063b64843b2146101e5578063b8aefc63146101e0578063bf3d90f8146101db578063c7c83d17146101d6578063d5f339a8146101d1578063d7a9fb7c146101cc578063d80b23e3146101c7578063e4e87e3b146101c2578063f1035744146101bd578063f2fde38b146101b85763ff5c83a4146101b357600080fd5b6128da565b612849565b6127bf565b612735565b6126ab565b612621565b61249b565b612471565b6123f4565b61237d565b612294565b612270565b6121e6565b611bc3565b611b9a565b611b5e565b611b08565b611a7e565b6119e5565b61191c565b6118be565b6117cb565b61105f565b610f29565b610b8a565b610b16565b610aca565b610a0a565b610984565b610825565b610759565b61053b565b6104b1565b610427565b6103da565b610324565b610282565b6001600160a01b0381160361027d57565b600080fd5b3461027d5760006020366003190112610321576004356102a18161026c565b6102a961292a565b6102b2816153ef565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d5760405163ed56be5b60e01b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b61031590610864565b80f35b612a9c565b5080fd5b80fd5b3461027d5760006020366003190112610321576004356103438161026c565b61034b61292a565b6103548161542e565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d5760405163143df10960e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b606090600319011261027d576004356103c68161026c565b90602435906044356103d78161026c565b90565b3461027d57602061041e6103ed366103ae565b6001600160a01b03928316600090815261010986526040808220938252928652828120919093168352602052902090565b54604051908152f35b3461027d5760006020366003190112610321576004356104468161026c565b61044e61292a565b61045781615467565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d5760405163632c2a3160e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d5760006020366003190112610321576004356104d08161026c565b6104d861292a565b6104e1816154a2565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d5760405163148282a760e21b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d57602036600319011261027d576004356105588161026c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169190610591308414156129cb565b6105ae6000805160206157c4833981519152938285541614612a2c565b6105b661292a565b604051906105c3826108e9565b600082527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156105ff5750506105fd9150612b55565b005b6020600491604094939451928380926352d1902d60e01b825286165afa6000918161065a575b506106475760405162461bcd60e51b81528061064360048201612b06565b0390fd5b6105fd936106559114612aa8565b612be5565b61067c91925060203d8111610683575b610674818361091f565b810190612a8d565b9038610625565b503d61066a565b90815180825260208080930193019160005b8281106106aa575050505090565b83516001600160a01b03168552938101939281019260010161069c565b90815180825260208080930193019160005b8281106106e7575050505090565b835160ff16855293810193928101926001016106d9565b906103d7916020815260018060a01b03825116602082015260208201516040820152604082015160608201526080610744606084015160a08385015260c084019061068a565b9201519060a0601f19828503019101526106c7565b3461027d5761082160046107d7610812610772366103ae565b604095929594919480958151906107888261087c565b6060608060009384815284602082015284868201528280820152015260018060a01b03809916825261010c602052828220908252602052209060018060a01b0316600052602052604060002090565b8351946107e38661087c565b8154168552600181015460208601526002810154848601526108076003820161386c565b6060860152016138c4565b608083015251918291826106fe565b0390f35b3461027d57604036600319011261027d576105fd6004356108458161026c565b6024359061422f565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161087757604052565b61084e565b60a081019081106001600160401b0382111761087757604052565b61014081019081106001600160401b0382111761087757604052565b60e081019081106001600160401b0382111761087757604052565b604081019081106001600160401b0382111761087757604052565b602081019081106001600160401b0382111761087757604052565b606081019081106001600160401b0382111761087757604052565b90601f801991011681019081106001600160401b0382111761087757604052565b6040519061094d82610897565b565b6040519061094d826108b3565b6040519061094d8261087c565b6001600160401b03811161087757601f01601f191660200190565b604036600319011261027d5760043561099c8161026c565b602435906001600160401b03821161027d573660238301121561027d578160040135906109c882610969565b916109d6604051938461091f565b808352366024828601011161027d5760208160009260246105fd97018387013784010152612cf4565b600091031261027d57565b3461027d57600036600319011261027d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610a64576040516000805160206157c48339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b3461027d57604036600319011261027d57600435610ae78161026c565b60018060a01b031660005261010a60205260406000206024356000526020526020604060002054604051908152f35b3461027d57602061041e610b29366103ae565b6001600160a01b03928316600090815261010b86526040808220938252928652828120919093168352602052902090565b9181601f8401121561027d578235916001600160401b03831161027d576020808501948460051b01011161027d57565b3461027d5760e036600319011261027d576004803590610ba98261026c565b60243590604435610bb98161026c565b6084356064356001600160401b0360a43581811161027d57610bde9036908701610b5a565b9160c43590811161027d57610bf69036908801610b5a565b92909160ff61010d5416610e5157610c0d87614a8a565b610c1984848484614ecf565b610c228a614b3a565b8415610e40578515610e2f5760018060a01b038a1697610c5c6040918251627eeac760e11b81528c818d8180602097889533898401614012565b03915afa90811561031857600091610e12575b50898110610df2575061010554610cb7908390610c9c906001600160a01b03165b6001600160a01b031690565b8d8651808095819463e985e9c560e01b835233898401613420565b03915afa90811561031857600091610dc5575b5015610da7575090610d9689610d918d9e610d7a7fa98b0b2592a02d5bb9ee933ec6786e7ea38ed4539557337ebe429fe35802907e9d9e9f8c610da29c9b9a9998610d25610d1661095c565b6001600160a01b039098168852565b8601528d87860152610d38368a8a613451565b6060860152610d48368c8c6134b4565b6080860152610d6b339360018060a01b031660005261010c602052604060002090565b90600052602052604060002090565b9060018060a01b0316600052602052604060002090565b6140e5565b51968796339a88614184565b0390a4005b825163d65b0d6960e01b8152908190610643908f9033908401613420565b610de59150833d8511610deb575b610ddd818361091f565b8101906140d0565b38610cca565b503d610dd3565b906106438e928b8f8751958695636906ef1760e11b87523390870161409e565b610e299150833d851161068357610674818361091f565b38610c6f565b60405163c6b949a960e01b81528890fd5b6040516331cc996d60e11b81528890fd5b60405163ab35696f60e01b81528890fd5b81516001600160a01b031681526101408101929161094d91906020818101516001600160a01b0316908301526040818101516001600160a01b0316908301526060818101516001600160a01b0316908301526080818101516001600160a01b03169083015260a0818101516001600160a01b03169083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120908101516001600160a01b0316910152565b3461027d576000806003193601126103215761082190611053604051610f4e81610897565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015261010092808483015261012080920152611040610f96610940565b60fb546001600160a01b031681529360fc54610fc6906001600160a01b03165b6001600160a01b03166020870152565b60fd546001600160a01b0316604086015260fe546001600160a01b0316606086015260ff546001600160a01b0316608086015280546001600160a01b031660a0860152610101546001600160a01b031660c0860152610102546001600160a01b031660e0860152610103546001600160a01b031690850152565b610104546001600160a01b031690830152565b60405191829182610e62565b60c036600319011261027d5761107660043561026c565b61108160443561026c565b61108c60643561026c565b611094614048565b60ff61010d54166117475760a43515611735576001600160a01b0333604435821614611712576110c5606435614a8a565b6110d0600435614b3a565b6110fb604435610d7a602435610d6b60043560018060a01b031660005261010c602052604060002090565b600281015480156116db5781546001600160a01b03168360643516848216036116bb575060018201546084358103611699575060a43581106116775750604051627eeac760e11b81526020818061115a60243560443560048401614012565b038186600435165afa90811561031857600091611658575b5060a43581106115595750610105546111b79060209061119a906001600160a01b0316610c90565b6040518093819263e985e9c560e01b835260443560048401613420565b038186600435165afa90811561031857600091611639575b5015611619576111e360843560a435613522565b60fc549091906111fb906001600160a01b0316610c90565b6040516361fe24a960e11b81526004810184905290602090829060249082905afa908115610318576112429161123a916000916115fa575b508461403b565b606435614cff565b61125260a43560028301546142c7565b90816002820155611271600461126a6003840161386c565b92016138c4565b91156115c2575b604051627eeac760e11b81526020818061129a60243560443560048401614012565b038188600435165afa908115610318576000916115a3575b50604051627eeac760e11b815290602082806112d46024353360048401614012565b038189600435165afa91821561031857600092611582575b5060a4358110611559576101055461130c906001600160a01b0316610c90565b803b1561027d5760405163eb46c45b60e01b81526001600160a01b03600480358216908301526044803591909116602480840191909152339183019190915235606482015260a48035608483015260c090820152600060c482018190529091829081838160e4810103925af1801561031857611540575b50604051627eeac760e11b815290602082806113a760243560443560048401614012565b03818a600435165afa9182156103185760009261151b575b506113cd9060a435906142c7565b14908115916114a6575b50611462576113f292604435906064356024356004356146fa565b6040805160243581526001600160a01b036064351660208201526084359181019190915260a43560608201526004358216913391604435909116907f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d7886949080608081015b0390a46105fd6001606555565b604051638791019960e01b81526001600160a01b03600480358216908301526024803590830152604480359091169082015233606482015260a48035608483015290fd5b604051627eeac760e11b81529150602082806114c86024353360048401614012565b038189600435165afa918215610318576000926114f6575b506114ee9060a4359061403b565b1415386113d7565b6114ee9192506115149060203d60201161068357610674818361091f565b91906114e0565b6113cd9192506115399060203d60201161068357610674818361091f565b91906113bf565b8061154d61155392610864565b806109ff565b38611383565b61064390604051918291636906ef1760e11b835260a4356024356004356044356004870161409e565b61159c91925060203d60201161068357610674818361091f565b90386112ec565b6115bc915060203d60201161068357610674818361091f565b386112b2565b6115f56115f0604435610d7a602435610d6b60043560018060a01b031660005261010c602052604060002090565b6141c5565b611278565b611613915060203d60201161068357610674818361091f565b38611233565b60405163d65b0d6960e01b81528061064360043560443560048401613420565b611652915060203d602011610deb57610ddd818361091f565b386111cf565b611671915060203d60201161068357610674818361091f565b38611172565b6040516364b7fccd60e11b815260a43560048201526024810191909152604490fd5b604051631d6bbb8d60e11b815260843560048201526024810191909152604490fd5b604051632e834cbf60e11b81529081906106439060643560048401613420565b604051630bac95f560e21b81526001600160a01b036004803582169083015260248035908301526044803590911690820152606490fd5b60405163aac1ae8b60e01b81526044356001600160a01b03166004820152602490fd5b60405163c6b949a960e01b8152600490fd5b60405163ab35696f60e01b8152600490fd5b906103d7916020815260018060a01b0380835116602083015260208301511660408201526040820151606082015260608201516080820152608082015160a082015260c06117b660a084015160e08385015261010084019061068a565b9201519060e0601f19828503019101526106c7565b3461027d5760408060031936011261027d5761082190600435906117ee8261026c565b6118af60068280516117ff816108b3565b606060c0600092838152836020820152838582015283838201528360808201528260a0820152015260018060a01b038096168152610106602052818120602435825260205220611864845195611854876108b3565b8254166001600160a01b03168652565b600181015461187b906001600160a01b0316610fb6565b60028101548486015260038101546060860152600481015460808601526118a46005820161386c565b60a0860152016138c4565b60c08301525191829182611759565b3461027d57600080600319360112610321576118d861292a565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b3461027d5761016036600319011261027d576105fd60043561193d8161026c565b6024356119498161026c565b6044356119558161026c565b6064356119618161026c565b60843561196d8161026c565b60a4356119798161026c565b60c435916119868361026c565b60e435936119938561026c565b61010435956119a18761026c565b61012435976119af8961026c565b61014435996119bd8b61026c565b612f04565b606090600319011261027d576004356119da8161026c565b906024359060443590565b3461027d576119f3366119c2565b916119fe3382615734565b15611a5c57611a0d8282614c83565b60018060a01b03167f2f2a73977f9734e3b74f4efe888b44cdcca6903d8ab2b5be49c3969cc6cb1b62602060009483865261010a8252604086208587528252806040872055604051908152a380f35b604051600162bed83560e01b0319815290819061064390339060048401613420565b3461027d576000602036600319011261032157600435611a9d8161026c565b611aa561292a565b611aae816154e0565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d576040516362cd1f1560e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d57604036600319011261027d57600435611b258161026c565b60018060a01b031660005261010860205260406000206024356000526020526020604060002054604051908152f35b8015150361027d57565b3461027d57602036600319011261027d57600435611b7b81611b54565b611b8361292a565b61010d9060ff801983541691151516179055600080f35b3461027d57600036600319011261027d576033546040516001600160a01b039091168152602090f35b60c036600319011261027d576004803590611bdd8261026c565b6024359060443592611bee8461026c565b6064359360843560a4356001600160401b03811161027d57611c139036908601610b5a565b96611c1c614048565b60ff61010d54166121d557611c50611c4b88610d6b8860018060a01b0316600052610106602052604060002090565b613fb5565b805190986001600160a01b039390918416156121ba578951611c8390611c7f906001600160a01b031689615734565b1590565b61218f5790611c9491338a896155f4565b821561217e576001600160a01b038516600090815261010860205260409020611cbe908890610d6b565b54611ce433610d7a8a610d6b8a60018060a01b0316600052610109602052604060002090565b548115158061216c575b61211e5750506001600160a01b038516600090815261010a60205260409020611d18908890610d6b565b54611d3e33610d7a8a610d6b8a60018060a01b031660005261010b602052604060002090565b548115158061210d575b6120c65750506080880151801515806120bd575b6120995750606088015142811161207c57506040978881019081518084036120585750611d8886614a8a565b6020818101519097906001600160a01b03168588168682160361203c5750611db08487613522565b90888c855115600014611faa575050909192939434611f9a579088878d8d6000611e669a999897965b6001600160a01b038716600090815261010860205260409020611dfd908490610d6b565b54611f63575b6001600160a01b038716600090815261010a60205260409020611e27908490610d6b565b54611f2d575b86169e8f93519b8c9586948593632baf2acb60e01b855233908501604091949392606082019560018060a01b0316825260208201520152565b03925af1938415610318577f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c9961145597611eb796611f0f575b505051611ee6575b5050516001600160a01b031690565b975193849333998590606092959493608083019660018060a01b03809316845260208401521660408201520152565b8251611f0892906001600160a01b031660a0850151918a60c0870151946143ba565b3880611ea8565b81611f2592903d1061068357610674818361091f565b503880611ea0565b611f5233610d7a85610d6b8b60018060a01b031660005261010b602052604060002090565b611f5c815461402d565b9055611e2d565b611f8833610d7a85610d6b8b60018060a01b0316600052610109602052604060002090565b611f9386825461403b565b9055611e03565b8b5163429465b160e01b81528a90fd5b60fc54611fe7929185918e90611fc8906001600160a01b0316610c90565b91516361fe24a960e11b81529081019283529384928391829160200190565b03915afa8015610318578d8d6000611e669a61201a8f968f908f9761201491869161201f575b508b61403b565b90614cff565b611dd9565b61203691508a3d8c1161068357610674818361091f565b3861200d565b8b51632e834cbf60e11b8152908190610643908a838e01613420565b8a51631d6bbb8d60e11b8152808a0185815260208101929092529081906040010390fd5b60405163456afd0b60e01b81528088019182529081906020010390fd5b60408051635bdd08f560e01b81528089018681526020810193909352918291010390fd5b50808411611d5c565b6040805163ae3586c560e01b81526001600160a01b038916818b01908152602081018c905233928101929092526060820192909252608081019290925290819060a0010390fd5b50816121188261402d565b11611d48565b60408051636d03a2e560e01b81526001600160a01b038916818b01908152602081018c9052339281019290925260608201879052608082019290925260a081019290925290819060c0010390fd5b5081612178868361403b565b11611cee565b60405163c6b949a960e01b81528690fd5b8951604051600162bed83560e01b03198152908190610643906001600160a01b03168a838d01613420565b604051634ed1072f60e11b8152806106438b8a838d01614012565b60405163ab35696f60e01b81528690fd5b3461027d5760006020366003190112610321576004356122058161026c565b61220d61292a565b61221681615522565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d57604051631d1d389760e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d57600036600319011261027d57602060ff61010d54166040519015158152f35b3461027d57608036600319011261027d576004356044356024356122b78261026c565b606435926122c53384615734565b1561235e57907fa3f36b03a37e1948b5a4d52ddc1d9f62ab7d4e887e3a0a03e0c68d40f6075f3f916122f78585614c83565b61234c60405194612307866108ce565b82865283602087015260018060a01b0316948560005261010760205261233b87604060002090600052602052604060002090565b906020600191805184550151910155565b604080519182526020820192909252a3005b604051600162bed83560e01b0319815280610643338660048401613420565b3461027d5761238b366119c2565b916123963382615734565b15611a5c576123a58282614c83565b60018060a01b03167feead0384c6f48c02c0099b2433359d43617492f06d8e3a59cbe786b9970f7e6160206000948386526101088252604086208587528252806040872055604051908152a380f35b3461027d5760408060031936011261027d578060206004356124158161026c565b8251612420816108ce565b600080825292018290526001600160a01b03168152610107602090815282822060243583529052208151612453816108ce565b60206001835493848452015491019081528251918252516020820152f35b3461027d57600036600319011261027d57610105546040516001600160a01b039091168152602090f35b3461027d5761010036600319011261027d576004356124b98161026c565b6024356044356124c88161026c565b6084356064356001600160401b0360a43560c43582811161027d576124f1903690600401610b5a565b909260e43590811161027d5761250b903690600401610b5a565b93909260ff61010d541661174757612526611c7f338c615734565b6126025791610da293917f4c048dfd080dcfa2cccc41ef603e5f0ed6602ca215a41581d653aadf841a560b979695936125e78a6125e28d8f610d6b9061256b85614a8a565b6125778b8b8b8b614ecf565b6125818382614c83565b61259561258c61094f565b33815295610fb6565b8c60408601528d60608601528660808601526125b2368a8a613451565b60a08601526125c2368c8c6134b4565b60c08601526001600160a01b031660009081526101066020526040902090565b6136ca565b604051339c6001600160a01b03169a90988998909189613826565b604051600162bed83560e01b0319815280610643338d60048401613420565b3461027d5760006020366003190112610321576004356126408161026c565b61264861292a565b612651816155d2565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d576040516328b80cf560e21b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d5760006020366003190112610321576004356126ca8161026c565b6126d261292a565b6126db816155d2565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d57604051631f1afd0d60e01b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d5760006020366003190112610321576004356127548161026c565b61275c61292a565b61276581615555565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d57604051632867932b60e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d5760006020366003190112610321576004356127de8161026c565b6127e661292a565b6127ef81615597565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d57604051632d8b49e160e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d57602036600319011261027d576004356128668161026c565b61286e61292a565b6001600160a01b03811615612886576105fd90612982565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461027d57602036600319011261027d576004356128f78161026c565b6128ff61292a565b612908816155d2565b61010580546001600160a01b0319166001600160a01b03909216919091179055005b6033546001600160a01b0316330361293e57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b156129d257565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b15612a3357565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b9081602091031261027d575190565b6040513d6000823e3d90fd5b15612aaf57565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b60809060208152602e60208201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960408201526d6f6e206973206e6f74205555505360901b60608201520190565b803b15612b8a576000805160206157c483398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b90612bef82612b55565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590612c99575b612c31575050565b612c969160008060405193612c4585610904565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020860152660819985a5b195960ca1b6040860152602081519101845af4612c90612dff565b91612e2f565b50565b506000612c29565b90612cab82612b55565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590612cec57612c31575050565b506001612c29565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169290612d2d308514156129cb565b612d4a6000805160206157c4833981519152948286541614612a2c565b612d5261292a565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612d8857505061094d9150612b55565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181612ddf575b50612dcc5760405162461bcd60e51b81528061064360048201612b06565b61094d93612dda9114612aa8565b612ca1565b612df891925060203d811161068357610674818361091f565b9038612dae565b3d15612e2a573d90612e1082610969565b91612e1e604051938461091f565b82523d6000602084013e565b606090565b91929015612e915750815115612e43575090565b3b15612e4c5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015612ea45750805190602001fd5b60405162461bcd60e51b8152602060048201529081906106439060248301905b919082519283825260005b848110612ef0575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612ecf565b989694929099979593916000549a60ff8c60081c1615809c819d61302a575b811561300a575b5015612fae57612f509a8c612f47600160ff196000541617600055565b612f95576131f0565b612f5657565b612f6661ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b612fa961010061ff00196000541617600055565b6131f0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b1591508161301c575b5038612f2a565b6001915060ff161438613015565b600160ff8216109150612f23565b519061094d8261026c565b908161014091031261027d57613057610940565b9061306181613038565b825261306f60208201613038565b602083015261308060408201613038565b604083015261309160608201613038565b60608301526130a260808201613038565b60808301526130b360a08201613038565b60a08301526130c460c08201613038565b60c08301526130d560e08201613038565b60e08301526101006130e8818301613038565b908301526130fa610120809201613038565b9082015290565b805160fb80546001600160a01b03199081166001600160a01b0393841617909155602083015160fc80548316918416919091179055604083015160fd80548316918416919091179055606083015160fe80548316918416919091179055608083015160ff8054831691841691909117905560a08301516101008054831691841691909117815560c08401516101018054841691851691909117905560e08401516101028054841691851691909117905583015161010380549092169083161790556101209091015161094d911661010480546001600160a01b0319166001600160a01b03909216919091179055565b956132cb979293959a98949996613206816154a2565b61320f836153ef565b613218856154e0565b6132218761542e565b61322a8b615522565b6132338c615555565b61323c82615597565b61324584615467565b61324e866155d2565b613257886155d2565b6132608a6155d2565b60405163ef8c824960e01b81526001600160a01b039182166004820152928116602484015293841660448301529483166064820152978216608489015297811660a488015291821660c487015295811660e48601529485166101048501528416610124840152919291565b61014080846101448173__$c98ca6a62396e5a7a1471db151198a1f31$__5af480156103185761332b9461330892600092613343575b5050613101565b6101058054919092166001600160a01b03166001600160a01b0319909116179055565b6133336133d0565b61333b613404565b61094d6133f3565b6133629250803d10613369575b61335a818361091f565b810190613043565b3880613301565b503d613350565b1561337757565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b6133ea60ff60005460081c166133e581613370565b613370565b61094d33612982565b61094d60ff60005460081c16613370565b61341960ff60005460081c166133e581613370565b6001606555565b6001600160a01b0391821681529116602082015260400190565b6001600160401b0381116108775760051b60200190565b929161345c8261343a565b9161346a604051938461091f565b829481845260208094019160051b810192831161027d57905b8282106134905750505050565b838091833561349e8161026c565b815201910190613483565b60ff81160361027d57565b92916134bf8261343a565b916134cd604051938461091f565b829481845260208094019160051b810192831161027d57905b8282106134f35750505050565b8380918335613501816134a9565b8152019101906134e6565b634e487b7160e01b600052601160045260246000fd5b8181029291811591840414171561353557565b61350c565b818110613545575050565b6000815560010161353a565b90600160401b81116108775781549080835581811061356f57505050565b61094d926000526020600020918201910161353a565b90600160401b81116108775781548183558082106135a257505050565b61094d92600052601f6020600020918180850160051c84019416806135ce575b500160051c019061353a565b600019908186019182549160200360031b1c169055386135c2565b9080516001600160401b038111610877576136048184613585565b613618602080930193600052602060002090565b908060051c9260005b8481106136945750601f198216909103908161363f575b5050505050565b9390600094855b82811061365d575050505001553880808080613638565b9091929582613689600192846136748b5160ff1690565b919060ff809160031b9316831b921b19161790565b970193929101613646565b6000805b8381106136ac575084820155600101613621565b9690836136c16001928a613674865160ff1690565b92019701613698565b815181546001600160a01b0319166001600160a01b03918216178255909190602082810151600185810180549285166001600160a01b03166001600160a01b03199093169290921790915591604084015160028601556060840151600386015560808401516004860155600585019060a0850151928351936001600160401b03851161087757819061375c8686613551565b0192600052806000209160005b858110613789575050505050505090600660c061094d93015191016135e9565b8451821684820155938201938601613769565b91908082526020809201929160005b8281106137b9575050505090565b90919293828060019287356137cd8161026c565b848060a01b031681520195019101929190926137ab565b91908082526020809201929160005b828110613801575050505090565b90919293828060019260ff8835613817816134a9565b168152019501939291016137f3565b9694926103d798969261385e959260018060a01b0316895260208901526040880152606087015260c0608087015260c086019161379c565b9260a08185039101526137e4565b9060405191828154918282526020928383019160005283600020936000905b8282106138a15750505061094d9250038361091f565b85546001600160a01b03168452600195860195889550938101939091019061388b565b906040805180938054926138eb6138df858560209181520190565b92600052602060002090565b9360005b81601f820110613d075761094d955492828210613cf1575b828210613cd7575b828210613cbd575b828210613ca3575b828210613c89575b828210613c6f575b828210613c55575b828210613c3b575b828210613c24575b50818110613c0c575b818110613bf4575b818110613bdc575b818110613bc4575b818110613bac575b818110613b94575b818110613b7c575b818110613b64575b818110613b4c575b818110613b34575b818110613b1c575b818110613b04575b818110613aec575b818110613ad4575b818110613abc575b818110613aa4575b818110613a8c575b818110613a74575b818110613a5c575b818110613a44575b818110613a2c575b818110613a14575b10613a06575b50038361091f565b60f81c8152602001386139fe565b60f083901c60ff1684529260019060200193016139f8565b60e883901c60ff1684529260019060200193016139f0565b60e083901c60ff1684529260019060200193016139e8565b60d883901c60ff1684529260019060200193016139e0565b60d083901c60ff1684529260019060200193016139d8565b60c883901c60ff1684529260019060200193016139d0565b60c083901c60ff1684529260019060200193016139c8565b60b883901c60ff1684529260019060200193016139c0565b60b083901c60ff1684529260019060200193016139b8565b60a883901c60ff1684529260019060200193016139b0565b60a083901c60ff1684529260019060200193016139a8565b609883901c60ff1684529260019060200193016139a0565b609083901c60ff168452926001906020019301613998565b608883901c60ff168452926001906020019301613990565b608083901c60ff168452926001906020019301613988565b607883901c60ff168452926001906020019301613980565b607083901c60ff168452926001906020019301613978565b606883901c60ff168452926001906020019301613970565b606083901c60ff168452926001906020019301613968565b605883901c60ff168452926001906020019301613960565b605083901c60ff168452926001906020019301613958565b604883901c60ff168452926001906020019301613950565b83901c60ff16845292600190602001930138613947565b603884901c60ff168552909360019060200194019061393f565b603084901c60ff1685529093600190602001940190613937565b602884901c60ff168552909360019060200194019061392f565b602084811c60ff1686529194909160019101940190613927565b601884901c60ff168552909360019060200194019061391f565b601084901c60ff1685529093600190602001940190613917565b600884901c60ff168552909360019060200194019061390f565b60ff841685529093600190602001940190613907565b919350916001610400602092613fa58854613f9a60ff613d2b8582851660ff169052565b613f73613dd8613f238d613ed389613e838e613d508184018a8d60081c1660ff169052565b613d638584018a8d60101c1660ff169052565b888b610200606095613d7e878201858560181c1660ff169052565b613d936080958585888501921c1660ff169052565b613e3960a097613dac898401878760281c1660ff169052565b613de960c09b613dc58d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b613dfe6101208401878760481c1660ff169052565b613e136101408401878760501c1660ff169052565b613e286101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b613e4e6101a08201858560681c1660ff169052565b613e636101c08201858560701c1660ff169052565b613e786101e08201858560781c1660ff169052565b01921c1660ff169052565b613e986102208c01888b60881c1660ff169052565b613ead6102408c01888b60901c1660ff169052565b613ec26102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b613ee86102a08a01868960a81c1660ff169052565b613efd6102c08a01868960b01c1660ff169052565b613f126102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b613f386103208801848760c81c1660ff169052565b613f4d6103408801848760d01c1660ff169052565b613f626103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b613f886103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b01950191019186939194926138ef565b90604051613fc2816108b3565b60c061400d6006839560018060a01b0380825416865260018201541660208601526002810154604086015260038101546060860152600481015460808601526118a46005820161386c565b910152565b6001600160a01b039091168152602081019190915260400190565b906001820180921161353557565b9190820180921161353557565b600260655414614059576002606555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b9081602091031261027d57516103d781611b54565b815181546001600160a01b0319166001600160a01b0391821617825590919060208083015191600192838601556040840151600286015560038501906060850151928351936001600160401b0385116108775781906141448686613551565b0192600052806000209160005b8581106141715750505050505050906004608061094d93015191016135e9565b8451821684820155938201938601614151565b959391926141b7936103d798969260018060a01b031688526020880152604087015260a0606087015260a086019161379c565b9260808185039101526137e4565b600460009182815582600182015582600282015560038101805484825580614215575b50500190815490808355816141fc57505050565b60208161094d94601f935220910160051c81019061353a565b614228918552602085209081019061353a565b38806141e8565b6001600160a01b0316600081815261010c602081815260408084208685528252808420338552909152822060020154156142b2578282526020908152604080832085845282528083203360009081529252902061428b906141c5565b7f46227bd805037a939224e05cd991a64cb464f4b5c5317858af210838e59ce390339180a4565b50505050565b60001981019190821161353557565b9190820391821161353557565b906040516142e1816108ce565b602060018294805484520154910152565b9081602091031261027d57516103d7816134a9565b60405190614314826108ce565b6001825260203681840137565b6040519061432e82610904565b600282526040366020840137565b634e487b7160e01b600052603260045260246000fd5b80511561435f5760200190565b61433c565b80516001101561435f5760400190565b805182101561435f5760209160051b010190565b906143928261343a565b61439f604051918261091f565b82815280926143b0601f199161343a565b0190602036910137565b919594939286926143cc828985614846565b60fd546143e1906001600160a01b0316610c90565b604051635dc22eff60e01b81526001600160a01b03841660048201526020928382602481865afa918215610318576000926145cf575b506000911561454b575050604051632260494f60e01b81526001600160a01b039390931660048401529091908290829060249082905afa9081156103185760ff9260009261451e575b50505b1695606487116144fe5761448561447e61094d979883613522565b6064900490565b9081614493575b505061501d565b816144f79294506144a3916142c7565b926144ac614307565b60fb546144dd906144c5906001600160a01b0316610c90565b6144ce83614352565b6001600160a01b039091169052565b6144e5614307565b91806144f084614352565b528461517e565b388061448c565b60405163d6849ff160e01b81526004810188905260646024820152604490fd5b61453d9250803d10614544575b614535818361091f565b8101906142f2565b3880614460565b503d61452b565b60fc549194506145979250839161456a906001600160a01b0316610c90565b60405163b28a7bad60e01b81526001600160a01b0390921660048301529092839190829081906024820190565b03915afa9182156103185760ff93926145b2575b5050614463565b6145c89250803d1061454457614535818361091f565b38806145ab565b6145e7919250843d8611610deb57610ddd818361091f565b9038614417565b81601f8201121561027d578051916146058361343a565b92614613604051948561091f565b808452602092838086019260051b82010192831161027d578301905b82821061463d575050505090565b8151815290830190830161462f565b91909160408184031261027d578051926001600160401b039384811161027d5782019381601f8601121561027d5784516146858161343a565b90614693604051928361091f565b808252602096878084019260051b8201019185831161027d5788809201905b8382106146d257505050509483015190811161027d576103d792016145ee565b82809183516146e08161026c565b8152019101906146b2565b60001981146135355760010190565b95919692949093859461470f8692878b614846565b60fe54614724906001600160a01b0316610c90565b604051637a99dc0160e11b81526001600160a01b039990991660048a01526024890191909152604488019690965260009586908890606490829084905af19788156103185786978799614807575b50865b89518810156147a25761479661479c9161478f8a8d614374565b519061403b565b976146eb565b96614775565b929598919497909396508883116147e75761094d9798836147c7575b5050505061501d565b836147de9496506147d7916142c7565b948461517e565b388080806147be565b6040516344783bd360e11b815260048101849052602481018a9052604490fd5b9098506148279197503d8088833e61481f818361091f565b81019061464c565b9690969738614772565b9081602091031261027d57516103d78161026c565b60fc5490929061485e906001600160a01b0316610c90565b6040516361fe24a960e11b81526004810184905260209490918590839060249082905afa918215610318576148ce948691600094614a6b575b50610101546148ae906001600160a01b0316610c90565b604051808098819463470d6ed960e11b8352600483019190602083019252565b03915afa93841561031857600094614a4c575b50818411614a2c578115613638576148f7614321565b9261496186614910610c9060fb5460018060a01b031690565b9261491e846144ce89614352565b61010254614934906001600160a01b0316610c90565b60405163e286ef3360e01b81526001600160a01b0390921660048301529092839190829081906024820190565b03915afa9081156103185761094d976000926149ff575b506001600160a01b0391614992915082166144ce87614364565b6149ab61499e86614364565b516001600160a01b031690565b166149ea576149be905b6144ce85614364565b6149c6614321565b936149d181846142c7565b6149da86614352565b526149e485614364565b5261517e565b506149be6149fa61499e85614364565b6149b5565b614a1e9250803d10614a25575b614a16818361091f565b810190614831565b3880614978565b503d614a0c565b604051639bdfbb5160e01b81526004810183905260248101859052604490fd5b614a64919450853d871161068357610674818361091f565b92386148e1565b614a83919450823d841161068357610674818361091f565b9238614897565b6001600160a01b038116151580614ac6575b614aa35750565b60405163cd5f748960e01b81526001600160a01b03919091166004820152602490fd5b5061010054614add906001600160a01b0316610c90565b604051632d5ad3d560e01b81526001600160a01b038316600482015290602090829060249082905afa90811561031857600091614b1c575b5015614a9c565b614b34915060203d8111610deb57610ddd818361091f565b38614b15565b803b158015614b6d575b614b4b5750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b808352602482015260248152614b9681610904565b519084617530fa6000513d82614bea575b5081614be0575b5080614bd0575b80614bc1575b15614b44565b50614bcb81614c53565b614bbb565b50614bda81614bf6565b15614bb5565b9050151538614bae565b60201115915038614ba7565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b602482015260248152614c2681610904565b5191617530fa6000513d82614c47575b5081614c40575090565b9050151590565b60201115915038614c36565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152614c2681610904565b6040516001620b695760e21b03198152600481018390526020816024816001600160a01b0386165afa90811561031857600091614ce1575b5015614cc5575050565b610643604051928392632be7c7f360e01b845260048401614012565b614cf9915060203d811161068357610674818361091f565b38614cbb565b6001600160a01b0381168015614e7f5734614e6d576040516370a0823160e01b808252306004830152602092908383602481855afa92831561031857600093614e4e575b5061010354614d5a906001600160a01b0316610c90565b90813b1561027d57604051630aed65f560e11b81526001600160a01b038716600482015233602482015230604482015260648101889052916000908390608490829084905af1918215610318578592614e3b575b5060405190815230600482015291829060249082905afa90811561031857614ddf93600092614e1e575b50506142c7565b828103614deb57505050565b604051636ff596f360e01b81526001600160a01b0392909216600483015260248201929092526044810191909152606490fd5b614e349250803d1061068357610674818361091f565b3880614dd8565b8061154d614e4892610864565b38614dae565b614e66919350843d861161068357610674818361091f565b9138614d43565b60405163d9efa38960e01b8152600490fd5b5050803403614e8b5750565b6040516305e4640960e21b81526004810191909152346024820152604490fd5b919081101561435f5760051b0190565b356103d78161026c565b356103d7816134a9565b91929092831561500b5760058411614feb57818403614fc95792919060009384935b828510614f2957505050505060648103614f085750565b6040516357623e5560e01b8152600481019190915260646024820152604490fd5b9091929394614f44610c90614f3f888589614eab565b614ebb565b15614fb057614f65614f5f614f5a888787614eab565b614ec5565b60ff1690565b15614f9757614f88614f8e91614f82614f5f614f5a8a8989614eab565b9061403b565b956146eb565b93929190614ef1565b60405163d4c1893560e01b815260048101879052602490fd5b6040516306f5730d60e41b815260048101879052602490fd5b50604051632db4fb2960e01b8152600481018490526024810191909152604490fd5b6040516366a4d05560e01b81526004810185905260056024820152604490fd5b60405163d218e6a560e01b8152600490fd5b9192939083518551908181036150d05750506150398451614388565b92819260005b8651808210156150c15761505389916142b8565b82036150745750808561506961506f9389614374565b526146eb565b61503f565b819561509f61447e615099614f5f61509261506f976150bb97614374565b5160ff1690565b88613522565b6150a9888a614374565b526150b48789614374565b51906142c7565b946146eb565b5050955061094d94925061517e565b604051632db4fb2960e01b815260048101919091526024810191909152604490fd5b6040810190604081528251809252606081019160208094019060005b818110615150575050508281830391015281808451928381520193019160005b82811061513c575050505090565b83518552938101939281019260010161512e565b82516001600160a01b03168552938501939185019160010161510e565b9060206103d7928181520190612ec4565b9192939083518551908181036152bf575050600092835b86518510156151b5576150bb6151af9161478f878a614374565b93615195565b90929491935083810361529e57506001600160a01b0391821692831561521c575060005b8151811015615214578061520a6151f661499e61520f9486614374565b85615201848b614374565b519116876152e1565b6146eb565b6151d9565b505050509050565b60009495925084935061525e61526c61523f610c9060ff5460018060a01b031690565b94604051928391602083019663c176e63960e01b8852602484016150f2565b03601f19810183528261091f565b51925af1615278612dff565b90156152815750565b604051634c0fe4a160e11b8152908190610643906004830161516d565b604051633bc6f52760e21b8152600481018590526024810191909152604490fd5b6040516345e8c29760e11b815260048101919091526024810191909152604490fd5b615367916000806040519361531b8561530d6020998a83019763a9059cbb60e01b895260248401614012565b03601f19810187528661091f565b60018060a01b03169260405194615331866108ce565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af1612c90612dff565b8051908282159283156153d7575b505050156153805750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b6153e793508201810191016140d0565b388281615375565b6001600160a01b0316156153ff57565b60405163602d6df560e01b8152734d41524b4554504c4143455f53455454494e475360601b6004820152602490fd5b6001600160a01b03161561543e57565b60405163602d6df560e01b81526d524f59414c54595f454e47494e4560901b6004820152602490fd5b6001600160a01b03161561547757565b60405163602d6df560e01b81526f5354414b494e475f524547495354525960801b6004820152602490fd5b6001600160a01b0316156154b257565b60405163602d6df560e01b8152724e4554574f524b5f42454e454649434941525960681b6004820152602490fd5b6001600160a01b0316156154f057565b60405163602d6df560e01b81527653504143455f4f50455241544f525f524547495354525960481b6004820152602490fd5b6001600160a01b03161561553257565b60405163602d6df560e01b8152675041594d454e545360c01b6004820152602490fd5b6001600160a01b03161561556557565b60405163602d6df560e01b815276415050524f5645445f544f4b454e5f524547495354525960481b6004820152602490fd5b6001600160a01b0316156155a757565b60405163602d6df560e01b81526f5354414b494e475f53455454494e475360801b6004820152602490fd5b6001600160a01b0316156155e257565b60405163c49074af60e01b8152600490fd5b6001600160a01b031660009081526101076020908152604080832093835292905220909290615622906142d4565b90815115801561569b575b6142b25761567192611c7f9260405160208101906156668161525e8a856014916bffffffffffffffffffffffff199060601b1681520190565b5190209051906156a9565b6156785750565b60405163e2cf60cb60e01b81526001600160a01b03919091166004820152602490fd5b50602082015142101561562d565b92909291600080925b8084106156c157505050501490565b90919293615704906156d4868487614eab565b3580821161570c576040805160208101938452908101919091526156fb816060810161525e565b519020946146eb565b9291906156b2565b6040805160208101928352908101929092529061572c816060810161525e565b5190206150bb565b6000806040516020810190638da5cb5b60e01b825260048152615756816108ce565b5190845afa90615764612dff565b911580156157b8575b61579657508060208061578593518301019101614831565b6001600160a01b0390811691161490565b60405163915b8f1d60e01b81526001600160a01b039091166004820152602490fd5b50602082511061576d56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212206776b47b7048559706408dd60a0fe4349c5977fdd54c839bc5171d00c2354a2564736f6c63430008120033","sourceMap":"1379:50771:95:-:0;;;;;;;1332:4:27;1324:13;;6007::26;1379:50771:95;;;;;;;;;;;;;;6078:31:26;6074:139;;-1:-1:-1;1379:50771:95;;;;;;;;1324:13:27;1379:50771:95;;;;;;;;;;;;;;;;6074:139:26;1379:50771:95;;;;;;6007:13:26;1379:50771:95;6174:28:26;1379:50771:95;;;;;;6174:28:26;6074:139;;;1379:50771:95;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;","linkReferences":{"src/v2/utils/MarketConfigV2.sol":{"MarketConfigV2":[{"start":924,"length":20},{"start":1086,"length":20},{"start":1345,"length":20},{"start":1483,"length":20},{"start":7064,"length":20},{"start":8960,"length":20},{"start":10043,"length":20},{"start":10181,"length":20},{"start":10319,"length":20},{"start":10457,"length":20},{"start":13245,"length":20}]}}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c8063176ab4401461026757806321ede0321461026257806328fbba031461025d5780632c740844146102585780633492e5a8146102535780633659cfe61461024e578063369679a4146102495780633f83e9e0146102445780634f1ef2861461023f57806352d1902d1461023a578063552f791d146102355780635a501f8f146102305780635faec4061461022b578063614bd944146102265780636afaf006146102215780636e2f4d8b1461021c578063715018a61461021757806376902b83146102125780637b2db4bb1461020d5780637f358230146102085780638760251a14610203578063882796f1146101fe5780638da5cb5b146101f957806399273b3d146101f4578063af231a58146101ef578063b187bd26146101ea578063b64843b2146101e5578063b8aefc63146101e0578063bf3d90f8146101db578063c7c83d17146101d6578063d5f339a8146101d1578063d7a9fb7c146101cc578063d80b23e3146101c7578063e4e87e3b146101c2578063f1035744146101bd578063f2fde38b146101b85763ff5c83a4146101b357600080fd5b6128da565b612849565b6127bf565b612735565b6126ab565b612621565b61249b565b612471565b6123f4565b61237d565b612294565b612270565b6121e6565b611bc3565b611b9a565b611b5e565b611b08565b611a7e565b6119e5565b61191c565b6118be565b6117cb565b61105f565b610f29565b610b8a565b610b16565b610aca565b610a0a565b610984565b610825565b610759565b61053b565b6104b1565b610427565b6103da565b610324565b610282565b6001600160a01b0381160361027d57565b600080fd5b3461027d5760006020366003190112610321576004356102a18161026c565b6102a961292a565b6102b2816153ef565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d5760405163ed56be5b60e01b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b61031590610864565b80f35b612a9c565b5080fd5b80fd5b3461027d5760006020366003190112610321576004356103438161026c565b61034b61292a565b6103548161542e565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d5760405163143df10960e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b606090600319011261027d576004356103c68161026c565b90602435906044356103d78161026c565b90565b3461027d57602061041e6103ed366103ae565b6001600160a01b03928316600090815261010986526040808220938252928652828120919093168352602052902090565b54604051908152f35b3461027d5760006020366003190112610321576004356104468161026c565b61044e61292a565b61045781615467565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d5760405163632c2a3160e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d5760006020366003190112610321576004356104d08161026c565b6104d861292a565b6104e1816154a2565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d5760405163148282a760e21b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d57602036600319011261027d576004356105588161026c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169190610591308414156129cb565b6105ae6000805160206157c4833981519152938285541614612a2c565b6105b661292a565b604051906105c3826108e9565b600082527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156105ff5750506105fd9150612b55565b005b6020600491604094939451928380926352d1902d60e01b825286165afa6000918161065a575b506106475760405162461bcd60e51b81528061064360048201612b06565b0390fd5b6105fd936106559114612aa8565b612be5565b61067c91925060203d8111610683575b610674818361091f565b810190612a8d565b9038610625565b503d61066a565b90815180825260208080930193019160005b8281106106aa575050505090565b83516001600160a01b03168552938101939281019260010161069c565b90815180825260208080930193019160005b8281106106e7575050505090565b835160ff16855293810193928101926001016106d9565b906103d7916020815260018060a01b03825116602082015260208201516040820152604082015160608201526080610744606084015160a08385015260c084019061068a565b9201519060a0601f19828503019101526106c7565b3461027d5761082160046107d7610812610772366103ae565b604095929594919480958151906107888261087c565b6060608060009384815284602082015284868201528280820152015260018060a01b03809916825261010c602052828220908252602052209060018060a01b0316600052602052604060002090565b8351946107e38661087c565b8154168552600181015460208601526002810154848601526108076003820161386c565b6060860152016138c4565b608083015251918291826106fe565b0390f35b3461027d57604036600319011261027d576105fd6004356108458161026c565b6024359061422f565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161087757604052565b61084e565b60a081019081106001600160401b0382111761087757604052565b61014081019081106001600160401b0382111761087757604052565b60e081019081106001600160401b0382111761087757604052565b604081019081106001600160401b0382111761087757604052565b602081019081106001600160401b0382111761087757604052565b606081019081106001600160401b0382111761087757604052565b90601f801991011681019081106001600160401b0382111761087757604052565b6040519061094d82610897565b565b6040519061094d826108b3565b6040519061094d8261087c565b6001600160401b03811161087757601f01601f191660200190565b604036600319011261027d5760043561099c8161026c565b602435906001600160401b03821161027d573660238301121561027d578160040135906109c882610969565b916109d6604051938461091f565b808352366024828601011161027d5760208160009260246105fd97018387013784010152612cf4565b600091031261027d57565b3461027d57600036600319011261027d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610a64576040516000805160206157c48339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b3461027d57604036600319011261027d57600435610ae78161026c565b60018060a01b031660005261010a60205260406000206024356000526020526020604060002054604051908152f35b3461027d57602061041e610b29366103ae565b6001600160a01b03928316600090815261010b86526040808220938252928652828120919093168352602052902090565b9181601f8401121561027d578235916001600160401b03831161027d576020808501948460051b01011161027d57565b3461027d5760e036600319011261027d576004803590610ba98261026c565b60243590604435610bb98161026c565b6084356064356001600160401b0360a43581811161027d57610bde9036908701610b5a565b9160c43590811161027d57610bf69036908801610b5a565b92909160ff61010d5416610e5157610c0d87614a8a565b610c1984848484614ecf565b610c228a614b3a565b8415610e40578515610e2f5760018060a01b038a1697610c5c6040918251627eeac760e11b81528c818d8180602097889533898401614012565b03915afa90811561031857600091610e12575b50898110610df2575061010554610cb7908390610c9c906001600160a01b03165b6001600160a01b031690565b8d8651808095819463e985e9c560e01b835233898401613420565b03915afa90811561031857600091610dc5575b5015610da7575090610d9689610d918d9e610d7a7fa98b0b2592a02d5bb9ee933ec6786e7ea38ed4539557337ebe429fe35802907e9d9e9f8c610da29c9b9a9998610d25610d1661095c565b6001600160a01b039098168852565b8601528d87860152610d38368a8a613451565b6060860152610d48368c8c6134b4565b6080860152610d6b339360018060a01b031660005261010c602052604060002090565b90600052602052604060002090565b9060018060a01b0316600052602052604060002090565b6140e5565b51968796339a88614184565b0390a4005b825163d65b0d6960e01b8152908190610643908f9033908401613420565b610de59150833d8511610deb575b610ddd818361091f565b8101906140d0565b38610cca565b503d610dd3565b906106438e928b8f8751958695636906ef1760e11b87523390870161409e565b610e299150833d851161068357610674818361091f565b38610c6f565b60405163c6b949a960e01b81528890fd5b6040516331cc996d60e11b81528890fd5b60405163ab35696f60e01b81528890fd5b81516001600160a01b031681526101408101929161094d91906020818101516001600160a01b0316908301526040818101516001600160a01b0316908301526060818101516001600160a01b0316908301526080818101516001600160a01b03169083015260a0818101516001600160a01b03169083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120908101516001600160a01b0316910152565b3461027d576000806003193601126103215761082190611053604051610f4e81610897565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015261010092808483015261012080920152611040610f96610940565b60fb546001600160a01b031681529360fc54610fc6906001600160a01b03165b6001600160a01b03166020870152565b60fd546001600160a01b0316604086015260fe546001600160a01b0316606086015260ff546001600160a01b0316608086015280546001600160a01b031660a0860152610101546001600160a01b031660c0860152610102546001600160a01b031660e0860152610103546001600160a01b031690850152565b610104546001600160a01b031690830152565b60405191829182610e62565b60c036600319011261027d5761107660043561026c565b61108160443561026c565b61108c60643561026c565b611094614048565b60ff61010d54166117475760a43515611735576001600160a01b0333604435821614611712576110c5606435614a8a565b6110d0600435614b3a565b6110fb604435610d7a602435610d6b60043560018060a01b031660005261010c602052604060002090565b600281015480156116db5781546001600160a01b03168360643516848216036116bb575060018201546084358103611699575060a43581106116775750604051627eeac760e11b81526020818061115a60243560443560048401614012565b038186600435165afa90811561031857600091611658575b5060a43581106115595750610105546111b79060209061119a906001600160a01b0316610c90565b6040518093819263e985e9c560e01b835260443560048401613420565b038186600435165afa90811561031857600091611639575b5015611619576111e360843560a435613522565b60fc549091906111fb906001600160a01b0316610c90565b6040516361fe24a960e11b81526004810184905290602090829060249082905afa908115610318576112429161123a916000916115fa575b508461403b565b606435614cff565b61125260a43560028301546142c7565b90816002820155611271600461126a6003840161386c565b92016138c4565b91156115c2575b604051627eeac760e11b81526020818061129a60243560443560048401614012565b038188600435165afa908115610318576000916115a3575b50604051627eeac760e11b815290602082806112d46024353360048401614012565b038189600435165afa91821561031857600092611582575b5060a4358110611559576101055461130c906001600160a01b0316610c90565b803b1561027d5760405163eb46c45b60e01b81526001600160a01b03600480358216908301526044803591909116602480840191909152339183019190915235606482015260a48035608483015260c090820152600060c482018190529091829081838160e4810103925af1801561031857611540575b50604051627eeac760e11b815290602082806113a760243560443560048401614012565b03818a600435165afa9182156103185760009261151b575b506113cd9060a435906142c7565b14908115916114a6575b50611462576113f292604435906064356024356004356146fa565b6040805160243581526001600160a01b036064351660208201526084359181019190915260a43560608201526004358216913391604435909116907f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d7886949080608081015b0390a46105fd6001606555565b604051638791019960e01b81526001600160a01b03600480358216908301526024803590830152604480359091169082015233606482015260a48035608483015290fd5b604051627eeac760e11b81529150602082806114c86024353360048401614012565b038189600435165afa918215610318576000926114f6575b506114ee9060a4359061403b565b1415386113d7565b6114ee9192506115149060203d60201161068357610674818361091f565b91906114e0565b6113cd9192506115399060203d60201161068357610674818361091f565b91906113bf565b8061154d61155392610864565b806109ff565b38611383565b61064390604051918291636906ef1760e11b835260a4356024356004356044356004870161409e565b61159c91925060203d60201161068357610674818361091f565b90386112ec565b6115bc915060203d60201161068357610674818361091f565b386112b2565b6115f56115f0604435610d7a602435610d6b60043560018060a01b031660005261010c602052604060002090565b6141c5565b611278565b611613915060203d60201161068357610674818361091f565b38611233565b60405163d65b0d6960e01b81528061064360043560443560048401613420565b611652915060203d602011610deb57610ddd818361091f565b386111cf565b611671915060203d60201161068357610674818361091f565b38611172565b6040516364b7fccd60e11b815260a43560048201526024810191909152604490fd5b604051631d6bbb8d60e11b815260843560048201526024810191909152604490fd5b604051632e834cbf60e11b81529081906106439060643560048401613420565b604051630bac95f560e21b81526001600160a01b036004803582169083015260248035908301526044803590911690820152606490fd5b60405163aac1ae8b60e01b81526044356001600160a01b03166004820152602490fd5b60405163c6b949a960e01b8152600490fd5b60405163ab35696f60e01b8152600490fd5b906103d7916020815260018060a01b0380835116602083015260208301511660408201526040820151606082015260608201516080820152608082015160a082015260c06117b660a084015160e08385015261010084019061068a565b9201519060e0601f19828503019101526106c7565b3461027d5760408060031936011261027d5761082190600435906117ee8261026c565b6118af60068280516117ff816108b3565b606060c0600092838152836020820152838582015283838201528360808201528260a0820152015260018060a01b038096168152610106602052818120602435825260205220611864845195611854876108b3565b8254166001600160a01b03168652565b600181015461187b906001600160a01b0316610fb6565b60028101548486015260038101546060860152600481015460808601526118a46005820161386c565b60a0860152016138c4565b60c08301525191829182611759565b3461027d57600080600319360112610321576118d861292a565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b3461027d5761016036600319011261027d576105fd60043561193d8161026c565b6024356119498161026c565b6044356119558161026c565b6064356119618161026c565b60843561196d8161026c565b60a4356119798161026c565b60c435916119868361026c565b60e435936119938561026c565b61010435956119a18761026c565b61012435976119af8961026c565b61014435996119bd8b61026c565b612f04565b606090600319011261027d576004356119da8161026c565b906024359060443590565b3461027d576119f3366119c2565b916119fe3382615734565b15611a5c57611a0d8282614c83565b60018060a01b03167f2f2a73977f9734e3b74f4efe888b44cdcca6903d8ab2b5be49c3969cc6cb1b62602060009483865261010a8252604086208587528252806040872055604051908152a380f35b604051600162bed83560e01b0319815290819061064390339060048401613420565b3461027d576000602036600319011261032157600435611a9d8161026c565b611aa561292a565b611aae816154e0565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d576040516362cd1f1560e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d57604036600319011261027d57600435611b258161026c565b60018060a01b031660005261010860205260406000206024356000526020526020604060002054604051908152f35b8015150361027d57565b3461027d57602036600319011261027d57600435611b7b81611b54565b611b8361292a565b61010d9060ff801983541691151516179055600080f35b3461027d57600036600319011261027d576033546040516001600160a01b039091168152602090f35b60c036600319011261027d576004803590611bdd8261026c565b6024359060443592611bee8461026c565b6064359360843560a4356001600160401b03811161027d57611c139036908601610b5a565b96611c1c614048565b60ff61010d54166121d557611c50611c4b88610d6b8860018060a01b0316600052610106602052604060002090565b613fb5565b805190986001600160a01b039390918416156121ba578951611c8390611c7f906001600160a01b031689615734565b1590565b61218f5790611c9491338a896155f4565b821561217e576001600160a01b038516600090815261010860205260409020611cbe908890610d6b565b54611ce433610d7a8a610d6b8a60018060a01b0316600052610109602052604060002090565b548115158061216c575b61211e5750506001600160a01b038516600090815261010a60205260409020611d18908890610d6b565b54611d3e33610d7a8a610d6b8a60018060a01b031660005261010b602052604060002090565b548115158061210d575b6120c65750506080880151801515806120bd575b6120995750606088015142811161207c57506040978881019081518084036120585750611d8886614a8a565b6020818101519097906001600160a01b03168588168682160361203c5750611db08487613522565b90888c855115600014611faa575050909192939434611f9a579088878d8d6000611e669a999897965b6001600160a01b038716600090815261010860205260409020611dfd908490610d6b565b54611f63575b6001600160a01b038716600090815261010a60205260409020611e27908490610d6b565b54611f2d575b86169e8f93519b8c9586948593632baf2acb60e01b855233908501604091949392606082019560018060a01b0316825260208201520152565b03925af1938415610318577f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c9961145597611eb796611f0f575b505051611ee6575b5050516001600160a01b031690565b975193849333998590606092959493608083019660018060a01b03809316845260208401521660408201520152565b8251611f0892906001600160a01b031660a0850151918a60c0870151946143ba565b3880611ea8565b81611f2592903d1061068357610674818361091f565b503880611ea0565b611f5233610d7a85610d6b8b60018060a01b031660005261010b602052604060002090565b611f5c815461402d565b9055611e2d565b611f8833610d7a85610d6b8b60018060a01b0316600052610109602052604060002090565b611f9386825461403b565b9055611e03565b8b5163429465b160e01b81528a90fd5b60fc54611fe7929185918e90611fc8906001600160a01b0316610c90565b91516361fe24a960e11b81529081019283529384928391829160200190565b03915afa8015610318578d8d6000611e669a61201a8f968f908f9761201491869161201f575b508b61403b565b90614cff565b611dd9565b61203691508a3d8c1161068357610674818361091f565b3861200d565b8b51632e834cbf60e11b8152908190610643908a838e01613420565b8a51631d6bbb8d60e11b8152808a0185815260208101929092529081906040010390fd5b60405163456afd0b60e01b81528088019182529081906020010390fd5b60408051635bdd08f560e01b81528089018681526020810193909352918291010390fd5b50808411611d5c565b6040805163ae3586c560e01b81526001600160a01b038916818b01908152602081018c905233928101929092526060820192909252608081019290925290819060a0010390fd5b50816121188261402d565b11611d48565b60408051636d03a2e560e01b81526001600160a01b038916818b01908152602081018c9052339281019290925260608201879052608082019290925260a081019290925290819060c0010390fd5b5081612178868361403b565b11611cee565b60405163c6b949a960e01b81528690fd5b8951604051600162bed83560e01b03198152908190610643906001600160a01b03168a838d01613420565b604051634ed1072f60e11b8152806106438b8a838d01614012565b60405163ab35696f60e01b81528690fd5b3461027d5760006020366003190112610321576004356122058161026c565b61220d61292a565b61221681615522565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d57604051631d1d389760e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d57600036600319011261027d57602060ff61010d54166040519015158152f35b3461027d57608036600319011261027d576004356044356024356122b78261026c565b606435926122c53384615734565b1561235e57907fa3f36b03a37e1948b5a4d52ddc1d9f62ab7d4e887e3a0a03e0c68d40f6075f3f916122f78585614c83565b61234c60405194612307866108ce565b82865283602087015260018060a01b0316948560005261010760205261233b87604060002090600052602052604060002090565b906020600191805184550151910155565b604080519182526020820192909252a3005b604051600162bed83560e01b0319815280610643338660048401613420565b3461027d5761238b366119c2565b916123963382615734565b15611a5c576123a58282614c83565b60018060a01b03167feead0384c6f48c02c0099b2433359d43617492f06d8e3a59cbe786b9970f7e6160206000948386526101088252604086208587528252806040872055604051908152a380f35b3461027d5760408060031936011261027d578060206004356124158161026c565b8251612420816108ce565b600080825292018290526001600160a01b03168152610107602090815282822060243583529052208151612453816108ce565b60206001835493848452015491019081528251918252516020820152f35b3461027d57600036600319011261027d57610105546040516001600160a01b039091168152602090f35b3461027d5761010036600319011261027d576004356124b98161026c565b6024356044356124c88161026c565b6084356064356001600160401b0360a43560c43582811161027d576124f1903690600401610b5a565b909260e43590811161027d5761250b903690600401610b5a565b93909260ff61010d541661174757612526611c7f338c615734565b6126025791610da293917f4c048dfd080dcfa2cccc41ef603e5f0ed6602ca215a41581d653aadf841a560b979695936125e78a6125e28d8f610d6b9061256b85614a8a565b6125778b8b8b8b614ecf565b6125818382614c83565b61259561258c61094f565b33815295610fb6565b8c60408601528d60608601528660808601526125b2368a8a613451565b60a08601526125c2368c8c6134b4565b60c08601526001600160a01b031660009081526101066020526040902090565b6136ca565b604051339c6001600160a01b03169a90988998909189613826565b604051600162bed83560e01b0319815280610643338d60048401613420565b3461027d5760006020366003190112610321576004356126408161026c565b61264861292a565b612651816155d2565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d576040516328b80cf560e21b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d5760006020366003190112610321576004356126ca8161026c565b6126d261292a565b6126db816155d2565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d57604051631f1afd0d60e01b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d5760006020366003190112610321576004356127548161026c565b61275c61292a565b61276581615555565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d57604051632867932b60e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d5760006020366003190112610321576004356127de8161026c565b6127e661292a565b6127ef81615597565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d57604051632d8b49e160e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d57602036600319011261027d576004356128668161026c565b61286e61292a565b6001600160a01b03811615612886576105fd90612982565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461027d57602036600319011261027d576004356128f78161026c565b6128ff61292a565b612908816155d2565b61010580546001600160a01b0319166001600160a01b03909216919091179055005b6033546001600160a01b0316330361293e57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b156129d257565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b15612a3357565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b9081602091031261027d575190565b6040513d6000823e3d90fd5b15612aaf57565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b60809060208152602e60208201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960408201526d6f6e206973206e6f74205555505360901b60608201520190565b803b15612b8a576000805160206157c483398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b90612bef82612b55565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590612c99575b612c31575050565b612c969160008060405193612c4585610904565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020860152660819985a5b195960ca1b6040860152602081519101845af4612c90612dff565b91612e2f565b50565b506000612c29565b90612cab82612b55565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590612cec57612c31575050565b506001612c29565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169290612d2d308514156129cb565b612d4a6000805160206157c4833981519152948286541614612a2c565b612d5261292a565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612d8857505061094d9150612b55565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181612ddf575b50612dcc5760405162461bcd60e51b81528061064360048201612b06565b61094d93612dda9114612aa8565b612ca1565b612df891925060203d811161068357610674818361091f565b9038612dae565b3d15612e2a573d90612e1082610969565b91612e1e604051938461091f565b82523d6000602084013e565b606090565b91929015612e915750815115612e43575090565b3b15612e4c5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015612ea45750805190602001fd5b60405162461bcd60e51b8152602060048201529081906106439060248301905b919082519283825260005b848110612ef0575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612ecf565b989694929099979593916000549a60ff8c60081c1615809c819d61302a575b811561300a575b5015612fae57612f509a8c612f47600160ff196000541617600055565b612f95576131f0565b612f5657565b612f6661ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b612fa961010061ff00196000541617600055565b6131f0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b1591508161301c575b5038612f2a565b6001915060ff161438613015565b600160ff8216109150612f23565b519061094d8261026c565b908161014091031261027d57613057610940565b9061306181613038565b825261306f60208201613038565b602083015261308060408201613038565b604083015261309160608201613038565b60608301526130a260808201613038565b60808301526130b360a08201613038565b60a08301526130c460c08201613038565b60c08301526130d560e08201613038565b60e08301526101006130e8818301613038565b908301526130fa610120809201613038565b9082015290565b805160fb80546001600160a01b03199081166001600160a01b0393841617909155602083015160fc80548316918416919091179055604083015160fd80548316918416919091179055606083015160fe80548316918416919091179055608083015160ff8054831691841691909117905560a08301516101008054831691841691909117815560c08401516101018054841691851691909117905560e08401516101028054841691851691909117905583015161010380549092169083161790556101209091015161094d911661010480546001600160a01b0319166001600160a01b03909216919091179055565b956132cb979293959a98949996613206816154a2565b61320f836153ef565b613218856154e0565b6132218761542e565b61322a8b615522565b6132338c615555565b61323c82615597565b61324584615467565b61324e866155d2565b613257886155d2565b6132608a6155d2565b60405163ef8c824960e01b81526001600160a01b039182166004820152928116602484015293841660448301529483166064820152978216608489015297811660a488015291821660c487015295811660e48601529485166101048501528416610124840152919291565b61014080846101448173__$c98ca6a62396e5a7a1471db151198a1f31$__5af480156103185761332b9461330892600092613343575b5050613101565b6101058054919092166001600160a01b03166001600160a01b0319909116179055565b6133336133d0565b61333b613404565b61094d6133f3565b6133629250803d10613369575b61335a818361091f565b810190613043565b3880613301565b503d613350565b1561337757565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b6133ea60ff60005460081c166133e581613370565b613370565b61094d33612982565b61094d60ff60005460081c16613370565b61341960ff60005460081c166133e581613370565b6001606555565b6001600160a01b0391821681529116602082015260400190565b6001600160401b0381116108775760051b60200190565b929161345c8261343a565b9161346a604051938461091f565b829481845260208094019160051b810192831161027d57905b8282106134905750505050565b838091833561349e8161026c565b815201910190613483565b60ff81160361027d57565b92916134bf8261343a565b916134cd604051938461091f565b829481845260208094019160051b810192831161027d57905b8282106134f35750505050565b8380918335613501816134a9565b8152019101906134e6565b634e487b7160e01b600052601160045260246000fd5b8181029291811591840414171561353557565b61350c565b818110613545575050565b6000815560010161353a565b90600160401b81116108775781549080835581811061356f57505050565b61094d926000526020600020918201910161353a565b90600160401b81116108775781548183558082106135a257505050565b61094d92600052601f6020600020918180850160051c84019416806135ce575b500160051c019061353a565b600019908186019182549160200360031b1c169055386135c2565b9080516001600160401b038111610877576136048184613585565b613618602080930193600052602060002090565b908060051c9260005b8481106136945750601f198216909103908161363f575b5050505050565b9390600094855b82811061365d575050505001553880808080613638565b9091929582613689600192846136748b5160ff1690565b919060ff809160031b9316831b921b19161790565b970193929101613646565b6000805b8381106136ac575084820155600101613621565b9690836136c16001928a613674865160ff1690565b92019701613698565b815181546001600160a01b0319166001600160a01b03918216178255909190602082810151600185810180549285166001600160a01b03166001600160a01b03199093169290921790915591604084015160028601556060840151600386015560808401516004860155600585019060a0850151928351936001600160401b03851161087757819061375c8686613551565b0192600052806000209160005b858110613789575050505050505090600660c061094d93015191016135e9565b8451821684820155938201938601613769565b91908082526020809201929160005b8281106137b9575050505090565b90919293828060019287356137cd8161026c565b848060a01b031681520195019101929190926137ab565b91908082526020809201929160005b828110613801575050505090565b90919293828060019260ff8835613817816134a9565b168152019501939291016137f3565b9694926103d798969261385e959260018060a01b0316895260208901526040880152606087015260c0608087015260c086019161379c565b9260a08185039101526137e4565b9060405191828154918282526020928383019160005283600020936000905b8282106138a15750505061094d9250038361091f565b85546001600160a01b03168452600195860195889550938101939091019061388b565b906040805180938054926138eb6138df858560209181520190565b92600052602060002090565b9360005b81601f820110613d075761094d955492828210613cf1575b828210613cd7575b828210613cbd575b828210613ca3575b828210613c89575b828210613c6f575b828210613c55575b828210613c3b575b828210613c24575b50818110613c0c575b818110613bf4575b818110613bdc575b818110613bc4575b818110613bac575b818110613b94575b818110613b7c575b818110613b64575b818110613b4c575b818110613b34575b818110613b1c575b818110613b04575b818110613aec575b818110613ad4575b818110613abc575b818110613aa4575b818110613a8c575b818110613a74575b818110613a5c575b818110613a44575b818110613a2c575b818110613a14575b10613a06575b50038361091f565b60f81c8152602001386139fe565b60f083901c60ff1684529260019060200193016139f8565b60e883901c60ff1684529260019060200193016139f0565b60e083901c60ff1684529260019060200193016139e8565b60d883901c60ff1684529260019060200193016139e0565b60d083901c60ff1684529260019060200193016139d8565b60c883901c60ff1684529260019060200193016139d0565b60c083901c60ff1684529260019060200193016139c8565b60b883901c60ff1684529260019060200193016139c0565b60b083901c60ff1684529260019060200193016139b8565b60a883901c60ff1684529260019060200193016139b0565b60a083901c60ff1684529260019060200193016139a8565b609883901c60ff1684529260019060200193016139a0565b609083901c60ff168452926001906020019301613998565b608883901c60ff168452926001906020019301613990565b608083901c60ff168452926001906020019301613988565b607883901c60ff168452926001906020019301613980565b607083901c60ff168452926001906020019301613978565b606883901c60ff168452926001906020019301613970565b606083901c60ff168452926001906020019301613968565b605883901c60ff168452926001906020019301613960565b605083901c60ff168452926001906020019301613958565b604883901c60ff168452926001906020019301613950565b83901c60ff16845292600190602001930138613947565b603884901c60ff168552909360019060200194019061393f565b603084901c60ff1685529093600190602001940190613937565b602884901c60ff168552909360019060200194019061392f565b602084811c60ff1686529194909160019101940190613927565b601884901c60ff168552909360019060200194019061391f565b601084901c60ff1685529093600190602001940190613917565b600884901c60ff168552909360019060200194019061390f565b60ff841685529093600190602001940190613907565b919350916001610400602092613fa58854613f9a60ff613d2b8582851660ff169052565b613f73613dd8613f238d613ed389613e838e613d508184018a8d60081c1660ff169052565b613d638584018a8d60101c1660ff169052565b888b610200606095613d7e878201858560181c1660ff169052565b613d936080958585888501921c1660ff169052565b613e3960a097613dac898401878760281c1660ff169052565b613de960c09b613dc58d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b613dfe6101208401878760481c1660ff169052565b613e136101408401878760501c1660ff169052565b613e286101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b613e4e6101a08201858560681c1660ff169052565b613e636101c08201858560701c1660ff169052565b613e786101e08201858560781c1660ff169052565b01921c1660ff169052565b613e986102208c01888b60881c1660ff169052565b613ead6102408c01888b60901c1660ff169052565b613ec26102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b613ee86102a08a01868960a81c1660ff169052565b613efd6102c08a01868960b01c1660ff169052565b613f126102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b613f386103208801848760c81c1660ff169052565b613f4d6103408801848760d01c1660ff169052565b613f626103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b613f886103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b01950191019186939194926138ef565b90604051613fc2816108b3565b60c061400d6006839560018060a01b0380825416865260018201541660208601526002810154604086015260038101546060860152600481015460808601526118a46005820161386c565b910152565b6001600160a01b039091168152602081019190915260400190565b906001820180921161353557565b9190820180921161353557565b600260655414614059576002606555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b9081602091031261027d57516103d781611b54565b815181546001600160a01b0319166001600160a01b0391821617825590919060208083015191600192838601556040840151600286015560038501906060850151928351936001600160401b0385116108775781906141448686613551565b0192600052806000209160005b8581106141715750505050505050906004608061094d93015191016135e9565b8451821684820155938201938601614151565b959391926141b7936103d798969260018060a01b031688526020880152604087015260a0606087015260a086019161379c565b9260808185039101526137e4565b600460009182815582600182015582600282015560038101805484825580614215575b50500190815490808355816141fc57505050565b60208161094d94601f935220910160051c81019061353a565b614228918552602085209081019061353a565b38806141e8565b6001600160a01b0316600081815261010c602081815260408084208685528252808420338552909152822060020154156142b2578282526020908152604080832085845282528083203360009081529252902061428b906141c5565b7f46227bd805037a939224e05cd991a64cb464f4b5c5317858af210838e59ce390339180a4565b50505050565b60001981019190821161353557565b9190820391821161353557565b906040516142e1816108ce565b602060018294805484520154910152565b9081602091031261027d57516103d7816134a9565b60405190614314826108ce565b6001825260203681840137565b6040519061432e82610904565b600282526040366020840137565b634e487b7160e01b600052603260045260246000fd5b80511561435f5760200190565b61433c565b80516001101561435f5760400190565b805182101561435f5760209160051b010190565b906143928261343a565b61439f604051918261091f565b82815280926143b0601f199161343a565b0190602036910137565b919594939286926143cc828985614846565b60fd546143e1906001600160a01b0316610c90565b604051635dc22eff60e01b81526001600160a01b03841660048201526020928382602481865afa918215610318576000926145cf575b506000911561454b575050604051632260494f60e01b81526001600160a01b039390931660048401529091908290829060249082905afa9081156103185760ff9260009261451e575b50505b1695606487116144fe5761448561447e61094d979883613522565b6064900490565b9081614493575b505061501d565b816144f79294506144a3916142c7565b926144ac614307565b60fb546144dd906144c5906001600160a01b0316610c90565b6144ce83614352565b6001600160a01b039091169052565b6144e5614307565b91806144f084614352565b528461517e565b388061448c565b60405163d6849ff160e01b81526004810188905260646024820152604490fd5b61453d9250803d10614544575b614535818361091f565b8101906142f2565b3880614460565b503d61452b565b60fc549194506145979250839161456a906001600160a01b0316610c90565b60405163b28a7bad60e01b81526001600160a01b0390921660048301529092839190829081906024820190565b03915afa9182156103185760ff93926145b2575b5050614463565b6145c89250803d1061454457614535818361091f565b38806145ab565b6145e7919250843d8611610deb57610ddd818361091f565b9038614417565b81601f8201121561027d578051916146058361343a565b92614613604051948561091f565b808452602092838086019260051b82010192831161027d578301905b82821061463d575050505090565b8151815290830190830161462f565b91909160408184031261027d578051926001600160401b039384811161027d5782019381601f8601121561027d5784516146858161343a565b90614693604051928361091f565b808252602096878084019260051b8201019185831161027d5788809201905b8382106146d257505050509483015190811161027d576103d792016145ee565b82809183516146e08161026c565b8152019101906146b2565b60001981146135355760010190565b95919692949093859461470f8692878b614846565b60fe54614724906001600160a01b0316610c90565b604051637a99dc0160e11b81526001600160a01b039990991660048a01526024890191909152604488019690965260009586908890606490829084905af19788156103185786978799614807575b50865b89518810156147a25761479661479c9161478f8a8d614374565b519061403b565b976146eb565b96614775565b929598919497909396508883116147e75761094d9798836147c7575b5050505061501d565b836147de9496506147d7916142c7565b948461517e565b388080806147be565b6040516344783bd360e11b815260048101849052602481018a9052604490fd5b9098506148279197503d8088833e61481f818361091f565b81019061464c565b9690969738614772565b9081602091031261027d57516103d78161026c565b60fc5490929061485e906001600160a01b0316610c90565b6040516361fe24a960e11b81526004810184905260209490918590839060249082905afa918215610318576148ce948691600094614a6b575b50610101546148ae906001600160a01b0316610c90565b604051808098819463470d6ed960e11b8352600483019190602083019252565b03915afa93841561031857600094614a4c575b50818411614a2c578115613638576148f7614321565b9261496186614910610c9060fb5460018060a01b031690565b9261491e846144ce89614352565b61010254614934906001600160a01b0316610c90565b60405163e286ef3360e01b81526001600160a01b0390921660048301529092839190829081906024820190565b03915afa9081156103185761094d976000926149ff575b506001600160a01b0391614992915082166144ce87614364565b6149ab61499e86614364565b516001600160a01b031690565b166149ea576149be905b6144ce85614364565b6149c6614321565b936149d181846142c7565b6149da86614352565b526149e485614364565b5261517e565b506149be6149fa61499e85614364565b6149b5565b614a1e9250803d10614a25575b614a16818361091f565b810190614831565b3880614978565b503d614a0c565b604051639bdfbb5160e01b81526004810183905260248101859052604490fd5b614a64919450853d871161068357610674818361091f565b92386148e1565b614a83919450823d841161068357610674818361091f565b9238614897565b6001600160a01b038116151580614ac6575b614aa35750565b60405163cd5f748960e01b81526001600160a01b03919091166004820152602490fd5b5061010054614add906001600160a01b0316610c90565b604051632d5ad3d560e01b81526001600160a01b038316600482015290602090829060249082905afa90811561031857600091614b1c575b5015614a9c565b614b34915060203d8111610deb57610ddd818361091f565b38614b15565b803b158015614b6d575b614b4b5750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b808352602482015260248152614b9681610904565b519084617530fa6000513d82614bea575b5081614be0575b5080614bd0575b80614bc1575b15614b44565b50614bcb81614c53565b614bbb565b50614bda81614bf6565b15614bb5565b9050151538614bae565b60201115915038614ba7565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b602482015260248152614c2681610904565b5191617530fa6000513d82614c47575b5081614c40575090565b9050151590565b60201115915038614c36565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152614c2681610904565b6040516001620b695760e21b03198152600481018390526020816024816001600160a01b0386165afa90811561031857600091614ce1575b5015614cc5575050565b610643604051928392632be7c7f360e01b845260048401614012565b614cf9915060203d811161068357610674818361091f565b38614cbb565b6001600160a01b0381168015614e7f5734614e6d576040516370a0823160e01b808252306004830152602092908383602481855afa92831561031857600093614e4e575b5061010354614d5a906001600160a01b0316610c90565b90813b1561027d57604051630aed65f560e11b81526001600160a01b038716600482015233602482015230604482015260648101889052916000908390608490829084905af1918215610318578592614e3b575b5060405190815230600482015291829060249082905afa90811561031857614ddf93600092614e1e575b50506142c7565b828103614deb57505050565b604051636ff596f360e01b81526001600160a01b0392909216600483015260248201929092526044810191909152606490fd5b614e349250803d1061068357610674818361091f565b3880614dd8565b8061154d614e4892610864565b38614dae565b614e66919350843d861161068357610674818361091f565b9138614d43565b60405163d9efa38960e01b8152600490fd5b5050803403614e8b5750565b6040516305e4640960e21b81526004810191909152346024820152604490fd5b919081101561435f5760051b0190565b356103d78161026c565b356103d7816134a9565b91929092831561500b5760058411614feb57818403614fc95792919060009384935b828510614f2957505050505060648103614f085750565b6040516357623e5560e01b8152600481019190915260646024820152604490fd5b9091929394614f44610c90614f3f888589614eab565b614ebb565b15614fb057614f65614f5f614f5a888787614eab565b614ec5565b60ff1690565b15614f9757614f88614f8e91614f82614f5f614f5a8a8989614eab565b9061403b565b956146eb565b93929190614ef1565b60405163d4c1893560e01b815260048101879052602490fd5b6040516306f5730d60e41b815260048101879052602490fd5b50604051632db4fb2960e01b8152600481018490526024810191909152604490fd5b6040516366a4d05560e01b81526004810185905260056024820152604490fd5b60405163d218e6a560e01b8152600490fd5b9192939083518551908181036150d05750506150398451614388565b92819260005b8651808210156150c15761505389916142b8565b82036150745750808561506961506f9389614374565b526146eb565b61503f565b819561509f61447e615099614f5f61509261506f976150bb97614374565b5160ff1690565b88613522565b6150a9888a614374565b526150b48789614374565b51906142c7565b946146eb565b5050955061094d94925061517e565b604051632db4fb2960e01b815260048101919091526024810191909152604490fd5b6040810190604081528251809252606081019160208094019060005b818110615150575050508281830391015281808451928381520193019160005b82811061513c575050505090565b83518552938101939281019260010161512e565b82516001600160a01b03168552938501939185019160010161510e565b9060206103d7928181520190612ec4565b9192939083518551908181036152bf575050600092835b86518510156151b5576150bb6151af9161478f878a614374565b93615195565b90929491935083810361529e57506001600160a01b0391821692831561521c575060005b8151811015615214578061520a6151f661499e61520f9486614374565b85615201848b614374565b519116876152e1565b6146eb565b6151d9565b505050509050565b60009495925084935061525e61526c61523f610c9060ff5460018060a01b031690565b94604051928391602083019663c176e63960e01b8852602484016150f2565b03601f19810183528261091f565b51925af1615278612dff565b90156152815750565b604051634c0fe4a160e11b8152908190610643906004830161516d565b604051633bc6f52760e21b8152600481018590526024810191909152604490fd5b6040516345e8c29760e11b815260048101919091526024810191909152604490fd5b615367916000806040519361531b8561530d6020998a83019763a9059cbb60e01b895260248401614012565b03601f19810187528661091f565b60018060a01b03169260405194615331866108ce565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af1612c90612dff565b8051908282159283156153d7575b505050156153805750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b6153e793508201810191016140d0565b388281615375565b6001600160a01b0316156153ff57565b60405163602d6df560e01b8152734d41524b4554504c4143455f53455454494e475360601b6004820152602490fd5b6001600160a01b03161561543e57565b60405163602d6df560e01b81526d524f59414c54595f454e47494e4560901b6004820152602490fd5b6001600160a01b03161561547757565b60405163602d6df560e01b81526f5354414b494e475f524547495354525960801b6004820152602490fd5b6001600160a01b0316156154b257565b60405163602d6df560e01b8152724e4554574f524b5f42454e454649434941525960681b6004820152602490fd5b6001600160a01b0316156154f057565b60405163602d6df560e01b81527653504143455f4f50455241544f525f524547495354525960481b6004820152602490fd5b6001600160a01b03161561553257565b60405163602d6df560e01b8152675041594d454e545360c01b6004820152602490fd5b6001600160a01b03161561556557565b60405163602d6df560e01b815276415050524f5645445f544f4b454e5f524547495354525960481b6004820152602490fd5b6001600160a01b0316156155a757565b60405163602d6df560e01b81526f5354414b494e475f53455454494e475360801b6004820152602490fd5b6001600160a01b0316156155e257565b60405163c49074af60e01b8152600490fd5b6001600160a01b031660009081526101076020908152604080832093835292905220909290615622906142d4565b90815115801561569b575b6142b25761567192611c7f9260405160208101906156668161525e8a856014916bffffffffffffffffffffffff199060601b1681520190565b5190209051906156a9565b6156785750565b60405163e2cf60cb60e01b81526001600160a01b03919091166004820152602490fd5b50602082015142101561562d565b92909291600080925b8084106156c157505050501490565b90919293615704906156d4868487614eab565b3580821161570c576040805160208101938452908101919091526156fb816060810161525e565b519020946146eb565b9291906156b2565b6040805160208101928352908101929092529061572c816060810161525e565b5190206150bb565b6000806040516020810190638da5cb5b60e01b825260048152615756816108ce565b5190845afa90615764612dff565b911580156157b8575b61579657508060208061578593518301019101614831565b6001600160a01b0390811691161490565b60405163915b8f1d60e01b81526001600160a01b039091166004820152602490fd5b50602082511061576d56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212206776b47b7048559706408dd60a0fe4349c5977fdd54c839bc5171d00c2354a2564736f6c63430008120033","sourceMap":"1379:50771:95:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;;;;:::o;:::-;;;;;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;28057:26:95;;;:::i;:::-;28180:38;;:60;;;;;;1379:50771;;-1:-1:-1;;;28180:60:95;;:12;1379:50771;28180:60;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;28180:60;;;;;;;;1379:50771;;;28180:60;;;;:::i;:::-;1379:50771;;28180:60;;:::i;:::-;1379:50771;;;;;;;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;29151:20:95;;;:::i;:::-;29268:32;;:48;;;;;;1379:50771;;-1:-1:-1;;;29268:48:95;;:12;1379:50771;29268:48;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;29268:48;;;;;;;;1379:50771;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;24866:58;1379:50771;;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;;-1:-1:-1;1379:50771:95;;;24866:20;1379:50771;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;24866:58;1379:50771;;;;;;;;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;31233:22:95;;;:::i;:::-;31352:34;;:52;;;;;;1379:50771;;-1:-1:-1;;;31352:52:95;;:12;1379:50771;31352:52;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;31352:52;;;;;;;;1379:50771;;;;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;27488:25:95;;;:::i;:::-;27610:37;;:58;;;;;;1379:50771;;-1:-1:-1;;;27610:58:95;;:12;1379:50771;27610:58;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;27610:58;;;;;;;;1379:50771;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1898:6:27;1379:50771:95;;;;1873:80:27;1889:4;1881:23;;;1873:80;:::i;:::-;1963:87;-1:-1:-1;;;;;;;;;;;1379:50771:95;;;;;1971:30:27;1963:87;:::i;:::-;1303:62:20;;:::i;:::-;1379:50771:95;;;;;;:::i;:::-;-1:-1:-1;1379:50771:95;;971:66:24;;1379:50771:95;;971:66:24;;;3330:17;;;;;;:::i;:::-;1379:50771:95;3232:526:24;1379:50771:95;;;;;;;;971:66:24;;;;;;;3383:63;;1379:50771:95;;3383:63:24;;-1:-1:-1;;3383:63:24;;;3232:526;-1:-1:-1;3379:302:24;;1379:50771:95;;-1:-1:-1;;;3610:56:24;;1379:50771:95;3610:56:24;1379:50771:95;3610:56:24;;;:::i;:::-;;;;3379:302;3737:9;3496:28;3488:82;3496:28;;3488:82;:::i;:::-;3737:9;:::i;3383:63::-;;;;;1379:50771:95;3383:63:24;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1379:50771:95;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;26394:47;1379:50771;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26394:10;1379:50771;;;;;;;;;;;;;;;;;;;;;;;;;;;26394:47;1379:50771;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;;;;;-1:-1:-1;;1379:50771:95;;;;:::o;:::-;;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;3901:220:27;1379:50771:95;;;;;;;;;;3901:220:27;:::i;1379:50771:95:-;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1379:50771:95;;;;2333:6:27;-1:-1:-1;;;;;1379:50771:95;2324:4:27;2316:23;1379:50771:95;;;;-1:-1:-1;;;;;;;;;;;1379:50771:95;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;1379:50771:95;25291:12;1379:50771;;;-1:-1:-1;1379:50771:95;;;-1:-1:-1;1379:50771:95;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;25829:56;1379:50771;;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;;-1:-1:-1;1379:50771:95;;;25829:18;1379:50771;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;971:66:24;;;1379:50771:95;4873:6;971:66:24;1379:50771:95;4869:35;;17134:16;;;:::i;:::-;17192:12;;;;;;:::i;:::-;17240:16;;;:::i;:::-;17271:11;;17267:47;;17328:14;;17324:49;;1379:50771;;;;;;;;17548:39;1379:50771;;;;971:66:24;;;17548:39:95;;;;;;;;17566:10;;;;17548:39;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;17548:39:95;;;1379:50771;17601:25;;;;17597:153;;-1:-1:-1;17809:22:95;1379:50771;17764:69;;1379:50771;;17801:31;;-1:-1:-1;;;;;1379:50771:95;;-1:-1:-1;;;;;1379:50771:95;;;17801:31;1379:50771;;;971:66:24;;;;;;;;17764:69:95;;17566:10;17764:69;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;17764:69:95;;;1379:50771;17763:70;;17759:160;;1379:50771;;;;18016:50;1379:50771;;18016:38;18199:143;1379:50771;;;;18199:143;1379:50771;;;;;18081:102;1379:50771;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;;;;;18081:102;;;1379:50771;18081:102;;;;1379:50771;;;;;;:::i;:::-;18081:102;;;1379:50771;;;;;;:::i;:::-;18081:102;;;1379:50771;18016:28;17566:10;18016:28;1379:50771;;;;;;;;19672:10;1379:50771;;;;;;;18016:28;1379:50771;;;;;;;;;;18016:38;1379:50771;;;;;;;;;;;;;;;;18016:50;1379:50771;:::i;:::-;;17566:10;;;;18199:143;;;:::i;:::-;;;;1379:50771;17759:160;1379:50771;;-1:-1:-1;;;17856:52:95;;1379:50771;;;17856:52;;1379:50771;;17566:10;;17856:52;;;:::i;17764:69::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;17597:153;1379:50771;17649:90;1379:50771;;;;;;17649:90;;;;;;;;17566:10;17649:90;;;;:::i;17548:39::-;;;;;;;;;;;;;;:::i;:::-;;;;17324:49;1379:50771;;-1:-1:-1;;;17351:22:95;;1379:50771;;17351:22;17267:47;1379:50771;;-1:-1:-1;;;17291:23:95;;1379:50771;;17291:23;4869:35;1379:50771;;-1:-1:-1;;;4888:16:95;;1379:50771;;4888:16;1379:50771;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26663:12;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;1379:50771:95;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;2471:103:28;;:::i;:::-;1379:50771:95;4873:6;971:66:24;1379:50771:95;4869:35;;1379:50771;;19189:14;19185:49;;-1:-1:-1;;;;;19248:10:95;1379:50771;;;;19248:21;19244:66;;19442:16;1379:50771;;19442:16;:::i;:::-;19494;1379:50771;;19494:16;:::i;:::-;19672:47;1379:50771;;19672:38;1379:50771;;19672:28;1379:50771;;;;;;;;;;19672:10;1379:50771;;;;;;;19672:47;19819:18;;;1379:50771;19819:23;;19815:94;;1379:50771;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;19923:45;19919:144;;20076:15;1379:50771;20076:15;;1379:50771;;;20076:25;;20072:76;;1379:50771;;;20162:30;;20158:106;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;;20464:36:95;;1379:50771;;;20464:36;1379:50771;;;;;20464:36;;;:::i;:::-;;1379:50771;;;;;20464:36;;;;;;;-1:-1:-1;20464:36:95;;;1379:50771;;;;20514:25;;20510:150;;-1:-1:-1;20716:22:95;1379:50771;20674:66;;1379:50771;;20708:31;;-1:-1:-1;;;;;1379:50771:95;;;20708:31;1379:50771;;971:66:24;;;;;;;20674::95;;1379:50771;;;20674:66;;;:::i;:::-;;1379:50771;;;;;20674:66;;;;;;;-1:-1:-1;20674:66:95;;;1379:50771;20673:67;;20669:154;;20947:18;1379:50771;;;;20947:18;:::i;:::-;21043:32;1379:50771;;;;21043:56;;-1:-1:-1;;;;;1379:50771:95;;;21043:56;1379:50771;;-1:-1:-1;;;21043:68:95;;1379:50771;21043:68;;1379:50771;;;;;;;;;;;;21043:68;;;;;;;21030:81;21043:68;21030:81;21043:68;-1:-1:-1;21043:68:95;;;1379:50771;21030:81;;;:::i;:::-;1379:50771;;21030:81;:::i;:::-;21220:31;1379:50771;;19819:18;;;1379:50771;21220:31;:::i;:::-;19819:18;;;;;1787:1:28;1379:50771:95;;;;21389:25;;1379:50771;:::i;:::-;21453:21;;1379:50771;:::i;:::-;21488:23;;21484:199;;1379:50771;;;-1:-1:-1;;;21844:36:95;;1379:50771;;;21844:36;1379:50771;;;;;21844:36;;;:::i;:::-;;1379:50771;;;;;21844:36;;;;;;;-1:-1:-1;21844:36:95;;;1379:50771;-1:-1:-1;1379:50771:95;;-1:-1:-1;;;21927:39:95;;1379:50771;;;;21927:39;1379:50771;;19248:10;1379:50771;21927:39;;;:::i;:::-;;1379:50771;;;;;21927:39;;;;;;;-1:-1:-1;21927:39:95;;;1379:50771;;;;21980:39;;21976:178;;20716:22;1379:50771;22253:39;;-1:-1:-1;;;;;1379:50771:95;;;22253:39;:103;;;;;1379:50771;;-1:-1:-1;;;22253:103:95;;-1:-1:-1;;;;;1379:50771:95;;;;;22253:103;;;1379:50771;;;;;;;;;;;;;;;;19248:10;1379:50771;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;22253:103;;;;;;;;;;1379:50771;-1:-1:-1;1379:50771:95;;-1:-1:-1;;;22384:36:95;;1379:50771;;;;22384:36;1379:50771;;;;;22384:36;;;:::i;:::-;;1379:50771;;;;;22384:36;;;;;;;-1:-1:-1;22384:36:95;;;1379:50771;;22424:39;1379:50771;;;22424:39;;:::i;:::-;22384:79;;;;:180;;;1379:50771;22367:322;;;22904:11;1379:50771;;;;;;;;;;22904:11;:::i;:::-;1379:50771;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;19248:10;;1379:50771;;;;;;22941:90;;1379:50771;;;;22941:90;;;;2536:1:28;1787;2065:22;1787:1;1985:109;22367:322:95;1379:50771;;-1:-1:-1;;;22596:82:95;;-1:-1:-1;;;;;1379:50771:95;;;;;22596:82;;;1379:50771;;;;;;;;;;;;;;;;;;19248:10;1379:50771;;;;;;;;;;;;3610:56:24;22384:180:95;1379:50771;;-1:-1:-1;;;22483:39:95;;1379:50771;-1:-1:-1;1379:50771:95;;;22483:39;1379:50771;;19248:10;1379:50771;22483:39;;;:::i;:::-;;1379:50771;;;;;22483:39;;;;;;;-1:-1:-1;22483:39:95;;;22384:180;1379:50771;22526:38;1379:50771;;;22526:38;;:::i;:::-;22483:81;;22384:180;;;22483:39;22526:38;22483:39;;;;;1379:50771;22483:39;1379:50771;22483:39;;;;;;;:::i;:::-;;;;;22384:36;22424:39;22384:36;;;;;1379:50771;22384:36;1379:50771;22384:36;;;;;;;:::i;:::-;;;;;22253:103;;;;;;:::i;:::-;;;:::i;:::-;;;;21976:178;22042:101;1379:50771;;;17649:90;;;;;;22042:101;;1379:50771;;;;;;;;;22042:101;;;:::i;21927:39::-;;;;;1379:50771;21927:39;1379:50771;21927:39;;;;;;;:::i;:::-;;;;;21844:36;;;;1379:50771;21844:36;1379:50771;21844:36;;;;;;;:::i;:::-;;;;21484:199;21618:54;21625:47;1379:50771;;21625:38;1379:50771;;21625:28;1379:50771;;;;;;;;;;19672:10;1379:50771;;;;;;;21625:47;21618:54;:::i;:::-;21484:199;;21043:68;;;;1379:50771;21043:68;1379:50771;21043:68;;;;;;;:::i;:::-;;;;20669:154;1379:50771;;17856:52;;;20763:49;;1379:50771;20763:49;1379:50771;;;;;20763:49;;;:::i;20674:66::-;;;;1379:50771;20674:66;1379:50771;20674:66;;;;;;;:::i;:::-;;;;20464:36;;;;1379:50771;20464:36;1379:50771;20464:36;;;;;;;:::i;:::-;;;;20158:106;1379:50771;;-1:-1:-1;;;20201:63:95;;1379:50771;;;20201:63;;1379:50771;;;;;;;;;;3610:56:24;20072:76:95;1379:50771;;-1:-1:-1;;;20110:38:95;;1379:50771;;;20110:38;;1379:50771;;;;;;;;;;3610:56:24;19919:144:95;1379:50771;;-1:-1:-1;;;19991:61:95;;1379:50771;;;19991:61;;1379:50771;;;19991:61;;;:::i;19815:94::-;1379:50771;;-1:-1:-1;;;19851:58:95;;-1:-1:-1;;;;;1379:50771:95;;;;;19851:58;;;1379:50771;;;;;;;;;;;;;;;;;;;;3610:56:24;19244:66:95;1379:50771;;-1:-1:-1;;;19278:32:95;;1379:50771;;-1:-1:-1;;;;;1379:50771:95;;19278:32;;1379:50771;;;3610:56:24;19185:49:95;1379:50771;;-1:-1:-1;;;19212:22:95;;1379:50771;;19212:22;4869:35;1379:50771;;-1:-1:-1;;;4888:16:95;;1379:50771;;4888:16;1379:50771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23462:17;1379:50771;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1303:62:20;;:::i;:::-;2758:6;1379:50771:95;;-1:-1:-1;;;;;;1379:50771:95;;;;;;;-1:-1:-1;;;;;1379:50771:95;2806:40:20;1379:50771:95;;2806:40:20;1379:50771:95;;;;;;;;-1:-1:-1;;1379:50771:95;;;;6040:2153;1379:50771;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;6040:2153;:::i;1379:50771::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;16320:10;16285:46;16320:10;16285:46;;:::i;:::-;16284:47;16280:106;;16437:8;;;;:::i;:::-;1379:50771;;;;;;16601:51;1379:50771;-1:-1:-1;1379:50771:95;;;;16537:12;1379:50771;;;;;;;;;;;;;;1787:1:28;1379:50771:95;;;;;16601:51;1379:50771;;16280:106;1379:50771;;-1:-1:-1;;;;;;16340:46:95;;1379:50771;;;16340:46;;16320:10;;1379:50771;16340:46;;;:::i;1379:50771::-;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;28628:29:95;;;:::i;:::-;28754:40;;:64;;;;;;1379:50771;;-1:-1:-1;;;28754:64:95;;:12;1379:50771;28754:64;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;28754:64;;;;;;;;1379:50771;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;1379:50771:95;24350:14;1379:50771;;;-1:-1:-1;1379:50771:95;;;-1:-1:-1;1379:50771:95;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;33349:18:95;1379:50771;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;-1:-1:-1;;1379:50771:95;;;;1513:6:20;1379:50771:95;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;:::i;:::-;2471:103:28;;;:::i;:::-;1379:50771:95;4873:6;971:66:24;1379:50771:95;4869:35;;1379:50771;10589:45;:35;;;1379:50771;;;;;;;;10589:17;1379:50771;;;;;;;10589:45;1379:50771;:::i;:::-;3060:18;;;;-1:-1:-1;;;;;1379:50771:95;;;;;10769:37;10765:101;;3060:18;;10880:60;;10881:59;;-1:-1:-1;;;;;1379:50771:95;10881:59;;:::i;:::-;10880:60;;1379:50771;10880:60;10876:157;;11093:10;11105:6;11093:10;;11105:6;;;:::i;:::-;11127:14;;11123:49;;-1:-1:-1;;;;;1379:50771:95;;;;;;11310:14;1379:50771;;;;;11310:42;;:32;;;1379:50771;11310:42;1379:50771;11385:60;11093:10;11385:48;:38;;;1379:50771;;;;;;;;11385:20;1379:50771;;;;;;;11385:60;1379:50771;11459:14;;;:54;;;1379:50771;11455:185;;-1:-1:-1;;;;;;;1379:50771:95;;;;;;11778:12;1379:50771;;;;;11778:40;;:30;;;1379:50771;11778:40;1379:50771;11849:58;11093:10;11849:46;:36;;;1379:50771;;;;;;;;11849:18;1379:50771;;;;;;;11849:58;1379:50771;11921:12;;;:40;;;1379:50771;11917:163;;12199:25;;1379:50771;12199:25;;1379:50771;12199:30;;;:71;;;1379:50771;12195:162;;12370:26;1379:50771;12370:26;;1379:50771;12399:15;12370:44;;12366:99;;1379:50771;;12489:22;;;;1379:50771;;;12479:32;;;12475:90;;12602:16;;;;:::i;:::-;1379:50771;12633:32;;;3060:18;1379:50771;;12633:32;-1:-1:-1;;;;;1379:50771:95;;;;;;;12633:52;12629:158;;12914:18;;;;;:::i;:::-;1379:50771;;;;;12947:27;12943:471;12947:22;;;13089:9;;;;;;;;13085:47;;12943:471;;;;;-1:-1:-1;14006:70:95;12943:471;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;11310:14;1379:50771;;;;;13428:42;;:32;;;1379:50771;13428:42;1379:50771;13424:243;;12943:471;-1:-1:-1;;;;;1379:50771:95;;;;;;11778:12;1379:50771;;;;;13681:40;;:30;;;1379:50771;13681:40;1379:50771;13677:235;;12943:471;1379:50771;;;;;;971:66:24;;;;;;;;;;14006:70:95;;11093:10;14006:70;;;1379:50771;;;;;;;;;;;;;;;;;;;;;;;;14006:70;;;;;;;;;;14515:138;14006:70;14515:138;14006:70;3060:18;14006:70;;;12943:471;1379:50771;;;14087:413;;12943:471;-1:-1:-1;;3060:18:95;-1:-1:-1;;;;;1379:50771:95;;;3060:18;1379:50771;;11093:10;;;;14515:138;;1379:50771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14087:413;3060:18;;14447:28;;3060:18;-1:-1:-1;;;;;1379:50771:95;;14397:32;;;14447:28;;1379:50771;14447:28;;;;;:::i;:::-;14087:413;;;;14006:70;;;;;;-1:-1:-1;14006:70:95;;;;;;:::i;:::-;;;;;;13677:235;13838:58;11093:10;13838:46;:36;;;1379:50771;;;;;;;;11849:18;1379:50771;;;;;;;13838:58;:63;1379:50771;;13838:63;:::i;:::-;1787:1:28;;13677:235:95;;13424:243;13583:60;11093:10;13583:48;:38;;;1379:50771;;;;;;;;11385:20;1379:50771;;;;;;;13583:60;:73;1379:50771;;;13583:73;:::i;:::-;1787:1:28;;13424:243:95;;13085:47;1379:50771;;-1:-1:-1;;;13112:20:95;;1379:50771;;13112:20;12943:471;13321:32;1379:50771;13321:68;;1379:50771;;;;;13321:56;;-1:-1:-1;;;;;1379:50771:95;;;13321:56;1379:50771;;-1:-1:-1;;;13321:68:95;;;;;1379:50771;;;;;;;;;;;;;;13321:68;;;;;;;;;;;-1:-1:-1;14006:70:95;13321:68;13308:81;13321:68;;;;;;13308:81;13321:68;;;;;12943:471;13308:81;;;:::i;:::-;;;:::i;:::-;12943:471;;13321:68;;;;;;;;;;;;;;:::i;:::-;;;;12629:158;1379:50771;;-1:-1:-1;;;12708:68:95;;1379:50771;;;12708:68;;1379:50771;12708:68;;;;:::i;12475:90::-;1379:50771;;-1:-1:-1;;;12520:45:95;;;;;1379:50771;;;;;;;;;;;;;;;3610:56:24;;;12366:99:95;1379:50771;;-1:-1:-1;;;12423:42:95;;;;;1379:50771;;;;;;;;3610:56:24;;;12195:162:95;1379:50771;;;-1:-1:-1;;;12293:53:95;;;;;1379:50771;;;;;;;;;;;;;;3610:56:24;;;12199:71:95;12233:37;;;;12199:71;;11917:163;1379:50771;;;-1:-1:-1;;;11984:85:95;;-1:-1:-1;;;;;1379:50771:95;;11984:85;;;1379:50771;;;;;;;;;11093:10;1379:50771;;;;;;;;;;;;;;;;;;;;;;;;;;3610:56:24;;;11921:40:95;11937:14;;;;;:::i;:::-;:24;11921:40;;11455:185;1379:50771;;;-1:-1:-1;;;11536:93:95;;-1:-1:-1;;;;;1379:50771:95;;11536:93;;;1379:50771;;;;;;;;;11093:10;1379:50771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3610:56:24;;;11459:54:95;11477:24;;;;;;:::i;:::-;:36;11459:54;;11123:49;1379:50771;;-1:-1:-1;;;11150:22:95;;1379:50771;;11150:22;10876:157;3060:18;;1379:50771;;-1:-1:-1;;;;;;10963:59:95;;1379:50771;;;10963:59;;-1:-1:-1;;;;;1379:50771:95;3060:18;10963:59;;;;:::i;10765:101::-;1379:50771;;-1:-1:-1;;;10815:51:95;;1379:50771;10815:51;1379:50771;;10815:51;;;;:::i;4869:35::-;1379:50771;;-1:-1:-1;;;4888:16:95;;1379:50771;;4888:16;1379:50771;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;29648:14:95;;;:::i;:::-;29759:27;;:38;;;;;;1379:50771;;-1:-1:-1;;;29759:38:95;;:12;1379:50771;29759:38;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;29759:38;;;;;;;;1379:50771;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;27122:6;971:66:24;1379:50771:95;;;;;;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;;;;;:::i;:::-;;;14994:10;14959:46;14994:10;14959:46;;:::i;:::-;14958:47;14954:106;;15111:8;15333:73;15111:8;;;;;:::i;:::-;1379:50771;;;;;;;:::i;:::-;;;;15257:61;1379:50771;15257:61;;1379:50771;;;;;;;;;-1:-1:-1;1379:50771:95;15207:19;1379:50771;;15207:47;1379:50771;;-1:-1:-1;1379:50771:95;;;;;;;;;;;15207:47;1379:50771;;;;;;1787:1:28;;1379:50771:95;;;;1787:1:28;1379:50771:95;;;;;;;;;;;;;;;15333:73;1379:50771;14954:106;1379:50771;;-1:-1:-1;;;;;;15014:46:95;;1379:50771;15014:46;14994:10;1379:50771;;15014:46;;;:::i;1379:50771::-;;;;;;;:::i;:::-;15694:10;15659:46;15694:10;15659:46;;:::i;:::-;15658:47;15654:106;;15811:8;;;;:::i;:::-;1379:50771;;;;;;15974:53;1379:50771;-1:-1:-1;1379:50771:95;;;;15908:14;1379:50771;;;;;;;;;;;;;;1787:1:28;1379:50771:95;;;;;15974:53;1379:50771;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;1379:50771:95;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;23930:19;1379:50771;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;26923:22;1379:50771;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;971:66:24;;;1379:50771:95;4873:6;971:66:24;1379:50771:95;4869:35;;9119:47;9120:46;9155:10;9120:46;;:::i;9119:47::-;9115:131;;9398:16;9850:260;9398:16;;9850:260;9398:16;;;;1379:50771;9398:16;9631:45;9398:16;;9631:35;9398:16;;;;:::i;:::-;9456:12;;;;;;:::i;:::-;9521:8;;;;:::i;:::-;9679:155;1379:50771;;:::i;:::-;9155:10;1379:50771;;9155:10;9679:155;1379:50771;9679:155;;;;;1379:50771;9679:155;;;;1379:50771;9679:155;;;;1379:50771;;;;;;:::i;:::-;9679:155;;;1379:50771;;;;;;:::i;:::-;9679:155;;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;10589:17;1379:50771;;;;;;;9631:45;1379:50771;:::i;:::-;9679:155;1379:50771;9155:10;;-1:-1:-1;;;;;1379:50771:95;;;;;;9155:10;;1379:50771;9850:260;:::i;9115:131::-;1379:50771;;-1:-1:-1;;;;;;9189:46:95;;1379:50771;9189:46;9155:10;1379:50771;;9189:46;;;:::i;1379:50771::-;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;31751:21:95;;;:::i;:::-;31869:39;;:62;;;;;;1379:50771;;-1:-1:-1;;;31869:62:95;;:12;1379:50771;31869:62;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;31869:62;;;;;;;;1379:50771;;;;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;32331:22:95;;;:::i;:::-;32450:40;;:64;;;;;;1379:50771;;-1:-1:-1;;;32450:64:95;;:12;1379:50771;32450:64;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;32450:64;;;;;;;;1379:50771;;;;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;30178:29:95;;;:::i;:::-;30304:40;;:64;;;;;;1379:50771;;-1:-1:-1;;;30304:64:95;;:12;1379:50771;30304:64;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;30304:64;;;;;;;;1379:50771;;;;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;30711:22:95;;;:::i;:::-;30830:34;;:52;;;;;;1379:50771;;-1:-1:-1;;;30830:52:95;;:12;1379:50771;30830:52;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;30830:52;;;;;;;;1379:50771;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;2402:22:20;1379:50771:95;;2496:8:20;;;:::i;1379:50771:95:-;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;32883:23:95;;;:::i;:::-;33009:73;1379:50771;;-1:-1:-1;;;;;;1379:50771:95;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;1599:130:20;1513:6;1379:50771:95;-1:-1:-1;;;;;1379:50771:95;929:10:37;1662:23:20;1379:50771:95;;1599:130:20:o;1379:50771:95:-;;;;3610:56:24;;;1379:50771:95;;;;;;;;;;;;;;;;;;2666:187:20;2758:6;1379:50771:95;;-1:-1:-1;;;;;1379:50771:95;;;-1:-1:-1;;;;;;1379:50771:95;;;;;;;;;;2806:40:20;-1:-1:-1;;2806:40:20;2666:187::o;1379:50771:95:-;;;;:::o;:::-;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;971:66:24;;;;;;;;;;;:::o;:::-;1379:50771:95;;971:66:24;;;;;;;;;;;:::o;:::-;1379:50771:95;;-1:-1:-1;;;971:66:24;;;;;;;;;;;1379:50771:95;971:66:24;1379:50771:95;;;971:66:24;-1:-1:-1;;;971:66:24;;;;;;;;;;;;;;;;;1379:50771:95;971:66:24;1379:50771:95;;;971:66:24;-1:-1:-1;;;971:66:24;;;;;;:::o;1699:281::-;1713:19:36;;:23;1379:50771:95;;-1:-1:-1;;;;;;;;;;;1379:50771:95;;-1:-1:-1;;;;;;1379:50771:95;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;1699:281:24:o;1379:50771:95:-;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;2372:276:24;;2171:17;;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;2204:27:24;-1:-1:-1;;2204:27:24;1379:50771:95;;2523:15:24;;;:28;;;2372:276;2519:123;;2372:276;;:::o;2519:123::-;7318:69:36;1379:50771:95;-1:-1:-1;1379:50771:95;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;7276:25:36;;;;;;;;;:::i;:::-;7318:69;;:::i;:::-;;2372:276:24:o;2523:28::-;;-1:-1:-1;2523:28:24;;2372:276;;2171:17;;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;2204:27:24;;;;1379:50771:95;;2523:15:24;;;:28;;;2519:123;;2372:276;;:::o;2523:28::-;;1379:50771:95;2523:28:24;;1842:226:27;-1:-1:-1;;;;;1898:6:27;1379:50771:95;;;;1873:80:27;1889:4;1881:23;;;1873:80;:::i;:::-;1963:87;-1:-1:-1;;;;;;;;;;;1379:50771:95;;;;;1971:30:27;1963:87;:::i;:::-;1303:62:20;;:::i;:::-;971:66:24;;1379:50771:95;;971:66:24;;;3330:17;;;;;;:::i;3232:526::-;3383:63;;1379:50771:95;;;;;;971:66:24;;;;;;;3383:63;;1379:50771:95;;3383:63:24;;;;;;;3232:526;-1:-1:-1;3379:302:24;;1379:50771:95;;-1:-1:-1;;;3610:56:24;;1379:50771:95;3610:56:24;3383:63;3610:56;;;:::i;3379:302::-;3737:9;3496:28;3488:82;3496:28;;3488:82;:::i;:::-;3737:9;:::i;3383:63::-;;;;;;;;;;;;;;;:::i;:::-;;;;;1379:50771:95;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1379:50771:95;;;;:::o;:::-;;;:::o;7682:628:36:-;;;;7886:418;;;1379:50771:95;;;7917:22:36;7913:286;;8212:17;;:::o;7913:286::-;1713:19;:23;1379:50771:95;;8212:17:36;:::o;1379:50771:95:-;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;7886:418:36;1379:50771:95;;;;-1:-1:-1;8991:21:36;:17;;9163:142;;;;;;;8987:379;1379:50771:95;;-1:-1:-1;;;9335:20:36;;1379:50771:95;9335:20:36;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;3246:506:26;;;;;;;;;;;3302:13;1379:50771:95;;;;;;;3301:14:26;3347:34;;;;;;3246:506;3346:108;;;;3246:506;1379:50771:95;;;;3636:1:26;3536:16;;;1379:50771:95;;;3302:13:26;1379:50771:95;;;3302:13:26;1379:50771:95;;3536:16:26;3562:65;;3636:1;:::i;:::-;3647:99;;3246:506::o;3647:99::-;3681:21;1379:50771:95;;3302:13:26;1379:50771:95;;3302:13:26;1379:50771:95;;3681:21:26;1379:50771:95;;3551:1:26;1379:50771:95;;3721:14:26;;1379:50771:95;;3721:14:26;3246:506::o;3562:65::-;3596:20;1379:50771:95;;;3302:13:26;1379:50771:95;;;3302:13:26;1379:50771:95;;3596:20:26;3636:1;:::i;1379:50771:95:-;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;3346:108:26;3426:4;1713:19:36;:23;;-1:-1:-1;1713:23:36;3387:66:26;;3346:108;;;;;3387:66;3452:1;1379:50771:95;;;;3436:17:26;3387:66;;;3347:34;3380:1;1379:50771:95;;;3365:16:26;;-1:-1:-1;3347:34:26;;3060:18:95;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;7529:381;1379:50771;;-1:-1:-1;;;;;;1379:50771:95;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;3060:18;;;;;1379:50771;;;;;;;;;;;;;3060:18;;;;;1379:50771;;;;;;;;;;;;;3060:18;;;;;1379:50771;;;;;;;;;;;;;3060:18;;;;;1379:50771;;;;;;;;;;;;;3060:18;;;;;1379:50771;;;;;;;;;;;;;3060:18;;;;;1379:50771;;;;;;;;;;;;;3060:18;;;;;1379:50771;;;;;;;;;;;;;3060:18;;;;1379:50771;;;;;;;;;;;3060:18;;;;;;;1379:50771;3060:18;1379:50771;;-1:-1:-1;;;;;;1379:50771:95;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;6040:2153;;3060:18;6040:2153;;;;;;;;;6645:25;;;:::i;:::-;6732:26;;;:::i;:::-;6822:29;;;:::i;:::-;6907:20;;;:::i;:::-;6978:14;;;:::i;:::-;7056:29;;;:::i;:::-;7143:22;;;:::i;:::-;7223;;;:::i;:::-;7281:21;;;:::i;:::-;7338:22;;;:::i;:::-;7396:23;;;:::i;:::-;1379:50771;;-1:-1:-1;;;7544:366:95;;-1:-1:-1;;;;;1379:50771:95;;;7544:366;;;1379:50771;;;;3060:18;;;1379:50771;;;;3060:18;;;1379:50771;;;;3060:18;;;1379:50771;;;;3060:18;;;1379:50771;;;;3060:18;;;1379:50771;;;;3060:18;;;1379:50771;;;;3060:18;;;1379:50771;;;;3060:18;;;1379:50771;;;3060:18;;;1379:50771;;;;;3060:18;7544:366;:14;;3060:18;7544:14;;:366;;;;;;7920:73;7544:366;3060:18;7544:366;-1:-1:-1;7544:366:95;;;6040:2153;3060:18;;;:::i;:::-;7920:73;1379:50771;;;;;;-1:-1:-1;;;;;1379:50771:95;-1:-1:-1;;;;;;1379:50771:95;;;;;;;7920:73;1003:95:20;;:::i;:::-;1868:111:28;;:::i;:::-;1042:67:27;;:::i;7544:366:95:-;;;;;;-1:-1:-1;7544:366:95;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1379:50771;;;;:::o;:::-;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;5328:125:26;5366:69;1379:50771:95;5374:13:26;1379:50771:95;;;;5366:69:26;;;:::i;:::-;;:::i;:::-;1195:12:20;929:10:37;1195:12:20;:::i;5328:125:26:-;5366:69;1379:50771:95;5374:13:26;1379:50771:95;;;;5366:69:26;:::i;5328:125::-;5366:69;1379:50771:95;5374:13:26;1379:50771:95;;;;5366:69:26;;;:::i;:::-;1787:1:28;2065:22;1787:1;5328:125:26:o;1379:50771:95:-;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;1379:50771:95;;;;;;;:::i;:::-;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1379:50771:95;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3060:18;;1379:50771;;-1:-1:-1;;;;;;1379:50771:95;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;3060:18;1379:50771;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;-1:-1:-1;;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;1787:1:28;1379:50771:95;;;;;;;1787:1:28;1379:50771:95;;;;;;;1787:1:28;1379:50771:95;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;1379:50771:95;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;1379:50771:95;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;:::o;:::-;;11950:1;1379:50771;;;;;;;:::o;:::-;;;;;;;;;;:::o;2580:287:28:-;1830:1;2712:7;1379:50771:95;2712:19:28;1830:1;;;2712:7;1787:1;2580:287::o;1830:1::-;1379:50771:95;;-1:-1:-1;;;1830:1:28;;;;;;;;;;;1379:50771:95;1830:1:28;1379:50771:95;;;1830:1:28;;;;1379:50771:95;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;3060:18;;1379:50771;;-1:-1:-1;;;;;;1379:50771:95;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;1787:1:28;1379:50771:95;;;;;;;1787:1:28;1379:50771:95;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;1379:50771:95;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;19202:1;1379:50771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;18399:427;-1:-1:-1;;;;;1379:50771:95;-1:-1:-1;1379:50771:95;;;18491:10;1379:50771;;;;;;;;;;;;;;;;18530:10;1379:50771;;;;;;;18491:59;;1379:50771;18491:64;18487:101;;1379:50771;;;;;;;;;;;;;;;;;;;18530:10;-1:-1:-1;1379:50771:95;;;;;;;18688:57;;21618:54;:::i;18688:57::-;18761:58;18530:10;18761:58;;;18399:427::o;18487:101::-;18571:7;;;;:::o;1379:50771::-;-1:-1:-1;;1379:50771:95;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;35477:1;1379:50771;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;39632:1;1379:50771;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;38974:32;1379:50771;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;33910:2142::-;;;;;;34261:33;34459:7;;;;;;:::i;:::-;34614:34;1379:50771;34614:58;;-1:-1:-1;;;;;1379:50771:95;;;34614:58;1379:50771;;-1:-1:-1;;;34614:67:95;;-1:-1:-1;;;;;1379:50771:95;;34614:67;;;1379:50771;34614:67;;;1379:50771;;;34614:67;;;;;;;;-1:-1:-1;34614:67:95;;;33910:2142;-1:-1:-1;;;34614:254:95;;;-1:-1:-1;;1379:50771:95;;-1:-1:-1;;;34696:65:95;;-1:-1:-1;;;;;1379:50771:95;;;;34614:67;34696:65;;1379:50771;;;;;;;;;;;;34696:65;;;;;;;1379:50771;34696:65;-1:-1:-1;34696:65:95;;;34614:254;;;;1379:50771;34882:24;34903:3;34882:24;;34878:113;;35100:36;35101:28;36032:12;35101:28;;;;:::i;:::-;34903:3;1379:50771;;;;35100:36;35150:15;;35146:718;;34614:254;36032:12;;;:::i;35146:718::-;35276:30;35837:15;35276:30;;;;;;:::i;:::-;35455:24;;;:::i;:::-;34614:12;1379:50771;35493:64;;35517:40;;-1:-1:-1;;;;;1379:50771:95;;;35517:40;35493:64;;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;;;;;35493:64;35606:16;;:::i;:::-;35636:32;;;;;:::i;:::-;1379:50771;35837:15;;:::i;:::-;35146:718;;;;34878:113;1379:50771;;-1:-1:-1;;;34929:51:95;;34614:67;34929:51;;1379:50771;;;34903:3;1379:50771;;;;;;3610:56:24;34696:65:95;;;;;;-1:-1:-1;34696:65:95;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;34614:254;34776:32;1379:50771;;;-1:-1:-1;34776:92:95;;-1:-1:-1;1379:50771:95;;34776:74;;-1:-1:-1;;;;;1379:50771:95;;;34776:74;1379:50771;;-1:-1:-1;;;34776:92:95;;-1:-1:-1;;;;;1379:50771:95;;;34614:67;34776:92;;1379:50771;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;34776:92;;;;;;;;;;1379:50771;34776:92;;;;34614:254;;;;;34776:92;;;;;;-1:-1:-1;34776:92:95;;;;;;:::i;:::-;;;;;34614:67;;;;;;;;;;;;;;;:::i;:::-;;;;;1379:50771;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;:::o;36636:1776::-;;;;;;;;;;37195:7;36997:33;37195:7;;;;:::i;:::-;37376:26;1379:50771;37376:37;;-1:-1:-1;;;;;1379:50771:95;;;37376:37;1379:50771;;-1:-1:-1;;;37376:74:95;;-1:-1:-1;;;;;1379:50771:95;;;;37376:74;;;1379:50771;;;;;;;;;;;;;;;-1:-1:-1;;;;1379:50771:95;;;;;;-1:-1:-1;;37376:74:95;;;;;;;;;;;;;36636:1776;37540:26;;37618:3;1379:50771;;37596:20;;;;;37637:30;37618:3;37655:12;;;;;:::i;:::-;1379:50771;37637:30;;:::i;:::-;37618:3;;:::i;:::-;37581:13;;;37596:20;;;;;;;;;;;37771:32;;;37767:103;;38392:12;37885:18;;;37881:343;;37576:102;38392:12;;;;;:::i;37881:343::-;38016:33;38203:9;38016:33;;;;;;:::i;:::-;38203:9;;;:::i;:::-;37881:343;;;;;;37767:103;1379:50771;;-1:-1:-1;;;37812:58:95;;37376:74;37812:58;;1379:50771;;;;;;;;;;;3610:56:24;37376:74:95;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;1379:50771;;;;;;;;;3060:18;;;;:::i;38755:1563::-;38974:32;1379:50771;38755:1563;;;38974:56;;-1:-1:-1;;;;;1379:50771:95;;;38974:56;1379:50771;;-1:-1:-1;;;38974:65:95;;;;;1379:50771;;;38974:65;;1379:50771;;38974:65;;1379:50771;;;;;;38974:65;;;;;;;39186:57;38974:65;;;-1:-1:-1;38974:65:95;;;38755:1563;-1:-1:-1;39186:28:95;1379:50771;39186:48;;-1:-1:-1;;;;;1379:50771:95;;;39186:48;1379:50771;;971:66:24;;;;;;;;39186:57:95;;38974:65;39186:57;;1379:50771;;;;;;;;39186:57;;;;;;;;;;-1:-1:-1;39186:57:95;;;38755:1563;39257:27;;;;39253:124;;39391:19;;39387:56;;39610:24;;:::i;:::-;1379:50771;39734:72;1379:50771;39660:40;1379:50771;38974:12;1379:50771;;;;;;;;;39660:40;39644:56;;;;;;:::i;:::-;39734:28;1379:50771;39734:63;;-1:-1:-1;;;;;1379:50771:95;;;39734:63;1379:50771;;-1:-1:-1;;;39734:72:95;;-1:-1:-1;;;;;1379:50771:95;;;38974:65;39734:72;;1379:50771;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;39734:72;;;;;;;;;;40303:7;39734:72;-1:-1:-1;39734:72:95;;;38755:1563;-1:-1:-1;;;;;;1379:50771:95;39710:97;;-1:-1:-1;1379:50771:95;;39710:97;;;:::i;:::-;39833:13;;;;:::i;:::-;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;39833:13;1379:50771;39833:86;;39817:102;39833:86;;39817:102;;;:::i;:::-;40064:16;;:::i;:::-;40103:27;;;;;:::i;:::-;40090:40;;;:::i;:::-;1379:50771;40140:23;;;:::i;:::-;1379:50771;40303:7;:::i;39833:86::-;39906:13;39817:102;39906:13;;;;:::i;:::-;39833:86;;39734:72;;;;;;-1:-1:-1;39734:72:95;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;39253:124;1379:50771;;-1:-1:-1;;;39307:59:95;;38974:65;39307:59;;1379:50771;;;;;;;;;;;3610:56:24;39186:57:95;;;;;;;;;;;;;;;:::i;:::-;;;;;38974:65;;;;;;;;;;;;;;;:::i;:::-;;;;;40477:355;-1:-1:-1;;;;;1379:50771:95;;40652:30;;;:103;;40477:355;40648:178;;40477:355;:::o;40648:178::-;1379:50771;;-1:-1:-1;;;40778:37:95;;-1:-1:-1;;;;;1379:50771:95;;;;40778:37;;;1379:50771;;;3610:56:24;40652:103:95;-1:-1:-1;40687:34:95;1379:50771;40687:50;;-1:-1:-1;;;;;1379:50771:95;;;40687:50;1379:50771;;-1:-1:-1;;;40687:68:95;;-1:-1:-1;;;;;1379:50771:95;;40687:68;;;1379:50771;;40687:68;;1379:50771;;;;;;40687:68;;;;;;;40680:1;40687:68;;;40652:103;40686:69;;40652:103;;40687:68;;;;;;;;;;;;;;:::i;:::-;;;;40984:321;41085:28;;:33;:131;;;;40984:321;41068:231;;40984:321;:::o;41068:231::-;1379:50771;;-1:-1:-1;;;41248:40:95;;-1:-1:-1;;;;;1379:50771:95;;;41248:40;;;1379:50771;;;41248:40;41085:131;1379:50771;4592:71:72;-1:-1:-1;1379:50771:95;;4592:71:72;;;1017:25;;;;4592:71;;;;;;1379:50771:95;4592:71:72;;;;;;:::i;:::-;4784:212;;;;;-1:-1:-1;4784:212:72;;5013:29;;;41085:131:95;5013:48:72;;;;41085:131:95;975:149:72;;;;41085:131:95;1543:81:72;;;41085:131:95;41138:78;41085:131;;1543:81:72;1570:54;;;;:::i;:::-;1543:81;;975:149;1060:64;;;;:::i;:::-;1059:65;975:149;;5013:48;5046:15;;;;5013:48;;;:29;4592:71;-1:-1:-1;5024:18:72;;-1:-1:-1;5013:29:72;;;4421:647;-1:-1:-1;4592:71:72;4421:647;1379:50771:95;;4592:71:72;;;1017:25;;;;4592:71;;1379:50771:95;;;4592:71:72;;;1379:50771:95;4592:71:72;;;;;;:::i;:::-;4784:212;;;;-1:-1:-1;4784:212:72;;5013:29;;;4421:647;5013:48;;;;5006:55;4421:647;:::o;5013:48::-;5046:15;;;;4421:647;:::o;5013:29::-;4592:71;-1:-1:-1;5024:18:72;;-1:-1:-1;5013:29:72;;;4421:647;-1:-1:-1;4592:71:72;4421:647;1379:50771:95;;4592:71:72;;;1017:25;;;;4592:71;;41189:26:95;;;4592:71:72;;;1379:50771:95;4592:71:72;;;;;;:::i;41497:351:95:-;1379:50771;;-1:-1:-1;;;;;;41704:58:95;;;;;1379:50771;;;41704:58;1379:50771;;;-1:-1:-1;;;;;1379:50771:95;;41704:58;;;;;;;-1:-1:-1;41704:58:95;;;41497:351;41704:63;;41700:142;;41497:351;;:::o;41700:142::-;41790:41;1379:50771;;41790:41;;;;;;;;41704:58;41790:41;;;:::i;41704:58::-;;;;;;;;;;;;;;:::i;:::-;;;;42229:1221;-1:-1:-1;;;;;1379:50771:95;;42328:30;;42324:246;;42653:9;42649:56;;1379:50771;;-1:-1:-1;;;42888:30:95;;;42912:4;42888:30;;;1379:50771;42888:30;;;;1379:50771;;;42888:30;;;;;;;;42356:1;42888:30;;;42229:1221;-1:-1:-1;43030:33:95;1379:50771;43030:46;;-1:-1:-1;;;;;1379:50771:95;;;43030:46;:100;;;;;;1379:50771;;-1:-1:-1;;;43030:100:95;;-1:-1:-1;;;;;1379:50771:95;;42888:30;43030:100;;1379:50771;43095:10;1379:50771;;;;42912:4;1379:50771;;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;-1:-1:-1;;43030:100:95;;;;;;;;;;;42229:1221;-1:-1:-1;1379:50771:95;;43253:30;;;42912:4;42888:30;43253;;1379:50771;;;;;;;;43253:30;;;;;;;:46;:30;42356:1;43253:30;;;42229:1221;43253:46;;;:::i;:::-;43313:25;;;43309:135;;42229:1221;;;:::o;43309:135::-;1379:50771;;-1:-1:-1;;;43361:72:95;;-1:-1:-1;;;;;1379:50771:95;;;;42888:30;43361:72;;1379:50771;;;;;;;;;;;;;;;;;3610:56:24;43253:30:95;;;;;;-1:-1:-1;43253:30:95;;;;;;:::i;:::-;;;;;43030:100;;;;;;:::i;:::-;;;;42888:30;;;;;;;;;;;;;;;:::i;:::-;;;;;42649:56;1379:50771;;-1:-1:-1;;;42676:29:95;;;;;42324:246;42472:9;;;;:20;42468:71;;42553:7;:::o;42468:71::-;1379:50771;;-1:-1:-1;;;42501:38:95;;;;;1379:50771;;;;42472:9;1379:50771;;;;;;3610:56:24;1379:50771:95;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;:::i;43667:1000::-;;;;;43882:28;;43878:66;;43984:1;43958:27;;43954:94;;44062:46;;;44058:149;;44289:22;;;43909:1;44326:13;;44321:265;44341:23;;;;;;44600:17;;;;;44614:3;44600:17;;44596:64;;43667:1000;:::o;44596:64::-;1379:50771;;-1:-1:-1;;;44626:34:95;;;;;1379:50771;;;;34903:3;1379:50771;;;;;;3610:56:24;44366:3:95;44389:19;;;;;:33;:19;;;;;;:::i;:::-;;:::i;:33::-;;44385:75;;44478:20;:15;;;;;;:::i;:::-;;:::i;:::-;1379:50771;;;;44478:20;;44474:58;;44546:29;44366:3;44560:15;44546:29;44560:15;;;;;;:::i;44546:29::-;;;:::i;:::-;44366:3;;:::i;:::-;44326:13;;;;;;44474:58;1379:50771;;-1:-1:-1;;;44507:25:95;;;;;1379:50771;;;;;3610:56:24;44385:75:95;1379:50771;;-1:-1:-1;;;44431:29:95;;;;;1379:50771;;;;;3610:56:24;44058:149:95;-1:-1:-1;1379:50771:95;;-1:-1:-1;;;44131:65:95;;;;;1379:50771;;;;;;;;;;;;3610:56:24;43954:94:95;1379:50771;;-1:-1:-1;;;43994:54:95;;;;;1379:50771;;;43984:1;1379:50771;;;;;;3610:56:24;43878:66:95;1379:50771;;-1:-1:-1;;;43919:25:95;;;;;45023:1293;;;;;1379:50771;;;;45287:46;;;;45283:149;;1379:50771;;45550:38;1379:50771;;45550:38;:::i;:::-;45598:33;;45647:13;-1:-1:-1;45691:3:95;1379:50771;;45662:27;;;;;;45719;;;;:::i;:::-;45714:32;;1379:50771;;45879:28;;;;45691:3;45879:28;;;:::i;:::-;1379:50771;45691:3;:::i;:::-;45647:13;;45710:439;46065:15;;46054:33;46055:25;;46065:15;;45691:3;46065:15;46105:29;46065:15;;:::i;:::-;1379:50771;;;;;46055:25;;;:::i;46054:33::-;46041:46;;;;:::i;:::-;1379:50771;46124:10;;;;:::i;:::-;1379:50771;46105:29;;:::i;:::-;45710:439;45691:3;:::i;45662:27::-;;;;;46301:7;45662:27;;;46301:7;:::i;45283:149::-;1379:50771;;-1:-1:-1;;;45356:65:95;;;;;1379:50771;;;;;;;;;;;;;3610:56:24;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;46732:1541::-;;;;;1379:50771;;;;47023:37;;;;47019:132;;47255:23;;-1:-1:-1;47293:13:95;;47329:3;1379:50771;;47308:19;;;;;47348:26;47329:3;47363:11;;;;;:::i;47329:3::-;47293:13;;;47308:19;;;;;;;47398:22;;;47394:76;;-1:-1:-1;;;;;;1379:50771:95;;;;47485:30;;47481:521;;48066:13;-1:-1:-1;48105:3:95;1379:50771;;48081:22;;;;;48228:14;48209:47;48228:14;;48105:3;48228:14;;;:::i;:::-;48244:11;;;;;:::i;:::-;1379:50771;;;48209:47;;:::i;:::-;48105:3;:::i;:::-;48066:13;;48081:22;;;;;;;46732:1541::o;47481:521::-;-1:-1:-1;1379:50771:95;;;;;;;47724:84;;47655:30;1379:50771;47663:21;1379:50771;;;;;;;;;47655:30;1379:50771;;;47724:84;;;;;;971:66:24;;;;47724:84:95;;;;;;:::i;:::-;;1379:50771;;47724:84;;;;;;:::i;:::-;47655:167;;;;;;:::i;:::-;47936:8;;47932:39;;47985:7;:::o;47932:39::-;1379:50771;;-1:-1:-1;;;47953:18:95;;1379:50771;;;47953:18;;47663:21;47953:18;;;:::i;47394:76::-;1379:50771;;-1:-1:-1;;;47429:41:95;;;;;1379:50771;;;;;;;;;;;;3610:56:24;47019:132:95;1379:50771;;-1:-1:-1;;;47083:57:95;;;;;1379:50771;;;;;;;;;;;;;3610:56:24;941:175:60;5535:69:65;941:175:60;-1:-1:-1;1379:50771:95;;;1050:58:60;;;;;;;;;971:66:24;;;;1050:58:60;;;;;;:::i;:::-;;1379:50771:95;;1050:58:60;;;;;;:::i;:::-;1379:50771:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;5487:31:65;;;;;;;;:::i;5535:69::-;1379:50771:95;;5705:22:60;;;;:56;;;;;941:175;1379:50771:95;;;;;;941:175:60;:::o;1379:50771:95:-;;;;;3610:56:24;;;;1379:50771:95;;;;;;;1050:58:60;1379:50771:95;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;5705:56:60;5731:30;;-1:-1:-1;5731:30:60;;;;;;;:::i;:::-;5705:56;;;;;48454:281:95;-1:-1:-1;;;;;1379:50771:95;48658:22;48654:74;;48454:281::o;48654:74::-;1379:50771;;-1:-1:-1;;;48689:39:95;;-1:-1:-1;;;48689:39:95;;;1379:50771;;;48689:39;48454:281;-1:-1:-1;;;;;1379:50771:95;48658:22;48654:74;;48454:281::o;48654:74::-;1379:50771;;-1:-1:-1;;;48689:39:95;;-1:-1:-1;;;48689:39:95;;;1379:50771;;;48689:39;48454:281;-1:-1:-1;;;;;1379:50771:95;48658:22;48654:74;;48454:281::o;48654:74::-;1379:50771;;-1:-1:-1;;;48689:39:95;;-1:-1:-1;;;48689:39:95;;;1379:50771;;;48689:39;48454:281;-1:-1:-1;;;;;1379:50771:95;48658:22;48654:74;;48454:281::o;48654:74::-;1379:50771;;-1:-1:-1;;;48689:39:95;;-1:-1:-1;;;48689:39:95;;;1379:50771;;;48689:39;48454:281;-1:-1:-1;;;;;1379:50771:95;48658:22;48654:74;;48454:281::o;48654:74::-;1379:50771;;-1:-1:-1;;;48689:39:95;;-1:-1:-1;;;48689:39:95;;;1379:50771;;;48689:39;48454:281;-1:-1:-1;;;;;1379:50771:95;48658:22;48654:74;;48454:281::o;48654:74::-;1379:50771;;-1:-1:-1;;;48689:39:95;;-1:-1:-1;;;48689:39:95;;;1379:50771;;;48689:39;48454:281;-1:-1:-1;;;;;1379:50771:95;48658:22;48654:74;;48454:281::o;48654:74::-;1379:50771;;-1:-1:-1;;;48689:39:95;;-1:-1:-1;;;48689:39:95;;;1379:50771;;;48689:39;48454:281;-1:-1:-1;;;;;1379:50771:95;48658:22;48654:74;;48454:281::o;48654:74::-;1379:50771;;-1:-1:-1;;;48689:39:95;;-1:-1:-1;;;48689:39:95;;;1379:50771;;;48689:39;48866:270;-1:-1:-1;;;;;1379:50771:95;49061:30;49057:72;;48866:270::o;49057:72::-;1379:50771;;-1:-1:-1;;;49100:29:95;;;;;49428:763;-1:-1:-1;;;;;1379:50771:95;-1:-1:-1;1379:50771:95;;;49741:19;1379:50771;;;;;;;;;;;;;;;49428:763;;;1379:50771;;;:::i;:::-;;;;49803:34;:85;;;;49428:763;49799:122;;50038:82;1379:50771;50039:81;1379:50771;;;;50062:26;;;;;;;;1379:50771;;;;;;;;;;;;;50062:26;1379:50771;50052:37;;1379:50771;;50039:81;;:::i;50038:82::-;50034:151;;49428:763;:::o;50034:151::-;1379:50771;;-1:-1:-1;;;50143:31:95;;-1:-1:-1;;;;;1379:50771:95;;;;50143:31;;;1379:50771;;;3610:56:24;49803:85:95;49860:28;1379:50771;49860:28;;1379:50771;49841:15;:47;;49803:85;;50437:499;;;;50678:13;50690:1;50678:13;50673:219;50693:17;;;;;;50909:20;;;;;50437:499;:::o;50712:3::-;50871:9;;;;50712:3;50871:9;;;;;;:::i;:::-;1379:50771;51209:6;;;;;1379:50771;;;51228:22;;;1379:50771;;;;;;;;;;51228:22;1379:50771;;;;51228:22;1379:50771;51228:22;1379:50771;51218:33;;50712:3;;:::i;:::-;50678:13;;;;;51209:78;1379:50771;;;51264:22;;;1379:50771;;;;;;;;;;51264:22;;1379:50771;;;;51264:22;1379:50771;51264:22;1379:50771;51254:33;;51209:78;;51599:549;51881:34;1379:50771;;;51881:34;;;;;;;;;;;;;;;:::i;:::-;51853:63;;;;;;;;:::i;:::-;52012:8;;1379:50771;;52012:28;;51599:549;52008:77;;1379:50771;;51881:34;1379:50771;52102:27;1379:50771;;52102:27;;;;;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;;;;52102:39;;51599:549::o;52008:77::-;1379:50771;;-1:-1:-1;;;52049:36:95;;-1:-1:-1;;;;;1379:50771:95;;;51881:34;52049:36;;1379:50771;51881:34;;52049:36;52012:28;1379:50771;51881:34;1379:50771;;52024:16;52012:28;","linkReferences":{"src/v2/utils/MarketConfigV2.sol":{"MarketConfigV2":[{"start":693,"length":20},{"start":855,"length":20},{"start":1114,"length":20},{"start":1252,"length":20},{"start":6833,"length":20},{"start":8729,"length":20},{"start":9812,"length":20},{"start":9950,"length":20},{"start":10088,"length":20},{"start":10226,"length":20},{"start":13014,"length":20}]}},"immutableReferences":{"30657":[{"start":1378,"length":32},{"start":2589,"length":32},{"start":11518,"length":32}]}},"methodIdentifiers":{"buy(address,uint256,address,address,uint256,uint256)":"6afaf006","cancelSalePrice(address,uint256)":"3f83e9e0","getDirectSaleConfig(address,uint256)":"6e2f4d8b","getERC1155ApprovalManager()":"c7c83d17","getMarketConfig()":"614bd944","getSalePrice(address,uint256,address)":"369679a4","getTokenAllowListConfig(address,uint256)":"bf3d90f8","getTokenMintLimit(address,uint256)":"8760251a","getTokenMintsPerAddress(address,uint256,address)":"28fbba03","getTokenTxLimit(address,uint256)":"552f791d","getTokenTxsPerAddress(address,uint256,address)":"5a501f8f","initialize(address,address,address,address,address,address,address,address,address,address,address)":"76902b83","isPaused()":"b187bd26","mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])":"99273b3d","owner()":"8da5cb5b","prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])":"d5f339a8","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","setApprovedTokenRegistry(address)":"e4e87e3b","setContractPaused(bool)":"882796f1","setERC1155ApprovalManager(address)":"ff5c83a4","setERC20ApprovalManager(address)":"d7a9fb7c","setERC721ApprovalManager(address)":"d80b23e3","setMarketplaceSettings(address)":"176ab440","setNetworkBeneficiary(address)":"3492e5a8","setPayments(address)":"af231a58","setRoyaltyEngine(address)":"21ede032","setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])":"5faec406","setSpaceOperatorRegistry(address)":"7f358230","setStakingRegistry(address)":"2c740844","setStakingSettings(address)":"f1035744","setTokenAllowListConfig(bytes32,uint256,address,uint256)":"b64843b2","setTokenMintLimit(address,uint256,uint256)":"b8aefc63","setTokenTxLimit(address,uint256,uint256)":"7b2db4bb","transferOwnership(address)":"f2fde38b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"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\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"buy\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"cancelSalePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDirectSaleConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155Marketplace.DirectSaleConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC1155ApprovalManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"contract IPayments\",\"name\":\"payments\",\"type\":\"address\"},{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IStakingSettings\",\"name\":\"stakingSettings\",\"type\":\"address\"},{\"internalType\":\"contract IRareStakingRegistry\",\"name\":\"stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IERC20ApprovalManager\",\"name\":\"erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC721ApprovalManager\",\"name\":\"erc721ApprovalManager\",\"type\":\"address\"}],\"internalType\":\"struct MarketConfigV2.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"getSalePrice\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155Marketplace.SalePrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenAllowListConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Marketplace.AllowListConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenMintLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getTokenMintsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenTxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getTokenTxsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"_proof\",\"type\":\"bytes32[]\"}],\"name\":\"mintDirectSale\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"prepareMintDirectSale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"}],\"name\":\"setApprovedTokenRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isPaused\",\"type\":\"bool\"}],\"name\":\"setContractPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC1155ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC20ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC721ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"}],\"name\":\"setMarketplaceSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"}],\"name\":\"setNetworkBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"}],\"name\":\"setPayments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"}],\"name\":\"setRoyaltyEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"setSalePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"}],\"name\":\"setSpaceOperatorRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"}],\"name\":\"setStakingRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"}],\"name\":\"setStakingSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"setTokenAllowListConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"setTokenMintLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"setTokenTxLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"UUPS-upgradeable marketplace that keeps ERC1155 sale semantics separate from ERC721 marketplace logic.\",\"errors\":{\"AddressNotAllowlisted(address)\":[{\"params\":{\"_account\":\"Buyer account that failed allowlist verification.\"}}],\"ContractHasNoOwner(address)\":[{\"params\":{\"_contractAddress\":\"Contract that did not expose a valid `owner()`.\"}}],\"CurrencyMismatch(address,address)\":[{\"params\":{\"_configuredCurrency\":\"Currency stored in marketplace configuration.\",\"_suppliedCurrency\":\"Currency supplied by the caller.\"}}],\"CurrencyNotApproved(address)\":[{\"params\":{\"_currencyAddress\":\"Currency that failed approval.\"}}],\"DirectSaleNotConfigured(address,uint256)\":[{\"params\":{\"_contractAddress\":\"Collection address.\",\"_tokenId\":\"Token id missing a primary sale config.\"}}],\"ERC20FeeOnTransferUnsupported(address,uint256,uint256)\":[{\"params\":{\"_currencyAddress\":\"ERC20 token address.\",\"_expectedAmount\":\"Amount expected by the marketplace.\",\"_receivedAmount\":\"Amount actually received by the marketplace.\"}}],\"IncorrectETHAmount(uint256,uint256)\":[{\"params\":{\"_requiredAmount\":\"Amount required by the marketplace.\",\"_suppliedAmount\":\"Amount supplied as `msg.value`.\"}}],\"InsufficientTokenBalance(address,address,uint256,uint256,uint256)\":[{\"params\":{\"_account\":\"Account whose balance was checked.\",\"_availableQuantity\":\"Quantity available at check time.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_requestedQuantity\":\"Quantity required by the operation.\",\"_tokenId\":\"Token id whose balance was checked.\"}}],\"InvalidERC1155Contract(address)\":[{\"params\":{\"_contractAddress\":\"Collection address that failed validation.\"}}],\"InvalidERC1155Transfer(address,uint256,address,address,uint256)\":[{\"params\":{\"_buyer\":\"Buyer whose balance should increase.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_quantity\":\"Quantity that should be transferred.\",\"_seller\":\"Seller whose balance should decrease.\",\"_tokenId\":\"Token id transferred.\"}}],\"MarketConfigAddressCannotBeZero(bytes32)\":[{\"params\":{\"_field\":\"Name of the dependency field that was zero.\"}}],\"MarketplaceNotApproved(address,address)\":[{\"params\":{\"_account\":\"ERC1155 owner that must approve the marketplace.\",\"_contractAddress\":\"ERC1155 collection address.\"}}],\"MaxMintExceeded(uint256,uint256)\":[{\"params\":{\"_maxMints\":\"Configured max quantity per transaction.\",\"_requestedQuantity\":\"Requested mint quantity.\"}}],\"MintLimitExceeded(address,uint256,address,uint256,uint256,uint256)\":[{\"params\":{\"_account\":\"Buyer account.\",\"_contractAddress\":\"Collection address.\",\"_limit\":\"Configured mint limit.\",\"_mintedQuantity\":\"Quantity already minted by the account.\",\"_requestedQuantity\":\"Requested mint quantity.\",\"_tokenId\":\"Token id being minted.\"}}],\"NotContractOwner(address,address)\":[{\"params\":{\"_account\":\"Account that failed the owner check.\",\"_contractAddress\":\"Collection address whose owner was checked.\"}}],\"PayoutFailed(bytes)\":[{\"params\":{\"_revertData\":\"Raw revert data returned by the failed payout call.\"}}],\"PayoutLengthMismatch(uint256,uint256)\":[{\"params\":{\"_amountsLength\":\"Number of payout amounts supplied.\",\"_recipientsLength\":\"Number of payout recipients supplied.\"}}],\"PayoutTotalMismatch(uint256,uint256)\":[{\"params\":{\"_actualAmount\":\"Sum of supplied payout amounts.\",\"_expectedAmount\":\"Amount expected to be paid by the batch.\"}}],\"PlatformCommissionExceeded(uint256,uint256)\":[{\"params\":{\"_maxPlatformCommission\":\"Maximum supported platform commission percentage.\",\"_platformCommission\":\"Supplied primary platform commission percentage.\"}}],\"PriceMismatch(uint256,uint256)\":[{\"params\":{\"_configuredPrice\":\"Price stored in marketplace configuration.\",\"_suppliedPrice\":\"Price supplied by the caller.\"}}],\"QuantityExceedsSalePriceQuantity(uint256,uint256)\":[{\"params\":{\"_availableQuantity\":\"Quantity currently listed.\",\"_requestedQuantity\":\"Quantity requested by the buyer.\"}}],\"RoyaltiesExceedSaleAmount(uint256,uint256)\":[{\"params\":{\"_royalties\":\"Total royalties returned by the royalty engine.\",\"_saleAmount\":\"Gross sale amount before royalty deduction.\"}}],\"SaleNotStarted(uint256)\":[{\"params\":{\"_startTime\":\"Configured sale start timestamp.\"}}],\"SalePriceDoesNotExist(address,uint256,address)\":[{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_seller\":\"Seller whose listing was requested.\",\"_tokenId\":\"Token id requested.\"}}],\"SelfPurchaseUnsupported(address)\":[{\"params\":{\"_seller\":\"Seller whose listing was targeted.\"}}],\"SplitLengthMismatch(uint256,uint256)\":[{\"params\":{\"_ratiosLength\":\"Supplied ratio count.\",\"_recipientsLength\":\"Supplied recipient count.\"}}],\"SplitRatioCannotBeZero(uint256)\":[{\"params\":{\"_index\":\"Index of the invalid split ratio.\"}}],\"SplitRecipientCannotBeZero(uint256)\":[{\"params\":{\"_index\":\"Index of the invalid split recipient.\"}}],\"SplitRecipientsExceededMax(uint256,uint256)\":[{\"params\":{\"_maxRecipients\":\"Maximum supported recipient count.\",\"_recipientsLength\":\"Supplied recipient count.\"}}],\"SplitTotalInvalid(uint256,uint256)\":[{\"params\":{\"_requiredTotal\":\"Required ratio total.\",\"_totalRatio\":\"Supplied ratio total.\"}}],\"StakingFeeExceedsMarketplaceFee(uint256,uint256)\":[{\"params\":{\"_marketplaceFee\":\"Total marketplace fee collected from the buyer.\",\"_stakingFee\":\"Staking portion requested by staking settings.\"}}],\"TokenNotFound(address,uint256)\":[{\"params\":{\"_contractAddress\":\"Collection address.\",\"_tokenId\":\"Missing token id.\"}}],\"TransactionLimitExceeded(address,uint256,address,uint256,uint256)\":[{\"params\":{\"_account\":\"Buyer account.\",\"_contractAddress\":\"Collection address.\",\"_limit\":\"Configured transaction limit.\",\"_tokenId\":\"Token id being minted.\",\"_usedTransactions\":\"Transactions already used by the account.\"}}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MintDirectSale(address,uint256,address,address,uint256,address,uint256)\":{\"params\":{\"buyer\":\"Address that paid for and received the mint.\",\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Sale currency. Zero address indicates ETH.\",\"price\":\"Unit price paid.\",\"quantity\":\"Quantity minted.\",\"seller\":\"Creator/seller that received proceeds.\",\"tokenId\":\"Minted token id.\"}},\"PrepareMintDirectSale(address,uint256,address,address,uint256,uint256,uint256,address[],uint8[])\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Sale currency. Zero address indicates ETH.\",\"maxMints\":\"Max quantity per transaction. Zero means unlimited.\",\"price\":\"Unit price per token.\",\"seller\":\"Creator/seller that receives sale proceeds.\",\"splitRatios\":\"Percentages for `splitRecipients`.\",\"splitRecipients\":\"Recipients that split seller proceeds.\",\"startTime\":\"Timestamp when minting may begin.\",\"tokenId\":\"Token id sold by the primary sale.\"}},\"SalePriceCancelled(address,address,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"seller\":\"Seller that cancelled the listing.\",\"tokenId\":\"Token id whose listing was cancelled.\"}},\"SalePriceSet(address,address,uint256,address,uint256,uint256,address[],uint8[])\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Listing currency. Zero address indicates ETH.\",\"price\":\"Unit price per token.\",\"quantity\":\"Quantity listed.\",\"seller\":\"Seller that owns the listed ERC1155 balance.\",\"splitRatios\":\"Percentages for `splitRecipients`.\",\"splitRecipients\":\"Recipients that split seller proceeds.\",\"tokenId\":\"Listed token id.\"}},\"SetTokenAllowListConfig(address,uint256,bytes32,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"endTimestamp\":\"Timestamp when allowlist enforcement expires.\",\"root\":\"Merkle root for allowlisted buyers.\",\"tokenId\":\"Token id controlled by the allowlist.\"}},\"Sold(address,address,address,uint256,address,uint256,uint256)\":{\"params\":{\"buyer\":\"Buyer that paid and received the ERC1155 tokens.\",\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Purchase currency. Zero address indicates ETH.\",\"price\":\"Unit price paid.\",\"quantity\":\"Quantity purchased.\",\"seller\":\"Seller that transferred the ERC1155 tokens.\",\"tokenId\":\"Purchased token id.\"}},\"TokenMintLimitSet(address,uint256,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"limit\":\"Max quantity each address may mint while the limit is enabled. Zero disables the limit.\",\"tokenId\":\"Token id controlled by the limit.\"}},\"TokenTxLimitSet(address,uint256,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"limit\":\"Max mint transactions each address may submit while the limit is enabled. Zero disables the limit.\",\"tokenId\":\"Token id controlled by the limit.\"}},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"buy(address,uint256,address,address,uint256,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Currency expected by the buyer.\",\"_price\":\"Unit price expected by the buyer.\",\"_quantity\":\"Quantity to buy.\",\"_seller\":\"Seller whose listing is being filled.\",\"_tokenId\":\"Token id to buy.\"}},\"cancelSalePrice(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Listed token id.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getDirectSaleConfig(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Primary sale config for the token id.\"}},\"getERC1155ApprovalManager()\":{\"returns\":{\"_0\":\"Current ERC1155 approval manager address.\"}},\"getMarketConfig()\":{\"returns\":{\"_0\":\"Current market config struct.\"}},\"getSalePrice(address,uint256,address)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_seller\":\"Seller whose listing is returned.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Secondary fixed-price listing for the seller and token id.\"}},\"getTokenAllowListConfig(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Allowlist config for the token id.\"}},\"getTokenMintLimit(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Mint quantity limit. Zero means unlimited.\"}},\"getTokenMintsPerAddress(address,uint256,address)\":{\"params\":{\"_address\":\"Address whose minted quantity is returned.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Quantity minted by `_address`.\"}},\"getTokenTxLimit(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Transaction limit. Zero means unlimited.\"}},\"getTokenTxsPerAddress(address,uint256,address)\":{\"params\":{\"_address\":\"Address whose transaction count is returned.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Number of mint transactions used by `_address`.\"}},\"initialize(address,address,address,address,address,address,address,address,address,address,address)\":{\"details\":\"Stores the market config dependency bundle and initializes inherited upgradeability modules.\",\"params\":{\"_approvedTokenRegistry\":\"Registry of approved ERC20 currencies.\",\"_erc1155ApprovalManager\":\"ERC1155 transfer manager for seller token approvals.\",\"_erc20ApprovalManager\":\"ERC20 transfer manager for buyer currency approvals.\",\"_erc721ApprovalManager\":\"ERC721 transfer manager kept in shared V2 market config.\",\"_marketplaceSettings\":\"Marketplace settings contract.\",\"_networkBeneficiary\":\"Address receiving network marketplace fees.\",\"_payments\":\"Payments contract used for ETH fan-out.\",\"_royaltyEngine\":\"Royalty engine contract.\",\"_spaceOperatorRegistry\":\"Space operator registry contract.\",\"_stakingRegistry\":\"Staking registry contract.\",\"_stakingSettings\":\"Staking fee settings contract.\"}},\"isPaused()\":{\"returns\":{\"_0\":\"True when paused.\"}},\"mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Currency expected by the buyer.\",\"_price\":\"Unit price expected by the buyer.\",\"_proof\":\"Merkle proof for active allowlist sales.\",\"_quantity\":\"Quantity to mint.\",\"_tokenId\":\"Token id to mint.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Sale currency. Zero address indicates ETH.\",\"_maxMints\":\"Max quantity per mint transaction. Zero means unlimited.\",\"_price\":\"Unit price per token.\",\"_splitRatios\":\"Percentages for `splitRecipients`, totaling 100.\",\"_splitRecipients\":\"Recipients that split seller proceeds.\",\"_startTime\":\"Timestamp when minting may begin.\",\"_tokenId\":\"Token id to sell through primary minting.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setApprovedTokenRegistry(address)\":{\"params\":{\"_approvedTokenRegistry\":\"New approved token registry contract.\"}},\"setContractPaused(bool)\":{\"params\":{\"_isPaused\":\"New pause state.\"}},\"setERC1155ApprovalManager(address)\":{\"params\":{\"_erc1155ApprovalManager\":\"New ERC1155 approval manager contract.\"}},\"setERC20ApprovalManager(address)\":{\"params\":{\"_erc20ApprovalManager\":\"New ERC20 approval manager contract.\"}},\"setERC721ApprovalManager(address)\":{\"params\":{\"_erc721ApprovalManager\":\"New ERC721 approval manager contract.\"}},\"setMarketplaceSettings(address)\":{\"params\":{\"_marketplaceSettings\":\"New marketplace settings contract.\"}},\"setNetworkBeneficiary(address)\":{\"params\":{\"_networkBeneficiary\":\"New network beneficiary.\"}},\"setPayments(address)\":{\"params\":{\"_payments\":\"New payments contract.\"}},\"setRoyaltyEngine(address)\":{\"params\":{\"_royaltyEngine\":\"New royalty engine contract.\"}},\"setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Listings intentionally have no expiry timestamp and can be cancelled by the seller with `cancelSalePrice`.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Listing currency. Zero address indicates ETH.\",\"_price\":\"Unit price per token.\",\"_quantity\":\"Quantity listed.\",\"_splitRatios\":\"Percentages for `splitRecipients`, totaling 100.\",\"_splitRecipients\":\"Recipients that split seller proceeds.\",\"_tokenId\":\"Token id to list.\"}},\"setSpaceOperatorRegistry(address)\":{\"params\":{\"_spaceOperatorRegistry\":\"New space operator registry contract.\"}},\"setStakingRegistry(address)\":{\"params\":{\"_stakingRegistry\":\"New staking registry contract.\"}},\"setStakingSettings(address)\":{\"params\":{\"_stakingSettings\":\"New staking settings contract.\"}},\"setTokenAllowListConfig(bytes32,uint256,address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_endTimestamp\":\"Timestamp when allowlist enforcement expires.\",\"_root\":\"Merkle root for allowlisted minters. Zero root disables allowlist enforcement.\",\"_tokenId\":\"Token id controlled by the allowlist.\"}},\"setTokenMintLimit(address,uint256,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_limit\":\"Max mint quantity per address. Zero disables the limit and disabled periods are not counted.\",\"_tokenId\":\"Token id controlled by the limit.\"}},\"setTokenTxLimit(address,uint256,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_limit\":\"Max transactions per address. Zero disables the limit and disabled periods are not counted.\",\"_tokenId\":\"Token id controlled by the limit.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"salePrices\":{\"details\":\"Listings intentionally do not carry expiry timestamps or seller-wide nonces. Sellers cancel standing offers explicitly, and buys revalidate balance, approval, currency, price, and quantity.\"}},\"title\":\"RareERC1155Marketplace\",\"version\":1},\"userdoc\":{\"errors\":{\"AddressNotAllowlisted(address)\":[{\"notice\":\"Reverted when a buyer is not included in an active allowlist.\"}],\"ApprovalManagerCannotBeZero()\":[{\"notice\":\"Reverted when an approval manager address is zero.\"}],\"ContractHasNoOwner(address)\":[{\"notice\":\"Reverted when ownership cannot be read from a collection.\"}],\"ContractPaused()\":[{\"notice\":\"Reverted when a write function is called while the marketplace is paused.\"}],\"CurrencyMismatch(address,address)\":[{\"notice\":\"Reverted when a caller-supplied currency does not match the configured currency.\"}],\"CurrencyNotApproved(address)\":[{\"notice\":\"Reverted when a currency is neither ETH nor approved by the token registry.\"}],\"DirectSaleNotConfigured(address,uint256)\":[{\"notice\":\"Reverted when a primary mint is attempted before sale configuration exists.\"}],\"ERC20FeeOnTransferUnsupported(address,uint256,uint256)\":[{\"notice\":\"Reverted when an ERC20 transfer receives less or more than expected.\"}],\"IncorrectETHAmount(uint256,uint256)\":[{\"notice\":\"Reverted when an ETH purchase sends the wrong `msg.value`.\"}],\"InsufficientTokenBalance(address,address,uint256,uint256,uint256)\":[{\"notice\":\"Reverted when a seller does not have enough ERC1155 balance for a listing or purchase.\"}],\"InvalidERC1155Contract(address)\":[{\"notice\":\"Reverted when a secondary collection is not a deployed ERC1155 contract.\"}],\"InvalidERC1155Transfer(address,uint256,address,address,uint256)\":[{\"notice\":\"Reverted when an ERC1155 transfer completes without exact seller and buyer balance deltas.\"}],\"MarketConfigAddressCannotBeZero(bytes32)\":[{\"notice\":\"Reverted when a required market config dependency address is zero.\"}],\"MarketplaceNotApproved(address,address)\":[{\"notice\":\"Reverted when the marketplace is not approved to transfer a seller's ERC1155 tokens.\"}],\"MaxMintExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a mint quantity exceeds the sale's per-transaction max.\"}],\"MintLimitExceeded(address,uint256,address,uint256,uint256,uint256)\":[{\"notice\":\"Reverted when a mint would exceed a buyer's per-address mint limit for a token id.\"}],\"MsgValueMustBeZero()\":[{\"notice\":\"Reverted when a free mint includes ETH.\"}],\"MsgValueUnsupportedForERC20()\":[{\"notice\":\"Reverted when ETH is supplied for an ERC20 purchase.\"}],\"NotContractOwner(address,address)\":[{\"notice\":\"Reverted when a caller is not the owner of a collection.\"}],\"PayoutFailed(bytes)\":[{\"notice\":\"Reverted when ETH payout through the Payments contract fails.\"}],\"PayoutLengthMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when payout recipients and amounts have different lengths.\"}],\"PayoutTotalMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when payout amounts do not sum to the expected batch amount.\"}],\"PlatformCommissionExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when primary platform commission exceeds 100%.\"}],\"PriceMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when a caller-supplied price does not match the configured price.\"}],\"QuantityCannotBeZero()\":[{\"notice\":\"Reverted when a quantity argument is zero.\"}],\"QuantityExceedsSalePriceQuantity(uint256,uint256)\":[{\"notice\":\"Reverted when a purchase quantity exceeds listed quantity.\"}],\"RoyaltiesExceedSaleAmount(uint256,uint256)\":[{\"notice\":\"Reverted when royalties returned by the royalty engine exceed sale proceeds.\"}],\"SaleNotStarted(uint256)\":[{\"notice\":\"Reverted when a primary mint is attempted before the start time.\"}],\"SalePriceCannotBeZero()\":[{\"notice\":\"Reverted when a secondary listing price is zero.\"}],\"SalePriceDoesNotExist(address,uint256,address)\":[{\"notice\":\"Reverted when no secondary listing exists for a seller and token id.\"}],\"SelfPurchaseUnsupported(address)\":[{\"notice\":\"Reverted when a buyer tries to fill their own secondary listing.\"}],\"SplitLengthMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when split recipient and ratio arrays have different lengths.\"}],\"SplitRatioCannotBeZero(uint256)\":[{\"notice\":\"Reverted when a split ratio is zero.\"}],\"SplitRecipientCannotBeZero(uint256)\":[{\"notice\":\"Reverted when a split recipient is the zero address.\"}],\"SplitRecipientsExceededMax(uint256,uint256)\":[{\"notice\":\"Reverted when a sale config has more split recipients than supported.\"}],\"SplitRecipientsRequired()\":[{\"notice\":\"Reverted when a sale config has no split recipients.\"}],\"SplitTotalInvalid(uint256,uint256)\":[{\"notice\":\"Reverted when split ratios do not total 100.\"}],\"StakingFeeExceedsMarketplaceFee(uint256,uint256)\":[{\"notice\":\"Reverted when the staking fee exceeds the buyer-paid marketplace fee.\"}],\"TokenNotFound(address,uint256)\":[{\"notice\":\"Reverted when a token id has not been created on a collection.\"}],\"TransactionLimitExceeded(address,uint256,address,uint256,uint256)\":[{\"notice\":\"Reverted when a mint would exceed a buyer's per-address transaction limit for a token id.\"}]},\"events\":{\"MintDirectSale(address,uint256,address,address,uint256,address,uint256)\":{\"notice\":\"Emitted when a buyer mints through a primary sale.\"},\"PrepareMintDirectSale(address,uint256,address,address,uint256,uint256,uint256,address[],uint8[])\":{\"notice\":\"Emitted when a creator configures a primary mint sale.\"},\"SalePriceCancelled(address,address,uint256)\":{\"notice\":\"Emitted when a seller cancels a secondary listing.\"},\"SalePriceSet(address,address,uint256,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Emitted when a seller creates or replaces a secondary fixed-price listing.\"},\"SetTokenAllowListConfig(address,uint256,bytes32,uint256)\":{\"notice\":\"Emitted when a token allowlist config is set.\"},\"Sold(address,address,address,uint256,address,uint256,uint256)\":{\"notice\":\"Emitted when a buyer fills a secondary fixed-price listing.\"},\"TokenMintLimitSet(address,uint256,uint256)\":{\"notice\":\"Emitted when a per-address mint limit is set for a token id.\"},\"TokenTxLimitSet(address,uint256,uint256)\":{\"notice\":\"Emitted when a per-address transaction limit is set for a token id.\"}},\"kind\":\"user\",\"methods\":{\"buy(address,uint256,address,address,uint256,uint256)\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listing.\"},\"cancelSalePrice(address,uint256)\":{\"notice\":\"Cancels the caller's secondary listing for a token id.\"},\"getDirectSaleConfig(address,uint256)\":{\"notice\":\"Returns the primary mint sale config for a token id.\"},\"getERC1155ApprovalManager()\":{\"notice\":\"Returns the ERC1155 approval manager used for secondary transfers.\"},\"getMarketConfig()\":{\"notice\":\"Returns the marketplace dependency configuration.\"},\"getSalePrice(address,uint256,address)\":{\"notice\":\"Returns a seller's secondary fixed-price listing.\"},\"getTokenAllowListConfig(address,uint256)\":{\"notice\":\"Returns the allowlist config for a token id.\"},\"getTokenMintLimit(address,uint256)\":{\"notice\":\"Returns the per-address mint quantity limit for a token id.\"},\"getTokenMintsPerAddress(address,uint256,address)\":{\"notice\":\"Returns quantity minted by an address for a token id.\"},\"getTokenTxLimit(address,uint256)\":{\"notice\":\"Returns the per-address transaction limit for a token id.\"},\"getTokenTxsPerAddress(address,uint256,address)\":{\"notice\":\"Returns mint transactions used by an address for a token id.\"},\"initialize(address,address,address,address,address,address,address,address,address,address,address)\":{\"notice\":\"Initializes the UUPS marketplace implementation behind a proxy.\"},\"isPaused()\":{\"notice\":\"Returns whether marketplace writes are paused.\"},\"mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])\":{\"notice\":\"Mints tokens from a configured primary sale.\"},\"prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])\":{\"notice\":\"Configures or replaces a primary mint sale for a token id.\"},\"setApprovedTokenRegistry(address)\":{\"notice\":\"Updates the approved token registry address.\"},\"setContractPaused(bool)\":{\"notice\":\"Pauses or unpauses marketplace write operations.\"},\"setERC1155ApprovalManager(address)\":{\"notice\":\"Updates the ERC1155 approval manager address.\"},\"setERC20ApprovalManager(address)\":{\"notice\":\"Updates the ERC20 approval manager address.\"},\"setERC721ApprovalManager(address)\":{\"notice\":\"Updates the ERC721 approval manager address retained by the shared V2 market config.\"},\"setMarketplaceSettings(address)\":{\"notice\":\"Updates the marketplace settings contract address.\"},\"setNetworkBeneficiary(address)\":{\"notice\":\"Updates the network beneficiary address.\"},\"setPayments(address)\":{\"notice\":\"Updates the Payments contract address used for ETH fan-out.\"},\"setRoyaltyEngine(address)\":{\"notice\":\"Updates the royalty engine address.\"},\"setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Creates or replaces a secondary fixed-price listing.\"},\"setSpaceOperatorRegistry(address)\":{\"notice\":\"Updates the space operator registry address.\"},\"setStakingRegistry(address)\":{\"notice\":\"Updates the staking registry address.\"},\"setStakingSettings(address)\":{\"notice\":\"Updates the staking settings address.\"},\"setTokenAllowListConfig(bytes32,uint256,address,uint256)\":{\"notice\":\"Sets a token id allowlist configuration.\"},\"setTokenMintLimit(address,uint256,uint256)\":{\"notice\":\"Sets the max quantity each address may mint for a token id while the limit is enabled.\"},\"setTokenTxLimit(address,uint256,uint256)\":{\"notice\":\"Sets the max number of mint transactions each address may submit for a token id while the limit is enabled.\"}},\"notice\":\"Primary mint sales for RARE Protocol ERC1155 tokens and fixed-price resale listings for ERC1155 tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155Marketplace.sol\":\"RareERC1155Marketplace\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol\":{\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0\",\"dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x584ebdf9c1118a7c773f98788e3f3ede01982bdf8932aa06f5acc7d54876e161\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9826c7edf276ff48b99ee217358393097c30448a71d345d287c2f6961bb1f159\",\"dweb:/ipfs/QmYXBTY9wDvffGU47yMRFJ1NFyKwpbj94VHzRzhsm6R7Gz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xb607cb94c27e89750f5ae2ccebcb94e654e926f6125f4fd4c6262c89875118ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33e8f8d863c6943ea046fcf4972b4e815c04ab06bad195dba1d93f8ebeb8420d\",\"dweb:/ipfs/QmTQzxQTuuzPDk3eqVmYy7hv2RCXM1yt1NtubXpRbzYjaj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025\",\"dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685\",\"dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155Marketplace.sol\":{\"keccak256\":\"0xdc49e7eb0b48b0eb40aa5776b44b0fcb4f2f38223762b6ca2fbcc814f16ae3cb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86188372ffe2e7ff9025f1e8e0ee62940c9ac7ec787a892b176421eab3f7bae0\",\"dweb:/ipfs/Qmf83TtD6ax7M97dKtMEeQEohs1aKWPMrCWV4aB1NHtunb\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155Marketplace.sol\":{\"keccak256\":\"0x1815e380bf66a8b97d3f5f07893ab9c36b896e9d622602a6111fb36d9d2a70c3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8badd0eb1bc87b61dfd6ecab9ed8b67a87c94a69ba461b9da7bde874deb955be\",\"dweb:/ipfs/QmNefodrs6Zkwy7NzN4Y938S8PJktnWbuLZ97gqGSbzGXK\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x9dc23a2064e31818e89092b5935ab96079a99b29e1aa1456565ee698d3fd23a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5aaa41dbed645e29ec41a7159bee7a10519ebaa71fb86187bd109aba732db40\",\"dweb:/ipfs/Qma3yM1SZuHAxo6HS16uFMX1yVVqikkXX9v6n5op5Tss1V\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"stateMutability":"payable","type":"function","name":"buy"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"cancelSalePrice"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDirectSaleConfig","outputs":[{"internalType":"struct IRareERC1155Marketplace.DirectSaleConfig","name":"","type":"tuple","components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getERC1155ApprovalManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMarketConfig","outputs":[{"internalType":"struct MarketConfigV2.Config","name":"","type":"tuple","components":[{"internalType":"address","name":"networkBeneficiary","type":"address"},{"internalType":"contract IMarketplaceSettings","name":"marketplaceSettings","type":"address"},{"internalType":"contract ISpaceOperatorRegistry","name":"spaceOperatorRegistry","type":"address"},{"internalType":"contract IRoyaltyEngineV1","name":"royaltyEngine","type":"address"},{"internalType":"contract IPayments","name":"payments","type":"address"},{"internalType":"contract IApprovedTokenRegistry","name":"approvedTokenRegistry","type":"address"},{"internalType":"contract IStakingSettings","name":"stakingSettings","type":"address"},{"internalType":"contract IRareStakingRegistry","name":"stakingRegistry","type":"address"},{"internalType":"contract IERC20ApprovalManager","name":"erc20ApprovalManager","type":"address"},{"internalType":"contract IERC721ApprovalManager","name":"erc721ApprovalManager","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"stateMutability":"view","type":"function","name":"getSalePrice","outputs":[{"internalType":"struct IRareERC1155Marketplace.SalePrice","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenAllowListConfig","outputs":[{"internalType":"struct IRareERC1155Marketplace.AllowListConfig","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenTxsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"},{"internalType":"address","name":"_marketplaceSettings","type":"address"},{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"},{"internalType":"address","name":"_royaltyEngine","type":"address"},{"internalType":"address","name":"_payments","type":"address"},{"internalType":"address","name":"_approvedTokenRegistry","type":"address"},{"internalType":"address","name":"_stakingSettings","type":"address"},{"internalType":"address","name":"_stakingRegistry","type":"address"},{"internalType":"address","name":"_erc20ApprovalManager","type":"address"},{"internalType":"address","name":"_erc721ApprovalManager","type":"address"},{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"bytes32[]","name":"_proof","type":"bytes32[]"}],"stateMutability":"payable","type":"function","name":"mintDirectSale"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"prepareMintDirectSale"},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"_approvedTokenRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setApprovedTokenRegistry"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setContractPaused"},{"inputs":[{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC1155ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc20ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC20ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc721ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC721ApprovalManager"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketplaceSettings"},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkBeneficiary"},{"inputs":[{"internalType":"address","name":"_payments","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPayments"},{"inputs":[{"internalType":"address","name":"_royaltyEngine","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyEngine"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"setSalePrice"},{"inputs":[{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSpaceOperatorRegistry"},{"inputs":[{"internalType":"address","name":"_stakingRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingRegistry"},{"inputs":[{"internalType":"address","name":"_stakingSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingSettings"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"},{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setTokenAllowListConfig"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setTokenMintLimit"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setTokenTxLimit"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgradeTo"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"}],"devdoc":{"kind":"dev","methods":{"buy(address,uint256,address,address,uint256,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Currency expected by the buyer.","_price":"Unit price expected by the buyer.","_quantity":"Quantity to buy.","_seller":"Seller whose listing is being filled.","_tokenId":"Token id to buy."}},"cancelSalePrice(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Listed token id."}},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"getDirectSaleConfig(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Primary sale config for the token id."}},"getERC1155ApprovalManager()":{"returns":{"_0":"Current ERC1155 approval manager address."}},"getMarketConfig()":{"returns":{"_0":"Current market config struct."}},"getSalePrice(address,uint256,address)":{"params":{"_contractAddress":"ERC1155 collection address.","_seller":"Seller whose listing is returned.","_tokenId":"Token id to inspect."},"returns":{"_0":"Secondary fixed-price listing for the seller and token id."}},"getTokenAllowListConfig(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Allowlist config for the token id."}},"getTokenMintLimit(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Mint quantity limit. Zero means unlimited."}},"getTokenMintsPerAddress(address,uint256,address)":{"params":{"_address":"Address whose minted quantity is returned.","_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Quantity minted by `_address`."}},"getTokenTxLimit(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Transaction limit. Zero means unlimited."}},"getTokenTxsPerAddress(address,uint256,address)":{"params":{"_address":"Address whose transaction count is returned.","_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Number of mint transactions used by `_address`."}},"initialize(address,address,address,address,address,address,address,address,address,address,address)":{"details":"Stores the market config dependency bundle and initializes inherited upgradeability modules.","params":{"_approvedTokenRegistry":"Registry of approved ERC20 currencies.","_erc1155ApprovalManager":"ERC1155 transfer manager for seller token approvals.","_erc20ApprovalManager":"ERC20 transfer manager for buyer currency approvals.","_erc721ApprovalManager":"ERC721 transfer manager kept in shared V2 market config.","_marketplaceSettings":"Marketplace settings contract.","_networkBeneficiary":"Address receiving network marketplace fees.","_payments":"Payments contract used for ETH fan-out.","_royaltyEngine":"Royalty engine contract.","_spaceOperatorRegistry":"Space operator registry contract.","_stakingRegistry":"Staking registry contract.","_stakingSettings":"Staking fee settings contract."}},"isPaused()":{"returns":{"_0":"True when paused."}},"mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])":{"params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Currency expected by the buyer.","_price":"Unit price expected by the buyer.","_proof":"Merkle proof for active allowlist sales.","_quantity":"Quantity to mint.","_tokenId":"Token id to mint."}},"owner()":{"details":"Returns the address of the current owner."},"prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])":{"params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Sale currency. Zero address indicates ETH.","_maxMints":"Max quantity per mint transaction. Zero means unlimited.","_price":"Unit price per token.","_splitRatios":"Percentages for `splitRecipients`, totaling 100.","_splitRecipients":"Recipients that split seller proceeds.","_startTime":"Timestamp when minting may begin.","_tokenId":"Token id to sell through primary minting."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setApprovedTokenRegistry(address)":{"params":{"_approvedTokenRegistry":"New approved token registry contract."}},"setContractPaused(bool)":{"params":{"_isPaused":"New pause state."}},"setERC1155ApprovalManager(address)":{"params":{"_erc1155ApprovalManager":"New ERC1155 approval manager contract."}},"setERC20ApprovalManager(address)":{"params":{"_erc20ApprovalManager":"New ERC20 approval manager contract."}},"setERC721ApprovalManager(address)":{"params":{"_erc721ApprovalManager":"New ERC721 approval manager contract."}},"setMarketplaceSettings(address)":{"params":{"_marketplaceSettings":"New marketplace settings contract."}},"setNetworkBeneficiary(address)":{"params":{"_networkBeneficiary":"New network beneficiary."}},"setPayments(address)":{"params":{"_payments":"New payments contract."}},"setRoyaltyEngine(address)":{"params":{"_royaltyEngine":"New royalty engine contract."}},"setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])":{"details":"Listings intentionally have no expiry timestamp and can be cancelled by the seller with `cancelSalePrice`.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Listing currency. Zero address indicates ETH.","_price":"Unit price per token.","_quantity":"Quantity listed.","_splitRatios":"Percentages for `splitRecipients`, totaling 100.","_splitRecipients":"Recipients that split seller proceeds.","_tokenId":"Token id to list."}},"setSpaceOperatorRegistry(address)":{"params":{"_spaceOperatorRegistry":"New space operator registry contract."}},"setStakingRegistry(address)":{"params":{"_stakingRegistry":"New staking registry contract."}},"setStakingSettings(address)":{"params":{"_stakingSettings":"New staking settings contract."}},"setTokenAllowListConfig(bytes32,uint256,address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_endTimestamp":"Timestamp when allowlist enforcement expires.","_root":"Merkle root for allowlisted minters. Zero root disables allowlist enforcement.","_tokenId":"Token id controlled by the allowlist."}},"setTokenMintLimit(address,uint256,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_limit":"Max mint quantity per address. Zero disables the limit and disabled periods are not counted.","_tokenId":"Token id controlled by the limit."}},"setTokenTxLimit(address,uint256,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_limit":"Max transactions per address. Zero disables the limit and disabled periods are not counted.","_tokenId":"Token id controlled by the limit."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"buy(address,uint256,address,address,uint256,uint256)":{"notice":"Buys tokens from a seller's secondary fixed-price listing."},"cancelSalePrice(address,uint256)":{"notice":"Cancels the caller's secondary listing for a token id."},"getDirectSaleConfig(address,uint256)":{"notice":"Returns the primary mint sale config for a token id."},"getERC1155ApprovalManager()":{"notice":"Returns the ERC1155 approval manager used for secondary transfers."},"getMarketConfig()":{"notice":"Returns the marketplace dependency configuration."},"getSalePrice(address,uint256,address)":{"notice":"Returns a seller's secondary fixed-price listing."},"getTokenAllowListConfig(address,uint256)":{"notice":"Returns the allowlist config for a token id."},"getTokenMintLimit(address,uint256)":{"notice":"Returns the per-address mint quantity limit for a token id."},"getTokenMintsPerAddress(address,uint256,address)":{"notice":"Returns quantity minted by an address for a token id."},"getTokenTxLimit(address,uint256)":{"notice":"Returns the per-address transaction limit for a token id."},"getTokenTxsPerAddress(address,uint256,address)":{"notice":"Returns mint transactions used by an address for a token id."},"initialize(address,address,address,address,address,address,address,address,address,address,address)":{"notice":"Initializes the UUPS marketplace implementation behind a proxy."},"isPaused()":{"notice":"Returns whether marketplace writes are paused."},"mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])":{"notice":"Mints tokens from a configured primary sale."},"prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])":{"notice":"Configures or replaces a primary mint sale for a token id."},"setApprovedTokenRegistry(address)":{"notice":"Updates the approved token registry address."},"setContractPaused(bool)":{"notice":"Pauses or unpauses marketplace write operations."},"setERC1155ApprovalManager(address)":{"notice":"Updates the ERC1155 approval manager address."},"setERC20ApprovalManager(address)":{"notice":"Updates the ERC20 approval manager address."},"setERC721ApprovalManager(address)":{"notice":"Updates the ERC721 approval manager address retained by the shared V2 market config."},"setMarketplaceSettings(address)":{"notice":"Updates the marketplace settings contract address."},"setNetworkBeneficiary(address)":{"notice":"Updates the network beneficiary address."},"setPayments(address)":{"notice":"Updates the Payments contract address used for ETH fan-out."},"setRoyaltyEngine(address)":{"notice":"Updates the royalty engine address."},"setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])":{"notice":"Creates or replaces a secondary fixed-price listing."},"setSpaceOperatorRegistry(address)":{"notice":"Updates the space operator registry address."},"setStakingRegistry(address)":{"notice":"Updates the staking registry address."},"setStakingSettings(address)":{"notice":"Updates the staking settings address."},"setTokenAllowListConfig(bytes32,uint256,address,uint256)":{"notice":"Sets a token id allowlist configuration."},"setTokenMintLimit(address,uint256,uint256)":{"notice":"Sets the max quantity each address may mint for a token id while the limit is enabled."},"setTokenTxLimit(address,uint256,uint256)":{"notice":"Sets the max number of mint transactions each address may submit for a token id while the limit is enabled."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155Marketplace.sol":"RareERC1155Marketplace"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol":{"keccak256":"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b","urls":["bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0","dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol":{"keccak256":"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f","urls":["bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053","dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"keccak256":"0x584ebdf9c1118a7c773f98788e3f3ede01982bdf8932aa06f5acc7d54876e161","urls":["bzz-raw://9826c7edf276ff48b99ee217358393097c30448a71d345d287c2f6961bb1f159","dweb:/ipfs/QmYXBTY9wDvffGU47yMRFJ1NFyKwpbj94VHzRzhsm6R7Gz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol":{"keccak256":"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908","urls":["bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1","dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xb607cb94c27e89750f5ae2ccebcb94e654e926f6125f4fd4c6262c89875118ad","urls":["bzz-raw://33e8f8d863c6943ea046fcf4972b4e815c04ab06bad195dba1d93f8ebeb8420d","dweb:/ipfs/QmTQzxQTuuzPDk3eqVmYy7hv2RCXM1yt1NtubXpRbzYjaj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0","urls":["bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025","dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol":{"keccak256":"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908","urls":["bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685","dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155Marketplace.sol":{"keccak256":"0xdc49e7eb0b48b0eb40aa5776b44b0fcb4f2f38223762b6ca2fbcc814f16ae3cb","urls":["bzz-raw://86188372ffe2e7ff9025f1e8e0ee62940c9ac7ec787a892b176421eab3f7bae0","dweb:/ipfs/Qmf83TtD6ax7M97dKtMEeQEohs1aKWPMrCWV4aB1NHtunb"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155Marketplace.sol":{"keccak256":"0x1815e380bf66a8b97d3f5f07893ab9c36b896e9d622602a6111fb36d9d2a70c3","urls":["bzz-raw://8badd0eb1bc87b61dfd6ecab9ed8b67a87c94a69ba461b9da7bde874deb955be","dweb:/ipfs/QmNefodrs6Zkwy7NzN4Y938S8PJktnWbuLZ97gqGSbzGXK"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x9dc23a2064e31818e89092b5935ab96079a99b29e1aa1456565ee698d3fd23a6","urls":["bzz-raw://d5aaa41dbed645e29ec41a7159bee7a10519ebaa71fb86187bd109aba732db40","dweb:/ipfs/Qma3yM1SZuHAxo6HS16uFMX1yVVqikkXX9v6n5op5Tss1V"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":95} \ No newline at end of file diff --git a/abis/SuperRareBazaarBase.json b/abis/SuperRareBazaarBase.json index 46b1b22..7955832 100644 --- a/abis/SuperRareBazaarBase.json +++ b/abis/SuperRareBazaarBase.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"COLDIE_AUCTION","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NO_AUCTION","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SCHEDULED_AUCTION","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"approvedTokenRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IApprovedTokenRegistry"}],"stateMutability":"view"},{"type":"function","name":"auctionBids","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"bidder","type":"address","internalType":"address payable"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"marketplaceFee","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"auctionLengthExtension","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"marketplaceSettings","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IMarketplaceSettings"}],"stateMutability":"view"},{"type":"function","name":"maxAuctionLength","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"minimumBidIncreasePercentage","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"networkBeneficiary","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"offerCancelationDelay","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"payments","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPayments"}],"stateMutability":"view"},{"type":"function","name":"royaltyEngine","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IRoyaltyEngineV1"}],"stateMutability":"view"},{"type":"function","name":"royaltyRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IRareRoyaltyRegistry"}],"stateMutability":"view"},{"type":"function","name":"spaceOperatorRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISpaceOperatorRegistry"}],"stateMutability":"view"},{"type":"function","name":"stakingRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"superRareAuctionHouse","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"superRareMarketplace","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"tokenAuctions","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"auctionCreator","type":"address","internalType":"address payable"},{"name":"creationBlock","type":"uint256","internalType":"uint256"},{"name":"startingTime","type":"uint256","internalType":"uint256"},{"name":"lengthOfAuction","type":"uint256","internalType":"uint256"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"minimumBid","type":"uint256","internalType":"uint256"},{"name":"auctionType","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"tokenCurrentOffers","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"buyer","type":"address","internalType":"address payable"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"marketplaceFee","type":"uint8","internalType":"uint8"},{"name":"convertible","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenSalePrices","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"seller","type":"address","internalType":"address payable"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AcceptOffer","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_seller","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_splitAddresses","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"AuctionBid","inputs":[{"name":"_contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_startedAuction","type":"bool","indexed":false,"internalType":"bool"},{"name":"_newAuctionLength","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_previousBidder","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AuctionSettled","inputs":[{"name":"_contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_seller","type":"address","indexed":false,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CancelAuction","inputs":[{"name":"_contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"_auctionCreator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"CancelOffer","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NewAuction","inputs":[{"name":"_contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"_auctionCreator","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_startingTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_minimumBid","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_lengthOfAuction","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferPlaced","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_convertible","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetSalePrice","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_target","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_buyer","type":"address","indexed":true,"internalType":"address"},{"name":"_seller","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"COLDIE_AUCTION()":"c90b8714","NO_AUCTION()":"155a56b1","SCHEDULED_AUCTION()":"b23afc26","approvedTokenRegistry()":"6240cd1c","auctionBids(address,uint256)":"299a0e1e","auctionLengthExtension()":"daa26499","marketplaceSettings()":"ba50b632","maxAuctionLength()":"0e519ef9","minimumBidIncreasePercentage()":"6fe9f44c","networkBeneficiary()":"6b534ed0","offerCancelationDelay()":"0a5c4ed5","payments()":"a6d23e10","royaltyEngine()":"4c94c90c","royaltyRegistry()":"a11b0712","spaceOperatorRegistry()":"0bcba09d","stakingRegistry()":"009d9aa9","superRareAuctionHouse()":"3bc3d9be","superRareMarketplace()":"0141c590","tokenAuctions(address,uint256)":"c47c35c1","tokenCurrentOffers(address,uint256,address)":"2c419053","tokenSalePrices(address,uint256,address)":"1a2ac30f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"_splitAddresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"AcceptOffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_startedAuction\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newAuctionLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_previousBidder\",\"type\":\"address\"}],\"name\":\"AuctionBid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"AuctionSettled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_auctionCreator\",\"type\":\"address\"}],\"name\":\"CancelAuction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"CancelOffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_auctionCreator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_startingTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_minimumBid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_lengthOfAuction\",\"type\":\"uint256\"}],\"name\":\"NewAuction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_convertible\",\"type\":\"bool\"}],\"name\":\"OfferPlaced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SetSalePrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COLDIE_AUCTION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NO_AUCTION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SCHEDULED_AUCTION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"approvedTokenRegistry\",\"outputs\":[{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"auctionBids\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"bidder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"marketplaceFee\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"auctionLengthExtension\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"marketplaceSettings\",\"outputs\":[{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxAuctionLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumBidIncreasePercentage\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"networkBeneficiary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"offerCancelationDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"payments\",\"outputs\":[{\"internalType\":\"contract IPayments\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"royaltyEngine\",\"outputs\":[{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"royaltyRegistry\",\"outputs\":[{\"internalType\":\"contract IRareRoyaltyRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"spaceOperatorRegistry\",\"outputs\":[{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakingRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"superRareAuctionHouse\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"superRareMarketplace\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenAuctions\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"auctionCreator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creationBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lengthOfAuction\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minimumBid\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"auctionType\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenCurrentOffers\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"marketplaceFee\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"convertible\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenSalePrices\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"koloz\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SuperRareBazaarBase\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Base contract containing the internal functions for the SuperRareBazaar.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/bazaar/SuperRareBazaarBase.sol\":\"SuperRareBazaarBase\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib/v3-core/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/bazaar/SuperRareBazaarBase.sol\":{\"keccak256\":\"0x7807f318b68688f0114217bcd528f7a2623421e500dc3164b1067d3e45f2b826\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab4167a3ddbfada171bb4a286e1ab7e90f9be00ada86571999a5f1e5768eed9d\",\"dweb:/ipfs/QmfH6EKVMNrmYwbuTqtpsTePBdbVL2WheRkpCk3N16xXPa\"]},\"src/bazaar/SuperRareBazaarStorage.sol\":{\"keccak256\":\"0x07b013f4ed5ca846af48f74faae20547b1f806d98093eef050d2ac6e838f3714\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a0dc91b04769e552b01efd38a796df6f20694a9e478c582b37fdd103894195a\",\"dweb:/ipfs/QmUM79e82SXrAp9oHQZRmhXS3BjtUhsKZ5rQMwUcT6FTgc\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ICreatorRegistry.sol\":{\"keccak256\":\"0xcaeba1e630efa2ce901d39632fa5760cfbfd8647bf8657a137f4cece2d714ed8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://161e5d0d9f9b27e97cbdb4fc10134254fe329fcd549fdb07900bb553d2a1ccc1\",\"dweb:/ipfs/QmNtKFgVqB28YwLJg6TWgXWHEJybrXFXEWbU5gep99HEcP\"]},\"src/registry/interfaces/IRareRoyaltyRegistry.sol\":{\"keccak256\":\"0xd6b673182b9c6453e38fcd29bd85a788b3734f82202a77cd64d15422e98ffac9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://70fd1ef8d3a5d44f2e984e969528c8a0ab25eefc92a3b19cfa63b6394bc798e3\",\"dweb:/ipfs/QmTDCPVfxqAcXDzdYfHQbm1f4nYJSBeRz91oqjfE8fxk2r\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"address","name":"_seller","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"_splitAddresses","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"AcceptOffer","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"bool","name":"_startedAuction","type":"bool","indexed":false},{"internalType":"uint256","name":"_newAuctionLength","type":"uint256","indexed":false},{"internalType":"address","name":"_previousBidder","type":"address","indexed":false}],"type":"event","name":"AuctionBid","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"address","name":"_seller","type":"address","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false}],"type":"event","name":"AuctionSettled","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"_auctionCreator","type":"address","indexed":true}],"type":"event","name":"CancelAuction","anonymous":false},{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":true},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false}],"type":"event","name":"CancelOffer","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"_auctionCreator","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_startingTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"_minimumBid","type":"uint256","indexed":false},{"internalType":"uint256","name":"_lengthOfAuction","type":"uint256","indexed":false}],"type":"event","name":"NewAuction","anonymous":false},{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":true},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false},{"internalType":"bool","name":"_convertible","type":"bool","indexed":false}],"type":"event","name":"OfferPlaced","anonymous":false},{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":true},{"internalType":"address","name":"_target","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SetSalePrice","anonymous":false},{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_buyer","type":"address","indexed":true},{"internalType":"address","name":"_seller","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"COLDIE_AUCTION","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NO_AUCTION","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SCHEDULED_AUCTION","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"approvedTokenRegistry","outputs":[{"internalType":"contract IApprovedTokenRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"auctionBids","outputs":[{"internalType":"address payable","name":"bidder","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint8","name":"marketplaceFee","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"auctionLengthExtension","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"marketplaceSettings","outputs":[{"internalType":"contract IMarketplaceSettings","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxAuctionLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minimumBidIncreasePercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"networkBeneficiary","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"offerCancelationDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"payments","outputs":[{"internalType":"contract IPayments","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"royaltyEngine","outputs":[{"internalType":"contract IRoyaltyEngineV1","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"royaltyRegistry","outputs":[{"internalType":"contract IRareRoyaltyRegistry","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"spaceOperatorRegistry","outputs":[{"internalType":"contract ISpaceOperatorRegistry","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"stakingRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"superRareAuctionHouse","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"superRareMarketplace","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenAuctions","outputs":[{"internalType":"address payable","name":"auctionCreator","type":"address"},{"internalType":"uint256","name":"creationBlock","type":"uint256"},{"internalType":"uint256","name":"startingTime","type":"uint256"},{"internalType":"uint256","name":"lengthOfAuction","type":"uint256"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"minimumBid","type":"uint256"},{"internalType":"bytes32","name":"auctionType","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"tokenCurrentOffers","outputs":[{"internalType":"address payable","name":"buyer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint8","name":"marketplaceFee","type":"uint8"},{"internalType":"bool","name":"convertible","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"tokenSalePrices","outputs":[{"internalType":"address payable","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/=lib/v3-core/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/bazaar/SuperRareBazaarBase.sol":"SuperRareBazaarBase"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/bazaar/SuperRareBazaarBase.sol":{"keccak256":"0x7807f318b68688f0114217bcd528f7a2623421e500dc3164b1067d3e45f2b826","urls":["bzz-raw://ab4167a3ddbfada171bb4a286e1ab7e90f9be00ada86571999a5f1e5768eed9d","dweb:/ipfs/QmfH6EKVMNrmYwbuTqtpsTePBdbVL2WheRkpCk3N16xXPa"],"license":"MIT"},"src/bazaar/SuperRareBazaarStorage.sol":{"keccak256":"0x07b013f4ed5ca846af48f74faae20547b1f806d98093eef050d2ac6e838f3714","urls":["bzz-raw://8a0dc91b04769e552b01efd38a796df6f20694a9e478c582b37fdd103894195a","dweb:/ipfs/QmUM79e82SXrAp9oHQZRmhXS3BjtUhsKZ5rQMwUcT6FTgc"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ICreatorRegistry.sol":{"keccak256":"0xcaeba1e630efa2ce901d39632fa5760cfbfd8647bf8657a137f4cece2d714ed8","urls":["bzz-raw://161e5d0d9f9b27e97cbdb4fc10134254fe329fcd549fdb07900bb553d2a1ccc1","dweb:/ipfs/QmNtKFgVqB28YwLJg6TWgXWHEJybrXFXEWbU5gep99HEcP"],"license":"MIT"},"src/registry/interfaces/IRareRoyaltyRegistry.sol":{"keccak256":"0xd6b673182b9c6453e38fcd29bd85a788b3734f82202a77cd64d15422e98ffac9","urls":["bzz-raw://70fd1ef8d3a5d44f2e984e969528c8a0ab25eefc92a3b19cfa63b6394bc798e3","dweb:/ipfs/QmTDCPVfxqAcXDzdYfHQbm1f4nYJSBeRz91oqjfE8fxk2r"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"}},"version":1},"id":61} \ No newline at end of file +{"abi":[{"type":"function","name":"COLDIE_AUCTION","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NO_AUCTION","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SCHEDULED_AUCTION","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"approvedTokenRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IApprovedTokenRegistry"}],"stateMutability":"view"},{"type":"function","name":"auctionBids","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"bidder","type":"address","internalType":"address payable"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"marketplaceFee","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"auctionLengthExtension","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"marketplaceSettings","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IMarketplaceSettings"}],"stateMutability":"view"},{"type":"function","name":"maxAuctionLength","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"minimumBidIncreasePercentage","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"networkBeneficiary","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"offerCancelationDelay","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"payments","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPayments"}],"stateMutability":"view"},{"type":"function","name":"royaltyEngine","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IRoyaltyEngineV1"}],"stateMutability":"view"},{"type":"function","name":"royaltyRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IRareRoyaltyRegistry"}],"stateMutability":"view"},{"type":"function","name":"spaceOperatorRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISpaceOperatorRegistry"}],"stateMutability":"view"},{"type":"function","name":"stakingRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"superRareAuctionHouse","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"superRareMarketplace","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"tokenAuctions","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"auctionCreator","type":"address","internalType":"address payable"},{"name":"creationBlock","type":"uint256","internalType":"uint256"},{"name":"startingTime","type":"uint256","internalType":"uint256"},{"name":"lengthOfAuction","type":"uint256","internalType":"uint256"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"minimumBid","type":"uint256","internalType":"uint256"},{"name":"auctionType","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"tokenCurrentOffers","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"buyer","type":"address","internalType":"address payable"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"marketplaceFee","type":"uint8","internalType":"uint8"},{"name":"convertible","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenSalePrices","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"seller","type":"address","internalType":"address payable"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AcceptOffer","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_seller","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_splitAddresses","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"AuctionBid","inputs":[{"name":"_contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_startedAuction","type":"bool","indexed":false,"internalType":"bool"},{"name":"_newAuctionLength","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_previousBidder","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AuctionSettled","inputs":[{"name":"_contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_seller","type":"address","indexed":false,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CancelAuction","inputs":[{"name":"_contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"_auctionCreator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"CancelOffer","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NewAuction","inputs":[{"name":"_contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"_auctionCreator","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_startingTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_minimumBid","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_lengthOfAuction","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferPlaced","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_convertible","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetSalePrice","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_target","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_buyer","type":"address","indexed":true,"internalType":"address"},{"name":"_seller","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"COLDIE_AUCTION()":"c90b8714","NO_AUCTION()":"155a56b1","SCHEDULED_AUCTION()":"b23afc26","approvedTokenRegistry()":"6240cd1c","auctionBids(address,uint256)":"299a0e1e","auctionLengthExtension()":"daa26499","marketplaceSettings()":"ba50b632","maxAuctionLength()":"0e519ef9","minimumBidIncreasePercentage()":"6fe9f44c","networkBeneficiary()":"6b534ed0","offerCancelationDelay()":"0a5c4ed5","payments()":"a6d23e10","royaltyEngine()":"4c94c90c","royaltyRegistry()":"a11b0712","spaceOperatorRegistry()":"0bcba09d","stakingRegistry()":"009d9aa9","superRareAuctionHouse()":"3bc3d9be","superRareMarketplace()":"0141c590","tokenAuctions(address,uint256)":"c47c35c1","tokenCurrentOffers(address,uint256,address)":"2c419053","tokenSalePrices(address,uint256,address)":"1a2ac30f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"_splitAddresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"AcceptOffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_startedAuction\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newAuctionLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_previousBidder\",\"type\":\"address\"}],\"name\":\"AuctionBid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"AuctionSettled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_auctionCreator\",\"type\":\"address\"}],\"name\":\"CancelAuction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"CancelOffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_auctionCreator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_startingTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_minimumBid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_lengthOfAuction\",\"type\":\"uint256\"}],\"name\":\"NewAuction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_convertible\",\"type\":\"bool\"}],\"name\":\"OfferPlaced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SetSalePrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COLDIE_AUCTION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NO_AUCTION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SCHEDULED_AUCTION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"approvedTokenRegistry\",\"outputs\":[{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"auctionBids\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"bidder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"marketplaceFee\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"auctionLengthExtension\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"marketplaceSettings\",\"outputs\":[{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxAuctionLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumBidIncreasePercentage\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"networkBeneficiary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"offerCancelationDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"payments\",\"outputs\":[{\"internalType\":\"contract IPayments\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"royaltyEngine\",\"outputs\":[{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"royaltyRegistry\",\"outputs\":[{\"internalType\":\"contract IRareRoyaltyRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"spaceOperatorRegistry\",\"outputs\":[{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakingRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"superRareAuctionHouse\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"superRareMarketplace\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenAuctions\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"auctionCreator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creationBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lengthOfAuction\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minimumBid\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"auctionType\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenCurrentOffers\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"marketplaceFee\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"convertible\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenSalePrices\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"koloz\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SuperRareBazaarBase\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Base contract containing the internal functions for the SuperRareBazaar.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/bazaar/SuperRareBazaarBase.sol\":\"SuperRareBazaarBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/bazaar/SuperRareBazaarBase.sol\":{\"keccak256\":\"0xc527f3e052a207935297b35acfe9de947de86f0745e3dce41b6c12f7f98671ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac24c130ce816804348ba19910f0d433148baeec20a38ba586d56ac7599df8f3\",\"dweb:/ipfs/QmTWiwZA18ccycFEzDRFeGy7MuERAPyXQUTy59fzMNTpSd\"]},\"src/bazaar/SuperRareBazaarStorage.sol\":{\"keccak256\":\"0x5c3045f0a2282d16d841e62ab16542345e48e8ce9640a18f52cebfdebb2c4086\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d24f010509edc8bc6c3245522154ea9f27f7574d80850c23f134d8b0f59952bb\",\"dweb:/ipfs/QmbcdHpb4tyXdXMXk2xGjTrgrT1vyCiUdEZkDdWKbvW9Bo\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ICreatorRegistry.sol\":{\"keccak256\":\"0xcaeba1e630efa2ce901d39632fa5760cfbfd8647bf8657a137f4cece2d714ed8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://161e5d0d9f9b27e97cbdb4fc10134254fe329fcd549fdb07900bb553d2a1ccc1\",\"dweb:/ipfs/QmNtKFgVqB28YwLJg6TWgXWHEJybrXFXEWbU5gep99HEcP\"]},\"src/registry/interfaces/IRareRoyaltyRegistry.sol\":{\"keccak256\":\"0xd6b673182b9c6453e38fcd29bd85a788b3734f82202a77cd64d15422e98ffac9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://70fd1ef8d3a5d44f2e984e969528c8a0ab25eefc92a3b19cfa63b6394bc798e3\",\"dweb:/ipfs/QmTDCPVfxqAcXDzdYfHQbm1f4nYJSBeRz91oqjfE8fxk2r\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"address","name":"_seller","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"_splitAddresses","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"AcceptOffer","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"bool","name":"_startedAuction","type":"bool","indexed":false},{"internalType":"uint256","name":"_newAuctionLength","type":"uint256","indexed":false},{"internalType":"address","name":"_previousBidder","type":"address","indexed":false}],"type":"event","name":"AuctionBid","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"address","name":"_seller","type":"address","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false}],"type":"event","name":"AuctionSettled","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"_auctionCreator","type":"address","indexed":true}],"type":"event","name":"CancelAuction","anonymous":false},{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":true},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false}],"type":"event","name":"CancelOffer","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"_auctionCreator","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_startingTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"_minimumBid","type":"uint256","indexed":false},{"internalType":"uint256","name":"_lengthOfAuction","type":"uint256","indexed":false}],"type":"event","name":"NewAuction","anonymous":false},{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":true},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false},{"internalType":"bool","name":"_convertible","type":"bool","indexed":false}],"type":"event","name":"OfferPlaced","anonymous":false},{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":true},{"internalType":"address","name":"_target","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SetSalePrice","anonymous":false},{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_buyer","type":"address","indexed":true},{"internalType":"address","name":"_seller","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"COLDIE_AUCTION","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NO_AUCTION","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SCHEDULED_AUCTION","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"approvedTokenRegistry","outputs":[{"internalType":"contract IApprovedTokenRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"auctionBids","outputs":[{"internalType":"address payable","name":"bidder","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint8","name":"marketplaceFee","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"auctionLengthExtension","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"marketplaceSettings","outputs":[{"internalType":"contract IMarketplaceSettings","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxAuctionLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minimumBidIncreasePercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"networkBeneficiary","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"offerCancelationDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"payments","outputs":[{"internalType":"contract IPayments","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"royaltyEngine","outputs":[{"internalType":"contract IRoyaltyEngineV1","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"royaltyRegistry","outputs":[{"internalType":"contract IRareRoyaltyRegistry","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"spaceOperatorRegistry","outputs":[{"internalType":"contract ISpaceOperatorRegistry","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"stakingRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"superRareAuctionHouse","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"superRareMarketplace","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenAuctions","outputs":[{"internalType":"address payable","name":"auctionCreator","type":"address"},{"internalType":"uint256","name":"creationBlock","type":"uint256"},{"internalType":"uint256","name":"startingTime","type":"uint256"},{"internalType":"uint256","name":"lengthOfAuction","type":"uint256"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"minimumBid","type":"uint256"},{"internalType":"bytes32","name":"auctionType","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"tokenCurrentOffers","outputs":[{"internalType":"address payable","name":"buyer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint8","name":"marketplaceFee","type":"uint8"},{"internalType":"bool","name":"convertible","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"tokenSalePrices","outputs":[{"internalType":"address payable","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/bazaar/SuperRareBazaarBase.sol":"SuperRareBazaarBase"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/bazaar/SuperRareBazaarBase.sol":{"keccak256":"0xc527f3e052a207935297b35acfe9de947de86f0745e3dce41b6c12f7f98671ec","urls":["bzz-raw://ac24c130ce816804348ba19910f0d433148baeec20a38ba586d56ac7599df8f3","dweb:/ipfs/QmTWiwZA18ccycFEzDRFeGy7MuERAPyXQUTy59fzMNTpSd"],"license":"MIT"},"src/bazaar/SuperRareBazaarStorage.sol":{"keccak256":"0x5c3045f0a2282d16d841e62ab16542345e48e8ce9640a18f52cebfdebb2c4086","urls":["bzz-raw://d24f010509edc8bc6c3245522154ea9f27f7574d80850c23f134d8b0f59952bb","dweb:/ipfs/QmbcdHpb4tyXdXMXk2xGjTrgrT1vyCiUdEZkDdWKbvW9Bo"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ICreatorRegistry.sol":{"keccak256":"0xcaeba1e630efa2ce901d39632fa5760cfbfd8647bf8657a137f4cece2d714ed8","urls":["bzz-raw://161e5d0d9f9b27e97cbdb4fc10134254fe329fcd549fdb07900bb553d2a1ccc1","dweb:/ipfs/QmNtKFgVqB28YwLJg6TWgXWHEJybrXFXEWbU5gep99HEcP"],"license":"MIT"},"src/registry/interfaces/IRareRoyaltyRegistry.sol":{"keccak256":"0xd6b673182b9c6453e38fcd29bd85a788b3734f82202a77cd64d15422e98ffac9","urls":["bzz-raw://70fd1ef8d3a5d44f2e984e969528c8a0ab25eefc92a3b19cfa63b6394bc798e3","dweb:/ipfs/QmTDCPVfxqAcXDzdYfHQbm1f4nYJSBeRz91oqjfE8fxk2r"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"}},"version":1},"id":84} \ No newline at end of file diff --git a/script/approver/approval-manager-deploy/ApprovalManagerDeploy.s.sol b/script/approver/approval-manager-deploy/ApprovalManagerDeploy.s.sol index cc481f5..e305ab9 100644 --- a/script/approver/approval-manager-deploy/ApprovalManagerDeploy.s.sol +++ b/script/approver/approval-manager-deploy/ApprovalManagerDeploy.s.sol @@ -4,15 +4,15 @@ pragma solidity 0.8.18; import "forge-std/Script.sol"; import {ERC20ApprovalManager} from "../../../src/v2/approver/ERC20/ERC20ApprovalManager.sol"; import {ERC721ApprovalManager} from "../../../src/v2/approver/ERC721/ERC721ApprovalManager.sol"; +import {ERC1155ApprovalManager} from "../../../src/v2/approver/ERC1155/ERC1155ApprovalManager.sol"; /// @title ApprovalManagerDeploy -/// @notice Deployment script for ERC20ApprovalManager and ERC721ApprovalManager +/// @notice Deployment script for ERC20ApprovalManager, ERC721ApprovalManager, and ERC1155ApprovalManager contract ApprovalManagerDeploy is Script { function run() external { // 1. Load private key and start broadcast uint256 privateKey = vm.envUint("PRIVATE_KEY"); vm.startBroadcast(privateKey); - address deployer = vm.addr(privateKey); // 2. Deploy ERC20 Approval Manager ERC20ApprovalManager erc20ApprovalManager = new ERC20ApprovalManager(); @@ -20,9 +20,13 @@ contract ApprovalManagerDeploy is Script { // 3. Deploy ERC721 Approval Manager ERC721ApprovalManager erc721ApprovalManager = new ERC721ApprovalManager(); - // 4. Log deployed addresses + // 4. Deploy ERC1155 Approval Manager + ERC1155ApprovalManager erc1155ApprovalManager = new ERC1155ApprovalManager(); + + // 5. Log deployed addresses console.log("ERC20ApprovalManager deployed at:", address(erc20ApprovalManager)); console.log("ERC721ApprovalManager deployed at:", address(erc721ApprovalManager)); + console.log("ERC1155ApprovalManager deployed at:", address(erc1155ApprovalManager)); vm.stopBroadcast(); } diff --git a/script/marketplace/RareERC1155MarketplaceDeploy.s.sol b/script/marketplace/RareERC1155MarketplaceDeploy.s.sol new file mode 100644 index 0000000..f658fde --- /dev/null +++ b/script/marketplace/RareERC1155MarketplaceDeploy.s.sol @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "forge-std/Script.sol"; +import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; + +import "../../src/marketplace/RareERC1155Marketplace.sol"; + +/// @title RareERC1155MarketplaceDeploy +/// @notice Forge deployment script for the ERC1155 marketplace implementation and ERC1967 proxy. +/// @dev Reads market config addresses from environment variables and initializes the proxy in the same broadcast. +contract RareERC1155MarketplaceDeploy is Script { + /// @notice Deploys marketplace logic, deploys proxy, and initializes the proxied marketplace. + function run() external { + // Environment read: select deployer key for broadcast signing. + uint256 privateKey = vm.envUint("PRIVATE_KEY"); + + // Broadcast boundary: following operations are submitted as deployer transactions. + vm.startBroadcast(privateKey); + + // Address derivation: default network beneficiary to deployer when no env override is provided. + address addr = vm.addr(privateKey); + + // Environment reads: collect required marketplace dependency addresses. + address networkBeneficiary = vm.envOr("NETWORK_BENEFICIARY", addr); + address marketplaceSettings = vm.envAddress("SETTINGS_ADDRESS"); + address spaceOperatorRegistry = vm.envAddress("SPACE_OPERATOR_REGISTRY"); + address royaltyEngine = vm.envAddress("ROYALTY_ENGINE"); + address payments = vm.envAddress("PAYMENTS"); + address approvedTokenRegistry = vm.envAddress("TOKEN_REGISTRY"); + address stakingSettings = vm.envAddress("STAKING_SETTINGS"); + address stakingRegistry = vm.envAddress("STAKING_REGISTRY"); + address erc20ApprovalManager = vm.envAddress("ERC20_APPROVAL_MANAGER"); + address erc721ApprovalManager = vm.envAddress("ERC721_APPROVAL_MANAGER"); + address erc1155ApprovalManager = vm.envAddress("ERC1155_APPROVAL_MANAGER"); + + // Deployment operation: deploy UUPS implementation logic. + RareERC1155Marketplace marketplace = new RareERC1155Marketplace(); + + // Deployment operation: deploy ERC1967 proxy pointing at the implementation. + ERC1967Proxy marketplaceProxy = new ERC1967Proxy(address(marketplace), ""); + + // Initialization transaction: configure proxied marketplace dependencies. + RareERC1155Marketplace(address(marketplaceProxy)) + .initialize( + networkBeneficiary, + marketplaceSettings, + spaceOperatorRegistry, + royaltyEngine, + payments, + approvedTokenRegistry, + stakingSettings, + stakingRegistry, + erc20ApprovalManager, + erc721ApprovalManager, + erc1155ApprovalManager + ); + + // Broadcast boundary: stop submitting transactions. + vm.stopBroadcast(); + } +} diff --git a/script/marketplace/RareERC1155MarketplaceLogicUpdate.s.sol b/script/marketplace/RareERC1155MarketplaceLogicUpdate.s.sol new file mode 100644 index 0000000..113553c --- /dev/null +++ b/script/marketplace/RareERC1155MarketplaceLogicUpdate.s.sol @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "forge-std/Script.sol"; + +import "../../src/marketplace/RareERC1155Marketplace.sol"; + +/// @title RareERC1155MarketplaceLogicUpdate +/// @notice Forge script for upgrading an existing ERC1155 marketplace proxy to a new implementation. +/// @dev Reads `PRIVATE_KEY` and `RARE_ERC1155_MARKETPLACE` from the environment. +contract RareERC1155MarketplaceLogicUpdate is Script { + /// @notice Deploys new marketplace logic and calls `upgradeTo` on the configured proxy. + function run() external { + // Broadcast boundary: following operations are submitted as deployer transactions. + vm.startBroadcast(vm.envUint("PRIVATE_KEY")); + + // Environment read: proxy address to upgrade. + address marketplaceProxy = vm.envAddress("RARE_ERC1155_MARKETPLACE"); + + // Deployment operation: deploy replacement UUPS implementation. + RareERC1155Marketplace marketplace = new RareERC1155Marketplace(); + + // Upgrade transaction: proxy owner must authorize the implementation change. + RareERC1155Marketplace(marketplaceProxy).upgradeTo(address(marketplace)); + + // Broadcast boundary: stop submitting transactions. + vm.stopBroadcast(); + } +} diff --git a/script/token/ERC1155/RareERC1155FactoryDeploy.s.sol b/script/token/ERC1155/RareERC1155FactoryDeploy.s.sol new file mode 100644 index 0000000..6ffcb39 --- /dev/null +++ b/script/token/ERC1155/RareERC1155FactoryDeploy.s.sol @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "forge-std/Script.sol"; + +import "../../../src/token/ERC1155/RareERC1155ContractFactory.sol"; + +/// @title RareERC1155FactoryDeploy +/// @notice Forge deployment script for the ERC1155 clone factory. +/// @dev Reads `PRIVATE_KEY` and optional `RARE_ERC1155_DEFAULT_MINTER` from the environment. +contract RareERC1155FactoryDeploy is Script { + /// @notice Deploys the ERC1155 factory and optionally configures the default minter. + function run() external { + // Environment read: select deployer key for broadcast signing. + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + + // Broadcast boundary: following operations are submitted as deployer transactions. + vm.startBroadcast(deployerPrivateKey); + + // Deployment operation: create the factory and its initial ERC1155 implementation. + RareERC1155ContractFactory factory = new RareERC1155ContractFactory(); + + // Environment read: optional minter approved on future factory-created collections. + address defaultMinter = vm.envOr("RARE_ERC1155_DEFAULT_MINTER", address(0)); + if (defaultMinter != address(0)) { + // State write transaction: configure default minter when provided. + factory.setDefaultMinter(defaultMinter); + } + + // Broadcast boundary: stop submitting transactions. + vm.stopBroadcast(); + } +} diff --git a/src/bazaar/SuperRareBazaarBase.sol b/src/bazaar/SuperRareBazaarBase.sol index 011c956..98e6068 100644 --- a/src/bazaar/SuperRareBazaarBase.sol +++ b/src/bazaar/SuperRareBazaarBase.sol @@ -13,247 +13,244 @@ import {IRareStakingRegistry} from "../staking/registry/IRareStakingRegistry.sol /// @title SuperRareBazaarBase /// @notice Base contract containing the internal functions for the SuperRareBazaar. abstract contract SuperRareBazaarBase is SuperRareBazaarStorage { - using SafeERC20 for IERC20; - - ///////////////////////////////////////////////////////////////////////// - // Internal Functions - ///////////////////////////////////////////////////////////////////////// - - /// @notice Checks to see if the currenccy address is eth or an approved erc20 token. - /// @param _currencyAddress Address of currency (Zero address if eth). - function _checkIfCurrencyIsApproved(address _currencyAddress) internal view { - require( - _currencyAddress == address(0) || approvedTokenRegistry.isApprovedToken(_currencyAddress), - "Not approved currency" - ); - } - - /// @notice Checks to see if the owner of the token has the marketplace approved. - /// @param _originContract Contract address of the token being checked. - /// @param _tokenId Token Id of the asset. - function _ownerMustHaveMarketplaceApprovedForNFT(address _originContract, uint256 _tokenId) internal view { - IERC721 erc721 = IERC721(_originContract); - address owner = erc721.ownerOf(_tokenId); - require(erc721.isApprovedForAll(owner, address(this)), "owner must have approved contract"); - } - - /// @notice Checks to see if the msg sender owns the token. - /// @param _originContract Contract address of the token being checked. - /// @param _tokenId Token Id of the asset. - function _senderMustBeTokenOwner(address _originContract, uint256 _tokenId) internal view { - IERC721 erc721 = IERC721(_originContract); - require(erc721.ownerOf(_tokenId) == msg.sender, "sender must be the token owner"); - } - - /// @notice Verifies that the splits supplied are valid. - /// @dev A valid split has the same number of splits and ratios. - /// @dev There can only be a max of 5 parties split with. - /// @dev Total of the ratios should be 100 which is relative. - /// @param _splits The addresses the amount is being split with. - /// @param _ratios The ratios each address in _splits is getting. - function _checkSplits(address payable[] calldata _splits, uint8[] calldata _ratios) internal pure { - require(_splits.length > 0, "checkSplits::Must have at least 1 split"); - require(_splits.length <= 5, "checkSplits::Split exceeded max size"); - require(_splits.length == _ratios.length, "checkSplits::Splits and ratios must be equal"); - uint256 totalRatio = 0; - - for (uint256 i = 0; i < _ratios.length; i++) { - totalRatio += _ratios[i]; + using SafeERC20 for IERC20; + + ///////////////////////////////////////////////////////////////////////// + // Internal Functions + ///////////////////////////////////////////////////////////////////////// + + /// @notice Checks to see if the currenccy address is eth or an approved erc20 token. + /// @param _currencyAddress Address of currency (Zero address if eth). + function _checkIfCurrencyIsApproved(address _currencyAddress) internal view { + require( + _currencyAddress == address(0) || approvedTokenRegistry.isApprovedToken(_currencyAddress), + "Not approved currency" + ); } - require(totalRatio == 100, "checkSplits::Total must be equal to 100"); - } - - /// @notice Checks to see if the sender has approved the marketplace to move tokens. - /// @dev This is for offers/buys/bids and the allowance of erc20 tokens. - /// @dev Returns on zero address because no allowance is needed for eth. - /// @param _contract The address of the currency being checked. - /// @param _amount The total amount being checked. - function _senderMustHaveMarketplaceApproved(address _contract, uint256 _amount) internal view { - if (_contract == address(0)) { - return; + /// @notice Checks to see if the owner of the token has the marketplace approved. + /// @param _originContract Contract address of the token being checked. + /// @param _tokenId Token Id of the asset. + function _ownerMustHaveMarketplaceApprovedForNFT(address _originContract, uint256 _tokenId) internal view { + IERC721 erc721 = IERC721(_originContract); + address owner = erc721.ownerOf(_tokenId); + require(erc721.isApprovedForAll(owner, address(this)), "owner must have approved contract"); } - IERC20 erc20 = IERC20(_contract); - - require(erc20.allowance(msg.sender, address(this)) >= _amount, "sender needs to approve marketplace for currency"); - } - - /// @notice Checks the user has the correct amount and transfers to the marketplace. - /// @dev If the currency used is eth (zero address) the msg value is checked. - /// @dev If eth isnt used and eth is sent we revert the txn. - /// @dev We need to check this contracts balance before and after the transfer to ensure no fee. - /// @param _currencyAddress Currency address being checked and transfered. - /// @param _amount Total amount of currency. - function _checkAmountAndTransfer(address _currencyAddress, uint256 _amount) internal { - if (_currencyAddress == address(0)) { - require(msg.value == _amount, "not enough eth sent"); - return; + /// @notice Checks to see if the msg sender owns the token. + /// @param _originContract Contract address of the token being checked. + /// @param _tokenId Token Id of the asset. + function _senderMustBeTokenOwner(address _originContract, uint256 _tokenId) internal view { + IERC721 erc721 = IERC721(_originContract); + require(erc721.ownerOf(_tokenId) == msg.sender, "sender must be the token owner"); } - require(msg.value == 0, "msg.value should be 0 when not using eth"); - - IERC20 erc20 = IERC20(_currencyAddress); - uint256 balanceBefore = erc20.balanceOf(address(this)); - - erc20.safeTransferFrom(msg.sender, address(this), _amount); - - uint256 balanceAfter = erc20.balanceOf(address(this)); - - require(balanceAfter - balanceBefore == _amount, "not enough tokens transfered"); - } - - /// @notice Refunds an address the designated amount. - /// @dev Return if amount being refunded is zero. - /// @dev Forwards to payment contract if eth is being refunded. - /// @param _currencyAddress Address of currency being refunded. - /// @param _amount Amount being refunded. - /// @param _marketplaceFee Marketplace Fee (percentage) paid by _recipient. - /// @param _recipient Address amount is being refunded to. - function _refund( - address _currencyAddress, - uint256 _amount, - uint256 _marketplaceFee, - address _recipient - ) internal { - if (_amount == 0) { - return; + /// @notice Verifies that the splits supplied are valid. + /// @dev A valid split has the same number of splits and ratios. + /// @dev There can only be a max of 5 parties split with. + /// @dev Total of the ratios should be 100 which is relative. + /// @param _splits The addresses the amount is being split with. + /// @param _ratios The ratios each address in _splits is getting. + function _checkSplits(address payable[] calldata _splits, uint8[] calldata _ratios) internal pure { + require(_splits.length > 0, "checkSplits::Must have at least 1 split"); + require(_splits.length <= 5, "checkSplits::Split exceeded max size"); + require(_splits.length == _ratios.length, "checkSplits::Splits and ratios must be equal"); + uint256 totalRatio = 0; + + for (uint256 i = 0; i < _ratios.length; i++) { + require(_splits[i] != address(0), "checkSplits::Split cannot be zero address"); + require(_ratios[i] > 0, "checkSplits::Ratio must be greater than 0"); + totalRatio += _ratios[i]; + } + + require(totalRatio == 100, "checkSplits::Total must be equal to 100"); } - uint256 requiredAmount = _amount + ((_amount * _marketplaceFee) / 100); + /// @notice Checks to see if the sender has approved the marketplace to move tokens. + /// @dev This is for offers/buys/bids and the allowance of erc20 tokens. + /// @dev Returns on zero address because no allowance is needed for eth. + /// @param _contract The address of the currency being checked. + /// @param _amount The total amount being checked. + function _senderMustHaveMarketplaceApproved(address _contract, uint256 _amount) internal view { + if (_contract == address(0)) { + return; + } + + IERC20 erc20 = IERC20(_contract); + + require( + erc20.allowance(msg.sender, address(this)) >= _amount, "sender needs to approve marketplace for currency" + ); + } - if (_currencyAddress == address(0)) { - (bool success, bytes memory data) = address(payments).call{value: requiredAmount}( - abi.encodeWithSignature("refund(address,uint256)", _recipient, requiredAmount) - ); + /// @notice Checks the user has the correct amount and transfers to the marketplace. + /// @dev If the currency used is eth (zero address) the msg value is checked. + /// @dev If eth isnt used and eth is sent we revert the txn. + /// @dev We need to check this contracts balance before and after the transfer to ensure no fee. + /// @param _currencyAddress Currency address being checked and transfered. + /// @param _amount Total amount of currency. + function _checkAmountAndTransfer(address _currencyAddress, uint256 _amount) internal { + if (_currencyAddress == address(0)) { + require(msg.value == _amount, "not enough eth sent"); + return; + } - require(success, string(data)); - return; - } + require(msg.value == 0, "msg.value should be 0 when not using eth"); - IERC20 erc20 = IERC20(_currencyAddress); - erc20.safeTransfer(_recipient, requiredAmount); - } - - /// @notice Sends a payout to all the necessary parties. - /// @dev Note that _splitAddrs and _splitRatios are not checked for validity. Make sure supplied values are correct by using _checkSplits. - /// @dev Sends payments to the network, royalty if applicable, and splits for the rest. - /// @dev Forwards payments to the payment contract if payout is happening in eth. - /// @dev Total amount of ratios should be 100 and is relative to the total ratio left. - /// @param _originContract Contract address of asset triggering a payout. - /// @param _tokenId Token Id of the asset. - /// @param _currencyAddress Address of currency being paid out. - /// @param _amount Total amount to be paid out. - /// @param _seller Address of the person selling the asset. - /// @param _splitAddrs Addresses that funds need to be split against. - /// @param _splitRatios Ratios for split pertaining to each address. - function _payout( - address _originContract, - uint256 _tokenId, - address _currencyAddress, - uint256 _amount, - address _seller, - address payable[] memory _splitAddrs, - uint8[] memory _splitRatios - ) internal { - require(_splitAddrs.length == _splitRatios.length, "Number of split addresses and ratios must be equal."); - - /* - The overall flow for payouts is: - 1. Payout marketplace fee - 2. Primary/Secondary Payouts - a. Primary -> If space sale, query space operator registry for platform comission and payout - Else query marketplace setting for primary sale comission and payout - b. Secondary -> Query global royalty registry for recipients and amounts and payout - 3. Calculate the amount for each _splitAddr based on remaining amount and payout - */ - - // Recipients of marketplace fee - uint256 remainingAmount = _amount; - - // Marketplace fee - - // Amounts for recipients of marketplace fee - uint256 marketplaceFee = marketplaceSettings.calculateMarketplaceFee(_amount); - - address payable[] memory mktFeeRecip = new address payable[](2); - mktFeeRecip[0] = payable(networkBeneficiary); - mktFeeRecip[1] = payable(IRareStakingRegistry(stakingRegistry).getRewardAccumulatorAddressForUser(_seller)); - mktFeeRecip[1] = mktFeeRecip[1] == address(0) ? payable(networkBeneficiary) : mktFeeRecip[1]; - uint256[] memory mktFee = new uint256[](2); - mktFee[0] = IStakingSettings(address(marketplaceSettings)).calculateMarketplacePayoutFee(_amount); - mktFee[1] = IStakingSettings(address(marketplaceSettings)).calculateStakingFee(_amount); - - _performPayouts(_currencyAddress, marketplaceFee, mktFeeRecip, mktFee); - - if (!marketplaceSettings.hasERC721TokenSold(_originContract, _tokenId)) { - uint256[] memory platformFee = new uint256[](1); - address payable[] memory platformRecip = new address payable[](1); - platformRecip[0] = mktFeeRecip[0]; - - if (spaceOperatorRegistry.isApprovedSpaceOperator(_seller)) { - uint256 platformCommission = spaceOperatorRegistry.getPlatformCommission(_seller); - - remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); - - platformFee[0] = (_amount * platformCommission) / 100; - - _performPayouts(_currencyAddress, platformFee[0], platformRecip, platformFee); - } else { - uint256 platformCommission = marketplaceSettings.getERC721ContractPrimarySaleFeePercentage(_originContract); - - remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); - - platformFee[0] = (_amount * platformCommission) / 100; - - _performPayouts(_currencyAddress, platformFee[0], platformRecip, platformFee); - } - } else { - (address payable[] memory receivers, uint256[] memory royalties) = royaltyEngine.getRoyalty( - _originContract, - _tokenId, - _amount - ); - - uint256 totalRoyalties = 0; - - for (uint256 i = 0; i < royalties.length; i++) { - totalRoyalties += royalties[i]; - } - - remainingAmount -= totalRoyalties; - _performPayouts(_currencyAddress, totalRoyalties, receivers, royalties); - } + IERC20 erc20 = IERC20(_currencyAddress); + uint256 balanceBefore = erc20.balanceOf(address(this)); + + erc20.safeTransferFrom(msg.sender, address(this), _amount); - uint256[] memory remainingAmts = new uint256[](_splitAddrs.length); + uint256 balanceAfter = erc20.balanceOf(address(this)); - uint256 totalSplit = 0; + require(balanceAfter - balanceBefore == _amount, "not enough tokens transfered"); + } + + /// @notice Refunds an address the designated amount. + /// @dev Return if amount being refunded is zero. + /// @dev Forwards to payment contract if eth is being refunded. + /// @param _currencyAddress Address of currency being refunded. + /// @param _amount Amount being refunded. + /// @param _marketplaceFee Marketplace Fee (percentage) paid by _recipient. + /// @param _recipient Address amount is being refunded to. + function _refund(address _currencyAddress, uint256 _amount, uint256 _marketplaceFee, address _recipient) internal { + if (_amount == 0) { + return; + } + + uint256 requiredAmount = _amount + ((_amount * _marketplaceFee) / 100); + + if (_currencyAddress == address(0)) { + (bool success, bytes memory data) = address(payments).call{value: requiredAmount}( + abi.encodeWithSignature("refund(address,uint256)", _recipient, requiredAmount) + ); + + require(success, string(data)); + return; + } + + IERC20 erc20 = IERC20(_currencyAddress); + erc20.safeTransfer(_recipient, requiredAmount); + } - for (uint256 i = 0; i < _splitAddrs.length; i++) { - remainingAmts[i] = (remainingAmount * _splitRatios[i]) / 100; - totalSplit += (remainingAmount * _splitRatios[i]) / 100; + /// @notice Sends a payout to all the necessary parties. + /// @dev Note that _splitAddrs and _splitRatios are not checked for validity. Make sure supplied values are correct by using _checkSplits. + /// @dev Sends payments to the network, royalty if applicable, and splits for the rest. + /// @dev Forwards payments to the payment contract if payout is happening in eth. + /// @dev Total amount of ratios should be 100 and is relative to the total ratio left. + /// @param _originContract Contract address of asset triggering a payout. + /// @param _tokenId Token Id of the asset. + /// @param _currencyAddress Address of currency being paid out. + /// @param _amount Total amount to be paid out. + /// @param _seller Address of the person selling the asset. + /// @param _splitAddrs Addresses that funds need to be split against. + /// @param _splitRatios Ratios for split pertaining to each address. + function _payout( + address _originContract, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + address _seller, + address payable[] memory _splitAddrs, + uint8[] memory _splitRatios + ) internal { + require(_splitAddrs.length == _splitRatios.length, "Number of split addresses and ratios must be equal."); + + /* + The overall flow for payouts is: + 1. Payout marketplace fee + 2. Primary/Secondary Payouts + a. Primary -> If space sale, query space operator registry for platform comission and payout + Else query marketplace setting for primary sale comission and payout + b. Secondary -> Query global royalty registry for recipients and amounts and payout + 3. Calculate the amount for each _splitAddr based on remaining amount and payout + */ + + // Recipients of marketplace fee + uint256 remainingAmount = _amount; + + // Marketplace fee + + // Amounts for recipients of marketplace fee + uint256 marketplaceFee = marketplaceSettings.calculateMarketplaceFee(_amount); + + address payable[] memory mktFeeRecip = new address payable[](2); + mktFeeRecip[0] = payable(networkBeneficiary); + mktFeeRecip[1] = payable(IRareStakingRegistry(stakingRegistry).getRewardAccumulatorAddressForUser(_seller)); + mktFeeRecip[1] = mktFeeRecip[1] == address(0) ? payable(networkBeneficiary) : mktFeeRecip[1]; + uint256[] memory mktFee = new uint256[](2); + mktFee[0] = IStakingSettings(address(marketplaceSettings)).calculateMarketplacePayoutFee(_amount); + mktFee[1] = IStakingSettings(address(marketplaceSettings)).calculateStakingFee(_amount); + + _performPayouts(_currencyAddress, marketplaceFee, mktFeeRecip, mktFee); + + if (!marketplaceSettings.hasERC721TokenSold(_originContract, _tokenId)) { + uint256[] memory platformFee = new uint256[](1); + address payable[] memory platformRecip = new address payable[](1); + platformRecip[0] = mktFeeRecip[0]; + + if (spaceOperatorRegistry.isApprovedSpaceOperator(_seller)) { + uint256 platformCommission = spaceOperatorRegistry.getPlatformCommission(_seller); + + remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); + + platformFee[0] = (_amount * platformCommission) / 100; + + _performPayouts(_currencyAddress, platformFee[0], platformRecip, platformFee); + } else { + uint256 platformCommission = + marketplaceSettings.getERC721ContractPrimarySaleFeePercentage(_originContract); + + remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); + + platformFee[0] = (_amount * platformCommission) / 100; + + _performPayouts(_currencyAddress, platformFee[0], platformRecip, platformFee); + } + } else { + (address payable[] memory receivers, uint256[] memory royalties) = + royaltyEngine.getRoyalty(_originContract, _tokenId, _amount); + + uint256 totalRoyalties = 0; + + for (uint256 i = 0; i < royalties.length; i++) { + totalRoyalties += royalties[i]; + } + + remainingAmount -= totalRoyalties; + _performPayouts(_currencyAddress, totalRoyalties, receivers, royalties); + } + + uint256[] memory remainingAmts = new uint256[](_splitAddrs.length); + + uint256 totalSplit = 0; + + for (uint256 i = 0; i < _splitAddrs.length; i++) { + remainingAmts[i] = (remainingAmount * _splitRatios[i]) / 100; + totalSplit += (remainingAmount * _splitRatios[i]) / 100; + } + _performPayouts(_currencyAddress, totalSplit, _splitAddrs, remainingAmts); } - _performPayouts(_currencyAddress, totalSplit, _splitAddrs, remainingAmts); - } - - function _performPayouts( - address _currencyAddress, - uint256 _amount, - address payable[] memory _recipients, - uint256[] memory _amounts - ) internal { - if (_currencyAddress == address(0)) { - (bool success, bytes memory data) = address(payments).call{value: _amount}( - abi.encodeWithSelector(IPayments.payout.selector, _recipients, _amounts) - ); - - require(success, string(data)); - } else { - IERC20 erc20 = IERC20(_currencyAddress); - - for (uint256 i = 0; i < _recipients.length; i++) { - erc20.safeTransfer(_recipients[i], _amounts[i]); - } + + function _performPayouts( + address _currencyAddress, + uint256 _amount, + address payable[] memory _recipients, + uint256[] memory _amounts + ) internal { + if (_currencyAddress == address(0)) { + (bool success, bytes memory data) = address(payments).call{value: _amount}( + abi.encodeWithSelector(IPayments.payout.selector, _recipients, _amounts) + ); + + require(success, string(data)); + } else { + IERC20 erc20 = IERC20(_currencyAddress); + + for (uint256 i = 0; i < _recipients.length; i++) { + erc20.safeTransfer(_recipients[i], _amounts[i]); + } + } } - } -} \ No newline at end of file +} diff --git a/src/marketplace/IRareERC1155Marketplace.sol b/src/marketplace/IRareERC1155Marketplace.sol new file mode 100644 index 0000000..abc002f --- /dev/null +++ b/src/marketplace/IRareERC1155Marketplace.sol @@ -0,0 +1,617 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; + +/// @author SuperRare Labs Inc. +/// @title IRareERC1155Marketplace +/// @notice Interface for RARE Protocol ERC1155 primary mint sales and ERC1155 fixed-price secondary sales. +/// @dev Primary sales are configured per `(collection, tokenId)`. Secondary listings are approval-based and keyed by `(collection, tokenId, seller)`. +/// Secondary listings intentionally do not expire on-chain; they remain fillable until sold, cancelled, or made invalid by seller balance, ERC1155 approval, or currency policy. +interface IRareERC1155Marketplace { + /// @notice Primary mint sale configuration for a collection token id. + struct DirectSaleConfig { + /// @notice Seller/creator that owns the primary sale and receives sale proceeds. + address seller; + /// @notice Currency used for the sale. Zero address indicates ETH. + address currencyAddress; + /// @notice Unit price per ERC1155 token. + uint256 price; + /// @notice Timestamp when minting may begin. + uint256 startTime; + /// @notice Max quantity allowed per mint transaction. Zero means unlimited per transaction. + uint256 maxMints; + /// @notice Recipients that split seller proceeds after seller-side fee deductions. + address payable[] splitRecipients; + /// @notice Percentages corresponding to `splitRecipients`. Must total 100. + uint8[] splitRatios; + } + + /// @notice Merkle allowlist configuration for a token id. + struct AllowListConfig { + /// @notice Merkle root for allowed minters. Zero root disables allowlist enforcement. + bytes32 root; + /// @notice Timestamp when allowlist enforcement expires. + uint256 endTimestamp; + } + + /// @notice Secondary fixed-price listing for an ERC1155 token id. + /// @dev Intentionally has no expiry timestamp or nonce. Product semantics treat listings as standing seller offers + /// that persist until filled, cancelled, or invalidated by balance, approval, or currency approval changes. + struct SalePrice { + /// @notice Currency accepted by the seller. Zero address indicates ETH. + address currencyAddress; + /// @notice Unit price per ERC1155 token. + uint256 price; + /// @notice Remaining quantity available for purchase. + uint256 quantity; + /// @notice Recipients that split seller proceeds after seller-side fee deductions. + address payable[] splitRecipients; + /// @notice Percentages corresponding to `splitRecipients`. Must total 100. + uint8[] splitRatios; + } + + /// @notice Emitted when a creator configures a primary mint sale. + /// @param contractAddress ERC1155 collection address. + /// @param tokenId Token id sold by the primary sale. + /// @param seller Creator/seller that receives sale proceeds. + /// @param currency Sale currency. Zero address indicates ETH. + /// @param price Unit price per token. + /// @param startTime Timestamp when minting may begin. + /// @param maxMints Max quantity per transaction. Zero means unlimited. + /// @param splitRecipients Recipients that split seller proceeds. + /// @param splitRatios Percentages for `splitRecipients`. + event PrepareMintDirectSale( + address indexed contractAddress, + uint256 indexed tokenId, + address indexed seller, + address currency, + uint256 price, + uint256 startTime, + uint256 maxMints, + address payable[] splitRecipients, + uint8[] splitRatios + ); + + /// @notice Emitted when a buyer mints through a primary sale. + /// @param contractAddress ERC1155 collection address. + /// @param tokenId Minted token id. + /// @param buyer Address that paid for and received the mint. + /// @param seller Creator/seller that received proceeds. + /// @param quantity Quantity minted. + /// @param currency Sale currency. Zero address indicates ETH. + /// @param price Unit price paid. + event MintDirectSale( + address indexed contractAddress, + uint256 indexed tokenId, + address indexed buyer, + address seller, + uint256 quantity, + address currency, + uint256 price + ); + + /// @notice Emitted when a token allowlist config is set. + /// @param contractAddress ERC1155 collection address. + /// @param tokenId Token id controlled by the allowlist. + /// @param root Merkle root for allowlisted buyers. + /// @param endTimestamp Timestamp when allowlist enforcement expires. + event SetTokenAllowListConfig( + address indexed contractAddress, uint256 indexed tokenId, bytes32 root, uint256 endTimestamp + ); + + /// @notice Emitted when a per-address mint limit is set for a token id. + /// @param contractAddress ERC1155 collection address. + /// @param tokenId Token id controlled by the limit. + /// @param limit Max quantity each address may mint while the limit is enabled. Zero disables the limit. + event TokenMintLimitSet(address indexed contractAddress, uint256 indexed tokenId, uint256 limit); + + /// @notice Emitted when a per-address transaction limit is set for a token id. + /// @param contractAddress ERC1155 collection address. + /// @param tokenId Token id controlled by the limit. + /// @param limit Max mint transactions each address may submit while the limit is enabled. Zero disables the limit. + event TokenTxLimitSet(address indexed contractAddress, uint256 indexed tokenId, uint256 limit); + + /// @notice Emitted when a seller creates or replaces a secondary fixed-price listing. + /// @param seller Seller that owns the listed ERC1155 balance. + /// @param contractAddress ERC1155 collection address. + /// @param tokenId Listed token id. + /// @param currency Listing currency. Zero address indicates ETH. + /// @param price Unit price per token. + /// @param quantity Quantity listed. + /// @param splitRecipients Recipients that split seller proceeds. + /// @param splitRatios Percentages for `splitRecipients`. + event SalePriceSet( + address indexed seller, + address indexed contractAddress, + uint256 indexed tokenId, + address currency, + uint256 price, + uint256 quantity, + address payable[] splitRecipients, + uint8[] splitRatios + ); + + /// @notice Emitted when a seller cancels a secondary listing. + /// @param seller Seller that cancelled the listing. + /// @param contractAddress ERC1155 collection address. + /// @param tokenId Token id whose listing was cancelled. + event SalePriceCancelled(address indexed seller, address indexed contractAddress, uint256 indexed tokenId); + + /// @notice Emitted when a buyer fills a secondary fixed-price listing. + /// @param seller Seller that transferred the ERC1155 tokens. + /// @param buyer Buyer that paid and received the ERC1155 tokens. + /// @param contractAddress ERC1155 collection address. + /// @param tokenId Purchased token id. + /// @param currency Purchase currency. Zero address indicates ETH. + /// @param price Unit price paid. + /// @param quantity Quantity purchased. + event Sold( + address indexed seller, + address indexed buyer, + address indexed contractAddress, + uint256 tokenId, + address currency, + uint256 price, + uint256 quantity + ); + + /// @notice Emitted when an owner updates a critical marketplace dependency. + /// @param field Config field that was updated. + /// @param dependency New dependency address. + event MarketplaceDependencyUpdated(bytes32 indexed field, address indexed dependency); + + /// @notice Emitted when an owner updates marketplace pause state. + /// @param isPaused True when marketplace writes are paused. + event ContractPausedUpdated(bool isPaused); + + /// @notice Reverted when a write function is called while the marketplace is paused. + error ContractPaused(); + + /// @notice Reverted when a caller is not the owner of a collection. + /// @param _contractAddress Collection address whose owner was checked. + /// @param _account Account that failed the owner check. + error NotContractOwner(address _contractAddress, address _account); + + /// @notice Reverted when a token id has not been created on a collection. + /// @param _contractAddress Collection address. + /// @param _tokenId Missing token id. + error TokenNotFound(address _contractAddress, uint256 _tokenId); + + /// @notice Reverted when a primary mint is attempted before sale configuration exists. + /// @param _contractAddress Collection address. + /// @param _tokenId Token id missing a primary sale config. + error DirectSaleNotConfigured(address _contractAddress, uint256 _tokenId); + + /// @notice Reverted when a quantity argument is zero. + error QuantityCannotBeZero(); + + /// @notice Reverted when a mint would exceed a buyer's per-address mint limit for a token id. + /// @param _contractAddress Collection address. + /// @param _tokenId Token id being minted. + /// @param _account Buyer account. + /// @param _requestedQuantity Requested mint quantity. + /// @param _mintedQuantity Quantity already minted by the account. + /// @param _limit Configured mint limit. + error MintLimitExceeded( + address _contractAddress, + uint256 _tokenId, + address _account, + uint256 _requestedQuantity, + uint256 _mintedQuantity, + uint256 _limit + ); + + /// @notice Reverted when a mint would exceed a buyer's per-address transaction limit for a token id. + /// @param _contractAddress Collection address. + /// @param _tokenId Token id being minted. + /// @param _account Buyer account. + /// @param _usedTransactions Transactions already used by the account. + /// @param _limit Configured transaction limit. + error TransactionLimitExceeded( + address _contractAddress, uint256 _tokenId, address _account, uint256 _usedTransactions, uint256 _limit + ); + + /// @notice Reverted when a mint quantity exceeds the sale's per-transaction max. + /// @param _requestedQuantity Requested mint quantity. + /// @param _maxMints Configured max quantity per transaction. + error MaxMintExceeded(uint256 _requestedQuantity, uint256 _maxMints); + + /// @notice Reverted when a primary mint is attempted before the start time. + /// @param _startTime Configured sale start timestamp. + error SaleNotStarted(uint256 _startTime); + + /// @notice Reverted when a currency is neither ETH nor approved by the token registry. + /// @param _currencyAddress Currency that failed approval. + error CurrencyNotApproved(address _currencyAddress); + + /// @notice Reverted when an ETH purchase sends the wrong `msg.value`. + /// @param _requiredAmount Amount required by the marketplace. + /// @param _suppliedAmount Amount supplied as `msg.value`. + error IncorrectETHAmount(uint256 _requiredAmount, uint256 _suppliedAmount); + + /// @notice Reverted when ETH is supplied for an ERC20 purchase. + error MsgValueUnsupportedForERC20(); + + /// @notice Reverted when an ERC20 transfer receives less or more than expected. + /// @param _currencyAddress ERC20 token address. + /// @param _expectedAmount Amount expected by the marketplace. + /// @param _receivedAmount Amount actually received by the marketplace. + error ERC20FeeOnTransferUnsupported(address _currencyAddress, uint256 _expectedAmount, uint256 _receivedAmount); + + /// @notice Reverted when a caller-supplied price does not match the configured price. + /// @param _suppliedPrice Price supplied by the caller. + /// @param _configuredPrice Price stored in marketplace configuration. + error PriceMismatch(uint256 _suppliedPrice, uint256 _configuredPrice); + + /// @notice Reverted when a caller-supplied currency does not match the configured currency. + /// @param _suppliedCurrency Currency supplied by the caller. + /// @param _configuredCurrency Currency stored in marketplace configuration. + error CurrencyMismatch(address _suppliedCurrency, address _configuredCurrency); + + /// @notice Reverted when a free mint includes ETH. + error MsgValueMustBeZero(); + + /// @notice Reverted when a secondary listing price is zero. + error SalePriceCannotBeZero(); + + /// @notice Reverted when a secondary collection is not a deployed ERC1155 contract. + /// @param _contractAddress Collection address that failed validation. + error InvalidERC1155Contract(address _contractAddress); + + /// @notice Reverted when a buyer tries to fill their own secondary listing. + /// @param _seller Seller whose listing was targeted. + error SelfPurchaseUnsupported(address _seller); + + /// @notice Reverted when a seller does not have enough ERC1155 balance for a listing or purchase. + /// @param _account Account whose balance was checked. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id whose balance was checked. + /// @param _requestedQuantity Quantity required by the operation. + /// @param _availableQuantity Quantity available at check time. + error InsufficientTokenBalance( + address _account, + address _contractAddress, + uint256 _tokenId, + uint256 _requestedQuantity, + uint256 _availableQuantity + ); + + /// @notice Reverted when the marketplace is not approved to transfer a seller's ERC1155 tokens. + /// @param _account ERC1155 owner that must approve the marketplace. + /// @param _contractAddress ERC1155 collection address. + error MarketplaceNotApproved(address _account, address _contractAddress); + + /// @notice Reverted when no secondary listing exists for a seller and token id. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id requested. + /// @param _seller Seller whose listing was requested. + error SalePriceDoesNotExist(address _contractAddress, uint256 _tokenId, address _seller); + + /// @notice Reverted when a purchase quantity exceeds listed quantity. + /// @param _requestedQuantity Quantity requested by the buyer. + /// @param _availableQuantity Quantity currently listed. + error QuantityExceedsSalePriceQuantity(uint256 _requestedQuantity, uint256 _availableQuantity); + + /// @notice Reverted when an ERC1155 transfer completes without exact seller and buyer balance deltas. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id transferred. + /// @param _seller Seller whose balance should decrease. + /// @param _buyer Buyer whose balance should increase. + /// @param _quantity Quantity that should be transferred. + error InvalidERC1155Transfer( + address _contractAddress, uint256 _tokenId, address _seller, address _buyer, uint256 _quantity + ); + + /// @notice Reverted when royalties returned by the royalty engine exceed sale proceeds. + /// @param _royalties Total royalties returned by the royalty engine. + /// @param _saleAmount Gross sale amount before royalty deduction. + error RoyaltiesExceedSaleAmount(uint256 _royalties, uint256 _saleAmount); + + /// @notice Reverted when the staking fee exceeds the buyer-paid marketplace fee. + /// @param _marketplaceFee Total marketplace fee collected from the buyer. + /// @param _stakingFee Staking portion requested by staking settings. + error StakingFeeExceedsMarketplaceFee(uint256 _marketplaceFee, uint256 _stakingFee); + + /// @notice Reverted when primary platform commission exceeds 100%. + /// @param _platformCommission Supplied primary platform commission percentage. + /// @param _maxPlatformCommission Maximum supported platform commission percentage. + error PlatformCommissionExceeded(uint256 _platformCommission, uint256 _maxPlatformCommission); + + /// @notice Reverted when a sale config has no split recipients. + error SplitRecipientsRequired(); + + /// @notice Reverted when a sale config has more split recipients than supported. + /// @param _recipientsLength Supplied recipient count. + /// @param _maxRecipients Maximum supported recipient count. + error SplitRecipientsExceededMax(uint256 _recipientsLength, uint256 _maxRecipients); + + /// @notice Reverted when split recipient and ratio arrays have different lengths. + /// @param _recipientsLength Supplied recipient count. + /// @param _ratiosLength Supplied ratio count. + error SplitLengthMismatch(uint256 _recipientsLength, uint256 _ratiosLength); + + /// @notice Reverted when a split recipient is the zero address. + /// @param _index Index of the invalid split recipient. + error SplitRecipientCannotBeZero(uint256 _index); + + /// @notice Reverted when a split ratio is zero. + /// @param _index Index of the invalid split ratio. + error SplitRatioCannotBeZero(uint256 _index); + + /// @notice Reverted when split ratios do not total 100. + /// @param _totalRatio Supplied ratio total. + /// @param _requiredTotal Required ratio total. + error SplitTotalInvalid(uint256 _totalRatio, uint256 _requiredTotal); + + /// @notice Reverted when ETH payout through the Payments contract fails. + /// @param _revertData Raw revert data returned by the failed payout call. + error PayoutFailed(bytes _revertData); + + /// @notice Reverted when payout recipients and amounts have different lengths. + /// @param _recipientsLength Number of payout recipients supplied. + /// @param _amountsLength Number of payout amounts supplied. + error PayoutLengthMismatch(uint256 _recipientsLength, uint256 _amountsLength); + + /// @notice Reverted when payout amounts do not sum to the expected batch amount. + /// @param _expectedAmount Amount expected to be paid by the batch. + /// @param _actualAmount Sum of supplied payout amounts. + error PayoutTotalMismatch(uint256 _expectedAmount, uint256 _actualAmount); + + /// @notice Reverted when a buyer is not included in an active allowlist. + /// @param _account Buyer account that failed allowlist verification. + error AddressNotAllowlisted(address _account); + + /// @notice Reverted when ownership cannot be read from a collection. + /// @param _contractAddress Contract that did not expose a valid `owner()`. + error ContractHasNoOwner(address _contractAddress); + + /// @notice Reverted when an approval manager address is zero. + error ApprovalManagerCannotBeZero(); + + /// @notice Reverted when a required market config dependency address is zero. + /// @param _field Name of the dependency field that was zero. + error MarketConfigAddressCannotBeZero(bytes32 _field); + + /// @notice Initializes the UUPS marketplace implementation behind a proxy. + /// @param _networkBeneficiary Address receiving network marketplace fees. + /// @param _marketplaceSettings Marketplace settings contract. + /// @param _spaceOperatorRegistry Space operator registry contract. + /// @param _royaltyEngine Royalty engine contract. + /// @param _payments Payments contract used for ETH fan-out. + /// @param _approvedTokenRegistry Registry of approved ERC20 currencies. + /// @param _stakingSettings Staking fee settings contract. + /// @param _stakingRegistry Staking registry contract. + /// @param _erc20ApprovalManager ERC20 transfer manager for buyer currency approvals. + /// @param _erc721ApprovalManager ERC721 transfer manager kept in shared V2 market config. + /// @param _erc1155ApprovalManager ERC1155 transfer manager for seller token approvals. + function initialize( + address _networkBeneficiary, + address _marketplaceSettings, + address _spaceOperatorRegistry, + address _royaltyEngine, + address _payments, + address _approvedTokenRegistry, + address _stakingSettings, + address _stakingRegistry, + address _erc20ApprovalManager, + address _erc721ApprovalManager, + address _erc1155ApprovalManager + ) external; + + /// @notice Configures or replaces a primary mint sale for a token id. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to sell through primary minting. + /// @param _currencyAddress Sale currency. Zero address indicates ETH. + /// @param _price Unit price per token. + /// @param _startTime Timestamp when minting may begin. + /// @param _maxMints Max quantity per mint transaction. Zero means unlimited. + /// @param _splitRecipients Recipients that split seller proceeds. + /// @param _splitRatios Percentages for `splitRecipients`, totaling 100. + function prepareMintDirectSale( + address _contractAddress, + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _startTime, + uint256 _maxMints, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external; + + /// @notice Mints tokens from a configured primary sale. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to mint. + /// @param _currencyAddress Currency expected by the buyer. + /// @param _price Unit price expected by the buyer. + /// @param _quantity Quantity to mint. + /// @param _proof Merkle proof for active allowlist sales. + function mintDirectSale( + address _contractAddress, + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + bytes32[] calldata _proof + ) external payable; + + /// @notice Sets a token id allowlist configuration. + /// @param _root Merkle root for allowlisted minters. Zero root disables allowlist enforcement. + /// @param _endTimestamp Timestamp when allowlist enforcement expires. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id controlled by the allowlist. + function setTokenAllowListConfig(bytes32 _root, uint256 _endTimestamp, address _contractAddress, uint256 _tokenId) + external; + + /// @notice Sets the max quantity each address may mint for a token id while the limit is enabled. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id controlled by the limit. + /// @param _limit Max mint quantity per address. Zero disables the limit and disabled periods are not counted. + function setTokenMintLimit(address _contractAddress, uint256 _tokenId, uint256 _limit) external; + + /// @notice Sets the max number of mint transactions each address may submit for a token id while the limit is enabled. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id controlled by the limit. + /// @param _limit Max transactions per address. Zero disables the limit and disabled periods are not counted. + function setTokenTxLimit(address _contractAddress, uint256 _tokenId, uint256 _limit) external; + + /// @notice Creates or replaces a secondary fixed-price listing. + /// @dev Listings intentionally have no expiry timestamp and can be cancelled by the seller with `cancelSalePrice`. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to list. + /// @param _currencyAddress Listing currency. Zero address indicates ETH. + /// @param _price Unit price per token. + /// @param _quantity Quantity listed. + /// @param _splitRecipients Recipients that split seller proceeds. + /// @param _splitRatios Percentages for `splitRecipients`, totaling 100. + function setSalePrice( + address _contractAddress, + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external; + + /// @notice Cancels the caller's secondary listing for a token id. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Listed token id. + function cancelSalePrice(address _contractAddress, uint256 _tokenId) external; + + /// @notice Buys tokens from a seller's secondary fixed-price listing. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to buy. + /// @param _seller Seller whose listing is being filled. + /// @param _currencyAddress Currency expected by the buyer. + /// @param _price Unit price expected by the buyer. + /// @param _quantity Quantity to buy. + function buy( + address _contractAddress, + uint256 _tokenId, + address _seller, + address _currencyAddress, + uint256 _price, + uint256 _quantity + ) external payable; + + /// @notice Returns the primary mint sale config for a token id. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to inspect. + /// @return Primary sale config for the token id. + function getDirectSaleConfig(address _contractAddress, uint256 _tokenId) + external + view + returns (DirectSaleConfig memory); + + /// @notice Returns the allowlist config for a token id. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to inspect. + /// @return Allowlist config for the token id. + function getTokenAllowListConfig(address _contractAddress, uint256 _tokenId) + external + view + returns (AllowListConfig memory); + + /// @notice Returns the per-address mint quantity limit for a token id. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to inspect. + /// @return Mint quantity limit. Zero means disabled/unlimited. + function getTokenMintLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256); + + /// @notice Returns quantity minted by an address for a token id while the mint limit was enabled. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to inspect. + /// @param _address Address whose minted quantity is returned. + /// @return Quantity minted by `_address` during enabled mint-limit periods. + function getTokenMintsPerAddress(address _contractAddress, uint256 _tokenId, address _address) + external + view + returns (uint256); + + /// @notice Returns the per-address transaction limit for a token id. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to inspect. + /// @return Transaction limit. Zero means disabled/unlimited. + function getTokenTxLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256); + + /// @notice Returns mint transactions used by an address for a token id while the tx limit was enabled. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to inspect. + /// @param _address Address whose transaction count is returned. + /// @return Number of mint transactions used by `_address` during enabled tx-limit periods. + function getTokenTxsPerAddress(address _contractAddress, uint256 _tokenId, address _address) + external + view + returns (uint256); + + /// @notice Returns a seller's secondary fixed-price listing. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to inspect. + /// @param _seller Seller whose listing is returned. + /// @return Secondary fixed-price listing for the seller and token id. + function getSalePrice(address _contractAddress, uint256 _tokenId, address _seller) + external + view + returns (SalePrice memory); + + /// @notice Returns the marketplace dependency configuration. + /// @return Current market config struct. + function getMarketConfig() external view returns (MarketConfigV2.Config memory); + + /// @notice Returns the ERC1155 approval manager used for secondary transfers. + /// @return Current ERC1155 approval manager address. + function getERC1155ApprovalManager() external view returns (address); + + /// @notice Returns whether marketplace writes are paused. + /// @return True when paused. + function isPaused() external view returns (bool); + + /// @notice Updates the network beneficiary address. + /// @param _networkBeneficiary New network beneficiary. + function setNetworkBeneficiary(address _networkBeneficiary) external; + + /// @notice Updates the marketplace settings contract address. + /// @param _marketplaceSettings New marketplace settings contract. + function setMarketplaceSettings(address _marketplaceSettings) external; + + /// @notice Updates the space operator registry address. + /// @param _spaceOperatorRegistry New space operator registry contract. + function setSpaceOperatorRegistry(address _spaceOperatorRegistry) external; + + /// @notice Updates the royalty engine address. + /// @param _royaltyEngine New royalty engine contract. + function setRoyaltyEngine(address _royaltyEngine) external; + + /// @notice Updates the Payments contract address used for ETH fan-out. + /// @param _payments New payments contract. + function setPayments(address _payments) external; + + /// @notice Updates the approved token registry address. + /// @param _approvedTokenRegistry New approved token registry contract. + function setApprovedTokenRegistry(address _approvedTokenRegistry) external; + + /// @notice Updates the staking settings address. + /// @param _stakingSettings New staking settings contract. + function setStakingSettings(address _stakingSettings) external; + + /// @notice Updates the staking registry address. + /// @param _stakingRegistry New staking registry contract. + function setStakingRegistry(address _stakingRegistry) external; + + /// @notice Updates the ERC20 approval manager address. + /// @param _erc20ApprovalManager New ERC20 approval manager contract. + function setERC20ApprovalManager(address _erc20ApprovalManager) external; + + /// @notice Updates the ERC721 approval manager address retained by the shared V2 market config. + /// @param _erc721ApprovalManager New ERC721 approval manager contract. + function setERC721ApprovalManager(address _erc721ApprovalManager) external; + + /// @notice Updates the ERC1155 approval manager address. + /// @param _erc1155ApprovalManager New ERC1155 approval manager contract. + function setERC1155ApprovalManager(address _erc1155ApprovalManager) external; + + /// @notice Pauses or unpauses marketplace write operations. + /// @param _isPaused New pause state. + function setContractPaused(bool _isPaused) external; +} diff --git a/src/marketplace/RareERC1155Marketplace.sol b/src/marketplace/RareERC1155Marketplace.sol new file mode 100644 index 0000000..2b54ca8 --- /dev/null +++ b/src/marketplace/RareERC1155Marketplace.sol @@ -0,0 +1,1073 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IERC20} from "openzeppelin-contracts/token/ERC20/IERC20.sol"; +import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; +import {ERC165Checker} from "openzeppelin-contracts/utils/introspection/ERC165Checker.sol"; +import {OwnableUpgradeable} from "openzeppelin-contracts-upgradeable/access/OwnableUpgradeable.sol"; +import {Initializable} from "openzeppelin-contracts-upgradeable/proxy/utils/Initializable.sol"; +import {ReentrancyGuardUpgradeable} from "openzeppelin-contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; +import {UUPSUpgradeable} from "openzeppelin-contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import {SafeERC20} from "openzeppelin-contracts/token/ERC20/utils/SafeERC20.sol"; + +import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; +import {IRareERC1155} from "../token/ERC1155/IRareERC1155.sol"; +import {IRareERC1155Marketplace} from "./IRareERC1155Marketplace.sol"; +import {IERC1155ApprovalManager} from "../v2/approver/ERC1155/IERC1155ApprovalManager.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155Marketplace +/// @notice Primary mint sales for RARE Protocol ERC1155 tokens and fixed-price resale listings for ERC1155 tokens. +/// @dev UUPS-upgradeable marketplace that keeps ERC1155 sale semantics separate from ERC721 marketplace logic. +contract RareERC1155Marketplace is + Initializable, + IRareERC1155Marketplace, + OwnableUpgradeable, + ReentrancyGuardUpgradeable, + UUPSUpgradeable +{ + using SafeERC20 for IERC20; + using MarketConfigV2 for MarketConfigV2.Config; + + /// @notice RARE Protocol marketplace dependency bundle. + MarketConfigV2.Config private marketConfig; + + /// @notice ERC1155 transfer manager approved by sellers and callable by this marketplace. + IERC1155ApprovalManager private erc1155ApprovalManager; + + /// @notice Market config field label for zero-address validation. + bytes32 private constant NETWORK_BENEFICIARY_FIELD = "NETWORK_BENEFICIARY"; + + /// @notice Market config field label for zero-address validation. + bytes32 private constant MARKETPLACE_SETTINGS_FIELD = "MARKETPLACE_SETTINGS"; + + /// @notice Market config field label for zero-address validation. + bytes32 private constant SPACE_OPERATOR_REGISTRY_FIELD = "SPACE_OPERATOR_REGISTRY"; + + /// @notice Market config field label for zero-address validation. + bytes32 private constant ROYALTY_ENGINE_FIELD = "ROYALTY_ENGINE"; + + /// @notice Market config field label for zero-address validation. + bytes32 private constant PAYMENTS_FIELD = "PAYMENTS"; + + /// @notice Market config field label for zero-address validation. + bytes32 private constant APPROVED_TOKEN_REGISTRY_FIELD = "APPROVED_TOKEN_REGISTRY"; + + /// @notice Market config field label for zero-address validation. + bytes32 private constant STAKING_SETTINGS_FIELD = "STAKING_SETTINGS"; + + /// @notice Market config field label for zero-address validation. + bytes32 private constant STAKING_REGISTRY_FIELD = "STAKING_REGISTRY"; + + /// @notice Market config field label for ERC20 approval manager updates. + bytes32 private constant ERC20_APPROVAL_MANAGER_FIELD = "ERC20_APPROVAL_MANAGER"; + + /// @notice Market config field label for ERC721 approval manager updates. + bytes32 private constant ERC721_APPROVAL_MANAGER_FIELD = "ERC721_APPROVAL_MANAGER"; + + /// @notice Config field label for ERC1155 approval manager updates. + bytes32 private constant ERC1155_APPROVAL_MANAGER_FIELD = "ERC1155_APPROVAL_MANAGER"; + + /// @notice Primary mint sale configuration by collection and token id. + mapping(address => mapping(uint256 => IRareERC1155Marketplace.DirectSaleConfig)) private directSaleConfigs; + + /// @notice Allowlist configuration by collection and token id. + mapping(address => mapping(uint256 => IRareERC1155Marketplace.AllowListConfig)) private tokenAllowlistRoots; + + /// @notice Per-address mint quantity limit by collection and token id. + mapping(address => mapping(uint256 => uint256)) private tokenMintLimit; + + /// @notice Quantity minted per buyer by collection and token id. + mapping(address => mapping(uint256 => mapping(address => uint256))) private tokenMintsPerAddress; + + /// @notice Per-address mint transaction limit by collection and token id. + mapping(address => mapping(uint256 => uint256)) private tokenTxLimit; + + /// @notice Mint transaction count per buyer by collection and token id. + mapping(address => mapping(uint256 => mapping(address => uint256))) private tokenTxsPerAddress; + + /// @notice Secondary fixed-price listings by collection, token id, and seller. + /// @dev Listings intentionally do not carry expiry timestamps or seller-wide nonces. + /// Sellers cancel standing offers explicitly, and buys revalidate balance, approval, currency, price, and quantity. + mapping(address => mapping(uint256 => mapping(address => IRareERC1155Marketplace.SalePrice))) private salePrices; + + /// @notice Whether marketplace value-moving and listing-creation operations are paused. + bool private paused; + + /// @notice Ensures marketplace actions that create listings or move value are not paused. + modifier notPaused() { + // Atomic guard: pause state blocks marketplace writes before any mutation or transfer. + if (paused) revert ContractPaused(); + _; + } + + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + + /// @notice Initializes the UUPS marketplace implementation behind a proxy. + /// @dev Stores the market config dependency bundle and initializes inherited upgradeability modules. + /// @param _networkBeneficiary Address receiving network marketplace fees. + /// @param _marketplaceSettings Marketplace settings contract. + /// @param _spaceOperatorRegistry Space operator registry contract. + /// @param _royaltyEngine Royalty engine contract. + /// @param _payments Payments contract used for ETH fan-out. + /// @param _approvedTokenRegistry Registry of approved ERC20 currencies. + /// @param _stakingSettings Staking fee settings contract. + /// @param _stakingRegistry Staking registry contract. + /// @param _erc20ApprovalManager ERC20 transfer manager for buyer currency approvals. + /// @param _erc721ApprovalManager ERC721 transfer manager kept in shared V2 market config. + /// @param _erc1155ApprovalManager ERC1155 transfer manager for seller token approvals. + function initialize( + address _networkBeneficiary, + address _marketplaceSettings, + address _spaceOperatorRegistry, + address _royaltyEngine, + address _payments, + address _approvedTokenRegistry, + address _stakingSettings, + address _stakingRegistry, + address _erc20ApprovalManager, + address _erc721ApprovalManager, + address _erc1155ApprovalManager + ) external initializer { + // Atomic guards: required config dependencies must be concrete before they are stored. + _validateMarketConfigAddress(_networkBeneficiary, NETWORK_BENEFICIARY_FIELD); + _validateMarketConfigAddress(_marketplaceSettings, MARKETPLACE_SETTINGS_FIELD); + _validateMarketConfigAddress(_spaceOperatorRegistry, SPACE_OPERATOR_REGISTRY_FIELD); + _validateMarketConfigAddress(_royaltyEngine, ROYALTY_ENGINE_FIELD); + _validateMarketConfigAddress(_payments, PAYMENTS_FIELD); + _validateMarketConfigAddress(_approvedTokenRegistry, APPROVED_TOKEN_REGISTRY_FIELD); + _validateMarketConfigAddress(_stakingSettings, STAKING_SETTINGS_FIELD); + _validateMarketConfigAddress(_stakingRegistry, STAKING_REGISTRY_FIELD); + _validateApprovalManager(_erc20ApprovalManager); + _validateApprovalManager(_erc721ApprovalManager); + _validateApprovalManager(_erc1155ApprovalManager); + + // State write: persist all marketplace dependency addresses in the shared config struct. + marketConfig = MarketConfigV2.generateMarketConfig( + _networkBeneficiary, + _marketplaceSettings, + _spaceOperatorRegistry, + _royaltyEngine, + _payments, + _approvedTokenRegistry, + _stakingSettings, + _stakingRegistry, + _erc20ApprovalManager, + _erc721ApprovalManager + ); + erc1155ApprovalManager = IERC1155ApprovalManager(_erc1155ApprovalManager); + + // Initializer calls: set up ownership, reentrancy guard, and UUPS storage for the proxy. + __Ownable_init(); + __ReentrancyGuard_init(); + __UUPSUpgradeable_init(); + } + + /// @notice Authorizes UUPS implementation upgrades. + /// @dev Restricted to the marketplace owner by `onlyOwner`. + /// @param _newImplementation New implementation address requested by the proxy upgrade flow. + function _authorizeUpgrade(address _newImplementation) internal view override onlyOwner { + // Authorization hook: the presence of onlyOwner is the atomic upgrade permission check. + _newImplementation; + } + + /// @inheritdoc IRareERC1155Marketplace + function prepareMintDirectSale( + address _contractAddress, + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _startTime, + uint256 _maxMints, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external notPaused { + // Atomic ownership check: only the collection owner can configure primary mint sales. + if (!_isContractOwner(_contractAddress, msg.sender)) { + revert NotContractOwner(_contractAddress, msg.sender); + } + + // Atomic config checks: sale currency and seller split configuration must be valid before storage writes. + _checkIfCurrencyIsApproved(_currencyAddress); + _checkSplits(_splitRecipients, _splitRatios); + + _revertIfTokenNotFound(_contractAddress, _tokenId); + + // State write: replace the primary sale config for this collection and token id. + directSaleConfigs[_contractAddress][_tokenId] = IRareERC1155Marketplace.DirectSaleConfig( + msg.sender, _currencyAddress, _price, _startTime, _maxMints, _splitRecipients, _splitRatios + ); + + emit PrepareMintDirectSale( + _contractAddress, + _tokenId, + msg.sender, + _currencyAddress, + _price, + _startTime, + _maxMints, + _splitRecipients, + _splitRatios + ); + } + + /// @inheritdoc IRareERC1155Marketplace + function mintDirectSale( + address _contractAddress, + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + bytes32[] calldata _proof + ) external payable nonReentrant notPaused { + // Storage read: copy primary sale config for consistent validation and payout inputs. + IRareERC1155Marketplace.DirectSaleConfig memory directSaleConfig = directSaleConfigs[_contractAddress][_tokenId]; + + // Atomic guards: ensure sale existence, current seller ownership, allowlist membership, and non-zero quantity. + if (directSaleConfig.seller == address(0)) revert DirectSaleNotConfigured(_contractAddress, _tokenId); + if (!_isContractOwner(_contractAddress, directSaleConfig.seller)) { + revert NotContractOwner(_contractAddress, directSaleConfig.seller); + } + _enforceTokenAllowList(_contractAddress, _tokenId, msg.sender, _proof); + + if (_quantity == 0) revert QuantityCannotBeZero(); + + // Atomic mint-limit check: validate requested quantity against buyer's enabled-period mint count. + uint256 mintLimit = tokenMintLimit[_contractAddress][_tokenId]; + uint256 currentMints = tokenMintsPerAddress[_contractAddress][_tokenId][msg.sender]; + if (mintLimit != 0 && currentMints + _quantity > mintLimit) { + revert MintLimitExceeded(_contractAddress, _tokenId, msg.sender, _quantity, currentMints, mintLimit); + } + + // Atomic tx-limit check: validate this transaction against buyer's enabled-period transaction count. + uint256 txLimit = tokenTxLimit[_contractAddress][_tokenId]; + uint256 currentTxs = tokenTxsPerAddress[_contractAddress][_tokenId][msg.sender]; + if (txLimit != 0 && currentTxs + 1 > txLimit) { + revert TransactionLimitExceeded(_contractAddress, _tokenId, msg.sender, currentTxs, txLimit); + } + + // Atomic sale-parameter checks: buyer-supplied price and currency must match the stored config. + if (directSaleConfig.maxMints != 0 && _quantity > directSaleConfig.maxMints) { + revert MaxMintExceeded(_quantity, directSaleConfig.maxMints); + } + if (directSaleConfig.startTime > block.timestamp) revert SaleNotStarted(directSaleConfig.startTime); + if (_price != directSaleConfig.price) revert PriceMismatch(_price, directSaleConfig.price); + _checkIfCurrencyIsApproved(_currencyAddress); + if (directSaleConfig.currencyAddress != _currencyAddress) { + revert CurrencyMismatch(_currencyAddress, directSaleConfig.currencyAddress); + } + + // Price calculation: unit price multiplied by ERC1155 quantity before fee calculation. + uint256 totalPrice = _quantity * _price; + + if (directSaleConfig.price == 0) { + // Atomic free-mint guard: free mints must not leave ETH stuck in the marketplace. + if (msg.value != 0) revert MsgValueMustBeZero(); + } else { + // Payment pull: collect sale amount plus marketplace fee before minting. + _checkAmountAndTransfer( + _currencyAddress, totalPrice + marketConfig.marketplaceSettings.calculateMarketplaceFee(totalPrice) + ); + } + + if (tokenMintLimit[_contractAddress][_tokenId] > 0) { + // State write: record quantity minted while this token's mint limit is enabled. + tokenMintsPerAddress[_contractAddress][_tokenId][msg.sender] += _quantity; + } + + if (tokenTxLimit[_contractAddress][_tokenId] > 0) { + // State write: record this mint transaction while this token's tx limit is enabled. + tokenTxsPerAddress[_contractAddress][_tokenId][msg.sender] += 1; + } + + // External mint: collection must have approved this marketplace as minter. + IRareERC1155(_contractAddress).mintTo(msg.sender, _tokenId, _quantity); + + if (directSaleConfig.price != 0) { + // Payout fan-out: distribute collected primary sale funds after successful mint. + _payoutPrimary( + _contractAddress, + _currencyAddress, + totalPrice, + directSaleConfig.seller, + directSaleConfig.splitRecipients, + directSaleConfig.splitRatios + ); + } + + emit MintDirectSale( + _contractAddress, _tokenId, msg.sender, directSaleConfig.seller, _quantity, _currencyAddress, _price + ); + } + + /// @inheritdoc IRareERC1155Marketplace + function setTokenAllowListConfig(bytes32 _root, uint256 _endTimestamp, address _contractAddress, uint256 _tokenId) + external + { + // Atomic ownership check: only the collection owner can change token allowlist settings. + if (!_isContractOwner(_contractAddress, msg.sender)) revert NotContractOwner(_contractAddress, msg.sender); + _revertIfTokenNotFound(_contractAddress, _tokenId); + + // State write: replace allowlist root and expiry for the token id. + tokenAllowlistRoots[_contractAddress][_tokenId] = IRareERC1155Marketplace.AllowListConfig(_root, _endTimestamp); + emit SetTokenAllowListConfig(_contractAddress, _tokenId, _root, _endTimestamp); + } + + /// @inheritdoc IRareERC1155Marketplace + function setTokenMintLimit(address _contractAddress, uint256 _tokenId, uint256 _limit) external { + // Atomic ownership check: only the collection owner can change mint limits. + if (!_isContractOwner(_contractAddress, msg.sender)) revert NotContractOwner(_contractAddress, msg.sender); + _revertIfTokenNotFound(_contractAddress, _tokenId); + + // State write: replace per-address quantity limit for the token id. + tokenMintLimit[_contractAddress][_tokenId] = _limit; + emit TokenMintLimitSet(_contractAddress, _tokenId, _limit); + } + + /// @inheritdoc IRareERC1155Marketplace + function setTokenTxLimit(address _contractAddress, uint256 _tokenId, uint256 _limit) external { + // Atomic ownership check: only the collection owner can change transaction limits. + if (!_isContractOwner(_contractAddress, msg.sender)) revert NotContractOwner(_contractAddress, msg.sender); + _revertIfTokenNotFound(_contractAddress, _tokenId); + + // State write: replace per-address transaction limit for the token id. + tokenTxLimit[_contractAddress][_tokenId] = _limit; + emit TokenTxLimitSet(_contractAddress, _tokenId, _limit); + } + + /// @inheritdoc IRareERC1155Marketplace + function setSalePrice( + address _contractAddress, + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external notPaused { + // Atomic config checks: listing currency, split recipients, price, and quantity must be valid. + _checkIfCurrencyIsApproved(_currencyAddress); + _checkSplits(_splitRecipients, _splitRatios); + _validateERC1155Contract(_contractAddress); + if (_price == 0) revert SalePriceCannotBeZero(); + if (_quantity == 0) revert QuantityCannotBeZero(); + + // External reads: verify seller balance and transfer approval at list time. + IERC1155 erc1155 = IERC1155(_contractAddress); + uint256 sellerBalance = erc1155.balanceOf(msg.sender, _tokenId); + if (sellerBalance < _quantity) { + revert InsufficientTokenBalance(msg.sender, _contractAddress, _tokenId, _quantity, sellerBalance); + } + if (!erc1155.isApprovedForAll(msg.sender, address(erc1155ApprovalManager))) { + revert MarketplaceNotApproved(msg.sender, _contractAddress); + } + + // State write: create or replace seller's approval-based fixed-price listing. + salePrices[_contractAddress][_tokenId][msg.sender] = + IRareERC1155Marketplace.SalePrice(_currencyAddress, _price, _quantity, _splitRecipients, _splitRatios); + + emit SalePriceSet( + msg.sender, _contractAddress, _tokenId, _currencyAddress, _price, _quantity, _splitRecipients, _splitRatios + ); + } + + /// @inheritdoc IRareERC1155Marketplace + function cancelSalePrice(address _contractAddress, uint256 _tokenId) external { + if (salePrices[_contractAddress][_tokenId][msg.sender].quantity == 0) { + return; + } + + // State delete: remove caller's active listing for this collection and token id. + delete salePrices[_contractAddress][_tokenId][msg.sender]; + + emit SalePriceCancelled(msg.sender, _contractAddress, _tokenId); + } + + /// @inheritdoc IRareERC1155Marketplace + function buy( + address _contractAddress, + uint256 _tokenId, + address _seller, + address _currencyAddress, + uint256 _price, + uint256 _quantity + ) external payable nonReentrant notPaused { + // Atomic guard: secondary fills must buy at least one token. + if (_quantity == 0) revert QuantityCannotBeZero(); + if (msg.sender == _seller) revert SelfPurchaseUnsupported(_seller); + + // Atomic currency check: rejected currencies cannot be used even for stale listings. + _checkIfCurrencyIsApproved(_currencyAddress); + _validateERC1155Contract(_contractAddress); + + // Storage pointer: mutate seller listing quantity only after all buy-time checks pass. + IRareERC1155Marketplace.SalePrice storage salePrice = salePrices[_contractAddress][_tokenId][_seller]; + + // Atomic listing checks: listing must exist and match buyer-supplied terms. + if (salePrice.quantity == 0) revert SalePriceDoesNotExist(_contractAddress, _tokenId, _seller); + if (salePrice.currencyAddress != _currencyAddress) { + revert CurrencyMismatch(_currencyAddress, salePrice.currencyAddress); + } + if (salePrice.price != _price) revert PriceMismatch(_price, salePrice.price); + if (salePrice.quantity < _quantity) revert QuantityExceedsSalePriceQuantity(_quantity, salePrice.quantity); + + // External reads: recheck seller balance and approval at buy time because listings are not escrowed. + IERC1155 erc1155 = IERC1155(_contractAddress); + uint256 sellerBalance = erc1155.balanceOf(_seller, _tokenId); + if (sellerBalance < _quantity) { + revert InsufficientTokenBalance(_seller, _contractAddress, _tokenId, _quantity, sellerBalance); + } + if (!erc1155.isApprovedForAll(_seller, address(erc1155ApprovalManager))) { + revert MarketplaceNotApproved(_seller, _contractAddress); + } + + // Payment pull: collect sale amount plus marketplace fee before moving the ERC1155. + uint256 totalPrice = _quantity * _price; + _checkAmountAndTransfer( + _currencyAddress, totalPrice + marketConfig.marketplaceSettings.calculateMarketplaceFee(totalPrice) + ); + + // State write: decrement listed quantity before the external ERC1155 transfer. + salePrice.quantity -= _quantity; + + // Memory copies: preserve split data before possibly deleting the listing. + address payable[] memory splitRecipients = salePrice.splitRecipients; + uint8[] memory splitRatios = salePrice.splitRatios; + if (salePrice.quantity == 0) { + // State delete: clear listing storage once the final listed quantity is sold. + delete salePrices[_contractAddress][_tokenId][_seller]; + } + + // Balance snapshots: used to reject non-standard ERC1155 transfers that do not move the exact quantity. + uint256 sellerBalanceBeforeTransfer = erc1155.balanceOf(_seller, _tokenId); + uint256 buyerBalanceBeforeTransfer = erc1155.balanceOf(msg.sender, _tokenId); + if (sellerBalanceBeforeTransfer < _quantity) { + revert InsufficientTokenBalance(_seller, _contractAddress, _tokenId, _quantity, sellerBalanceBeforeTransfer); + } + + // External transfer: move ERC1155 tokens through the approved transfer manager. + erc1155ApprovalManager.safeTransferFrom(_contractAddress, _seller, msg.sender, _tokenId, _quantity, ""); + + if ( + erc1155.balanceOf(_seller, _tokenId) != sellerBalanceBeforeTransfer - _quantity + || erc1155.balanceOf(msg.sender, _tokenId) != buyerBalanceBeforeTransfer + _quantity + ) { + revert InvalidERC1155Transfer(_contractAddress, _tokenId, _seller, msg.sender, _quantity); + } + + // Payout fan-out: distribute collected secondary sale funds after token transfer. + _payoutSecondary( + _contractAddress, _tokenId, _currencyAddress, totalPrice, _seller, splitRecipients, splitRatios + ); + + emit Sold(_seller, msg.sender, _contractAddress, _tokenId, _currencyAddress, _price, _quantity); + } + + /// @notice Returns the primary mint sale config for a token id. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to inspect. + /// @return Primary sale config for the token id. + function getDirectSaleConfig(address _contractAddress, uint256 _tokenId) + external + view + returns (IRareERC1155Marketplace.DirectSaleConfig memory) + { + return directSaleConfigs[_contractAddress][_tokenId]; + } + + /// @notice Returns the allowlist config for a token id. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to inspect. + /// @return Allowlist config for the token id. + function getTokenAllowListConfig(address _contractAddress, uint256 _tokenId) + external + view + returns (IRareERC1155Marketplace.AllowListConfig memory) + { + return tokenAllowlistRoots[_contractAddress][_tokenId]; + } + + /// @notice Returns the per-address mint quantity limit for a token id. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to inspect. + /// @return Mint quantity limit. Zero means unlimited. + function getTokenMintLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256) { + return tokenMintLimit[_contractAddress][_tokenId]; + } + + /// @notice Returns quantity minted by an address for a token id. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to inspect. + /// @param _address Address whose minted quantity is returned. + /// @return Quantity minted by `_address`. + function getTokenMintsPerAddress(address _contractAddress, uint256 _tokenId, address _address) + external + view + returns (uint256) + { + return tokenMintsPerAddress[_contractAddress][_tokenId][_address]; + } + + /// @notice Returns the per-address transaction limit for a token id. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to inspect. + /// @return Transaction limit. Zero means unlimited. + function getTokenTxLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256) { + return tokenTxLimit[_contractAddress][_tokenId]; + } + + /// @notice Returns mint transactions used by an address for a token id. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to inspect. + /// @param _address Address whose transaction count is returned. + /// @return Number of mint transactions used by `_address`. + function getTokenTxsPerAddress(address _contractAddress, uint256 _tokenId, address _address) + external + view + returns (uint256) + { + return tokenTxsPerAddress[_contractAddress][_tokenId][_address]; + } + + /// @notice Returns a seller's secondary fixed-price listing. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id to inspect. + /// @param _seller Seller whose listing is returned. + /// @return Secondary fixed-price listing for the seller and token id. + function getSalePrice(address _contractAddress, uint256 _tokenId, address _seller) + external + view + returns (IRareERC1155Marketplace.SalePrice memory) + { + return salePrices[_contractAddress][_tokenId][_seller]; + } + + /// @notice Returns the marketplace dependency configuration. + /// @return Current market config struct. + function getMarketConfig() external view returns (MarketConfigV2.Config memory) { + return marketConfig; + } + + /// @notice Returns the ERC1155 approval manager used for secondary transfers. + /// @return Current ERC1155 approval manager address. + function getERC1155ApprovalManager() external view returns (address) { + return address(erc1155ApprovalManager); + } + + /// @notice Returns whether marketplace writes are paused. + /// @return True when paused. + function isPaused() external view returns (bool) { + return paused; + } + + /// @notice Updates the network beneficiary address. + /// @param _networkBeneficiary New network beneficiary. + function setNetworkBeneficiary(address _networkBeneficiary) external onlyOwner { + // Atomic guard: network beneficiary must remain payable by marketplace fee flows. + _validateMarketConfigAddress(_networkBeneficiary, NETWORK_BENEFICIARY_FIELD); + + // State write: delegate config mutation to the shared MarketConfig library. + marketConfig.updateNetworkBeneficiary(_networkBeneficiary); + + emit MarketplaceDependencyUpdated(NETWORK_BENEFICIARY_FIELD, _networkBeneficiary); + } + + /// @notice Updates the marketplace settings contract address. + /// @param _marketplaceSettings New marketplace settings contract. + function setMarketplaceSettings(address _marketplaceSettings) external onlyOwner { + // Atomic guard: marketplace fee calculations must retain a concrete settings contract. + _validateMarketConfigAddress(_marketplaceSettings, MARKETPLACE_SETTINGS_FIELD); + + // State write: delegate config mutation to the shared MarketConfig library. + marketConfig.updateMarketplaceSettings(_marketplaceSettings); + + emit MarketplaceDependencyUpdated(MARKETPLACE_SETTINGS_FIELD, _marketplaceSettings); + } + + /// @notice Updates the space operator registry address. + /// @param _spaceOperatorRegistry New space operator registry contract. + function setSpaceOperatorRegistry(address _spaceOperatorRegistry) external onlyOwner { + // Atomic guard: primary platform-fee resolution must retain a concrete registry. + _validateMarketConfigAddress(_spaceOperatorRegistry, SPACE_OPERATOR_REGISTRY_FIELD); + + // State write: delegate config mutation to the shared MarketConfig library. + marketConfig.updateSpaceOperatorRegistry(_spaceOperatorRegistry); + + emit MarketplaceDependencyUpdated(SPACE_OPERATOR_REGISTRY_FIELD, _spaceOperatorRegistry); + } + + /// @notice Updates the royalty engine address. + /// @param _royaltyEngine New royalty engine contract. + function setRoyaltyEngine(address _royaltyEngine) external onlyOwner { + // Atomic guard: secondary royalty resolution must retain a concrete engine. + _validateMarketConfigAddress(_royaltyEngine, ROYALTY_ENGINE_FIELD); + + // State write: delegate config mutation to the shared MarketConfig library. + marketConfig.updateRoyaltyEngine(_royaltyEngine); + + emit MarketplaceDependencyUpdated(ROYALTY_ENGINE_FIELD, _royaltyEngine); + } + + /// @notice Updates the Payments contract address used for ETH fan-out. + /// @param _payments New payments contract. + function setPayments(address _payments) external onlyOwner { + // Atomic guard: ETH payout fan-out must retain a concrete Payments contract. + _validateMarketConfigAddress(_payments, PAYMENTS_FIELD); + + // State write: delegate config mutation to the shared MarketConfig library. + marketConfig.updatePayments(_payments); + + emit MarketplaceDependencyUpdated(PAYMENTS_FIELD, _payments); + } + + /// @notice Updates the approved token registry address. + /// @param _approvedTokenRegistry New approved token registry contract. + function setApprovedTokenRegistry(address _approvedTokenRegistry) external onlyOwner { + // Atomic guard: currency approval checks must retain a concrete registry. + _validateMarketConfigAddress(_approvedTokenRegistry, APPROVED_TOKEN_REGISTRY_FIELD); + + // State write: delegate config mutation to the shared MarketConfig library. + marketConfig.updateApprovedTokenRegistry(_approvedTokenRegistry); + + emit MarketplaceDependencyUpdated(APPROVED_TOKEN_REGISTRY_FIELD, _approvedTokenRegistry); + } + + /// @notice Updates the staking settings address. + /// @param _stakingSettings New staking settings contract. + function setStakingSettings(address _stakingSettings) external onlyOwner { + // Atomic guard: marketplace fee split math must retain concrete settings. + _validateMarketConfigAddress(_stakingSettings, STAKING_SETTINGS_FIELD); + + // State write: delegate config mutation to the shared MarketConfig library. + marketConfig.updateStakingSettings(_stakingSettings); + + emit MarketplaceDependencyUpdated(STAKING_SETTINGS_FIELD, _stakingSettings); + } + + /// @notice Updates the staking registry address. + /// @param _stakingRegistry New staking registry contract. + function setStakingRegistry(address _stakingRegistry) external onlyOwner { + // Atomic guard: marketplace fee split recipients must retain a concrete registry. + _validateMarketConfigAddress(_stakingRegistry, STAKING_REGISTRY_FIELD); + + // State write: delegate config mutation to the shared MarketConfig library. + marketConfig.updateStakingRegistry(_stakingRegistry); + + emit MarketplaceDependencyUpdated(STAKING_REGISTRY_FIELD, _stakingRegistry); + } + + /// @notice Updates the ERC20 approval manager address. + /// @param _erc20ApprovalManager New ERC20 approval manager contract. + function setERC20ApprovalManager(address _erc20ApprovalManager) external onlyOwner { + // Atomic guard: ERC20 purchases must retain a concrete transfer manager. + _validateApprovalManager(_erc20ApprovalManager); + + // State write: delegate config mutation to the shared MarketConfig library. + marketConfig.updateERC20ApprovalManager(_erc20ApprovalManager); + + emit MarketplaceDependencyUpdated(ERC20_APPROVAL_MANAGER_FIELD, _erc20ApprovalManager); + } + + /// @notice Updates the ERC721 approval manager address retained by the shared V2 market config. + /// @param _erc721ApprovalManager New ERC721 approval manager contract. + function setERC721ApprovalManager(address _erc721ApprovalManager) external onlyOwner { + // Atomic guard: shared V2 config must retain a concrete ERC721 approval manager. + _validateApprovalManager(_erc721ApprovalManager); + + // State write: delegate config mutation to the shared MarketConfig library. + marketConfig.updateERC721ApprovalManager(_erc721ApprovalManager); + + emit MarketplaceDependencyUpdated(ERC721_APPROVAL_MANAGER_FIELD, _erc721ApprovalManager); + } + + /// @notice Updates the ERC1155 approval manager address. + /// @param _erc1155ApprovalManager New ERC1155 approval manager contract. + function setERC1155ApprovalManager(address _erc1155ApprovalManager) external onlyOwner { + // Atomic guard: secondary ERC1155 transfers must retain a concrete approval manager. + _validateApprovalManager(_erc1155ApprovalManager); + + // State write: replace the manager used for seller approval checks and transfers. + erc1155ApprovalManager = IERC1155ApprovalManager(_erc1155ApprovalManager); + + emit MarketplaceDependencyUpdated(ERC1155_APPROVAL_MANAGER_FIELD, _erc1155ApprovalManager); + } + + /// @notice Pauses or unpauses marketplace write operations. + /// @param _isPaused New pause state. + function setContractPaused(bool _isPaused) external onlyOwner { + // State write: set pause flag consumed by the notPaused modifier. + paused = _isPaused; + + emit ContractPausedUpdated(_isPaused); + } + + /// @notice Distributes proceeds for a primary mint sale. + /// @dev Marketplace fee is paid on top by the buyer; platform fee is deducted from seller proceeds. + /// @param _contractAddress ERC1155 collection address. + /// @param _currencyAddress Currency being paid. Zero address indicates ETH. + /// @param _amount Gross sale amount before platform fee. + /// @param _seller Primary sale seller. + /// @param _splitRecipients Seller proceed recipients. + /// @param _splitRatios Seller proceed split ratios. + function _payoutPrimary( + address _contractAddress, + address _currencyAddress, + uint256 _amount, + address _seller, + address payable[] memory _splitRecipients, + uint8[] memory _splitRatios + ) internal { + // Accounting state: track seller proceeds remaining after primary platform commission. + uint256 remainingAmount = _amount; + + // Payout operation: distribute the buyer-paid marketplace fee through the configured fee split. + _payoutMarketplaceFee(_currencyAddress, _amount, _seller); + + // External reads: choose primary commission from approved space operator or marketplace settings. + uint256 platformCommission = marketConfig.spaceOperatorRegistry.isApprovedSpaceOperator(_seller) + ? marketConfig.spaceOperatorRegistry.getPlatformCommission(_seller) + : marketConfig.marketplaceSettings.getERC721ContractPrimarySaleFeePercentage(_contractAddress); + if (platformCommission > 100) { + revert PlatformCommissionExceeded(platformCommission, 100); + } + + // Accounting operation: convert commission percentage to an amount. + uint256 platformFee = (_amount * platformCommission) / 100; + if (platformFee > 0) { + // Accounting state: remove platform fee from seller proceeds before split payout. + remainingAmount -= platformFee; + + // Memory setup: represent single-recipient platform fee as a payout batch. + address payable[] memory platformRecipients = new address payable[](1); + platformRecipients[0] = payable(marketConfig.networkBeneficiary); + uint256[] memory platformAmounts = new uint256[](1); + platformAmounts[0] = platformFee; + + // Payout operation: send primary platform fee to the network beneficiary. + _performPayouts(_currencyAddress, platformFee, platformRecipients, platformAmounts); + } + + // Payout operation: split remaining seller proceeds across configured recipients. + _payoutSplits(_currencyAddress, remainingAmount, _splitRecipients, _splitRatios); + } + + /// @notice Distributes proceeds for a secondary fixed-price sale. + /// @dev Marketplace fee is paid on top by the buyer; royalties are deducted from seller proceeds. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Sold token id. + /// @param _currencyAddress Currency being paid. Zero address indicates ETH. + /// @param _amount Gross sale amount before royalty deduction. + /// @param _seller Secondary seller. + /// @param _splitRecipients Seller proceed recipients. + /// @param _splitRatios Seller proceed split ratios. + function _payoutSecondary( + address _contractAddress, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + address _seller, + address payable[] memory _splitRecipients, + uint8[] memory _splitRatios + ) internal { + // Accounting state: track seller proceeds remaining after royalties. + uint256 remainingAmount = _amount; + + // Payout operation: distribute the buyer-paid marketplace fee through the configured fee split. + _payoutMarketplaceFee(_currencyAddress, _amount, _seller); + + // External read: resolve royalties through the configured royalty engine. + (address payable[] memory receivers, uint256[] memory royalties) = + marketConfig.royaltyEngine.getRoyalty(_contractAddress, _tokenId, _amount); + + // Accounting operation: aggregate royalty amounts before paying them. + uint256 totalRoyalties = 0; + for (uint256 i = 0; i < royalties.length; i++) { + totalRoyalties += royalties[i]; + } + + // Atomic guard: royalties cannot consume more than gross sale amount. + if (totalRoyalties > remainingAmount) revert RoyaltiesExceedSaleAmount(totalRoyalties, remainingAmount); + + if (totalRoyalties > 0) { + // Accounting state: remove royalty amount from seller proceeds before split payout. + remainingAmount -= totalRoyalties; + + // Payout operation: send royalties to royalty engine recipients. + _performPayouts(_currencyAddress, totalRoyalties, receivers, royalties); + } + + // Payout operation: split remaining seller proceeds across configured recipients. + _payoutSplits(_currencyAddress, remainingAmount, _splitRecipients, _splitRatios); + } + + /// @notice Distributes marketplace fee between network beneficiary and seller staking rewards. + /// @param _currencyAddress Currency being paid. Zero address indicates ETH. + /// @param _amount Gross sale amount used for fee calculation. + /// @param _seller Seller whose staking reward accumulator may receive staking fees. + function _payoutMarketplaceFee(address _currencyAddress, uint256 _amount, address _seller) internal { + // External read: calculate buyer-paid marketplace fee for the sale amount. + uint256 marketplaceFee = marketConfig.marketplaceSettings.calculateMarketplaceFee(_amount); + + // External read: calculate staking fee from staking settings and send the collected remainder to network. + uint256 stakingFee = marketConfig.stakingSettings.calculateStakingFee(_amount); + if (stakingFee > marketplaceFee) { + revert StakingFeeExceedsMarketplaceFee(marketplaceFee, stakingFee); + } + + if (marketplaceFee == 0) { + return; + } + + // Memory setup: recipient 0 is network, recipient 1 is seller staking reward accumulator or network fallback. + address payable[] memory recipients = new address payable[](2); + recipients[0] = payable(marketConfig.networkBeneficiary); + recipients[1] = payable(marketConfig.stakingRegistry.getRewardAccumulatorAddressForUser(_seller)); + recipients[1] = recipients[1] == address(0) ? payable(marketConfig.networkBeneficiary) : recipients[1]; + + // Memory setup: distribute the buyer-paid marketplace fee between network and staking recipients. + uint256[] memory amounts = new uint256[](2); + amounts[0] = marketplaceFee - stakingFee; + amounts[1] = stakingFee; + + // Payout operation: distribute the marketplace fee batch. + _performPayouts(_currencyAddress, marketplaceFee, recipients, amounts); + } + + /// @notice Validates that a currency is ETH or an approved ERC20. + /// @param _currencyAddress Currency to validate. Zero address indicates ETH. + function _checkIfCurrencyIsApproved(address _currencyAddress) internal view { + // External read: non-ETH currencies must be approved by the token registry. + if (_currencyAddress != address(0) && !marketConfig.approvedTokenRegistry.isApprovedToken(_currencyAddress)) { + revert CurrencyNotApproved(_currencyAddress); + } + } + + /// @notice Validates that a secondary collection is a deployed ERC1155 contract. + /// @param _contractAddress ERC1155 collection address. + function _validateERC1155Contract(address _contractAddress) internal view { + if ( + _contractAddress.code.length == 0 + || !ERC165Checker.supportsInterface(_contractAddress, type(IERC1155).interfaceId) + ) { + revert InvalidERC1155Contract(_contractAddress); + } + } + + /// @notice Reverts when a Rare ERC1155 token id has not been created. + /// @param _contractAddress Rare ERC1155 collection address. + /// @param _tokenId Token id to validate. + function _revertIfTokenNotFound(address _contractAddress, uint256 _tokenId) internal view { + // External read: created Rare ERC1155 token ids always have a non-zero configured max supply. + if (IRareERC1155(_contractAddress).maxSupplyForToken(_tokenId) == 0) { + revert TokenNotFound(_contractAddress, _tokenId); + } + } + + /// @notice Validates payment amount and pulls ERC20 funds when needed. + /// @dev For ETH payments, funds are already present in `msg.value`; for ERC20 payments, this function transfers tokens in. + /// @param _currencyAddress Currency to collect. Zero address indicates ETH. + /// @param _amount Total amount to collect, including any buyer-paid marketplace fee. + function _checkAmountAndTransfer(address _currencyAddress, uint256 _amount) internal { + if (_currencyAddress == address(0)) { + // Atomic ETH check: exact value is required so no ETH is left over or underpaid. + if (msg.value != _amount) revert IncorrectETHAmount(_amount, msg.value); + return; + } + + // Atomic ERC20 check: ERC20 purchases cannot also send ETH. + if (msg.value != 0) revert MsgValueUnsupportedForERC20(); + + IERC20 erc20 = IERC20(_currencyAddress); + + // Balance snapshot: used to reject fee-on-transfer or rebasing behavior during transfer. + uint256 balanceBefore = erc20.balanceOf(address(this)); + + // External transfer: pull exact payment amount through the approved ERC20 transfer manager. + marketConfig.erc20ApprovalManager.transferFrom(_currencyAddress, msg.sender, address(this), _amount); + + // Atomic transfer check: marketplace must receive the exact amount requested. + uint256 receivedAmount = erc20.balanceOf(address(this)) - balanceBefore; + if (receivedAmount != _amount) { + revert ERC20FeeOnTransferUnsupported(_currencyAddress, _amount, receivedAmount); + } + } + + /// @notice Validates seller split recipients and ratios. + /// @param _splitRecipients Addresses that receive seller proceeds. + /// @param _splitRatios Percentages corresponding to `_splitRecipients`. + function _checkSplits(address payable[] calldata _splitRecipients, uint8[] calldata _splitRatios) internal pure { + // Atomic split checks: every sale needs 1-5 recipients and matching ratio data. + if (_splitRecipients.length == 0) revert SplitRecipientsRequired(); + if (_splitRecipients.length > 5) revert SplitRecipientsExceededMax(_splitRecipients.length, 5); + if (_splitRecipients.length != _splitRatios.length) { + revert SplitLengthMismatch(_splitRecipients.length, _splitRatios.length); + } + + // Accounting operation: ratios must total exactly 100 percent. + uint256 totalRatio = 0; + for (uint256 i = 0; i < _splitRatios.length; i++) { + if (_splitRecipients[i] == address(0)) revert SplitRecipientCannotBeZero(i); + if (_splitRatios[i] == 0) revert SplitRatioCannotBeZero(i); + totalRatio += _splitRatios[i]; + } + + if (totalRatio != 100) revert SplitTotalInvalid(totalRatio, 100); + } + + /// @notice Splits seller proceeds across configured recipients. + /// @param _currencyAddress Currency to pay. Zero address indicates ETH. + /// @param _amount Total seller proceeds to split. + /// @param _splitRecipients Addresses that receive seller proceeds. + /// @param _splitRatios Percentages corresponding to `_splitRecipients`. + function _payoutSplits( + address _currencyAddress, + uint256 _amount, + address payable[] memory _splitRecipients, + uint8[] memory _splitRatios + ) internal { + // Atomic guard: payout split arrays must remain paired. + if (_splitRecipients.length != _splitRatios.length) { + revert SplitLengthMismatch(_splitRecipients.length, _splitRatios.length); + } + + // Memory setup: convert split percentages into absolute payout amounts. + uint256[] memory amounts = new uint256[](_splitRecipients.length); + uint256 remainingPayout = _amount; + + for (uint256 i = 0; i < _splitRecipients.length; i++) { + if (i == _splitRecipients.length - 1) { + // Accounting operation: assign rounding dust to the final recipient so the full amount is paid. + amounts[i] = remainingPayout; + } else { + // Accounting operation: integer division rounds intermediate recipients down. + amounts[i] = (_amount * _splitRatios[i]) / 100; + remainingPayout -= amounts[i]; + } + } + + // Payout operation: send the full split amount to recipients. + _performPayouts(_currencyAddress, _amount, _splitRecipients, amounts); + } + + /// @notice Pays recipients in ETH or ERC20. + /// @dev ETH payouts are delegated to the Payments contract; ERC20 payouts transfer from marketplace balance directly. + /// @param _currencyAddress Currency to pay. Zero address indicates ETH. + /// @param _amount Total amount paid through this batch. + /// @param _recipients Addresses receiving funds. + /// @param _amounts Amount per recipient. + function _performPayouts( + address _currencyAddress, + uint256 _amount, + address payable[] memory _recipients, + uint256[] memory _amounts + ) internal { + // Atomic guard: recipients and amount arrays must be paired before any payout transfer. + if (_recipients.length != _amounts.length) { + revert PayoutLengthMismatch(_recipients.length, _amounts.length); + } + + // Accounting operation: validate the batch pays exactly the amount it claims to pay. + uint256 totalAmount = 0; + for (uint256 i = 0; i < _amounts.length; i++) { + totalAmount += _amounts[i]; + } + if (totalAmount != _amount) revert PayoutTotalMismatch(_amount, totalAmount); + + if (_currencyAddress == address(0)) { + // External call: send ETH to Payments so it can fan out to each recipient. + (bool success, bytes memory data) = address(marketConfig.payments).call{value: _amount}( + abi.encodeWithSelector(marketConfig.payments.payout.selector, _recipients, _amounts) + ); + + // Atomic payout check: bubble raw failure data through a named marketplace error. + if (!success) revert PayoutFailed(data); + return; + } + + IERC20 erc20 = IERC20(_currencyAddress); + for (uint256 i = 0; i < _recipients.length; i++) { + // External transfer: pay each ERC20 recipient from marketplace balance. + erc20.safeTransfer(_recipients[i], _amounts[i]); + } + } + + /// @notice Validates a required market config dependency address. + /// @param _address Address to validate. + /// @param _field Field label used in the named error. + function _validateMarketConfigAddress(address _address, bytes32 _field) internal pure { + // Atomic guard: zero config dependencies are rejected before storage writes or external calls. + if (_address == address(0)) revert MarketConfigAddressCannotBeZero(_field); + } + + /// @notice Validates an approval manager address. + /// @param _approvalManager Approval manager address to validate. + function _validateApprovalManager(address _approvalManager) internal pure { + // Atomic guard: approval manager dependencies are required for ERC20 pulls and ERC1155 transfers. + if (_approvalManager == address(0)) revert ApprovalManagerCannotBeZero(); + } + + /// @notice Enforces an active Merkle allowlist for a primary sale. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id being minted. + /// @param _address Buyer address to verify. + /// @param _proof Merkle proof supplied by the buyer. + function _enforceTokenAllowList( + address _contractAddress, + uint256 _tokenId, + address _address, + bytes32[] calldata _proof + ) internal view { + // Storage read: load allowlist config for the token id. + IRareERC1155Marketplace.AllowListConfig memory allowListConfig = tokenAllowlistRoots[_contractAddress][_tokenId]; + + if (allowListConfig.root == bytes32(0) || block.timestamp >= allowListConfig.endTimestamp) { + return; + } + + // Atomic proof check: active allowlists require the buyer leaf to resolve to the stored root. + if (!_verifyProof(keccak256(abi.encodePacked(_address)), allowListConfig.root, _proof)) { + revert AddressNotAllowlisted(_address); + } + } + + /// @notice Verifies a sorted Merkle proof. + /// @param _leaf Leaf to prove. + /// @param _root Expected Merkle root. + /// @param _proof Proof siblings from leaf to root. + /// @return True when the proof resolves to `_root`. + function _verifyProof(bytes32 _leaf, bytes32 _root, bytes32[] calldata _proof) internal pure returns (bool) { + // Memory state: iteratively fold proof siblings into the current hash. + bytes32 currentHash = _leaf; + + for (uint256 i = 0; i < _proof.length; i++) { + // Hash operation: combine the current node with the next proof sibling in sorted order. + currentHash = _parentHash(currentHash, _proof[i]); + } + + return currentHash == _root; + } + + /// @notice Computes a sorted Merkle parent hash. + /// @param a First child hash. + /// @param b Second child hash. + /// @return Parent hash for the two children. + function _parentHash(bytes32 a, bytes32 b) internal pure returns (bytes32) { + return a <= b ? keccak256(abi.encodePacked(a, b)) : keccak256(abi.encodePacked(b, a)); + } + + /// @notice Checks whether an account owns a collection through an `owner()` staticcall. + /// @param _contractAddress Contract exposing an `owner()` function. + /// @param _account Account to compare against the returned owner. + /// @return True when `_account` is the collection owner. + function _isContractOwner(address _contractAddress, address _account) internal view returns (bool) { + // External staticcall: support Ownable-compatible collections without requiring a shared interface. + (bool success, bytes memory data) = _contractAddress.staticcall(abi.encodeWithSignature("owner()")); + + // Atomic ownership-read check: owner() must return a full address word. + if (!success || data.length < 32) revert ContractHasNoOwner(_contractAddress); + return abi.decode(data, (address)) == _account; + } +} diff --git a/src/test/bazaar/BazaarBase.t.sol b/src/test/bazaar/BazaarBase.t.sol index baa11d7..b6590d4 100644 --- a/src/test/bazaar/BazaarBase.t.sol +++ b/src/test/bazaar/BazaarBase.t.sol @@ -20,586 +20,585 @@ import {MarketConfig} from "../../utils/structs/MarketConfig.sol"; import {IRareStakingRegistry} from "../../staking/registry/IRareStakingRegistry.sol"; contract TestContract is SuperRareBazaarBase { - constructor( - address _marketplaceSettings, - address _royaltyEngine, - address _spaceOperatorRegistry, - address _approvedTokenRegistry, - address _payments, - address _stakingRegistry, - address _networkBeneficiary - ) { - marketplaceSettings = IMarketplaceSettings(_marketplaceSettings); - royaltyEngine = IRoyaltyEngineV1(_royaltyEngine); - spaceOperatorRegistry = ISpaceOperatorRegistry(_spaceOperatorRegistry); - approvedTokenRegistry = IApprovedTokenRegistry(_approvedTokenRegistry); - payments = IPayments(_payments); - stakingRegistry = _stakingRegistry; - networkBeneficiary = _networkBeneficiary; - - minimumBidIncreasePercentage = 10; - maxAuctionLength = 7 days; - auctionLengthExtension = 15 minutes; - offerCancelationDelay = 5 minutes; - } - - function payout( - address _originContract, - uint256 _tokenId, - address _currencyAddress, - uint256 _amount, - address _seller, - address payable[] memory _splitAddrs, - uint8[] memory _splitRatios - ) public payable { - _payout(_originContract, _tokenId, _currencyAddress, _amount, _seller, _splitAddrs, _splitRatios); - } + constructor( + address _marketplaceSettings, + address _royaltyEngine, + address _spaceOperatorRegistry, + address _approvedTokenRegistry, + address _payments, + address _stakingRegistry, + address _networkBeneficiary + ) { + marketplaceSettings = IMarketplaceSettings(_marketplaceSettings); + royaltyEngine = IRoyaltyEngineV1(_royaltyEngine); + spaceOperatorRegistry = ISpaceOperatorRegistry(_spaceOperatorRegistry); + approvedTokenRegistry = IApprovedTokenRegistry(_approvedTokenRegistry); + payments = IPayments(_payments); + stakingRegistry = _stakingRegistry; + networkBeneficiary = _networkBeneficiary; + + minimumBidIncreasePercentage = 10; + maxAuctionLength = 7 days; + auctionLengthExtension = 15 minutes; + offerCancelationDelay = 5 minutes; + } + + function payout( + address _originContract, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + address _seller, + address payable[] memory _splitAddrs, + uint8[] memory _splitRatios + ) public payable { + _payout(_originContract, _tokenId, _currencyAddress, _amount, _seller, _splitAddrs, _splitRatios); + } + + function checkSplits(address payable[] calldata _splits, uint8[] calldata _ratios) public pure { + _checkSplits(_splits, _ratios); + } } contract TestRare is ERC20 { - constructor() ERC20("Rare", "RARE") { - _mint(msg.sender, 1_000_000_000 ether); - } + constructor() ERC20("Rare", "RARE") { + _mint(msg.sender, 1_000_000_000 ether); + } - function burn(uint256 amount) public { - _burn(msg.sender, amount); - } + function burn(uint256 amount) public { + _burn(msg.sender, amount); + } } contract RareBazaarBaseTest is Test { - TestContract tc; - Payments payments; - TestRare public rare; - uint256 constant initialRare = 1000 * 1e18; - - address deployer = address(0xabadabab); - address alice = address(0xbeef); - address bob = address(0xcafe); - address charlie = address(0xdead); - address marketplaceSettings = address(0xabadaba1); - address royaltyRegistry = address(0xabadaba2); - address royaltyEngine = address(0xabadaba3); - address spaceOperatorRegistry = address(0xabadaba6); - address approvedTokenRegistry = address(0xabadaba7); - address stakingRegistry = address(0xabadaba9); - address networkBeneficiary = address(0xabadabaa); - address rewardPool = address(0xcccc); - - function contractDeploy() internal { - vm.startPrank(deployer); - - // Deploy TestRare - rare = new TestRare(); - - // Deploy Payments - payments = new Payments(); - - tc = new TestContract( - marketplaceSettings, - royaltyEngine, - spaceOperatorRegistry, - approvedTokenRegistry, - address(payments), - stakingRegistry, - networkBeneficiary - ); - - // etch code into these so we can stub out methods. Need some - vm.etch(marketplaceSettings, address(rare).code); - vm.etch(stakingRegistry, address(rare).code); - vm.etch(royaltyRegistry, address(rare).code); - vm.etch(royaltyEngine, address(rare).code); - vm.etch(spaceOperatorRegistry, address(rare).code); - vm.etch(approvedTokenRegistry, address(rare).code); - - vm.stopPrank(); - } - - function setUp() public { - deal(deployer, 100 ether); - deal(alice, 100 ether); - deal(bob, 100 ether); - deal(charlie, 100 ether); - contractDeploy(); - vm.startPrank(deployer); - rare.transfer(alice, initialRare); - rare.transfer(bob, initialRare); - vm.stopPrank(); - } - - function test_payout_primary() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup has isApprovedSpaceOperator -- false - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup has getERC721ContractPrimarySaleFeePercentage -- 15% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), - abi.encode(15) - ); - uint256 balanceBefore = charlie.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - uint256 balanceAfter = charlie.balance; - uint256 expectedBalance = balanceBefore + ((amount * 85) / 100); - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); + TestContract tc; + Payments payments; + TestRare public rare; + uint256 constant initialRare = 1000 * 1e18; + + address deployer = address(0xabadabab); + address alice = address(0xbeef); + address bob = address(0xcafe); + address charlie = address(0xdead); + address marketplaceSettings = address(0xabadaba1); + address royaltyRegistry = address(0xabadaba2); + address royaltyEngine = address(0xabadaba3); + address spaceOperatorRegistry = address(0xabadaba6); + address approvedTokenRegistry = address(0xabadaba7); + address stakingRegistry = address(0xabadaba9); + address networkBeneficiary = address(0xabadabaa); + address rewardPool = address(0xcccc); + + function contractDeploy() internal { + vm.startPrank(deployer); + + // Deploy TestRare + rare = new TestRare(); + + // Deploy Payments + payments = new Payments(); + + tc = new TestContract( + marketplaceSettings, + royaltyEngine, + spaceOperatorRegistry, + approvedTokenRegistry, + address(payments), + stakingRegistry, + networkBeneficiary + ); + + // etch code into these so we can stub out methods. Need some + vm.etch(marketplaceSettings, address(rare).code); + vm.etch(stakingRegistry, address(rare).code); + vm.etch(royaltyRegistry, address(rare).code); + vm.etch(royaltyEngine, address(rare).code); + vm.etch(spaceOperatorRegistry, address(rare).code); + vm.etch(approvedTokenRegistry, address(rare).code); + + vm.stopPrank(); } - } - - function test_payout_primary_spaces() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call -- 0% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup isApprovedSpaceOperator -- true - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(true) - ); - - // setup getPlatformCommission -- 5% - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.getPlatformCommission.selector, charlie), - abi.encode(5) - ); - uint256 balanceBefore = charlie.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - uint256 balanceAfter = charlie.balance; - uint256 expectedBalance = balanceBefore + ((amount * 95) / 100); - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); + + function setUp() public { + deal(deployer, 100 ether); + deal(alice, 100 ether); + deal(bob, 100 ether); + deal(charlie, 100 ether); + contractDeploy(); + vm.startPrank(deployer); + rare.transfer(alice, initialRare); + rare.transfer(bob, initialRare); + vm.stopPrank(); } - } - - function test_payout_secondary() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - address payable[] memory royaltyReceiverAddrs = new address payable[](1); - uint256[] memory royaltyAmounts = new uint256[](1); - royaltyReceiverAddrs[0] = payable(alice); - royaltyAmounts[0] = (amount * 10) / 100; - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(true) - ); - - // setup has getRoyalty -- 10% - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, 1, amount), - abi.encode(royaltyReceiverAddrs, royaltyAmounts) - ); - - uint256 balanceBefore = charlie.balance; - uint256 aliceBalanceBefore = alice.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - uint256 balanceAfter = charlie.balance; - uint256 expectedBalance = balanceBefore + ((amount * 90) / 100); - uint256 aliceBalanceAfter = alice.balance; - uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 10) / 100); - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); + + function test_checkSplits_ZeroAddressRecipient() public { + address payable[] memory splitAddrs = new address payable[](2); + uint8[] memory splitRatios = new uint8[](2); + splitAddrs[0] = payable(alice); + splitAddrs[1] = payable(address(0)); + splitRatios[0] = 50; + splitRatios[1] = 50; + + vm.expectRevert("checkSplits::Split cannot be zero address"); + tc.checkSplits(splitAddrs, splitRatios); } - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: aliceExpectedBalance", aliceExpectedBalance); - emit log_named_uint("Actual: aliceBalanceAfter", aliceBalanceAfter); - revert("incorrect balance after on payout"); + + function test_checkSplits_ZeroRatio() public { + address payable[] memory splitAddrs = new address payable[](2); + uint8[] memory splitRatios = new uint8[](2); + splitAddrs[0] = payable(alice); + splitAddrs[1] = payable(bob); + splitRatios[0] = 100; + splitRatios[1] = 0; + + vm.expectRevert("checkSplits::Ratio must be greater than 0"); + tc.checkSplits(splitAddrs, splitRatios); } - } - - function test_payout_staking_pool() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(rewardPool) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 2) / 100) - ); - - // setup calculateStakingFee call -- 1% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(amount / 100) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup has isApprovedSpaceOperator -- false - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup has getERC721ContractPrimarySaleFeePercentage -- 15% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), - abi.encode(15) - ); - uint256 balanceBefore = rewardPool.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - uint256 balanceAfter = rewardPool.balance; - uint256 expectedBalance = balanceBefore + (amount / 100); - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); + + function test_payout_primary() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup has isApprovedSpaceOperator -- false + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup has getERC721ContractPrimarySaleFeePercentage -- 15% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector( + IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract + ), + abi.encode(15) + ); + uint256 balanceBefore = charlie.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + uint256 balanceAfter = charlie.balance; + uint256 expectedBalance = balanceBefore + ((amount * 85) / 100); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); + } } - } - - function test_payout_no_staking_pool() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 2) / 100) - ); - - // setup calculateStakingFee call -- 1% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(amount / 100) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup has isApprovedSpaceOperator -- false - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup has getERC721ContractPrimarySaleFeePercentage -- 15% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), - abi.encode(15) - ); - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - uint256 balanceAfter = rewardPool.balance; - uint256 expectedBalance = balanceAfter; - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); + + function test_payout_primary_spaces() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call -- 0% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup isApprovedSpaceOperator -- true + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(true) + ); + + // setup getPlatformCommission -- 5% + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.getPlatformCommission.selector, charlie), + abi.encode(5) + ); + uint256 balanceBefore = charlie.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + uint256 balanceAfter = charlie.balance; + uint256 expectedBalance = balanceBefore + ((amount * 95) / 100); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); + } } - } - function test_payout_erc20_no_staking_pool() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(rare); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 2) / 100) - ); - - // setup calculateStakingFee call -- 1% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(amount / 100) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup has isApprovedSpaceOperator -- false - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup has getERC721ContractPrimarySaleFeePercentage -- 15% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), - abi.encode(15) - ); - vm.prank(deployer); - rare.transfer(address(tc), amount + ((amount * 3) / 100)); - uint256 nbBalanceBefore = rare.balanceOf(networkBeneficiary); - tc.payout( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - uint256 balanceAfter = rewardPool.balance; - uint256 expectedBalance = balanceAfter; - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); + + function test_payout_secondary() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + address payable[] memory royaltyReceiverAddrs = new address payable[](1); + uint256[] memory royaltyAmounts = new uint256[](1); + royaltyReceiverAddrs[0] = payable(alice); + royaltyAmounts[0] = (amount * 10) / 100; + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(true) + ); + + // setup has getRoyalty -- 10% + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, 1, amount), + abi.encode(royaltyReceiverAddrs, royaltyAmounts) + ); + + uint256 balanceBefore = charlie.balance; + uint256 aliceBalanceBefore = alice.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + uint256 balanceAfter = charlie.balance; + uint256 expectedBalance = balanceBefore + ((amount * 90) / 100); + uint256 aliceBalanceAfter = alice.balance; + uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 10) / 100); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); + } + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: aliceExpectedBalance", aliceExpectedBalance); + emit log_named_uint("Actual: aliceBalanceAfter", aliceBalanceAfter); + revert("incorrect balance after on payout"); + } + } + + function test_payout_staking_pool() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(rewardPool) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 2) / 100) + ); + + // setup calculateStakingFee call -- 1% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(amount / 100) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup has isApprovedSpaceOperator -- false + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup has getERC721ContractPrimarySaleFeePercentage -- 15% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector( + IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract + ), + abi.encode(15) + ); + uint256 balanceBefore = rewardPool.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + uint256 balanceAfter = rewardPool.balance; + uint256 expectedBalance = balanceBefore + (amount / 100); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); + } + } + + function test_payout_no_staking_pool() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 2) / 100) + ); + + // setup calculateStakingFee call -- 1% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(amount / 100) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup has isApprovedSpaceOperator -- false + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup has getERC721ContractPrimarySaleFeePercentage -- 15% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector( + IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract + ), + abi.encode(15) + ); + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + uint256 balanceAfter = rewardPool.balance; + uint256 expectedBalance = balanceAfter; + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); + } } - uint256 nbBalanceAfter = rare.balanceOf(networkBeneficiary); - uint256 nbExpectedBalance = nbBalanceBefore + ((amount * (15 + 3)) / 100); - if (nbBalanceAfter != nbExpectedBalance) { - emit log_named_uint("Expected: nbBalanceAfter", nbExpectedBalance); - emit log_named_uint("Actual: nbBalanceAfter", nbBalanceAfter); - revert("incorrect balance for network beneficiary after on payout"); + function test_payout_erc20_no_staking_pool() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(rare); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 2) / 100) + ); + + // setup calculateStakingFee call -- 1% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(amount / 100) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup has isApprovedSpaceOperator -- false + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup has getERC721ContractPrimarySaleFeePercentage -- 15% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector( + IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract + ), + abi.encode(15) + ); + vm.prank(deployer); + rare.transfer(address(tc), amount + ((amount * 3) / 100)); + uint256 nbBalanceBefore = rare.balanceOf(networkBeneficiary); + tc.payout(originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios); + uint256 balanceAfter = rewardPool.balance; + uint256 expectedBalance = balanceAfter; + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); + } + + uint256 nbBalanceAfter = rare.balanceOf(networkBeneficiary); + uint256 nbExpectedBalance = nbBalanceBefore + ((amount * (15 + 3)) / 100); + if (nbBalanceAfter != nbExpectedBalance) { + emit log_named_uint("Expected: nbBalanceAfter", nbExpectedBalance); + emit log_named_uint("Actual: nbBalanceAfter", nbBalanceAfter); + revert("incorrect balance for network beneficiary after on payout"); + } } - } } diff --git a/src/test/marketplace/RareERC1155Marketplace.t.sol b/src/test/marketplace/RareERC1155Marketplace.t.sol new file mode 100644 index 0000000..38d8392 --- /dev/null +++ b/src/test/marketplace/RareERC1155Marketplace.t.sol @@ -0,0 +1,1181 @@ +// SPDX-License-Identifier: AGPL-3.0-only +pragma solidity ^0.8.0; + +import "forge-std/Test.sol"; + +import {ERC20} from "openzeppelin-contracts/token/ERC20/ERC20.sol"; +import {ERC1155} from "openzeppelin-contracts/token/ERC1155/ERC1155.sol"; +import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; +import {IERC165} from "openzeppelin-contracts/utils/introspection/IERC165.sol"; +import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; + +import {IApprovedTokenRegistry} from "../../registry/interfaces/IApprovedTokenRegistry.sol"; +import {IRareStakingRegistry} from "../../staking/registry/IRareStakingRegistry.sol"; +import {IStakingSettings} from "../../marketplace/IStakingSettings.sol"; +import {IMarketplaceSettings} from "../../marketplace/IMarketplaceSettings.sol"; +import {Payments} from "../../payments/Payments.sol"; +import {RareERC1155} from "../../token/ERC1155/RareERC1155.sol"; +import {RareERC1155ContractFactory} from "../../token/ERC1155/RareERC1155ContractFactory.sol"; +import {RareERC1155Marketplace} from "../../marketplace/RareERC1155Marketplace.sol"; +import {IRareERC1155Marketplace} from "../../marketplace/IRareERC1155Marketplace.sol"; +import {ERC20ApprovalManager} from "../../v2/approver/ERC20/ERC20ApprovalManager.sol"; +import {ERC721ApprovalManager} from "../../v2/approver/ERC721/ERC721ApprovalManager.sol"; +import {ERC1155ApprovalManager} from "../../v2/approver/ERC1155/ERC1155ApprovalManager.sol"; +import {ISpaceOperatorRegistry} from "../../registry/interfaces/ISpaceOperatorRegistry.sol"; +import {IRoyaltyEngineV1} from "royalty-registry/IRoyaltyEngineV1.sol"; + +contract TestERC1155Currency is ERC20 { + constructor() ERC20("Currency", "CUR") { + _mint(msg.sender, 1_000_000_000 ether); + } +} + +contract TestOpenERC1155 is ERC1155 { + constructor() ERC1155("ipfs://open/{id}.json") {} + + function mint(address _to, uint256 _tokenId, uint256 _amount) external { + _mint(_to, _tokenId, _amount, ""); + } +} + +contract TestNonERC165ERC1155Like { + mapping(address => mapping(uint256 => uint256)) private balances; + mapping(address => mapping(address => bool)) private operatorApprovals; + + function setBalance(address _account, uint256 _tokenId, uint256 _amount) external { + balances[_account][_tokenId] = _amount; + } + + function balanceOf(address _account, uint256 _tokenId) external view returns (uint256) { + return balances[_account][_tokenId]; + } + + function isApprovedForAll(address _account, address _operator) external view returns (bool) { + return operatorApprovals[_account][_operator]; + } + + function setApprovalForAll(address _operator, bool _approved) external { + operatorApprovals[msg.sender][_operator] = _approved; + } + + function safeTransferFrom(address, address, uint256, uint256, bytes calldata) external {} +} + +contract TestNoOpERC1155 is IERC1155 { + mapping(address => mapping(uint256 => uint256)) private balances; + mapping(address => mapping(address => bool)) private operatorApprovals; + + function supportsInterface(bytes4 _interfaceId) external pure override returns (bool) { + return _interfaceId == type(IERC165).interfaceId || _interfaceId == type(IERC1155).interfaceId; + } + + function setBalance(address _account, uint256 _tokenId, uint256 _amount) external { + balances[_account][_tokenId] = _amount; + } + + function balanceOf(address _account, uint256 _tokenId) external view override returns (uint256) { + return balances[_account][_tokenId]; + } + + function balanceOfBatch(address[] calldata _accounts, uint256[] calldata _ids) + external + view + override + returns (uint256[] memory) + { + uint256[] memory batchBalances = new uint256[](_accounts.length); + for (uint256 i = 0; i < _accounts.length; i++) { + batchBalances[i] = balances[_accounts[i]][_ids[i]]; + } + return batchBalances; + } + + function setApprovalForAll(address _operator, bool _approved) external override { + operatorApprovals[msg.sender][_operator] = _approved; + } + + function isApprovedForAll(address _account, address _operator) external view override returns (bool) { + return operatorApprovals[_account][_operator]; + } + + function safeTransferFrom(address, address, uint256, uint256, bytes calldata) external override {} + + function safeBatchTransferFrom(address, address, uint256[] calldata, uint256[] calldata, bytes calldata) + external + override + {} +} + +contract RareERC1155MarketplaceTest is Test { + event MarketplaceDependencyUpdated(bytes32 indexed field, address indexed dependency); + event ContractPausedUpdated(bool isPaused); + + RareERC1155Marketplace private market; + RareERC1155 private token; + TestERC1155Currency private currency; + ERC20ApprovalManager private erc20ApprovalManager; + ERC721ApprovalManager private erc721ApprovalManager; + ERC1155ApprovalManager private erc1155ApprovalManager; + + address private deployer = address(0x1000); + address private seller = address(0x2000); + address private buyer = address(0x3000); + address private nextOwner = address(0x3500); + address private royaltyReceiver = address(0x4000); + address private networkBeneficiary = address(0x5000); + address private rewardAccumulator = address(0x6000); + address payable private splitRecipientA = payable(address(0x6100)); + address payable private splitRecipientB = payable(address(0x6200)); + + address private stakingSettings = address(0x7100); + address private marketplaceSettings = address(0x7200); + address private royaltyEngine = address(0x7300); + address private spaceOperatorRegistry = address(0x7400); + address private approvedTokenRegistry = address(0x7500); + address private stakingRegistry = address(0x7600); + + uint256 private tokenId; + bytes32[] private emptyProof; + bytes32 private constant MARKETPLACE_DEPENDENCY_UPDATED_TOPIC = + keccak256("MarketplaceDependencyUpdated(bytes32,address)"); + + receive() external payable {} + + function setUp() public { + deal(deployer, 100 ether); + deal(seller, 100 ether); + deal(buyer, 100 ether); + + vm.startPrank(deployer); + currency = new TestERC1155Currency(); + currency.transfer(buyer, 1_000_000 ether); + erc20ApprovalManager = new ERC20ApprovalManager(); + erc721ApprovalManager = new ERC721ApprovalManager(); + erc1155ApprovalManager = new ERC1155ApprovalManager(); + + RareERC1155Marketplace implementation = new RareERC1155Marketplace(); + market = RareERC1155Marketplace(address(new ERC1967Proxy(address(implementation), ""))); + market.initialize( + networkBeneficiary, + marketplaceSettings, + spaceOperatorRegistry, + royaltyEngine, + address(new Payments()), + approvedTokenRegistry, + stakingSettings, + stakingRegistry, + address(erc20ApprovalManager), + address(erc721ApprovalManager), + address(erc1155ApprovalManager) + ); + erc20ApprovalManager.grantOperatorRole(address(market)); + erc1155ApprovalManager.grantOperatorRole(address(market)); + + RareERC1155ContractFactory tokenFactory = new RareERC1155ContractFactory(); + tokenFactory.setDefaultMinter(address(market)); + vm.stopPrank(); + + vm.prank(seller); + token = RareERC1155(tokenFactory.createRareERC1155Contract("Rare Editions", "RED", "ipfs://base/{id}.json")); + + vm.prank(seller); + tokenId = token.createToken("ipfs://token/1.json", 20, royaltyReceiver); + + vm.etch(marketplaceSettings, address(market).code); + vm.etch(stakingSettings, address(market).code); + vm.etch(stakingRegistry, address(market).code); + vm.etch(royaltyEngine, address(market).code); + vm.etch(spaceOperatorRegistry, address(market).code); + vm.etch(approvedTokenRegistry, address(market).code); + } + + function testImplementationCannotBeInitialized() public { + RareERC1155Marketplace directImplementation = new RareERC1155Marketplace(); + Payments payments = new Payments(); + + vm.expectRevert("Initializable: contract is already initialized"); + directImplementation.initialize( + networkBeneficiary, + marketplaceSettings, + spaceOperatorRegistry, + royaltyEngine, + address(payments), + approvedTokenRegistry, + stakingSettings, + stakingRegistry, + address(erc20ApprovalManager), + address(erc721ApprovalManager), + address(erc1155ApprovalManager) + ); + } + + function testPrepareAndMintDirectSaleERC20() public { + uint256 price = 1 ether; + uint256 quantity = 2; + uint256 totalPrice = price * quantity; + + _mockApprovedCurrency(true); + _mockPrimaryPayout(totalPrice, seller); + + _prepareDirectSale(address(currency), price, block.timestamp, 0); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), totalPrice + ((totalPrice * 3) / 100)); + + uint256 buyerBalanceBefore = currency.balanceOf(buyer); + uint256 sellerBalanceBefore = currency.balanceOf(seller); + uint256 networkBalanceBefore = currency.balanceOf(networkBeneficiary); + uint256 rewardBalanceBefore = currency.balanceOf(rewardAccumulator); + + vm.prank(buyer); + market.mintDirectSale(address(token), tokenId, address(currency), price, quantity, emptyProof); + + assertEq(token.balanceOf(buyer, tokenId), quantity); + assertEq(buyerBalanceBefore - currency.balanceOf(buyer), totalPrice + ((totalPrice * 3) / 100)); + assertEq(currency.balanceOf(seller) - sellerBalanceBefore, (totalPrice * 85) / 100); + assertEq( + currency.balanceOf(networkBeneficiary) - networkBalanceBefore, + ((totalPrice * 2) / 100) + ((totalPrice * 15) / 100) + ); + assertEq(currency.balanceOf(rewardAccumulator) - rewardBalanceBefore, (totalPrice * 1) / 100); + } + + function testMintDirectSaleERC20SplitRoundingPaysFullAmount() public { + uint256 price = 101; + uint256 marketplaceFee = 3; + + address payable[] memory splitRecipients = new address payable[](3); + uint8[] memory splitRatios = new uint8[](3); + splitRecipients[0] = payable(seller); + splitRecipients[1] = splitRecipientA; + splitRecipients[2] = splitRecipientB; + splitRatios[0] = 33; + splitRatios[1] = 33; + splitRatios[2] = 34; + + _mockApprovedCurrency(true); + _mockPrimaryPayout(price, seller); + _prepareDirectSaleWithSplits(address(currency), price, block.timestamp, 0, splitRecipients, splitRatios); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), price + marketplaceFee); + + uint256 buyerBalanceBefore = currency.balanceOf(buyer); + uint256 networkBalanceBefore = currency.balanceOf(networkBeneficiary); + uint256 rewardBalanceBefore = currency.balanceOf(rewardAccumulator); + + vm.prank(buyer); + market.mintDirectSale(address(token), tokenId, address(currency), price, 1, emptyProof); + + assertEq(buyerBalanceBefore - currency.balanceOf(buyer), price + marketplaceFee); + assertEq(currency.balanceOf(seller), 28); + assertEq(currency.balanceOf(splitRecipientA), 28); + assertEq(currency.balanceOf(splitRecipientB), 30); + assertEq(currency.balanceOf(networkBeneficiary) - networkBalanceBefore, 17); + assertEq(currency.balanceOf(rewardAccumulator) - rewardBalanceBefore, 1); + assertEq(currency.balanceOf(address(market)), 0); + } + + function testMintDirectSaleETH() public { + uint256 price = 1 ether; + uint256 quantity = 2; + uint256 totalPrice = price * quantity; + + _mockPrimaryPayout(totalPrice, seller); + _prepareDirectSale(address(0), price, block.timestamp, 0); + + uint256 sellerBalanceBefore = seller.balance; + uint256 networkBalanceBefore = networkBeneficiary.balance; + uint256 rewardBalanceBefore = rewardAccumulator.balance; + + vm.prank(buyer); + market.mintDirectSale{value: totalPrice + ((totalPrice * 3) / 100)}( + address(token), tokenId, address(0), price, quantity, emptyProof + ); + + assertEq(token.balanceOf(buyer, tokenId), quantity); + assertEq(seller.balance - sellerBalanceBefore, (totalPrice * 85) / 100); + assertEq( + networkBeneficiary.balance - networkBalanceBefore, ((totalPrice * 2) / 100) + ((totalPrice * 15) / 100) + ); + assertEq(rewardAccumulator.balance - rewardBalanceBefore, (totalPrice * 1) / 100); + } + + function testMintDirectSaleFree() public { + _prepareDirectSale(address(0), 0, block.timestamp, 0); + + vm.prank(buyer); + market.mintDirectSale(address(token), tokenId, address(0), 0, 3, emptyProof); + + assertEq(token.balanceOf(buyer, tokenId), 3); + } + + function testPrepareMintDirectSaleRevertsForZeroSplitRecipient() public { + address payable[] memory splitRecipients = new address payable[](2); + uint8[] memory splitRatios = new uint8[](2); + splitRecipients[0] = payable(address(0)); + splitRecipients[1] = payable(seller); + splitRatios[0] = 50; + splitRatios[1] = 50; + + vm.prank(seller); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.SplitRecipientCannotBeZero.selector, 0)); + market.prepareMintDirectSale( + address(token), tokenId, address(0), 1 ether, block.timestamp, 0, splitRecipients, splitRatios + ); + } + + function testPrepareMintDirectSaleRevertsForZeroSplitRatio() public { + address payable[] memory splitRecipients = new address payable[](2); + uint8[] memory splitRatios = new uint8[](2); + splitRecipients[0] = payable(seller); + splitRecipients[1] = splitRecipientA; + splitRatios[0] = 0; + splitRatios[1] = 100; + + vm.prank(seller); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.SplitRatioCannotBeZero.selector, 0)); + market.prepareMintDirectSale( + address(token), tokenId, address(0), 1 ether, block.timestamp, 0, splitRecipients, splitRatios + ); + } + + function testMintDirectSaleRevertsAfterCollectionOwnershipChanges() public { + uint256 price = 1 ether; + _prepareDirectSale(address(0), price, block.timestamp, 0); + + vm.prank(seller); + token.transferOwnership(nextOwner); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155Marketplace.NotContractOwner.selector, address(token), seller) + ); + market.mintDirectSale{value: price + ((price * 3) / 100)}( + address(token), tokenId, address(0), price, 1, emptyProof + ); + + assertEq(token.balanceOf(buyer, tokenId), 0); + } + + function testMintDirectSaleDerivesNetworkFeeFromMarketplaceFee() public { + uint256 price = 101; + _prepareDirectSale(address(0), price, block.timestamp, 0); + _mockInconsistentMarketplaceFee(price, seller); + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, seller), + abi.encode(false) + ); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector( + IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, address(token) + ), + abi.encode(15) + ); + + uint256 sellerBalanceBefore = seller.balance; + uint256 networkBalanceBefore = networkBeneficiary.balance; + uint256 rewardBalanceBefore = rewardAccumulator.balance; + + vm.prank(buyer); + market.mintDirectSale{value: 104}(address(token), tokenId, address(0), price, 1, emptyProof); + + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(seller.balance - sellerBalanceBefore, 86); + assertEq(networkBeneficiary.balance - networkBalanceBefore, 17); + assertEq(rewardAccumulator.balance - rewardBalanceBefore, 1); + assertEq(address(market).balance, 0); + } + + function testMintDirectSaleRevertsWhenStakingFeeExceedsMarketplaceFee() public { + uint256 price = 101; + _prepareDirectSale(address(0), price, block.timestamp, 0); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, price), + abi.encode(3) + ); + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, seller), + abi.encode(rewardAccumulator) + ); + vm.mockCall( + stakingSettings, abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, price), abi.encode(4) + ); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.StakingFeeExceedsMarketplaceFee.selector, 3, 4)); + market.mintDirectSale{value: 104}(address(token), tokenId, address(0), price, 1, emptyProof); + + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(address(market).balance, 0); + } + + function testMintDirectSaleRevertsWhenSettingsPlatformCommissionExceedsMax() public { + uint256 price = 1 ether; + _prepareDirectSale(address(0), price, block.timestamp, 0); + _mockMarketplaceFee(price, seller); + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, seller), + abi.encode(false) + ); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector( + IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, address(token) + ), + abi.encode(101) + ); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.PlatformCommissionExceeded.selector, 101, 100)); + market.mintDirectSale{value: price + ((price * 3) / 100)}( + address(token), tokenId, address(0), price, 1, emptyProof + ); + + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(address(market).balance, 0); + } + + function testMintDirectSaleRevertsWhenSpaceOperatorPlatformCommissionExceedsMax() public { + uint256 price = 1 ether; + _prepareDirectSale(address(0), price, block.timestamp, 0); + _mockMarketplaceFee(price, seller); + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, seller), + abi.encode(true) + ); + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.getPlatformCommission.selector, seller), + abi.encode(101) + ); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.PlatformCommissionExceeded.selector, 101, 100)); + market.mintDirectSale{value: price + ((price * 3) / 100)}( + address(token), tokenId, address(0), price, 1, emptyProof + ); + + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(address(market).balance, 0); + } + + function testMintDirectSaleAllowListAndLimits() public { + uint256 price = 1 ether; + bytes32 root = keccak256(abi.encodePacked(buyer)); + + _prepareDirectSale(address(0), price, block.timestamp, 2); + + vm.prank(seller); + market.setTokenAllowListConfig(root, block.timestamp + 1 days, address(token), tokenId); + + vm.prank(seller); + market.setTokenMintLimit(address(token), tokenId, 2); + + _mockPrimaryPayout(price * 2, seller); + vm.prank(buyer); + market.mintDirectSale{value: (price * 2) + (((price * 2) * 3) / 100)}( + address(token), tokenId, address(0), price, 2, emptyProof + ); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector( + IRareERC1155Marketplace.MintLimitExceeded.selector, address(token), tokenId, buyer, 1, 2, 2 + ) + ); + market.mintDirectSale{value: price + ((price * 3) / 100)}( + address(token), tokenId, address(0), price, 1, emptyProof + ); + } + + function testMintDirectSaleAllowListRejectsNonMember() public { + uint256 price = 1 ether; + bytes32 root = keccak256(abi.encodePacked(address(0x9999))); + + _prepareDirectSale(address(0), price, block.timestamp, 0); + + vm.prank(seller); + market.setTokenAllowListConfig(root, block.timestamp + 1 days, address(token), tokenId); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.AddressNotAllowlisted.selector, buyer)); + market.mintDirectSale{value: price + ((price * 3) / 100)}( + address(token), tokenId, address(0), price, 1, emptyProof + ); + } + + function testTokenScopedPrimaryConfigRevertsForUnknownTokenId() public { + uint256 missingTokenId = tokenId + 1; + bytes32 root = keccak256(abi.encodePacked(buyer)); + + vm.startPrank(seller); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155Marketplace.TokenNotFound.selector, address(token), missingTokenId) + ); + market.setTokenAllowListConfig(root, block.timestamp + 1 days, address(token), missingTokenId); + + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155Marketplace.TokenNotFound.selector, address(token), missingTokenId) + ); + market.setTokenMintLimit(address(token), missingTokenId, 1); + + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155Marketplace.TokenNotFound.selector, address(token), missingTokenId) + ); + market.setTokenTxLimit(address(token), missingTokenId, 1); + vm.stopPrank(); + } + + function testMintDirectSaleTxLimit() public { + uint256 price = 1 ether; + _prepareDirectSale(address(0), price, block.timestamp, 0); + + vm.prank(seller); + market.setTokenTxLimit(address(token), tokenId, 1); + + _mockPrimaryPayout(price, seller); + vm.prank(buyer); + market.mintDirectSale{value: price + ((price * 3) / 100)}( + address(token), tokenId, address(0), price, 1, emptyProof + ); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector( + IRareERC1155Marketplace.TransactionLimitExceeded.selector, address(token), tokenId, buyer, 1, 1 + ) + ); + market.mintDirectSale{value: price + ((price * 3) / 100)}( + address(token), tokenId, address(0), price, 1, emptyProof + ); + } + + function testMintDirectSaleLimitsOnlyCountWhileEnabled() public { + _prepareDirectSale(address(0), 0, block.timestamp, 0); + + vm.prank(buyer); + market.mintDirectSale(address(token), tokenId, address(0), 0, 2, emptyProof); + + assertEq(market.getTokenMintsPerAddress(address(token), tokenId, buyer), 0); + assertEq(market.getTokenTxsPerAddress(address(token), tokenId, buyer), 0); + + vm.startPrank(seller); + market.setTokenMintLimit(address(token), tokenId, 1); + market.setTokenTxLimit(address(token), tokenId, 1); + vm.stopPrank(); + + vm.prank(buyer); + market.mintDirectSale(address(token), tokenId, address(0), 0, 1, emptyProof); + + assertEq(market.getTokenMintsPerAddress(address(token), tokenId, buyer), 1); + assertEq(market.getTokenTxsPerAddress(address(token), tokenId, buyer), 1); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector( + IRareERC1155Marketplace.MintLimitExceeded.selector, address(token), tokenId, buyer, 1, 1, 1 + ) + ); + market.mintDirectSale(address(token), tokenId, address(0), 0, 1, emptyProof); + } + + function testMintDirectSaleLimitsAreTokenScoped() public { + uint256 otherTokenId; + + vm.prank(seller); + otherTokenId = token.createToken("ipfs://token/2.json", 20, royaltyReceiver); + + _prepareDirectSale(address(0), 0, block.timestamp, 0); + _prepareDirectSaleForToken(otherTokenId, address(0), 0, block.timestamp, 0); + + vm.prank(seller); + market.setTokenMintLimit(address(token), tokenId, 1); + + vm.prank(buyer); + market.mintDirectSale(address(token), tokenId, address(0), 0, 1, emptyProof); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector( + IRareERC1155Marketplace.MintLimitExceeded.selector, address(token), tokenId, buyer, 1, 1, 1 + ) + ); + market.mintDirectSale(address(token), tokenId, address(0), 0, 1, emptyProof); + + vm.prank(buyer); + market.mintDirectSale(address(token), otherTokenId, address(0), 0, 2, emptyProof); + + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(buyer, otherTokenId), 2); + assertEq(market.getTokenMintsPerAddress(address(token), tokenId, buyer), 1); + assertEq(market.getTokenMintsPerAddress(address(token), otherTokenId, buyer), 0); + } + + function testMintDirectSaleRevertsForWrongPriceCurrencyAndStartTime() public { + uint256 price = 1 ether; + _mockApprovedCurrency(true); + _prepareDirectSale(address(currency), price, block.timestamp + 1 hours, 0); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155Marketplace.SaleNotStarted.selector, block.timestamp + 1 hours) + ); + market.mintDirectSale(address(token), tokenId, address(currency), price, 1, emptyProof); + + skip(1 hours); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.PriceMismatch.selector, price + 1, price)); + market.mintDirectSale(address(token), tokenId, address(currency), price + 1, 1, emptyProof); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155Marketplace.CurrencyMismatch.selector, address(0), address(currency)) + ); + market.mintDirectSale(address(token), tokenId, address(0), price, 1, emptyProof); + } + + function testSetSalePriceAndBuyPartialERC20() public { + uint256 price = 1 ether; + uint256 quantity = 2; + uint256 totalPrice = price * quantity; + + _mintToSellerAndList(address(currency), price, 4); + _mockApprovedCurrency(true); + _mockSecondaryPayout(totalPrice, seller); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), totalPrice + ((totalPrice * 3) / 100)); + + uint256 sellerBalanceBefore = currency.balanceOf(seller); + uint256 royaltyBalanceBefore = currency.balanceOf(royaltyReceiver); + uint256 networkBalanceBefore = currency.balanceOf(networkBeneficiary); + uint256 rewardBalanceBefore = currency.balanceOf(rewardAccumulator); + + vm.prank(buyer); + market.buy(address(token), tokenId, seller, address(currency), price, quantity); + + assertEq(token.balanceOf(buyer, tokenId), quantity); + assertEq(currency.balanceOf(seller) - sellerBalanceBefore, (totalPrice * 90) / 100); + assertEq(currency.balanceOf(royaltyReceiver) - royaltyBalanceBefore, (totalPrice * 10) / 100); + assertEq(currency.balanceOf(networkBeneficiary) - networkBalanceBefore, (totalPrice * 2) / 100); + assertEq(currency.balanceOf(rewardAccumulator) - rewardBalanceBefore, (totalPrice * 1) / 100); + + IRareERC1155Marketplace.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); + assertEq(salePrice.quantity, 2); + } + + function testBuyRevertsForRoyaltyPayoutLengthMismatch() public { + uint256 price = 1 ether; + + _mintToSellerAndList(address(0), price, 1); + _mockMarketplaceFee(price, seller); + + address payable[] memory receivers = new address payable[](1); + uint256[] memory royalties = new uint256[](2); + receivers[0] = payable(royaltyReceiver); + royalties[0] = 0.01 ether; + royalties[1] = 0.01 ether; + + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), + abi.encode(receivers, royalties) + ); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.PayoutLengthMismatch.selector, 1, 2)); + market.buy{value: price + ((price * 3) / 100)}(address(token), tokenId, seller, address(0), price, 1); + + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(address(market).balance, 0); + } + + function testBuyRemainingQuantityClearsSalePrice() public { + uint256 price = 1 ether; + uint256 quantity = 2; + uint256 totalPrice = price * quantity; + + _mintToSellerAndList(address(0), price, quantity); + _mockSecondaryPayout(totalPrice, seller); + + vm.prank(buyer); + market.buy{value: totalPrice + ((totalPrice * 3) / 100)}( + address(token), tokenId, seller, address(0), price, quantity + ); + + IRareERC1155Marketplace.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); + assertEq(salePrice.quantity, 0); + } + + function testSetSalePriceAndBuyArbitraryERC1155() public { + TestOpenERC1155 openToken = new TestOpenERC1155(); + uint256 openTokenId = 42; + uint256 price = 1 ether; + uint256 quantity = 2; + uint256 totalPrice = price * quantity; + + openToken.mint(seller, openTokenId, quantity); + + vm.prank(seller); + openToken.setApprovalForAll(address(erc1155ApprovalManager), true); + + address payable[] memory splitRecipients = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRecipients[0] = payable(seller); + splitRatios[0] = 100; + + vm.prank(seller); + market.setSalePrice(address(openToken), openTokenId, address(0), price, quantity, splitRecipients, splitRatios); + + _mockSecondaryPayoutFor(address(openToken), openTokenId, totalPrice, seller); + + vm.prank(buyer); + market.buy{value: totalPrice + ((totalPrice * 3) / 100)}( + address(openToken), openTokenId, seller, address(0), price, quantity + ); + + assertEq(openToken.balanceOf(seller, openTokenId), 0); + assertEq(openToken.balanceOf(buyer, openTokenId), quantity); + } + + function testBuyRevertsForStaleApprovalAndBalance() public { + uint256 price = 1 ether; + + _mintToSellerAndList(address(0), price, 2); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), false); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155Marketplace.MarketplaceNotApproved.selector, seller, address(token)) + ); + market.buy{value: price + ((price * 3) / 100)}(address(token), tokenId, seller, address(0), price, 1); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + token.safeTransferFrom(seller, address(0x9999), tokenId, 2, ""); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector( + IRareERC1155Marketplace.InsufficientTokenBalance.selector, seller, address(token), tokenId, 1, 0 + ) + ); + market.buy{value: price + ((price * 3) / 100)}(address(token), tokenId, seller, address(0), price, 1); + } + + function testSetSalePriceRevertsForNonERC1155Contract() public { + TestNonERC165ERC1155Like nonERC1155 = new TestNonERC165ERC1155Like(); + uint256 unsupportedTokenId = 77; + + nonERC1155.setBalance(seller, unsupportedTokenId, 1); + + vm.prank(seller); + nonERC1155.setApprovalForAll(address(erc1155ApprovalManager), true); + + address payable[] memory splitRecipients = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRecipients[0] = payable(seller); + splitRatios[0] = 100; + + vm.prank(seller); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155Marketplace.InvalidERC1155Contract.selector, address(nonERC1155)) + ); + market.setSalePrice( + address(nonERC1155), unsupportedTokenId, address(0), 1 ether, 1, splitRecipients, splitRatios + ); + } + + function testSetSalePriceRevertsForZeroSplitRecipient() public { + address payable[] memory splitRecipients = new address payable[](2); + uint8[] memory splitRatios = new uint8[](2); + splitRecipients[0] = payable(seller); + splitRecipients[1] = payable(address(0)); + splitRatios[0] = 50; + splitRatios[1] = 50; + + vm.prank(seller); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.SplitRecipientCannotBeZero.selector, 1)); + market.setSalePrice(address(token), tokenId, address(0), 1 ether, 1, splitRecipients, splitRatios); + } + + function testSetSalePriceRevertsForZeroSplitRatio() public { + address payable[] memory splitRecipients = new address payable[](2); + uint8[] memory splitRatios = new uint8[](2); + splitRecipients[0] = payable(seller); + splitRecipients[1] = splitRecipientA; + splitRatios[0] = 100; + splitRatios[1] = 0; + + vm.prank(seller); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.SplitRatioCannotBeZero.selector, 1)); + market.setSalePrice(address(token), tokenId, address(0), 1 ether, 1, splitRecipients, splitRatios); + } + + function testBuyRevertsWhenERC1155TransferDoesNotMoveBalances() public { + TestNoOpERC1155 brokenToken = new TestNoOpERC1155(); + uint256 brokenTokenId = 88; + uint256 price = 1 ether; + + brokenToken.setBalance(seller, brokenTokenId, 1); + + vm.prank(seller); + brokenToken.setApprovalForAll(address(erc1155ApprovalManager), true); + + address payable[] memory splitRecipients = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRecipients[0] = payable(seller); + splitRatios[0] = 100; + + vm.prank(seller); + market.setSalePrice(address(brokenToken), brokenTokenId, address(0), price, 1, splitRecipients, splitRatios); + + _mockMarketplaceFee(price, seller); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector( + IRareERC1155Marketplace.InvalidERC1155Transfer.selector, + address(brokenToken), + brokenTokenId, + seller, + buyer, + 1 + ) + ); + market.buy{value: price + ((price * 3) / 100)}( + address(brokenToken), brokenTokenId, seller, address(0), price, 1 + ); + + assertEq(brokenToken.balanceOf(seller, brokenTokenId), 1); + assertEq(brokenToken.balanceOf(buyer, brokenTokenId), 0); + } + + function testBuyRevertsForSelfPurchase() public { + uint256 price = 1 ether; + + _mintToSellerAndList(address(0), price, 1); + + vm.prank(seller); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.SelfPurchaseUnsupported.selector, seller)); + market.buy{value: price + ((price * 3) / 100)}(address(token), tokenId, seller, address(0), price, 1); + } + + function testCancelSalePrice() public { + _mintToSellerAndList(address(0), 1 ether, 2); + + vm.prank(seller); + market.cancelSalePrice(address(token), tokenId); + + IRareERC1155Marketplace.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); + assertEq(salePrice.quantity, 0); + } + + function testCancelSalePriceAllowedWhilePaused() public { + _mintToSellerAndList(address(0), 1 ether, 2); + + vm.prank(deployer); + market.setContractPaused(true); + + vm.prank(seller); + market.cancelSalePrice(address(token), tokenId); + + IRareERC1155Marketplace.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); + assertEq(salePrice.quantity, 0); + } + + function testSetContractPausedEmitsEvent() public { + vm.prank(deployer); + vm.expectEmit(false, false, false, true, address(market)); + emit ContractPausedUpdated(true); + market.setContractPaused(true); + } + + function testDependencySettersEmitLocalEvents() public { + _expectDependencyUpdate("NETWORK_BENEFICIARY", address(0x8001), this._setNetworkBeneficiary); + _expectDependencyUpdate("MARKETPLACE_SETTINGS", address(0x8002), this._setMarketplaceSettings); + _expectDependencyUpdate("SPACE_OPERATOR_REGISTRY", address(0x8003), this._setSpaceOperatorRegistry); + _expectDependencyUpdate("ROYALTY_ENGINE", address(0x8004), this._setRoyaltyEngine); + _expectDependencyUpdate("PAYMENTS", address(0x8005), this._setPayments); + _expectDependencyUpdate("APPROVED_TOKEN_REGISTRY", address(0x8006), this._setApprovedTokenRegistry); + _expectDependencyUpdate("STAKING_SETTINGS", address(0x8007), this._setStakingSettings); + _expectDependencyUpdate("STAKING_REGISTRY", address(0x8008), this._setStakingRegistry); + _expectDependencyUpdate("ERC20_APPROVAL_MANAGER", address(0x8009), this._setERC20ApprovalManager); + _expectDependencyUpdate("ERC721_APPROVAL_MANAGER", address(0x8010), this._setERC721ApprovalManager); + _expectDependencyUpdate("ERC1155_APPROVAL_MANAGER", address(0x8011), this._setERC1155ApprovalManager); + } + + function testSetSalePriceRevertsWhilePaused() public { + address payable[] memory splitRecipients = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRecipients[0] = payable(seller); + splitRatios[0] = 100; + + vm.prank(deployer); + market.setContractPaused(true); + + vm.prank(seller); + vm.expectRevert(IRareERC1155Marketplace.ContractPaused.selector); + market.setSalePrice(address(token), tokenId, address(0), 1 ether, 1, splitRecipients, splitRatios); + } + + function testBuyRevertsWhilePaused() public { + uint256 price = 1 ether; + _mintToSellerAndList(address(0), price, 2); + + vm.prank(deployer); + market.setContractPaused(true); + + vm.prank(buyer); + vm.expectRevert(IRareERC1155Marketplace.ContractPaused.selector); + market.buy{value: price + ((price * 3) / 100)}(address(token), tokenId, seller, address(0), price, 1); + } + + function _expectDependencyUpdate(bytes32 _field, address _dependency, function(address) external _setter) private { + vm.recordLogs(); + + _setter(_dependency); + + Vm.Log[] memory entries = vm.getRecordedLogs(); + bytes32 dependencyTopic = bytes32(uint256(uint160(_dependency))); + bool found; + + for (uint256 i = 0; i < entries.length; i++) { + if ( + entries[i].emitter == address(market) && entries[i].topics.length == 3 + && entries[i].topics[0] == MARKETPLACE_DEPENDENCY_UPDATED_TOPIC && entries[i].topics[1] == _field + && entries[i].topics[2] == dependencyTopic + ) { + found = true; + break; + } + } + + assertTrue(found, "missing dependency update event"); + } + + function _setNetworkBeneficiary(address _dependency) external { + vm.prank(deployer); + market.setNetworkBeneficiary(_dependency); + } + + function _setMarketplaceSettings(address _dependency) external { + vm.prank(deployer); + market.setMarketplaceSettings(_dependency); + } + + function _setSpaceOperatorRegistry(address _dependency) external { + vm.prank(deployer); + market.setSpaceOperatorRegistry(_dependency); + } + + function _setRoyaltyEngine(address _dependency) external { + vm.prank(deployer); + market.setRoyaltyEngine(_dependency); + } + + function _setPayments(address _dependency) external { + vm.prank(deployer); + market.setPayments(_dependency); + } + + function _setApprovedTokenRegistry(address _dependency) external { + vm.prank(deployer); + market.setApprovedTokenRegistry(_dependency); + } + + function _setStakingSettings(address _dependency) external { + vm.prank(deployer); + market.setStakingSettings(_dependency); + } + + function _setStakingRegistry(address _dependency) external { + vm.prank(deployer); + market.setStakingRegistry(_dependency); + } + + function _setERC20ApprovalManager(address _dependency) external { + vm.prank(deployer); + market.setERC20ApprovalManager(_dependency); + } + + function _setERC721ApprovalManager(address _dependency) external { + vm.prank(deployer); + market.setERC721ApprovalManager(_dependency); + } + + function _setERC1155ApprovalManager(address _dependency) external { + vm.prank(deployer); + market.setERC1155ApprovalManager(_dependency); + } + + function _prepareDirectSale(address _currencyAddress, uint256 _price, uint256 _startTime, uint256 _maxMints) + internal + { + _prepareDirectSaleForToken(tokenId, _currencyAddress, _price, _startTime, _maxMints); + } + + function _prepareDirectSaleForToken( + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _startTime, + uint256 _maxMints + ) internal { + address payable[] memory splitRecipients = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRecipients[0] = payable(seller); + splitRatios[0] = 100; + + _prepareDirectSaleWithSplitsForToken( + _tokenId, _currencyAddress, _price, _startTime, _maxMints, splitRecipients, splitRatios + ); + } + + function _prepareDirectSaleWithSplits( + address _currencyAddress, + uint256 _price, + uint256 _startTime, + uint256 _maxMints, + address payable[] memory _splitRecipients, + uint8[] memory _splitRatios + ) internal { + _prepareDirectSaleWithSplitsForToken( + tokenId, _currencyAddress, _price, _startTime, _maxMints, _splitRecipients, _splitRatios + ); + } + + function _prepareDirectSaleWithSplitsForToken( + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _startTime, + uint256 _maxMints, + address payable[] memory _splitRecipients, + uint8[] memory _splitRatios + ) internal { + vm.prank(seller); + market.prepareMintDirectSale( + address(token), _tokenId, _currencyAddress, _price, _startTime, _maxMints, _splitRecipients, _splitRatios + ); + } + + function _mintToSellerAndList(address _currencyAddress, uint256 _price, uint256 _quantity) internal { + vm.prank(seller); + token.mintTo(seller, tokenId, _quantity); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + if (_currencyAddress != address(0)) { + _mockApprovedCurrency(true); + } + + address payable[] memory splitRecipients = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRecipients[0] = payable(seller); + splitRatios[0] = 100; + + vm.prank(seller); + market.setSalePrice(address(token), tokenId, _currencyAddress, _price, _quantity, splitRecipients, splitRatios); + } + + function _mockApprovedCurrency(bool _approved) internal { + vm.mockCall( + approvedTokenRegistry, + abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(currency)), + abi.encode(_approved) + ); + } + + function _mockPrimaryPayout(uint256 _amount, address _seller) internal { + _mockMarketplaceFee(_amount, _seller); + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, _seller), + abi.encode(false) + ); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector( + IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, address(token) + ), + abi.encode(15) + ); + } + + function _mockSecondaryPayout(uint256 _amount, address _seller) internal { + _mockSecondaryPayoutFor(address(token), tokenId, _amount, _seller); + } + + function _mockSecondaryPayoutFor(address _contractAddress, uint256 _tokenId, uint256 _amount, address _seller) + internal + { + _mockMarketplaceFee(_amount, _seller); + + address payable[] memory receivers = new address payable[](1); + uint256[] memory royalties = new uint256[](1); + receivers[0] = payable(royaltyReceiver); + royalties[0] = (_amount * 10) / 100; + + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, _contractAddress, _tokenId, _amount), + abi.encode(receivers, royalties) + ); + } + + function _mockMarketplaceFee(uint256 _amount, address _seller) internal { + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, _amount), + abi.encode((_amount * 3) / 100) + ); + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, _seller), + abi.encode(rewardAccumulator) + ); + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, _amount), + abi.encode((_amount * 1) / 100) + ); + } + + function _mockInconsistentMarketplaceFee(uint256 _amount, address _seller) internal { + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, _amount), + abi.encode((_amount * 3) / 100) + ); + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, _seller), + abi.encode(rewardAccumulator) + ); + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, _amount), + abi.encode((_amount * 1) / 100) + ); + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, _amount), + abi.encode((_amount * 1) / 100) + ); + } +} diff --git a/src/test/token/ERC1155/RareERC1155.t.sol b/src/test/token/ERC1155/RareERC1155.t.sol new file mode 100644 index 0000000..4f502e0 --- /dev/null +++ b/src/test/token/ERC1155/RareERC1155.t.sol @@ -0,0 +1,182 @@ +// SPDX-License-Identifier: AGPL-3.0-only +pragma solidity ^0.8.0; + +import "forge-std/Test.sol"; + +import {IRareERC1155} from "../../../token/ERC1155/IRareERC1155.sol"; +import {RareERC1155} from "../../../token/ERC1155/RareERC1155.sol"; +import {RareERC1155ContractFactory} from "../../../token/ERC1155/RareERC1155ContractFactory.sol"; +import {ITokenCreator} from "../../../token/extensions/ITokenCreator.sol"; +import {IERC2981} from "../../../token/extensions/IERC2981.sol"; + +contract RareERC1155Test is Test { + RareERC1155 private token; + RareERC1155ContractFactory private factory; + + address private owner = address(0x1111); + address private minter = address(0x2222); + address private collector = address(0x3333); + address private royaltyReceiver = address(0x4444); + + event MetadataUpdate(uint256 _tokenId); + + function setUp() public { + factory = new RareERC1155ContractFactory(); + factory.setDefaultMinter(minter); + + vm.prank(owner); + token = RareERC1155(factory.createRareERC1155Contract("Rare Editions", "RARE1155", "ipfs://base/{id}.json")); + } + + function testImplementationCannotBeInitialized() public { + RareERC1155 implementation = new RareERC1155(); + + vm.expectRevert("Initializable: contract is already initialized"); + implementation.init("Rare Editions", "RARE1155", "ipfs://base/{id}.json", owner, minter); + } + + function testFactoryCreatesInitializedClone() public { + factory = new RareERC1155ContractFactory(); + factory.setDefaultMinter(minter); + + vm.prank(owner); + address clone = factory.createRareERC1155Contract("Factory Editions", "FED", "ipfs://factory/{id}.json"); + + RareERC1155 created = RareERC1155(clone); + assertEq(created.owner(), owner); + assertEq(created.name(), "Factory Editions"); + assertEq(created.symbol(), "FED"); + assertTrue(created.isApprovedMinter(minter)); + } + + function testCreateTokenMintAndRoyalty() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 10, royaltyReceiver); + + assertEq(tokenId, 1); + assertEq(token.uri(tokenId), "ipfs://token/1.json"); + assertEq(token.maxSupplyForToken(tokenId), 10); + assertEq(token.tokenCreator(tokenId), owner); + assertTrue(token.supportsInterface(type(IRareERC1155).interfaceId)); + assertTrue(token.supportsInterface(type(ITokenCreator).interfaceId)); + assertTrue(token.supportsInterface(type(IERC2981).interfaceId)); + assertTrue(token.supportsInterface(0x49064906)); + + vm.prank(minter); + token.mintTo(collector, tokenId, 4); + + assertEq(token.balanceOf(collector, tokenId), 4); + assertEq(token.totalSupply(tokenId), 4); + assertEq(token.totalMintedForToken(tokenId), 4); + + (address receiver, uint256 royaltyAmount) = token.royaltyInfo(tokenId, 1 ether); + assertEq(receiver, royaltyReceiver); + assertEq(royaltyAmount, 0.1 ether); + } + + function testUpdateTokenURIEmitsMetadataUpdate() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 10); + + vm.expectEmit(false, false, false, true, address(token)); + emit MetadataUpdate(tokenId); + + vm.prank(owner); + token.updateTokenURI(tokenId, "ipfs://token/updated.json"); + + assertEq(token.uri(tokenId), "ipfs://token/updated.json"); + } + + function testMaxSupplyEnforced() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 2); + + vm.prank(minter); + token.mintTo(collector, tokenId, 2); + + vm.prank(minter); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155.ExceededMaxSupply.selector, tokenId, 3, 2)); + token.mintTo(collector, tokenId, 1); + } + + function testBurnDoesNotResetMaxSupply() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 2); + + vm.prank(minter); + token.mintTo(collector, tokenId, 2); + + vm.prank(collector); + token.burn(collector, tokenId, 1); + + assertEq(token.balanceOf(collector, tokenId), 1); + assertEq(token.totalSupply(tokenId), 1); + assertEq(token.totalMintedForToken(tokenId), 2); + + vm.prank(minter); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155.ExceededMaxSupply.selector, tokenId, 3, 2)); + token.mintTo(collector, tokenId, 1); + } + + function testOnlyOwnerOrApprovedMinterCanMint() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 5); + + vm.prank(collector); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155.CallerCannotMint.selector, collector)); + token.mintTo(collector, tokenId, 1); + + vm.prank(owner); + token.setMinterApproval(collector, true); + + vm.prank(collector); + token.mintTo(collector, tokenId, 1); + + assertEq(token.balanceOf(collector, tokenId), 1); + } + + function testBurnAndDisable() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 5); + + vm.prank(minter); + token.mintTo(collector, tokenId, 3); + + vm.prank(collector); + token.burn(collector, tokenId, 1); + assertEq(token.balanceOf(collector, tokenId), 2); + assertEq(token.totalSupply(tokenId), 2); + assertEq(token.totalMintedForToken(tokenId), 3); + + vm.prank(owner); + token.disableContract(); + + vm.prank(minter); + vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); + token.mintTo(collector, tokenId, 1); + } + + function testDisableFreezesOwnerManagedWrites() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 5, royaltyReceiver); + + vm.prank(owner); + token.disableContract(); + + vm.prank(owner); + vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); + token.setMinterApproval(collector, true); + + vm.prank(owner); + vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); + token.setDefaultRoyaltyReceiver(collector); + + vm.prank(owner); + vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); + token.setRoyaltyReceiverForToken(collector, tokenId); + + vm.prank(owner); + vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); + token.updateTokenURI(tokenId, "ipfs://token/updated.json"); + } +} diff --git a/src/test/utils/MarketUtils.t.sol b/src/test/utils/MarketUtils.t.sol index 9aedd34..4101c6a 100644 --- a/src/test/utils/MarketUtils.t.sol +++ b/src/test/utils/MarketUtils.t.sol @@ -19,592 +19,598 @@ import {MarketConfig} from "../../utils/structs/MarketConfig.sol"; import {IRareStakingRegistry} from "../../staking/registry/IRareStakingRegistry.sol"; contract TestContract { - using MarketUtils for MarketConfig.Config; - - MarketConfig.Config config; - - constructor( - address _marketplaceSettings, - address _stakingSettings, - address _royaltyEngine, - address _spaceOperatorRegistry, - address _approvedTokenRegistry, - address _payments, - address _stakingRegistry, - address _networkBeneficiary - ) { - require(_marketplaceSettings != address(0)); - require(_stakingSettings != address(0)); - require(_royaltyEngine != address(0)); - require(_spaceOperatorRegistry != address(0)); - require(_approvedTokenRegistry != address(0)); - require(_payments != address(0)); - require(_networkBeneficiary != address(0)); - config = MarketConfig.generateMarketConfig( - _networkBeneficiary, - _marketplaceSettings, - _spaceOperatorRegistry, - _royaltyEngine, - _payments, - _approvedTokenRegistry, - _stakingSettings, - _stakingRegistry - ); - } - - function payout( - address _originContract, - uint256 _tokenId, - address _currencyAddress, - uint256 _amount, - address _seller, - address payable[] memory _splitAddrs, - uint8[] memory _splitRatios - ) public payable { - config.payout(_originContract, _tokenId, _currencyAddress, _amount, _seller, _splitAddrs, _splitRatios); - } + using MarketUtils for MarketConfig.Config; + + MarketConfig.Config config; + + constructor( + address _marketplaceSettings, + address _stakingSettings, + address _royaltyEngine, + address _spaceOperatorRegistry, + address _approvedTokenRegistry, + address _payments, + address _stakingRegistry, + address _networkBeneficiary + ) { + require(_marketplaceSettings != address(0)); + require(_stakingSettings != address(0)); + require(_royaltyEngine != address(0)); + require(_spaceOperatorRegistry != address(0)); + require(_approvedTokenRegistry != address(0)); + require(_payments != address(0)); + require(_networkBeneficiary != address(0)); + config = MarketConfig.generateMarketConfig( + _networkBeneficiary, + _marketplaceSettings, + _spaceOperatorRegistry, + _royaltyEngine, + _payments, + _approvedTokenRegistry, + _stakingSettings, + _stakingRegistry + ); + } + + function payout( + address _originContract, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + address _seller, + address payable[] memory _splitAddrs, + uint8[] memory _splitRatios + ) public payable { + config.payout(_originContract, _tokenId, _currencyAddress, _amount, _seller, _splitAddrs, _splitRatios); + } + + function checkSplits(address payable[] calldata _splitAddrs, uint8[] calldata _splitRatios) public pure { + MarketUtils.checkSplits(_splitAddrs, _splitRatios); + } } contract TestRare is ERC20 { - constructor() ERC20("Rare", "RARE") { - _mint(msg.sender, 1_000_000_000 ether); - } + constructor() ERC20("Rare", "RARE") { + _mint(msg.sender, 1_000_000_000 ether); + } - function burn(uint256 amount) public { - _burn(msg.sender, amount); - } + function burn(uint256 amount) public { + _burn(msg.sender, amount); + } } contract MarketUtilsTest is Test { - TestContract tc; - Payments payments; - TestRare public rare; - uint256 constant initialRare = 1000 * 1e18; - - address deployer = address(0xabadabab); - address alice = address(0xbeef); - address bob = address(0xcafe); - address charlie = address(0xdead); - address stakingSettings = address(0xabadaba0); - address marketplaceSettings = address(0xabadaba1); - address royaltyRegistry = address(0xabadaba2); - address royaltyEngine = address(0xabadaba3); - address spaceOperatorRegistry = address(0xabadaba6); - address approvedTokenRegistry = address(0xabadaba7); - address stakingRegistry = address(0xabadaba9); - address networkBeneficiary = address(0xabadabaa); - address rewardPool = address(0xcccc); - - function contractDeploy() internal { - vm.startPrank(deployer); - - // Deploy TestRare - rare = new TestRare(); - - // Deploy Payments - payments = new Payments(); - - tc = new TestContract( - marketplaceSettings, - stakingSettings, - royaltyEngine, - spaceOperatorRegistry, - approvedTokenRegistry, - address(payments), - stakingRegistry, - networkBeneficiary - ); - - // etch code into these so we can stub out methods. Need some - vm.etch(marketplaceSettings, address(rare).code); - vm.etch(stakingSettings, address(rare).code); - vm.etch(stakingRegistry, address(rare).code); - vm.etch(royaltyRegistry, address(rare).code); - vm.etch(royaltyEngine, address(rare).code); - vm.etch(spaceOperatorRegistry, address(rare).code); - vm.etch(approvedTokenRegistry, address(rare).code); - - vm.stopPrank(); - } - - function setUp() public { - deal(deployer, 100 ether); - deal(alice, 100 ether); - deal(bob, 100 ether); - deal(charlie, 100 ether); - contractDeploy(); - vm.startPrank(deployer); - rare.transfer(alice, initialRare); - rare.transfer(bob, initialRare); - vm.stopPrank(); - } - - function test_payout_primary() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call -- 3% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup has isApprovedSpaceOperator -- false - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup has getERC721ContractPrimarySaleFeePercentage -- 15% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), - abi.encode(15) - ); - uint256 balanceBefore = charlie.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - uint256 balanceAfter = charlie.balance; - uint256 expectedBalance = balanceBefore + ((amount * 85) / 100); - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); + TestContract tc; + Payments payments; + TestRare public rare; + uint256 constant initialRare = 1000 * 1e18; + + address deployer = address(0xabadabab); + address alice = address(0xbeef); + address bob = address(0xcafe); + address charlie = address(0xdead); + address stakingSettings = address(0xabadaba0); + address marketplaceSettings = address(0xabadaba1); + address royaltyRegistry = address(0xabadaba2); + address royaltyEngine = address(0xabadaba3); + address spaceOperatorRegistry = address(0xabadaba6); + address approvedTokenRegistry = address(0xabadaba7); + address stakingRegistry = address(0xabadaba9); + address networkBeneficiary = address(0xabadabaa); + address rewardPool = address(0xcccc); + + function contractDeploy() internal { + vm.startPrank(deployer); + + // Deploy TestRare + rare = new TestRare(); + + // Deploy Payments + payments = new Payments(); + + tc = new TestContract( + marketplaceSettings, + stakingSettings, + royaltyEngine, + spaceOperatorRegistry, + approvedTokenRegistry, + address(payments), + stakingRegistry, + networkBeneficiary + ); + + // etch code into these so we can stub out methods. Need some + vm.etch(marketplaceSettings, address(rare).code); + vm.etch(stakingSettings, address(rare).code); + vm.etch(stakingRegistry, address(rare).code); + vm.etch(royaltyRegistry, address(rare).code); + vm.etch(royaltyEngine, address(rare).code); + vm.etch(spaceOperatorRegistry, address(rare).code); + vm.etch(approvedTokenRegistry, address(rare).code); + + vm.stopPrank(); } - } - - function test_payout_primary_spaces() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call -- 0% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup isApprovedSpaceOperator -- true - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(true) - ); - - // setup getPlatformCommission -- 5% - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.getPlatformCommission.selector, charlie), - abi.encode(5) - ); - uint256 balanceBefore = charlie.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - uint256 balanceAfter = charlie.balance; - uint256 expectedBalance = balanceBefore + ((amount * 95) / 100); - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); + + function setUp() public { + deal(deployer, 100 ether); + deal(alice, 100 ether); + deal(bob, 100 ether); + deal(charlie, 100 ether); + contractDeploy(); + vm.startPrank(deployer); + rare.transfer(alice, initialRare); + rare.transfer(bob, initialRare); + vm.stopPrank(); } - } - - function test_payout_secondary() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - address payable[] memory royaltyReceiverAddrs = new address payable[](1); - uint256[] memory royaltyAmounts = new uint256[](1); - royaltyReceiverAddrs[0] = payable(alice); - royaltyAmounts[0] = (amount * 10) / 100; - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call -- 3% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(true) - ); - - // setup has getRoyalty -- 10% - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, 1, amount), - abi.encode(royaltyReceiverAddrs, royaltyAmounts) - ); - - uint256 balanceBefore = charlie.balance; - uint256 aliceBalanceBefore = alice.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - uint256 balanceAfter = charlie.balance; - uint256 expectedBalance = balanceBefore + ((amount * 90) / 100); - uint256 aliceBalanceAfter = alice.balance; - uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 10) / 100); - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); + + function test_checkSplits_ZeroAddressRecipient() public { + address payable[] memory splitAddrs = new address payable[](2); + uint8[] memory splitRatios = new uint8[](2); + splitAddrs[0] = payable(alice); + splitAddrs[1] = payable(address(0)); + splitRatios[0] = 50; + splitRatios[1] = 50; + + vm.expectRevert("checkSplits::Split cannot be zero address"); + tc.checkSplits(splitAddrs, splitRatios); } - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: aliceExpectedBalance", aliceExpectedBalance); - emit log_named_uint("Actual: aliceBalanceAfter", aliceBalanceAfter); - revert("incorrect balance after on payout"); + + function test_checkSplits_ZeroRatio() public { + address payable[] memory splitAddrs = new address payable[](2); + uint8[] memory splitRatios = new uint8[](2); + splitAddrs[0] = payable(alice); + splitAddrs[1] = payable(bob); + splitRatios[0] = 100; + splitRatios[1] = 0; + + vm.expectRevert("checkSplits::Ratio must be greater than 0"); + tc.checkSplits(splitAddrs, splitRatios); } - } - - function test_payout_staking_pool() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(rewardPool) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 2) / 100) - ); - - // setup calculateStakingFee call -- 1% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(amount / 100) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup has isApprovedSpaceOperator -- false - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup has getERC721ContractPrimarySaleFeePercentage -- 15% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), - abi.encode(15) - ); - uint256 balanceBefore = rewardPool.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - uint256 balanceAfter = rewardPool.balance; - uint256 expectedBalance = balanceBefore + (amount / 100); - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); + + function test_payout_primary() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call -- 3% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup has isApprovedSpaceOperator -- false + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup has getERC721ContractPrimarySaleFeePercentage -- 15% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector( + IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract + ), + abi.encode(15) + ); + uint256 balanceBefore = charlie.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + uint256 balanceAfter = charlie.balance; + uint256 expectedBalance = balanceBefore + ((amount * 85) / 100); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); + } } - } - - function test_payout_no_staking_pool() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 2) / 100) - ); - - // setup calculateStakingFee call -- 1% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(amount / 100) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup has isApprovedSpaceOperator -- false - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup has getERC721ContractPrimarySaleFeePercentage -- 15% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), - abi.encode(15) - ); - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - uint256 balanceAfter = rewardPool.balance; - uint256 expectedBalance = balanceAfter; - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); + + function test_payout_primary_spaces() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call -- 0% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup isApprovedSpaceOperator -- true + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(true) + ); + + // setup getPlatformCommission -- 5% + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.getPlatformCommission.selector, charlie), + abi.encode(5) + ); + uint256 balanceBefore = charlie.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + uint256 balanceAfter = charlie.balance; + uint256 expectedBalance = balanceBefore + ((amount * 95) / 100); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); + } } - } - - function test_payout_erc20_no_staking_pool() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(rare); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 2) / 100) - ); - - // setup calculateStakingFee call -- 1% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(amount / 100) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup has isApprovedSpaceOperator -- false - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup has getERC721ContractPrimarySaleFeePercentage -- 15% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), - abi.encode(15) - ); - vm.prank(deployer); - rare.transfer(address(tc), amount + ((amount * 3) / 100)); - uint256 nbBalanceBefore = rare.balanceOf(networkBeneficiary); - tc.payout(originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios); - uint256 balanceAfter = rewardPool.balance; - uint256 expectedBalance = balanceAfter; - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); + + function test_payout_secondary() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + address payable[] memory royaltyReceiverAddrs = new address payable[](1); + uint256[] memory royaltyAmounts = new uint256[](1); + royaltyReceiverAddrs[0] = payable(alice); + royaltyAmounts[0] = (amount * 10) / 100; + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call -- 3% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(true) + ); + + // setup has getRoyalty -- 10% + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, 1, amount), + abi.encode(royaltyReceiverAddrs, royaltyAmounts) + ); + + uint256 balanceBefore = charlie.balance; + uint256 aliceBalanceBefore = alice.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + uint256 balanceAfter = charlie.balance; + uint256 expectedBalance = balanceBefore + ((amount * 90) / 100); + uint256 aliceBalanceAfter = alice.balance; + uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 10) / 100); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); + } + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: aliceExpectedBalance", aliceExpectedBalance); + emit log_named_uint("Actual: aliceBalanceAfter", aliceBalanceAfter); + revert("incorrect balance after on payout"); + } + } + + function test_payout_staking_pool() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(rewardPool) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 2) / 100) + ); + + // setup calculateStakingFee call -- 1% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(amount / 100) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup has isApprovedSpaceOperator -- false + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup has getERC721ContractPrimarySaleFeePercentage -- 15% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector( + IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract + ), + abi.encode(15) + ); + uint256 balanceBefore = rewardPool.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + uint256 balanceAfter = rewardPool.balance; + uint256 expectedBalance = balanceBefore + (amount / 100); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); + } + } + + function test_payout_no_staking_pool() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 2) / 100) + ); + + // setup calculateStakingFee call -- 1% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(amount / 100) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup has isApprovedSpaceOperator -- false + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup has getERC721ContractPrimarySaleFeePercentage -- 15% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector( + IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract + ), + abi.encode(15) + ); + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + uint256 balanceAfter = rewardPool.balance; + uint256 expectedBalance = balanceAfter; + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); + } } - uint256 nbBalanceAfter = rare.balanceOf(networkBeneficiary); - uint256 nbExpectedBalance = nbBalanceBefore + ((amount * (15 + 3)) / 100); - if (nbBalanceAfter != nbExpectedBalance) { - emit log_named_uint("Expected: nbBalanceAfter", nbExpectedBalance); - emit log_named_uint("Actual: nbBalanceAfter", nbBalanceAfter); - revert("incorrect balance for network beneficiary after on payout"); + function test_payout_erc20_no_staking_pool() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(rare); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 2) / 100) + ); + + // setup calculateStakingFee call -- 1% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(amount / 100) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup has isApprovedSpaceOperator -- false + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup has getERC721ContractPrimarySaleFeePercentage -- 15% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector( + IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract + ), + abi.encode(15) + ); + vm.prank(deployer); + rare.transfer(address(tc), amount + ((amount * 3) / 100)); + uint256 nbBalanceBefore = rare.balanceOf(networkBeneficiary); + tc.payout(originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios); + uint256 balanceAfter = rewardPool.balance; + uint256 expectedBalance = balanceAfter; + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); + } + + uint256 nbBalanceAfter = rare.balanceOf(networkBeneficiary); + uint256 nbExpectedBalance = nbBalanceBefore + ((amount * (15 + 3)) / 100); + if (nbBalanceAfter != nbExpectedBalance) { + emit log_named_uint("Expected: nbBalanceAfter", nbExpectedBalance); + emit log_named_uint("Actual: nbBalanceAfter", nbBalanceAfter); + revert("incorrect balance for network beneficiary after on payout"); + } } - } } diff --git a/src/test/v2/approver/ERC1155ApprovalManager.t.sol b/src/test/v2/approver/ERC1155ApprovalManager.t.sol new file mode 100644 index 0000000..78b0f16 --- /dev/null +++ b/src/test/v2/approver/ERC1155ApprovalManager.t.sol @@ -0,0 +1,193 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +import {Test} from "forge-std/Test.sol"; +import {ERC1155} from "openzeppelin-contracts/token/ERC1155/ERC1155.sol"; + +import {ERC1155ApprovalManager} from "../../../v2/approver/ERC1155/ERC1155ApprovalManager.sol"; +import {IERC1155ApprovalManager} from "../../../v2/approver/ERC1155/IERC1155ApprovalManager.sol"; + +contract TestERC1155 is ERC1155 { + constructor() ERC1155("ipfs://test/{id}.json") {} + + function mint(address to, uint256 id, uint256 amount) external { + _mint(to, id, amount, ""); + } + + function mintBatch(address to, uint256[] calldata ids, uint256[] calldata amounts) external { + _mintBatch(to, ids, amounts, ""); + } +} + +contract ERC1155ApprovalManagerTest is Test { + event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); + event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); + + bytes32 constant MANAGER_ROLE = keccak256("MANAGER_ROLE"); + bytes32 constant OPERATOR_ROLE = keccak256("OPERATOR_ROLE"); + bytes32 constant DEFAULT_ADMIN_ROLE = 0x00; + + ERC1155ApprovalManager public approvalManager; + TestERC1155 public token; + + address public constant ADMIN = address(0x1); + address public constant OPERATOR = address(0x2); + address public constant TOKEN_OWNER = address(0x3); + address public constant TOKEN_RECIPIENT = address(0x4); + uint256 public constant TOKEN_ID = 1; + uint256 public constant TRANSFER_AMOUNT = 5; + + function setUp() public { + vm.startPrank(ADMIN); + approvalManager = new ERC1155ApprovalManager(); + token = new TestERC1155(); + token.mint(TOKEN_OWNER, TOKEN_ID, 10); + vm.stopPrank(); + } + + function test_InitialState() public { + assertTrue(approvalManager.hasRole(DEFAULT_ADMIN_ROLE, ADMIN)); + assertTrue(approvalManager.hasRole(MANAGER_ROLE, ADMIN)); + assertFalse(approvalManager.hasRole(OPERATOR_ROLE, OPERATOR)); + } + + function test_GrantOperatorRole() public { + vm.startPrank(ADMIN); + + vm.expectEmit(true, true, true, true); + emit RoleGranted(OPERATOR_ROLE, OPERATOR, ADMIN); + + approvalManager.grantOperatorRole(OPERATOR); + assertTrue(approvalManager.hasRole(OPERATOR_ROLE, OPERATOR)); + + vm.stopPrank(); + } + + function test_RevokeOperatorRole() public { + vm.startPrank(ADMIN); + + approvalManager.grantOperatorRole(OPERATOR); + assertTrue(approvalManager.hasRole(OPERATOR_ROLE, OPERATOR)); + + vm.expectEmit(true, true, true, true); + emit RoleRevoked(OPERATOR_ROLE, OPERATOR, ADMIN); + + approvalManager.revokeOperatorRole(OPERATOR); + assertFalse(approvalManager.hasRole(OPERATOR_ROLE, OPERATOR)); + + vm.stopPrank(); + } + + function test_BatchGrantOperatorRole() public { + vm.startPrank(ADMIN); + + address[] memory operators = new address[](2); + operators[0] = OPERATOR; + operators[1] = address(0x5); + + approvalManager.batchGrantOperatorRole(operators); + + assertTrue(approvalManager.hasRole(OPERATOR_ROLE, operators[0])); + assertTrue(approvalManager.hasRole(OPERATOR_ROLE, operators[1])); + + vm.stopPrank(); + } + + function test_BatchRevokeOperatorRole() public { + vm.startPrank(ADMIN); + + address[] memory operators = new address[](2); + operators[0] = OPERATOR; + operators[1] = address(0x5); + + approvalManager.batchGrantOperatorRole(operators); + approvalManager.batchRevokeOperatorRole(operators); + + assertFalse(approvalManager.hasRole(OPERATOR_ROLE, operators[0])); + assertFalse(approvalManager.hasRole(OPERATOR_ROLE, operators[1])); + + vm.stopPrank(); + } + + function test_SafeTransferFrom() public { + vm.startPrank(ADMIN); + approvalManager.grantOperatorRole(OPERATOR); + vm.stopPrank(); + + vm.startPrank(TOKEN_OWNER); + token.setApprovalForAll(address(approvalManager), true); + vm.stopPrank(); + + vm.prank(OPERATOR); + approvalManager.safeTransferFrom(address(token), TOKEN_OWNER, TOKEN_RECIPIENT, TOKEN_ID, TRANSFER_AMOUNT, ""); + + assertEq(token.balanceOf(TOKEN_RECIPIENT, TOKEN_ID), TRANSFER_AMOUNT); + assertEq(token.balanceOf(TOKEN_OWNER, TOKEN_ID), 10 - TRANSFER_AMOUNT); + } + + function test_SafeBatchTransferFrom() public { + uint256[] memory ids = new uint256[](2); + uint256[] memory amounts = new uint256[](2); + ids[0] = TOKEN_ID; + ids[1] = 2; + amounts[0] = 2; + amounts[1] = 3; + + token.mint(TOKEN_OWNER, ids[1], amounts[1]); + + vm.startPrank(ADMIN); + approvalManager.grantOperatorRole(OPERATOR); + vm.stopPrank(); + + vm.startPrank(TOKEN_OWNER); + token.setApprovalForAll(address(approvalManager), true); + vm.stopPrank(); + + vm.prank(OPERATOR); + approvalManager.safeBatchTransferFrom(address(token), TOKEN_OWNER, TOKEN_RECIPIENT, ids, amounts, ""); + + assertEq(token.balanceOf(TOKEN_RECIPIENT, ids[0]), amounts[0]); + assertEq(token.balanceOf(TOKEN_RECIPIENT, ids[1]), amounts[1]); + } + + function test_SafeTransferFromRevertsForNonOperator() public { + vm.startPrank(TOKEN_OWNER); + token.setApprovalForAll(address(approvalManager), true); + vm.stopPrank(); + + vm.prank(address(0x6)); + vm.expectRevert(IERC1155ApprovalManager.NotOperator.selector); + approvalManager.safeTransferFrom(address(token), TOKEN_OWNER, TOKEN_RECIPIENT, TOKEN_ID, TRANSFER_AMOUNT, ""); + } + + function test_SafeTransferFromRevertsWhenNotApproved() public { + vm.startPrank(ADMIN); + approvalManager.grantOperatorRole(OPERATOR); + vm.stopPrank(); + + vm.prank(OPERATOR); + vm.expectRevert("ERC1155: caller is not token owner or approved"); + approvalManager.safeTransferFrom(address(token), TOKEN_OWNER, TOKEN_RECIPIENT, TOKEN_ID, TRANSFER_AMOUNT, ""); + } + + function test_OnlyManagerCanGrantRole() public { + vm.prank(OPERATOR); + vm.expectRevert(abi.encodeWithSelector(IERC1155ApprovalManager.NotManager.selector, OPERATOR)); + approvalManager.grantOperatorRole(address(0x6)); + } + + function test_SafeTransferFrom_RevertsWhenDisabled() public { + vm.startPrank(ADMIN); + approvalManager.grantOperatorRole(OPERATOR); + approvalManager.disable(); + vm.stopPrank(); + + vm.startPrank(TOKEN_OWNER); + token.setApprovalForAll(address(approvalManager), true); + vm.stopPrank(); + + vm.prank(OPERATOR); + vm.expectRevert(IERC1155ApprovalManager.ContractDisabledError.selector); + approvalManager.safeTransferFrom(address(token), TOKEN_OWNER, TOKEN_RECIPIENT, TOKEN_ID, TRANSFER_AMOUNT, ""); + } +} diff --git a/src/test/v2/utils/MarketUtilsV2.t.sol b/src/test/v2/utils/MarketUtilsV2.t.sol index 5e8ac0a..b03ca70 100644 --- a/src/test/v2/utils/MarketUtilsV2.t.sol +++ b/src/test/v2/utils/MarketUtilsV2.t.sol @@ -23,1435 +23,1408 @@ import {ERC721ApprovalManager} from "../../../v2/approver/ERC721/ERC721ApprovalM import {TestNFT} from "../utils/TestNft.sol"; contract TestContract { - using MarketUtilsV2 for MarketConfigV2.Config; - - MarketConfigV2.Config config; - - constructor( - address _marketplaceSettings, - address _stakingSettings, - address _royaltyEngine, - address _spaceOperatorRegistry, - address _approvedTokenRegistry, - address _payments, - address _stakingRegistry, - address _networkBeneficiary, - address _erc20ApprovalManager, - address _erc721ApprovalManager - ) { - require(_marketplaceSettings != address(0)); - require(_stakingSettings != address(0)); - require(_royaltyEngine != address(0)); - require(_spaceOperatorRegistry != address(0)); - require(_approvedTokenRegistry != address(0)); - require(_payments != address(0)); - require(_networkBeneficiary != address(0)); - require(_erc20ApprovalManager != address(0)); - require(_erc721ApprovalManager != address(0)); - config = MarketConfigV2.generateMarketConfig( - _networkBeneficiary, - _marketplaceSettings, - _spaceOperatorRegistry, - _royaltyEngine, - _payments, - _approvedTokenRegistry, - _stakingSettings, - _stakingRegistry, - _erc20ApprovalManager, - _erc721ApprovalManager - ); - } - - function checkIfCurrencyIsApproved(address _currencyAddress) public view { - config.checkIfCurrencyIsApproved(_currencyAddress); - } - - function senderMustBeTokenOwner(address _originContract, uint256 _tokenId) public view { - MarketUtilsV2.senderMustBeTokenOwner(_originContract, _tokenId); - } - - function addressMustHaveMarketplaceApprovedForNFT( - address _addr, - address _originContract, - uint256 _tokenId - ) public view { - config.addressMustHaveMarketplaceApprovedForNFT(_addr, _originContract, _tokenId); - } - - function checkSplits(address payable[] calldata _splitAddrs, uint8[] calldata _splitRatios) public pure { - MarketUtilsV2.checkSplits(_splitAddrs, _splitRatios); - } - - function senderMustHaveMarketplaceApproved(address _currency, uint256 _amount) public view { - config.senderMustHaveMarketplaceApproved(_currency, _amount); - } - - function checkAmountAndTransfer(address _currencyAddress, uint256 _amount) public payable { - config.checkAmountAndTransfer(_currencyAddress, _amount); - } - - function refund(address _currencyAddress, uint256 _amount, uint256 _marketplaceFee, address _recipient) public { - config.refund(_currencyAddress, _amount, _marketplaceFee, _recipient); - } - - function payout( - address _originContract, - uint256 _tokenId, - address _currencyAddress, - uint256 _amount, - address _seller, - address payable[] memory _splitAddrs, - uint8[] memory _splitRatios - ) public payable { - config.payout(_originContract, _tokenId, _currencyAddress, _amount, _seller, _splitAddrs, _splitRatios); - } - - function transferERC721(address _originContract, address _from, address _to, uint256 _tokenId) public { - config.transferERC721(_originContract, _from, _to, _tokenId); - } + using MarketUtilsV2 for MarketConfigV2.Config; + + MarketConfigV2.Config config; + + constructor( + address _marketplaceSettings, + address _stakingSettings, + address _royaltyEngine, + address _spaceOperatorRegistry, + address _approvedTokenRegistry, + address _payments, + address _stakingRegistry, + address _networkBeneficiary, + address _erc20ApprovalManager, + address _erc721ApprovalManager + ) { + require(_marketplaceSettings != address(0)); + require(_stakingSettings != address(0)); + require(_royaltyEngine != address(0)); + require(_spaceOperatorRegistry != address(0)); + require(_approvedTokenRegistry != address(0)); + require(_payments != address(0)); + require(_networkBeneficiary != address(0)); + require(_erc20ApprovalManager != address(0)); + require(_erc721ApprovalManager != address(0)); + config = MarketConfigV2.generateMarketConfig( + _networkBeneficiary, + _marketplaceSettings, + _spaceOperatorRegistry, + _royaltyEngine, + _payments, + _approvedTokenRegistry, + _stakingSettings, + _stakingRegistry, + _erc20ApprovalManager, + _erc721ApprovalManager + ); + } + + function checkIfCurrencyIsApproved(address _currencyAddress) public view { + config.checkIfCurrencyIsApproved(_currencyAddress); + } + + function senderMustBeTokenOwner(address _originContract, uint256 _tokenId) public view { + MarketUtilsV2.senderMustBeTokenOwner(_originContract, _tokenId); + } + + function addressMustHaveMarketplaceApprovedForNFT(address _addr, address _originContract, uint256 _tokenId) + public + view + { + config.addressMustHaveMarketplaceApprovedForNFT(_addr, _originContract, _tokenId); + } + + function checkSplits(address payable[] calldata _splitAddrs, uint8[] calldata _splitRatios) public pure { + MarketUtilsV2.checkSplits(_splitAddrs, _splitRatios); + } + + function senderMustHaveMarketplaceApproved(address _currency, uint256 _amount) public view { + config.senderMustHaveMarketplaceApproved(_currency, _amount); + } + + function checkAmountAndTransfer(address _currencyAddress, uint256 _amount) public payable { + config.checkAmountAndTransfer(_currencyAddress, _amount); + } + + function refund(address _currencyAddress, uint256 _amount, uint256 _marketplaceFee, address _recipient) public { + config.refund(_currencyAddress, _amount, _marketplaceFee, _recipient); + } + + function payout( + address _originContract, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + address _seller, + address payable[] memory _splitAddrs, + uint8[] memory _splitRatios + ) public payable { + config.payout(_originContract, _tokenId, _currencyAddress, _amount, _seller, _splitAddrs, _splitRatios); + } + + function transferERC721(address _originContract, address _from, address _to, uint256 _tokenId) public { + config.transferERC721(_originContract, _from, _to, _tokenId); + } } contract TestRare is ERC20 { - constructor() ERC20("Rare", "RARE") { - _mint(msg.sender, 1_000_000_000 ether); - } + constructor() ERC20("Rare", "RARE") { + _mint(msg.sender, 1_000_000_000 ether); + } - function burn(uint256 amount) public { - _burn(msg.sender, amount); - } + function burn(uint256 amount) public { + _burn(msg.sender, amount); + } } contract MarketUtilsV2Test is Test { - TestContract tc; - Payments payments; - TestRare public rare; - TestNFT public nft; - ERC20ApprovalManager public erc20ApprovalManager; - ERC721ApprovalManager public erc721ApprovalManager; - uint256 constant initialRare = 1000 * 1e18; - - address deployer = address(0xabadabab); - address alice = address(0xbeef); - address bob = address(0xcafe); - address charlie = address(0xdead); - address stakingSettings = address(0xabadaba0); - address marketplaceSettings = address(0xabadaba1); - address royaltyRegistry = address(0xabadaba2); - address royaltyEngine = address(0xabadaba3); - address spaceOperatorRegistry = address(0xabadaba6); - address approvedTokenRegistry = address(0xabadaba7); - address stakingRegistry = address(0xabadaba9); - address networkBeneficiary = address(0xabadabaa); - address rewardPool = address(0xcccc); - - function contractDeploy() internal { - vm.startPrank(deployer); - - // Deploy TestRare - rare = new TestRare(); - - // Deploy TestNFT - nft = new TestNFT(); - - // Deploy Payments - payments = new Payments(); - - // Deploy actual approval managers - erc20ApprovalManager = new ERC20ApprovalManager(); - erc721ApprovalManager = new ERC721ApprovalManager(); - - tc = new TestContract( - marketplaceSettings, - stakingSettings, - royaltyEngine, - spaceOperatorRegistry, - approvedTokenRegistry, - address(payments), - stakingRegistry, - networkBeneficiary, - address(erc20ApprovalManager), - address(erc721ApprovalManager) - ); - - // Setup operator role after test contract is created - erc20ApprovalManager.grantRole(erc20ApprovalManager.OPERATOR_ROLE(), address(tc)); - erc721ApprovalManager.grantRole(erc721ApprovalManager.OPERATOR_ROLE(), address(tc)); - - // etch code into these so we can stub out methods - vm.etch(marketplaceSettings, address(rare).code); - vm.etch(stakingSettings, address(rare).code); - vm.etch(stakingRegistry, address(rare).code); - vm.etch(royaltyRegistry, address(rare).code); - vm.etch(royaltyEngine, address(rare).code); - vm.etch(spaceOperatorRegistry, address(rare).code); - vm.etch(approvedTokenRegistry, address(rare).code); - - vm.stopPrank(); - } - - function setUp() public { - deal(deployer, 100 ether); - deal(alice, 100 ether); - deal(bob, 100 ether); - deal(charlie, 100 ether); - contractDeploy(); - vm.startPrank(deployer); - rare.transfer(alice, initialRare); - rare.transfer(bob, initialRare); - vm.stopPrank(); - } - - function test_checkIfCurrencyIsApproved_ETH() public { - // ETH (address(0)) should always be approved - tc.checkIfCurrencyIsApproved(address(0)); - } - - function test_checkIfCurrencyIsApproved_ApprovedERC20() public { - // Mock approved token check - vm.mockCall( - approvedTokenRegistry, - abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(rare)), - abi.encode(true) - ); - - tc.checkIfCurrencyIsApproved(address(rare)); - } - - function test_checkIfCurrencyIsApproved_UnapprovedERC20() public { - // Mock unapproved token check - vm.mockCall( - approvedTokenRegistry, - abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(rare)), - abi.encode(false) - ); - - vm.expectRevert("Not approved currency"); - tc.checkIfCurrencyIsApproved(address(rare)); - } - - function test_senderMustBeTokenOwner_Success() public { - address nftContract = address(0x1234); - uint256 tokenId = 1; - - // Mock NFT ownership - vm.mockCall(nftContract, abi.encodeWithSelector(IERC721.ownerOf.selector, tokenId), abi.encode(address(this))); - - vm.prank(address(this)); - tc.senderMustBeTokenOwner(nftContract, tokenId); - } - - function test_senderMustBeTokenOwner_Failure() public { - address nftContract = address(0x1234); - uint256 tokenId = 1; - - // Mock NFT ownership to different address - vm.mockCall(nftContract, abi.encodeWithSelector(IERC721.ownerOf.selector, tokenId), abi.encode(address(0x5678))); - - vm.expectRevert("sender must be the token owner"); - tc.senderMustBeTokenOwner(nftContract, tokenId); - } - - function test_addressMustHaveMarketplaceApprovedForNFT_Success() public { - // Mint NFT to alice - vm.prank(deployer); - uint256 tokenId = nft.mint(alice); - - // Have alice approve the marketplace - vm.prank(alice); - nft.setApprovalForAll(address(erc721ApprovalManager), true); - - tc.addressMustHaveMarketplaceApprovedForNFT(alice, address(nft), tokenId); - } - - function test_addressMustHaveMarketplaceApprovedForNFT_SpecificTokenSuccess() public { - // Mint NFT to alice - vm.prank(deployer); - uint256 tokenId = nft.mint(alice); - - // Have alice approve the marketplace - vm.prank(alice); - nft.setApprovalForAll(address(erc721ApprovalManager), true); - - tc.addressMustHaveMarketplaceApprovedForNFT(alice, address(nft), tokenId); - } - - function test_addressMustHaveMarketplaceApprovedForNFT_Failure() public { - // Mint NFT to alice - vm.prank(deployer); - uint256 tokenId = nft.mint(alice); - - // Don't approve the marketplace - this should fail - vm.expectRevert("owner must have approved token"); - tc.addressMustHaveMarketplaceApprovedForNFT(alice, address(nft), tokenId); - } - - function test_checkSplits_Success() public { - address payable[] memory splitAddrs = new address payable[](2); - uint8[] memory splitRatios = new uint8[](2); - - splitAddrs[0] = payable(alice); - splitAddrs[1] = payable(bob); - splitRatios[0] = 60; - splitRatios[1] = 40; - - tc.checkSplits(splitAddrs, splitRatios); - } - - function test_checkSplits_EmptyArrays() public { - address payable[] memory splitAddrs = new address payable[](0); - uint8[] memory splitRatios = new uint8[](0); + TestContract tc; + Payments payments; + TestRare public rare; + TestNFT public nft; + ERC20ApprovalManager public erc20ApprovalManager; + ERC721ApprovalManager public erc721ApprovalManager; + uint256 constant initialRare = 1000 * 1e18; + + address deployer = address(0xabadabab); + address alice = address(0xbeef); + address bob = address(0xcafe); + address charlie = address(0xdead); + address stakingSettings = address(0xabadaba0); + address marketplaceSettings = address(0xabadaba1); + address royaltyRegistry = address(0xabadaba2); + address royaltyEngine = address(0xabadaba3); + address spaceOperatorRegistry = address(0xabadaba6); + address approvedTokenRegistry = address(0xabadaba7); + address stakingRegistry = address(0xabadaba9); + address networkBeneficiary = address(0xabadabaa); + address rewardPool = address(0xcccc); + + function contractDeploy() internal { + vm.startPrank(deployer); + + // Deploy TestRare + rare = new TestRare(); + + // Deploy TestNFT + nft = new TestNFT(); + + // Deploy Payments + payments = new Payments(); + + // Deploy actual approval managers + erc20ApprovalManager = new ERC20ApprovalManager(); + erc721ApprovalManager = new ERC721ApprovalManager(); + + tc = new TestContract( + marketplaceSettings, + stakingSettings, + royaltyEngine, + spaceOperatorRegistry, + approvedTokenRegistry, + address(payments), + stakingRegistry, + networkBeneficiary, + address(erc20ApprovalManager), + address(erc721ApprovalManager) + ); + + // Setup operator role after test contract is created + erc20ApprovalManager.grantRole(erc20ApprovalManager.OPERATOR_ROLE(), address(tc)); + erc721ApprovalManager.grantRole(erc721ApprovalManager.OPERATOR_ROLE(), address(tc)); + + // etch code into these so we can stub out methods + vm.etch(marketplaceSettings, address(rare).code); + vm.etch(stakingSettings, address(rare).code); + vm.etch(stakingRegistry, address(rare).code); + vm.etch(royaltyRegistry, address(rare).code); + vm.etch(royaltyEngine, address(rare).code); + vm.etch(spaceOperatorRegistry, address(rare).code); + vm.etch(approvedTokenRegistry, address(rare).code); + + vm.stopPrank(); + } + + function setUp() public { + deal(deployer, 100 ether); + deal(alice, 100 ether); + deal(bob, 100 ether); + deal(charlie, 100 ether); + contractDeploy(); + vm.startPrank(deployer); + rare.transfer(alice, initialRare); + rare.transfer(bob, initialRare); + vm.stopPrank(); + } + + function test_checkIfCurrencyIsApproved_ETH() public { + // ETH (address(0)) should always be approved + tc.checkIfCurrencyIsApproved(address(0)); + } + + function test_checkIfCurrencyIsApproved_ApprovedERC20() public { + // Mock approved token check + vm.mockCall( + approvedTokenRegistry, + abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(rare)), + abi.encode(true) + ); + + tc.checkIfCurrencyIsApproved(address(rare)); + } + + function test_checkIfCurrencyIsApproved_UnapprovedERC20() public { + // Mock unapproved token check + vm.mockCall( + approvedTokenRegistry, + abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(rare)), + abi.encode(false) + ); + + vm.expectRevert("Not approved currency"); + tc.checkIfCurrencyIsApproved(address(rare)); + } + + function test_senderMustBeTokenOwner_Success() public { + address nftContract = address(0x1234); + uint256 tokenId = 1; + + // Mock NFT ownership + vm.mockCall(nftContract, abi.encodeWithSelector(IERC721.ownerOf.selector, tokenId), abi.encode(address(this))); + + vm.prank(address(this)); + tc.senderMustBeTokenOwner(nftContract, tokenId); + } + + function test_senderMustBeTokenOwner_Failure() public { + address nftContract = address(0x1234); + uint256 tokenId = 1; + + // Mock NFT ownership to different address + vm.mockCall(nftContract, abi.encodeWithSelector(IERC721.ownerOf.selector, tokenId), abi.encode(address(0x5678))); + + vm.expectRevert("sender must be the token owner"); + tc.senderMustBeTokenOwner(nftContract, tokenId); + } + + function test_addressMustHaveMarketplaceApprovedForNFT_Success() public { + // Mint NFT to alice + vm.prank(deployer); + uint256 tokenId = nft.mint(alice); + + // Have alice approve the marketplace + vm.prank(alice); + nft.setApprovalForAll(address(erc721ApprovalManager), true); + + tc.addressMustHaveMarketplaceApprovedForNFT(alice, address(nft), tokenId); + } + + function test_addressMustHaveMarketplaceApprovedForNFT_SpecificTokenSuccess() public { + // Mint NFT to alice + vm.prank(deployer); + uint256 tokenId = nft.mint(alice); + + // Have alice approve the marketplace + vm.prank(alice); + nft.setApprovalForAll(address(erc721ApprovalManager), true); + + tc.addressMustHaveMarketplaceApprovedForNFT(alice, address(nft), tokenId); + } + + function test_addressMustHaveMarketplaceApprovedForNFT_Failure() public { + // Mint NFT to alice + vm.prank(deployer); + uint256 tokenId = nft.mint(alice); + + // Don't approve the marketplace - this should fail + vm.expectRevert("owner must have approved token"); + tc.addressMustHaveMarketplaceApprovedForNFT(alice, address(nft), tokenId); + } + + function test_checkSplits_Success() public { + address payable[] memory splitAddrs = new address payable[](2); + uint8[] memory splitRatios = new uint8[](2); + + splitAddrs[0] = payable(alice); + splitAddrs[1] = payable(bob); + splitRatios[0] = 60; + splitRatios[1] = 40; + + tc.checkSplits(splitAddrs, splitRatios); + } + + function test_checkSplits_EmptyArrays() public { + address payable[] memory splitAddrs = new address payable[](0); + uint8[] memory splitRatios = new uint8[](0); + + vm.expectRevert("checkSplits::Must have at least 1 split"); + tc.checkSplits(splitAddrs, splitRatios); + } + + function test_checkSplits_TooManySplits() public { + address payable[] memory splitAddrs = new address payable[](6); + uint8[] memory splitRatios = new uint8[](6); + + vm.expectRevert("checkSplits::Split exceeded max size"); + tc.checkSplits(splitAddrs, splitRatios); + } + + function test_checkSplits_UnequalArrays() public { + address payable[] memory splitAddrs = new address payable[](2); + uint8[] memory splitRatios = new uint8[](3); + + vm.expectRevert("checkSplits::Splits and ratios must be equal"); + tc.checkSplits(splitAddrs, splitRatios); + } + + function test_checkSplits_InvalidTotal() public { + address payable[] memory splitAddrs = new address payable[](2); + uint8[] memory splitRatios = new uint8[](2); + + splitAddrs[0] = payable(alice); + splitAddrs[1] = payable(bob); + splitRatios[0] = 60; + splitRatios[1] = 30; + + vm.expectRevert("checkSplits::Total must be equal to 100"); + tc.checkSplits(splitAddrs, splitRatios); + } + + function test_checkSplits_ZeroAddressRecipient() public { + address payable[] memory splitAddrs = new address payable[](2); + uint8[] memory splitRatios = new uint8[](2); + + splitAddrs[0] = payable(alice); + splitAddrs[1] = payable(address(0)); + splitRatios[0] = 50; + splitRatios[1] = 50; + + vm.expectRevert("checkSplits::Split cannot be zero address"); + tc.checkSplits(splitAddrs, splitRatios); + } + + function test_checkSplits_ZeroRatio() public { + address payable[] memory splitAddrs = new address payable[](2); + uint8[] memory splitRatios = new uint8[](2); + + splitAddrs[0] = payable(alice); + splitAddrs[1] = payable(bob); + splitRatios[0] = 100; + splitRatios[1] = 0; + + vm.expectRevert("checkSplits::Ratio must be greater than 0"); + tc.checkSplits(splitAddrs, splitRatios); + } + + function test_senderMustHaveMarketplaceApproved_ETH() public { + // ETH doesn't need approval + tc.senderMustHaveMarketplaceApproved(address(0), 1 ether); + } + + function test_senderMustHaveMarketplaceApproved_ERC20Success() public { + uint256 amount = 1 ether; + + // Transfer RARE tokens to this contract + vm.prank(deployer); + rare.transfer(address(this), amount); + + // Approve the ERC20ApprovalManager to spend tokens + rare.approve(address(erc20ApprovalManager), amount); + + tc.senderMustHaveMarketplaceApproved(address(rare), amount); + } + + function test_senderMustHaveMarketplaceApproved_ERC20Failure() public { + uint256 amount = 1 ether; + + // Transfer RARE tokens to this contract + vm.prank(deployer); + rare.transfer(address(this), amount); + + // Approve less than the required amount + rare.approve(address(erc20ApprovalManager), amount - 1); + + vm.expectRevert("sender needs to approve ERC20ApprovalManager for currency"); + tc.senderMustHaveMarketplaceApproved(address(rare), amount); + } + + function test_checkAmountAndTransfer_ETHSuccess() public { + uint256 amount = 1 ether; + + vm.deal(address(this), amount); + tc.checkAmountAndTransfer{value: amount}(address(0), amount); + } + + function test_checkAmountAndTransfer_ETHFailure() public { + uint256 amount = 1 ether; + + vm.deal(address(this), amount - 0.1 ether); + vm.expectRevert("not enough eth sent"); + tc.checkAmountAndTransfer{value: amount - 0.1 ether}(address(0), amount); + } + + function test_checkAmountAndTransfer_ERC20Success() public { + uint256 amount = 1 ether; + + // Transfer RARE tokens to the test contract + vm.startPrank(deployer); + rare.transfer(address(this), amount); + vm.stopPrank(); + + // Approve the ERC20ApprovalManager to spend tokens + vm.prank(address(this)); + rare.approve(address(erc20ApprovalManager), amount); + + tc.checkAmountAndTransfer(address(rare), amount); + } + + function test_refund_ETH() public { + uint256 amount = 1 ether; + uint256 marketplaceFee = 3; + uint256 totalAmount = amount + ((amount * marketplaceFee) / 100); + + // Fund the test contract first + vm.deal(address(tc), totalAmount); + + tc.refund(address(0), amount, marketplaceFee, alice); + } + + function test_refund_ERC20() public { + uint256 amount = 1 ether; + uint256 marketplaceFee = 3; + uint256 totalAmount = amount + ((amount * marketplaceFee) / 100); + + vm.mockCall( + address(rare), abi.encodeWithSelector(IERC20.transfer.selector, alice, totalAmount), abi.encode(true) + ); - vm.expectRevert("checkSplits::Must have at least 1 split"); - tc.checkSplits(splitAddrs, splitRatios); - } + deal(address(rare), address(tc), totalAmount); + tc.refund(address(rare), amount, marketplaceFee, alice); + } - function test_checkSplits_TooManySplits() public { - address payable[] memory splitAddrs = new address payable[](6); - uint8[] memory splitRatios = new uint8[](6); + function test_payout_primary() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + + // setup isApprovedSpaceOperator + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup getERC721ContractPrimarySaleFeePercentage + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector( + IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract + ), + abi.encode(15) + ); + + // Mock royalty engine to return empty arrays for primary sale + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(new address payable[](0), new uint256[](0)) + ); + + uint256 balanceBefore = charlie.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + uint256 balanceAfter = charlie.balance; + uint256 expectedBalance = balanceBefore + ((amount * 85) / 100); + assertEq(balanceAfter, expectedBalance, "incorrect balance after payout"); + } - vm.expectRevert("checkSplits::Split exceeded max size"); - tc.checkSplits(splitAddrs, splitRatios); - } + function test_payout_secondary() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + address payable[] memory royaltyReceiverAddrs = new address payable[](1); + uint256[] memory royaltyAmounts = new uint256[](1); + royaltyReceiverAddrs[0] = payable(alice); + royaltyAmounts[0] = (amount * 10) / 100; + + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold -- true for secondary sale + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(true) + ); + + // setup getRoyalty + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(royaltyReceiverAddrs, royaltyAmounts) + ); + + uint256 balanceBefore = charlie.balance; + uint256 aliceBalanceBefore = alice.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + uint256 balanceAfter = charlie.balance; + uint256 aliceBalanceAfter = alice.balance; + + // Seller should receive 90% (100% - 10% royalty) + uint256 expectedBalance = balanceBefore + ((amount * 90) / 100); + // Royalty receiver should receive 10% + uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 10) / 100); + + assertEq(balanceAfter, expectedBalance, "incorrect seller balance after payout"); + assertEq(aliceBalanceAfter, aliceExpectedBalance, "incorrect royalty receiver balance after payout"); + } - function test_checkSplits_UnequalArrays() public { - address payable[] memory splitAddrs = new address payable[](2); - uint8[] memory splitRatios = new uint8[](3); + function test_payout_primary_spaceOperator() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + + // setup isApprovedSpaceOperator -- true + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(true) + ); + + // setup getPlatformCommission -- 5% + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.getPlatformCommission.selector, charlie), + abi.encode(5) + ); + + // Mock royalty engine to return empty arrays for primary sale with space operator + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(new address payable[](0), new uint256[](0)) + ); + + uint256 balanceBefore = charlie.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + uint256 balanceAfter = charlie.balance; + + // Space operator should receive 95% (100% - 5% platform commission) + uint256 expectedBalance = balanceBefore + ((amount * 95) / 100); + assertEq(balanceAfter, expectedBalance, "incorrect balance after payout for space operator"); + } - vm.expectRevert("checkSplits::Splits and ratios must be equal"); - tc.checkSplits(splitAddrs, splitRatios); - } + function test_payout_multipleRoyaltyReceivers() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // Setup multiple royalty receivers + address payable[] memory royaltyReceiverAddrs = new address payable[](2); + uint256[] memory royaltyAmounts = new uint256[](2); + royaltyReceiverAddrs[0] = payable(alice); + royaltyReceiverAddrs[1] = payable(bob); + royaltyAmounts[0] = (amount * 5) / 100; // 5% + royaltyAmounts[1] = (amount * 5) / 100; // 5% + + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold -- true for secondary sale + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(true) + ); + + // setup getRoyalty with multiple receivers + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(royaltyReceiverAddrs, royaltyAmounts) + ); + + uint256 balanceBefore = charlie.balance; + uint256 aliceBalanceBefore = alice.balance; + uint256 bobBalanceBefore = bob.balance; + + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + + uint256 balanceAfter = charlie.balance; + uint256 aliceBalanceAfter = alice.balance; + uint256 bobBalanceAfter = bob.balance; + + // Seller should receive 90% (100% - 10% total royalties) + uint256 expectedBalance = balanceBefore + ((amount * 90) / 100); + // Each royalty receiver should receive 5% + uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 5) / 100); + uint256 bobExpectedBalance = bobBalanceBefore + ((amount * 5) / 100); + + assertEq(balanceAfter, expectedBalance, "incorrect seller balance after payout"); + assertEq(aliceBalanceAfter, aliceExpectedBalance, "incorrect first royalty receiver balance after payout"); + assertEq(bobBalanceAfter, bobExpectedBalance, "incorrect second royalty receiver balance after payout"); + } - function test_checkSplits_InvalidTotal() public { - address payable[] memory splitAddrs = new address payable[](2); - uint8[] memory splitRatios = new uint8[](2); + function test_payout_multipleSplits() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + + // Setup multiple splits + address payable[] memory splitAddrs = new address payable[](2); + uint8[] memory splitRatios = new uint8[](2); + splitAddrs[0] = payable(charlie); + splitAddrs[1] = payable(bob); + splitRatios[0] = 60; // 60% + splitRatios[1] = 40; // 40% + + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + + // setup isApprovedSpaceOperator + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup getERC721ContractPrimarySaleFeePercentage + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector( + IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract + ), + abi.encode(15) + ); + + // Mock royalty engine to return empty arrays for primary sale with splits + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(new address payable[](0), new uint256[](0)) + ); + + uint256 charlieBalanceBefore = charlie.balance; + uint256 bobBalanceBefore = bob.balance; + + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + + uint256 charlieBalanceAfter = charlie.balance; + uint256 bobBalanceAfter = bob.balance; + + // Calculate expected balances after 15% platform fee and split ratios + uint256 remainingAmount = (amount * 85) / 100; // After 15% platform fee + uint256 charlieExpectedBalance = charlieBalanceBefore + ((remainingAmount * 60) / 100); + uint256 bobExpectedBalance = bobBalanceBefore + ((remainingAmount * 40) / 100); + + assertEq(charlieBalanceAfter, charlieExpectedBalance, "incorrect first split receiver balance after payout"); + assertEq(bobBalanceAfter, bobExpectedBalance, "incorrect second split receiver balance after payout"); + } - splitAddrs[0] = payable(alice); - splitAddrs[1] = payable(bob); - splitRatios[0] = 60; - splitRatios[1] = 30; + function test_payout_tooManyRoyaltyRecipients() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // Setup TOO MANY royalty receivers (6, when max is 5) + address payable[] memory royaltyReceiverAddrs = new address payable[](6); + uint256[] memory royaltyAmounts = new uint256[](6); + + // Fill with different addresses + royaltyReceiverAddrs[0] = payable(alice); + royaltyReceiverAddrs[1] = payable(bob); + royaltyReceiverAddrs[2] = payable(address(0x1111)); + royaltyReceiverAddrs[3] = payable(address(0x2222)); + royaltyReceiverAddrs[4] = payable(address(0x3333)); + royaltyReceiverAddrs[5] = payable(address(0x4444)); // This should be ignored + + // Each gets 1% royalty + for (uint256 i = 0; i < 6; i++) { + royaltyAmounts[i] = (amount * 1) / 100; + } + + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold -- true for secondary sale + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(true) + ); + + // setup getRoyalty with TOO MANY receivers (6) + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(royaltyReceiverAddrs, royaltyAmounts) + ); + + // Record balances before payout + uint256 charlieBalanceBefore = charlie.balance; + uint256 aliceBalanceBefore = alice.balance; + uint256 bobBalanceBefore = bob.balance; + uint256 addr1111BalanceBefore = address(0x1111).balance; + uint256 addr2222BalanceBefore = address(0x2222).balance; + uint256 addr3333BalanceBefore = address(0x3333).balance; + uint256 addr4444BalanceBefore = address(0x4444).balance; // Should not receive anything + + // Should NOT revert - should truncate to first 5 recipients + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + + // Record balances after payout + uint256 charlieBalanceAfter = charlie.balance; + uint256 aliceBalanceAfter = alice.balance; + uint256 bobBalanceAfter = bob.balance; + uint256 addr1111BalanceAfter = address(0x1111).balance; + uint256 addr2222BalanceAfter = address(0x2222).balance; + uint256 addr3333BalanceAfter = address(0x3333).balance; + uint256 addr4444BalanceAfter = address(0x4444).balance; // Should remain unchanged + + // Verify that only the first 5 recipients received royalties (1% each = 5% total) + // Seller should receive 95% (100% - 5% total royalties from first 5 recipients) + uint256 expectedSellerBalance = charlieBalanceBefore + ((amount * 95) / 100); + uint256 expectedRoyaltyPerRecipient = (amount * 1) / 100; + + assertEq(charlieBalanceAfter, expectedSellerBalance, "Seller should receive 95% after truncated royalties"); + assertEq( + aliceBalanceAfter, aliceBalanceBefore + expectedRoyaltyPerRecipient, "First recipient should receive 1%" + ); + assertEq(bobBalanceAfter, bobBalanceBefore + expectedRoyaltyPerRecipient, "Second recipient should receive 1%"); + assertEq( + addr1111BalanceAfter, + addr1111BalanceBefore + expectedRoyaltyPerRecipient, + "Third recipient should receive 1%" + ); + assertEq( + addr2222BalanceAfter, + addr2222BalanceBefore + expectedRoyaltyPerRecipient, + "Fourth recipient should receive 1%" + ); + assertEq( + addr3333BalanceAfter, + addr3333BalanceBefore + expectedRoyaltyPerRecipient, + "Fifth recipient should receive 1%" + ); + assertEq(addr4444BalanceAfter, addr4444BalanceBefore, "Sixth recipient should receive nothing (truncated)"); + } - vm.expectRevert("checkSplits::Total must be equal to 100"); - tc.checkSplits(splitAddrs, splitRatios); - } - - function test_senderMustHaveMarketplaceApproved_ETH() public { - // ETH doesn't need approval - tc.senderMustHaveMarketplaceApproved(address(0), 1 ether); - } - - function test_senderMustHaveMarketplaceApproved_ERC20Success() public { - uint256 amount = 1 ether; - - // Transfer RARE tokens to this contract - vm.prank(deployer); - rare.transfer(address(this), amount); - - // Approve the ERC20ApprovalManager to spend tokens - rare.approve(address(erc20ApprovalManager), amount); - - tc.senderMustHaveMarketplaceApproved(address(rare), amount); - } - - function test_senderMustHaveMarketplaceApproved_ERC20Failure() public { - uint256 amount = 1 ether; - - // Transfer RARE tokens to this contract - vm.prank(deployer); - rare.transfer(address(this), amount); - - // Approve less than the required amount - rare.approve(address(erc20ApprovalManager), amount - 1); - - vm.expectRevert("sender needs to approve ERC20ApprovalManager for currency"); - tc.senderMustHaveMarketplaceApproved(address(rare), amount); - } - - function test_checkAmountAndTransfer_ETHSuccess() public { - uint256 amount = 1 ether; - - vm.deal(address(this), amount); - tc.checkAmountAndTransfer{value: amount}(address(0), amount); - } - - function test_checkAmountAndTransfer_ETHFailure() public { - uint256 amount = 1 ether; - - vm.deal(address(this), amount - 0.1 ether); - vm.expectRevert("not enough eth sent"); - tc.checkAmountAndTransfer{value: amount - 0.1 ether}(address(0), amount); - } - - function test_checkAmountAndTransfer_ERC20Success() public { - uint256 amount = 1 ether; - - // Transfer RARE tokens to the test contract - vm.startPrank(deployer); - rare.transfer(address(this), amount); - vm.stopPrank(); - - // Approve the ERC20ApprovalManager to spend tokens - vm.prank(address(this)); - rare.approve(address(erc20ApprovalManager), amount); - - tc.checkAmountAndTransfer(address(rare), amount); - } - - function test_refund_ETH() public { - uint256 amount = 1 ether; - uint256 marketplaceFee = 3; - uint256 totalAmount = amount + ((amount * marketplaceFee) / 100); - - // Fund the test contract first - vm.deal(address(tc), totalAmount); - - tc.refund(address(0), amount, marketplaceFee, alice); - } - - function test_refund_ERC20() public { - uint256 amount = 1 ether; - uint256 marketplaceFee = 3; - uint256 totalAmount = amount + ((amount * marketplaceFee) / 100); - - vm.mockCall(address(rare), abi.encodeWithSelector(IERC20.transfer.selector, alice, totalAmount), abi.encode(true)); - - deal(address(rare), address(tc), totalAmount); - tc.refund(address(rare), amount, marketplaceFee, alice); - } - - function test_payout_primary() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - - // setup isApprovedSpaceOperator - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup getERC721ContractPrimarySaleFeePercentage - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), - abi.encode(15) - ); - - // Mock royalty engine to return empty arrays for primary sale - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(new address payable[](0), new uint256[](0)) - ); - - uint256 balanceBefore = charlie.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - uint256 balanceAfter = charlie.balance; - uint256 expectedBalance = balanceBefore + ((amount * 85) / 100); - assertEq(balanceAfter, expectedBalance, "incorrect balance after payout"); - } - - function test_payout_secondary() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - address payable[] memory royaltyReceiverAddrs = new address payable[](1); - uint256[] memory royaltyAmounts = new uint256[](1); - royaltyReceiverAddrs[0] = payable(alice); - royaltyAmounts[0] = (amount * 10) / 100; - - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold -- true for secondary sale - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(true) - ); - - // setup getRoyalty - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(royaltyReceiverAddrs, royaltyAmounts) - ); - - uint256 balanceBefore = charlie.balance; - uint256 aliceBalanceBefore = alice.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - uint256 balanceAfter = charlie.balance; - uint256 aliceBalanceAfter = alice.balance; - - // Seller should receive 90% (100% - 10% royalty) - uint256 expectedBalance = balanceBefore + ((amount * 90) / 100); - // Royalty receiver should receive 10% - uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 10) / 100); - - assertEq(balanceAfter, expectedBalance, "incorrect seller balance after payout"); - assertEq(aliceBalanceAfter, aliceExpectedBalance, "incorrect royalty receiver balance after payout"); - } - - function test_payout_primary_spaceOperator() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - - // setup isApprovedSpaceOperator -- true - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(true) - ); - - // setup getPlatformCommission -- 5% - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.getPlatformCommission.selector, charlie), - abi.encode(5) - ); - - // Mock royalty engine to return empty arrays for primary sale with space operator - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(new address payable[](0), new uint256[](0)) - ); - - uint256 balanceBefore = charlie.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - uint256 balanceAfter = charlie.balance; - - // Space operator should receive 95% (100% - 5% platform commission) - uint256 expectedBalance = balanceBefore + ((amount * 95) / 100); - assertEq(balanceAfter, expectedBalance, "incorrect balance after payout for space operator"); - } - - function test_payout_multipleRoyaltyReceivers() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // Setup multiple royalty receivers - address payable[] memory royaltyReceiverAddrs = new address payable[](2); - uint256[] memory royaltyAmounts = new uint256[](2); - royaltyReceiverAddrs[0] = payable(alice); - royaltyReceiverAddrs[1] = payable(bob); - royaltyAmounts[0] = (amount * 5) / 100; // 5% - royaltyAmounts[1] = (amount * 5) / 100; // 5% - - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold -- true for secondary sale - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(true) - ); - - // setup getRoyalty with multiple receivers - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(royaltyReceiverAddrs, royaltyAmounts) - ); - - uint256 balanceBefore = charlie.balance; - uint256 aliceBalanceBefore = alice.balance; - uint256 bobBalanceBefore = bob.balance; - - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - - uint256 balanceAfter = charlie.balance; - uint256 aliceBalanceAfter = alice.balance; - uint256 bobBalanceAfter = bob.balance; - - // Seller should receive 90% (100% - 10% total royalties) - uint256 expectedBalance = balanceBefore + ((amount * 90) / 100); - // Each royalty receiver should receive 5% - uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 5) / 100); - uint256 bobExpectedBalance = bobBalanceBefore + ((amount * 5) / 100); - - assertEq(balanceAfter, expectedBalance, "incorrect seller balance after payout"); - assertEq(aliceBalanceAfter, aliceExpectedBalance, "incorrect first royalty receiver balance after payout"); - assertEq(bobBalanceAfter, bobExpectedBalance, "incorrect second royalty receiver balance after payout"); - } - - function test_payout_multipleSplits() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - - // Setup multiple splits - address payable[] memory splitAddrs = new address payable[](2); - uint8[] memory splitRatios = new uint8[](2); - splitAddrs[0] = payable(charlie); - splitAddrs[1] = payable(bob); - splitRatios[0] = 60; // 60% - splitRatios[1] = 40; // 40% - - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - - // setup isApprovedSpaceOperator - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup getERC721ContractPrimarySaleFeePercentage - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), - abi.encode(15) - ); - - // Mock royalty engine to return empty arrays for primary sale with splits - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(new address payable[](0), new uint256[](0)) - ); - - uint256 charlieBalanceBefore = charlie.balance; - uint256 bobBalanceBefore = bob.balance; - - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - - uint256 charlieBalanceAfter = charlie.balance; - uint256 bobBalanceAfter = bob.balance; - - // Calculate expected balances after 15% platform fee and split ratios - uint256 remainingAmount = (amount * 85) / 100; // After 15% platform fee - uint256 charlieExpectedBalance = charlieBalanceBefore + ((remainingAmount * 60) / 100); - uint256 bobExpectedBalance = bobBalanceBefore + ((remainingAmount * 40) / 100); - - assertEq(charlieBalanceAfter, charlieExpectedBalance, "incorrect first split receiver balance after payout"); - assertEq(bobBalanceAfter, bobExpectedBalance, "incorrect second split receiver balance after payout"); - } - - function test_payout_tooManyRoyaltyRecipients() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // Setup TOO MANY royalty receivers (6, when max is 5) - address payable[] memory royaltyReceiverAddrs = new address payable[](6); - uint256[] memory royaltyAmounts = new uint256[](6); - - // Fill with different addresses - royaltyReceiverAddrs[0] = payable(alice); - royaltyReceiverAddrs[1] = payable(bob); - royaltyReceiverAddrs[2] = payable(address(0x1111)); - royaltyReceiverAddrs[3] = payable(address(0x2222)); - royaltyReceiverAddrs[4] = payable(address(0x3333)); - royaltyReceiverAddrs[5] = payable(address(0x4444)); // This should be ignored - - // Each gets 1% royalty - for (uint256 i = 0; i < 6; i++) { - royaltyAmounts[i] = (amount * 1) / 100; + function test_payout_truncationVerifyOrder() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // Setup 7 royalty receivers to test truncation preserves order + address payable[] memory royaltyReceiverAddrs = new address payable[](7); + uint256[] memory royaltyAmounts = new uint256[](7); + + // Use distinct amounts to verify order is preserved + royaltyReceiverAddrs[0] = payable(alice); // Should get 1% + royaltyReceiverAddrs[1] = payable(bob); // Should get 2% + royaltyReceiverAddrs[2] = payable(address(0x1111)); // Should get 3% + royaltyReceiverAddrs[3] = payable(address(0x2222)); // Should get 4% + royaltyReceiverAddrs[4] = payable(address(0x3333)); // Should get 5% + royaltyReceiverAddrs[5] = payable(address(0x4444)); // Should get nothing (truncated) + royaltyReceiverAddrs[6] = payable(address(0x5555)); // Should get nothing (truncated) + + // Different amounts to verify ordering + royaltyAmounts[0] = (amount * 1) / 100; // 1% + royaltyAmounts[1] = (amount * 2) / 100; // 2% + royaltyAmounts[2] = (amount * 3) / 100; // 3% + royaltyAmounts[3] = (amount * 4) / 100; // 4% + royaltyAmounts[4] = (amount * 5) / 100; // 5% + royaltyAmounts[5] = (amount * 6) / 100; // Should be ignored + royaltyAmounts[6] = (amount * 7) / 100; // Should be ignored + + // Mock necessary calls + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(true) + ); + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(royaltyReceiverAddrs, royaltyAmounts) + ); + + uint256 charlieBalanceBefore = charlie.balance; + uint256 aliceBalanceBefore = alice.balance; + uint256 bobBalanceBefore = bob.balance; + uint256 addr1111BalanceBefore = address(0x1111).balance; + uint256 addr2222BalanceBefore = address(0x2222).balance; + uint256 addr3333BalanceBefore = address(0x3333).balance; + uint256 addr4444BalanceBefore = address(0x4444).balance; + uint256 addr5555BalanceBefore = address(0x5555).balance; + + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + + // Verify only first 5 recipients received their respective amounts + // Total paid: 1% + 2% + 3% + 4% + 5% = 15% + // Seller should get: 100% - 15% = 85% + assertEq(charlie.balance, charlieBalanceBefore + ((amount * 85) / 100), "Seller should receive 85%"); + assertEq(alice.balance, aliceBalanceBefore + ((amount * 1) / 100), "Alice should receive 1%"); + assertEq(bob.balance, bobBalanceBefore + ((amount * 2) / 100), "Bob should receive 2%"); + assertEq( + address(0x1111).balance, addr1111BalanceBefore + ((amount * 3) / 100), "Third recipient should receive 3%" + ); + assertEq( + address(0x2222).balance, addr2222BalanceBefore + ((amount * 4) / 100), "Fourth recipient should receive 4%" + ); + assertEq( + address(0x3333).balance, addr3333BalanceBefore + ((amount * 5) / 100), "Fifth recipient should receive 5%" + ); + assertEq(address(0x4444).balance, addr4444BalanceBefore, "Sixth recipient should receive nothing"); + assertEq(address(0x5555).balance, addr5555BalanceBefore, "Seventh recipient should receive nothing"); } - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold -- true for secondary sale - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(true) - ); - - // setup getRoyalty with TOO MANY receivers (6) - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(royaltyReceiverAddrs, royaltyAmounts) - ); - - // Record balances before payout - uint256 charlieBalanceBefore = charlie.balance; - uint256 aliceBalanceBefore = alice.balance; - uint256 bobBalanceBefore = bob.balance; - uint256 addr1111BalanceBefore = address(0x1111).balance; - uint256 addr2222BalanceBefore = address(0x2222).balance; - uint256 addr3333BalanceBefore = address(0x3333).balance; - uint256 addr4444BalanceBefore = address(0x4444).balance; // Should not receive anything - - // Should NOT revert - should truncate to first 5 recipients - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - - // Record balances after payout - uint256 charlieBalanceAfter = charlie.balance; - uint256 aliceBalanceAfter = alice.balance; - uint256 bobBalanceAfter = bob.balance; - uint256 addr1111BalanceAfter = address(0x1111).balance; - uint256 addr2222BalanceAfter = address(0x2222).balance; - uint256 addr3333BalanceAfter = address(0x3333).balance; - uint256 addr4444BalanceAfter = address(0x4444).balance; // Should remain unchanged - - // Verify that only the first 5 recipients received royalties (1% each = 5% total) - // Seller should receive 95% (100% - 5% total royalties from first 5 recipients) - uint256 expectedSellerBalance = charlieBalanceBefore + ((amount * 95) / 100); - uint256 expectedRoyaltyPerRecipient = (amount * 1) / 100; - - assertEq(charlieBalanceAfter, expectedSellerBalance, "Seller should receive 95% after truncated royalties"); - assertEq(aliceBalanceAfter, aliceBalanceBefore + expectedRoyaltyPerRecipient, "First recipient should receive 1%"); - assertEq(bobBalanceAfter, bobBalanceBefore + expectedRoyaltyPerRecipient, "Second recipient should receive 1%"); - assertEq( - addr1111BalanceAfter, - addr1111BalanceBefore + expectedRoyaltyPerRecipient, - "Third recipient should receive 1%" - ); - assertEq( - addr2222BalanceAfter, - addr2222BalanceBefore + expectedRoyaltyPerRecipient, - "Fourth recipient should receive 1%" - ); - assertEq( - addr3333BalanceAfter, - addr3333BalanceBefore + expectedRoyaltyPerRecipient, - "Fifth recipient should receive 1%" - ); - assertEq(addr4444BalanceAfter, addr4444BalanceBefore, "Sixth recipient should receive nothing (truncated)"); - } - - function test_payout_truncationVerifyOrder() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // Setup 7 royalty receivers to test truncation preserves order - address payable[] memory royaltyReceiverAddrs = new address payable[](7); - uint256[] memory royaltyAmounts = new uint256[](7); - - // Use distinct amounts to verify order is preserved - royaltyReceiverAddrs[0] = payable(alice); // Should get 1% - royaltyReceiverAddrs[1] = payable(bob); // Should get 2% - royaltyReceiverAddrs[2] = payable(address(0x1111)); // Should get 3% - royaltyReceiverAddrs[3] = payable(address(0x2222)); // Should get 4% - royaltyReceiverAddrs[4] = payable(address(0x3333)); // Should get 5% - royaltyReceiverAddrs[5] = payable(address(0x4444)); // Should get nothing (truncated) - royaltyReceiverAddrs[6] = payable(address(0x5555)); // Should get nothing (truncated) - - // Different amounts to verify ordering - royaltyAmounts[0] = (amount * 1) / 100; // 1% - royaltyAmounts[1] = (amount * 2) / 100; // 2% - royaltyAmounts[2] = (amount * 3) / 100; // 3% - royaltyAmounts[3] = (amount * 4) / 100; // 4% - royaltyAmounts[4] = (amount * 5) / 100; // 5% - royaltyAmounts[5] = (amount * 6) / 100; // Should be ignored - royaltyAmounts[6] = (amount * 7) / 100; // Should be ignored - - // Mock necessary calls - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(true) - ); - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(royaltyReceiverAddrs, royaltyAmounts) - ); - - uint256 charlieBalanceBefore = charlie.balance; - uint256 aliceBalanceBefore = alice.balance; - uint256 bobBalanceBefore = bob.balance; - uint256 addr1111BalanceBefore = address(0x1111).balance; - uint256 addr2222BalanceBefore = address(0x2222).balance; - uint256 addr3333BalanceBefore = address(0x3333).balance; - uint256 addr4444BalanceBefore = address(0x4444).balance; - uint256 addr5555BalanceBefore = address(0x5555).balance; - - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - - // Verify only first 5 recipients received their respective amounts - // Total paid: 1% + 2% + 3% + 4% + 5% = 15% - // Seller should get: 100% - 15% = 85% - assertEq(charlie.balance, charlieBalanceBefore + ((amount * 85) / 100), "Seller should receive 85%"); - assertEq(alice.balance, aliceBalanceBefore + ((amount * 1) / 100), "Alice should receive 1%"); - assertEq(bob.balance, bobBalanceBefore + ((amount * 2) / 100), "Bob should receive 2%"); - assertEq( - address(0x1111).balance, - addr1111BalanceBefore + ((amount * 3) / 100), - "Third recipient should receive 3%" - ); - assertEq( - address(0x2222).balance, - addr2222BalanceBefore + ((amount * 4) / 100), - "Fourth recipient should receive 4%" - ); - assertEq( - address(0x3333).balance, - addr3333BalanceBefore + ((amount * 5) / 100), - "Fifth recipient should receive 5%" - ); - assertEq(address(0x4444).balance, addr4444BalanceBefore, "Sixth recipient should receive nothing"); - assertEq(address(0x5555).balance, addr5555BalanceBefore, "Seventh recipient should receive nothing"); - } - - function test_payout_exactlyMaxRoyaltyRecipients() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // Setup EXACTLY the maximum royalty receivers (5) - address payable[] memory royaltyReceiverAddrs = new address payable[](5); - uint256[] memory royaltyAmounts = new uint256[](5); - - // Fill with different addresses - royaltyReceiverAddrs[0] = payable(alice); - royaltyReceiverAddrs[1] = payable(bob); - royaltyReceiverAddrs[2] = payable(address(0x1111)); - royaltyReceiverAddrs[3] = payable(address(0x2222)); - royaltyReceiverAddrs[4] = payable(address(0x3333)); - - // Each gets 2% royalty (10% total) - for (uint256 i = 0; i < 5; i++) { - royaltyAmounts[i] = (amount * 2) / 100; + function test_payout_exactlyMaxRoyaltyRecipients() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // Setup EXACTLY the maximum royalty receivers (5) + address payable[] memory royaltyReceiverAddrs = new address payable[](5); + uint256[] memory royaltyAmounts = new uint256[](5); + + // Fill with different addresses + royaltyReceiverAddrs[0] = payable(alice); + royaltyReceiverAddrs[1] = payable(bob); + royaltyReceiverAddrs[2] = payable(address(0x1111)); + royaltyReceiverAddrs[3] = payable(address(0x2222)); + royaltyReceiverAddrs[4] = payable(address(0x3333)); + + // Each gets 2% royalty (10% total) + for (uint256 i = 0; i < 5; i++) { + royaltyAmounts[i] = (amount * 2) / 100; + } + + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold -- true for secondary sale + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(true) + ); + + // setup getRoyalty with exactly max receivers (5) + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(royaltyReceiverAddrs, royaltyAmounts) + ); + + uint256 charlieBalanceBefore = charlie.balance; + uint256 aliceBalanceBefore = alice.balance; + uint256 bobBalanceBefore = bob.balance; + + // Should NOT revert with exactly 5 recipients + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + + uint256 charlieBalanceAfter = charlie.balance; + uint256 aliceBalanceAfter = alice.balance; + uint256 bobBalanceAfter = bob.balance; + + // Seller should receive 90% (100% - 10% total royalties) + uint256 expectedBalance = charlieBalanceBefore + ((amount * 90) / 100); + // First two royalty receivers should each receive 2% + uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 2) / 100); + uint256 bobExpectedBalance = bobBalanceBefore + ((amount * 2) / 100); + + assertEq(charlieBalanceAfter, expectedBalance, "incorrect seller balance after payout"); + assertEq(aliceBalanceAfter, aliceExpectedBalance, "incorrect first royalty receiver balance after payout"); + assertEq(bobBalanceAfter, bobExpectedBalance, "incorrect second royalty receiver balance after payout"); } - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold -- true for secondary sale - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(true) - ); - - // setup getRoyalty with exactly max receivers (5) - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(royaltyReceiverAddrs, royaltyAmounts) - ); - - uint256 charlieBalanceBefore = charlie.balance; - uint256 aliceBalanceBefore = alice.balance; - uint256 bobBalanceBefore = bob.balance; - - // Should NOT revert with exactly 5 recipients - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - - uint256 charlieBalanceAfter = charlie.balance; - uint256 aliceBalanceAfter = alice.balance; - uint256 bobBalanceAfter = bob.balance; - - // Seller should receive 90% (100% - 10% total royalties) - uint256 expectedBalance = charlieBalanceBefore + ((amount * 90) / 100); - // First two royalty receivers should each receive 2% - uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 2) / 100); - uint256 bobExpectedBalance = bobBalanceBefore + ((amount * 2) / 100); - - assertEq(charlieBalanceAfter, expectedBalance, "incorrect seller balance after payout"); - assertEq(aliceBalanceAfter, aliceExpectedBalance, "incorrect first royalty receiver balance after payout"); - assertEq(bobBalanceAfter, bobExpectedBalance, "incorrect second royalty receiver balance after payout"); - } - - function test_transferERC721_Success() public { - // Mint NFT to alice - vm.prank(deployer); - uint256 tokenId = nft.mint(alice); - - // Have alice approve the marketplace - vm.prank(alice); - nft.approve(address(erc721ApprovalManager), tokenId); - - // Transfer NFT from alice to bob - tc.transferERC721(address(nft), alice, bob, tokenId); - - // Verify the transfer happened - assertEq(nft.ownerOf(tokenId), bob, "NFT was not transferred to bob"); - } - - function test_payout_primary_noRoyalties() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold -- false for primary sale - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - - // setup isApprovedSpaceOperator - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup getERC721ContractPrimarySaleFeePercentage - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), - abi.encode(15) - ); - - // Mock royalty engine to return non-empty arrays to verify they are ignored - address payable[] memory royaltyReceiverAddrs = new address payable[](1); - uint256[] memory royaltyAmounts = new uint256[](1); - royaltyReceiverAddrs[0] = payable(alice); - royaltyAmounts[0] = (amount * 10) / 100; - - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(royaltyReceiverAddrs, royaltyAmounts) - ); - - uint256 charlieBalanceBefore = charlie.balance; - uint256 aliceBalanceBefore = alice.balance; - - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - - uint256 charlieBalanceAfter = charlie.balance; - uint256 aliceBalanceAfter = alice.balance; - - // Seller should receive 85% (100% - 15% primary fee) - uint256 expectedBalance = charlieBalanceBefore + ((amount * 85) / 100); - // Royalty receiver should receive nothing - uint256 aliceExpectedBalance = aliceBalanceBefore; - - assertEq(charlieBalanceAfter, expectedBalance, "incorrect seller balance after primary sale"); - assertEq(aliceBalanceAfter, aliceExpectedBalance, "royalty receiver should not receive anything in primary sale"); - } - - function test_payout_secondary_noPrimaryFees() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold -- true for secondary sale - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(true) - ); - - // setup isApprovedSpaceOperator - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup getERC721ContractPrimarySaleFeePercentage - should be ignored - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), - abi.encode(15) - ); - - // Mock royalty engine to return empty arrays to verify primary fees aren't paid - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(new address payable[](0), new uint256[](0)) - ); - - uint256 charlieBalanceBefore = charlie.balance; - - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, - tokenId, - currencyAddress, - amount, - charlie, - splitAddrs, - splitRatios - ); - - uint256 charlieBalanceAfter = charlie.balance; - - // Seller should receive 100% (no primary fees in secondary sale) - uint256 expectedBalance = charlieBalanceBefore + amount; - - assertEq( - charlieBalanceAfter, - expectedBalance, - "incorrect seller balance after secondary sale - primary fees should not be taken" - ); - } + function test_transferERC721_Success() public { + // Mint NFT to alice + vm.prank(deployer); + uint256 tokenId = nft.mint(alice); + + // Have alice approve the marketplace + vm.prank(alice); + nft.approve(address(erc721ApprovalManager), tokenId); + + // Transfer NFT from alice to bob + tc.transferERC721(address(nft), alice, bob, tokenId); + + // Verify the transfer happened + assertEq(nft.ownerOf(tokenId), bob, "NFT was not transferred to bob"); + } + + function test_payout_primary_noRoyalties() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold -- false for primary sale + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + + // setup isApprovedSpaceOperator + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup getERC721ContractPrimarySaleFeePercentage + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector( + IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract + ), + abi.encode(15) + ); + + // Mock royalty engine to return non-empty arrays to verify they are ignored + address payable[] memory royaltyReceiverAddrs = new address payable[](1); + uint256[] memory royaltyAmounts = new uint256[](1); + royaltyReceiverAddrs[0] = payable(alice); + royaltyAmounts[0] = (amount * 10) / 100; + + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(royaltyReceiverAddrs, royaltyAmounts) + ); + + uint256 charlieBalanceBefore = charlie.balance; + uint256 aliceBalanceBefore = alice.balance; + + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + + uint256 charlieBalanceAfter = charlie.balance; + uint256 aliceBalanceAfter = alice.balance; + + // Seller should receive 85% (100% - 15% primary fee) + uint256 expectedBalance = charlieBalanceBefore + ((amount * 85) / 100); + // Royalty receiver should receive nothing + uint256 aliceExpectedBalance = aliceBalanceBefore; + + assertEq(charlieBalanceAfter, expectedBalance, "incorrect seller balance after primary sale"); + assertEq( + aliceBalanceAfter, aliceExpectedBalance, "royalty receiver should not receive anything in primary sale" + ); + } + + function test_payout_secondary_noPrimaryFees() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold -- true for secondary sale + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(true) + ); + + // setup isApprovedSpaceOperator + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup getERC721ContractPrimarySaleFeePercentage - should be ignored + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector( + IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract + ), + abi.encode(15) + ); + + // Mock royalty engine to return empty arrays to verify primary fees aren't paid + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(new address payable[](0), new uint256[](0)) + ); + + uint256 charlieBalanceBefore = charlie.balance; + + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios + ); + + uint256 charlieBalanceAfter = charlie.balance; + + // Seller should receive 100% (no primary fees in secondary sale) + uint256 expectedBalance = charlieBalanceBefore + amount; + + assertEq( + charlieBalanceAfter, + expectedBalance, + "incorrect seller balance after secondary sale - primary fees should not be taken" + ); + } } diff --git a/src/token/ERC1155/IRareERC1155.sol b/src/token/ERC1155/IRareERC1155.sol new file mode 100644 index 0000000..831eb72 --- /dev/null +++ b/src/token/ERC1155/IRareERC1155.sol @@ -0,0 +1,180 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {ITokenCreator} from "../extensions/ITokenCreator.sol"; + +/// @author SuperRare Labs Inc. +/// @title IRareERC1155 +/// @notice Interface for the RARE Protocol ERC1155 token. +/// @dev Extends the RARE `ITokenCreator` interface so marketplace and royalty infrastructure can resolve creators per token id. +interface IRareERC1155 is ITokenCreator { + /// @notice Per-token configuration for an ERC1155 edition. + struct TokenConfig { + /// @notice Maximum supply that may ever be minted for the token id. + uint256 maxSupply; + /// @notice Token-specific metadata URI. Falls back to the collection base URI when empty. + string tokenURI; + /// @notice Whether the token id has been created. + bool exists; + } + + /// @notice Emitted when the collection is disabled. + /// @param user Owner that disabled the collection. + event ContractDisabled(address indexed user); + + /// @notice Emitted when the owner creates a token type. + /// @param tokenId Newly created token id. + /// @param creator RARE creator recorded for the token id. + /// @param maxSupply Maximum supply configured for the token id. + /// @param tokenURI Token-specific metadata URI. + /// @param royaltyReceiver ERC2981 royalty receiver configured for the token id. + event TokenCreated( + uint256 indexed tokenId, address indexed creator, uint256 maxSupply, string tokenURI, address royaltyReceiver + ); + + /// @notice Emitted when owner changes minter approval. + /// @param minter Address whose approval changed. + /// @param isMinter True when the address is approved to mint. + event MinterApprovalUpdated(address indexed minter, bool isMinter); + + /// @notice Emitted when the metadata of a token is changed. + /// @param _tokenId Token id whose metadata changed. + event MetadataUpdate(uint256 _tokenId); + + /// @notice Emitted when the metadata of a consecutive range of tokens is changed. + /// @param _fromTokenId First token id in the changed range. + /// @param _toTokenId Last token id in the changed range. + event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId); + + /// @notice Reverted when a write operation is attempted after the collection has been disabled. + error ContractIsDisabled(); + + /// @notice Reverted when a token id has not been created. + /// @param _tokenId The missing token id. + error TokenDoesNotExist(uint256 _tokenId); + + /// @notice Reverted when an address parameter is the zero address. + error ZeroAddressUnsupported(); + + /// @notice Reverted when a caller is neither the collection owner nor an approved minter. + /// @param _caller The account that attempted to mint. + error CallerCannotMint(address _caller); + + /// @notice Reverted when a mint amount is zero. + error AmountCannotBeZero(); + + /// @notice Reverted when a token type is created with a zero max supply. + error MaxSupplyCannotBeZero(); + + /// @notice Reverted when minting would put a token id above its configured lifetime max supply. + /// @param _tokenId The token id being minted. + /// @param _requestedTotalMinted The post-mint lifetime minted supply that was requested. + /// @param _maxSupply The configured max supply for the token id. + error ExceededMaxSupply(uint256 _tokenId, uint256 _requestedTotalMinted, uint256 _maxSupply); + + /// @notice Returns the human-readable collection name. + /// @return Collection name. + function name() external view returns (string memory); + + /// @notice Returns the human-readable collection symbol. + /// @return Collection symbol. + function symbol() external view returns (string memory); + + /// @notice Returns whether owner-managed collection writes have been permanently disabled. + /// @return True when disabled. + function disabled() external view returns (bool); + + /// @notice Initializes a cloned ERC1155 collection. + /// @dev Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers. + /// @param _name Human-readable collection name. + /// @param _symbol Human-readable collection symbol. + /// @param _baseURI Base ERC1155 URI used when a token id has no token-specific URI. + /// @param _creator Initial collection owner and default royalty receiver. + /// @param _defaultMinter Optional minter approved during initialization. Use zero address for no default minter. + function init( + string calldata _name, + string calldata _symbol, + string calldata _baseURI, + address _creator, + address _defaultMinter + ) external; + + /// @notice Creates a new token type with a token-specific URI, max supply, and royalty receiver. + /// @param _tokenURI Metadata URI returned for the new token id. + /// @param _maxSupply Maximum supply that may ever be minted for the new token id. + /// @param _royaltyReceiver Address that receives ERC2981 royalties for the new token id. + /// @return The newly created token id. + function createToken(string calldata _tokenURI, uint256 _maxSupply, address _royaltyReceiver) + external + returns (uint256); + + /// @notice Creates a new token type using the caller as the royalty receiver. + /// @param _tokenURI Metadata URI returned for the new token id. + /// @param _maxSupply Maximum supply that may ever be minted for the new token id. + /// @return The newly created token id. + function createToken(string calldata _tokenURI, uint256 _maxSupply) external returns (uint256); + + /// @notice Mints an existing token id to a receiver. + /// @dev Callable by the owner or an approved minter only. Approved minters intentionally have + /// collection-wide mint authority for any existing token id, up to that token's max supply, so + /// creators can approve a trusted marketplace contract once instead of approving per token. + /// Owners should only approve minters they trust to mint remaining collection supply. + /// @param _receiver Address that receives the minted tokens. + /// @param _tokenId Existing token id to mint. + /// @param _amount Quantity to mint. + /// @return The minted token id. + function mintTo(address _receiver, uint256 _tokenId, uint256 _amount) external returns (uint256); + + /// @notice Grants or revokes collection-wide minter approval for an address. + /// @dev Approval is deliberately collection-wide rather than token-scoped to keep the creator UX + /// to a single marketplace approval. An approved minter can mint any existing token id to any + /// receiver until the token's max supply is reached. + /// @param _minter Address whose minter approval is being changed. + /// @param _isMinter Whether the address should be allowed to mint. + function setMinterApproval(address _minter, bool _isMinter) external; + + /// @notice Updates the fallback royalty receiver for tokens that rely on default royalties. + /// @param _receiver New default royalty receiver. + function setDefaultRoyaltyReceiver(address _receiver) external; + + /// @notice Updates the royalty receiver for a specific token id. + /// @param _receiver New royalty receiver for the token id. + /// @param _tokenId Token id whose royalty receiver is updated. + function setRoyaltyReceiverForToken(address _receiver, uint256 _tokenId) external; + + /// @notice Updates the token-specific metadata URI for an existing token id. + /// @param _tokenId Token id whose URI is updated. + /// @param _tokenURI New token-specific metadata URI. + function updateTokenURI(uint256 _tokenId, string calldata _tokenURI) external; + + /// @notice Permanently disables owner-managed write operations on the collection. + function disableContract() external; + + /// @notice Returns whether an address is approved to mint. + /// @param _address Address to inspect. + /// @return True when `_address` is an approved minter. + function isApprovedMinter(address _address) external view returns (bool); + + /// @notice Returns the configured max supply for a token id. + /// @param _tokenId Token id to inspect. + /// @return Maximum mintable supply. Returns zero for token ids that have not been created. + function maxSupplyForToken(uint256 _tokenId) external view returns (uint256); + + /// @notice Returns the lifetime quantity minted for a token id. + /// @dev Burns do not reduce this value. + /// @param _tokenId Token id to inspect. + /// @return Total quantity ever minted for the token id. + function totalMintedForToken(uint256 _tokenId) external view returns (uint256); + + /// @notice Returns the metadata URI for a token id. + /// @dev Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI. + /// @param _tokenId Token id to inspect. + /// @return Metadata URI for the token id. + function uri(uint256 _tokenId) external view returns (string memory); + + /// @notice Returns whether this contract supports an interface id. + /// @dev Returns true for ERC-4906 metadata updates at interface id `0x49064906`. + /// @param _interfaceId Interface id to inspect. + /// @return True when the interface id is supported. + function supportsInterface(bytes4 _interfaceId) external view returns (bool); +} diff --git a/src/token/ERC1155/IRareERC1155ContractFactory.sol b/src/token/ERC1155/IRareERC1155ContractFactory.sol new file mode 100644 index 0000000..8e591eb --- /dev/null +++ b/src/token/ERC1155/IRareERC1155ContractFactory.sol @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +/// @author SuperRare Labs Inc. +/// @title IRareERC1155ContractFactory +/// @notice Interface for the RARE Protocol ERC1155 clone factory. +interface IRareERC1155ContractFactory { + /// @notice Reverted when an implementation address is the zero address. + error ZeroAddressUnsupported(); + + /// @notice Emitted when the factory creates and initializes a collection clone. + /// @param contractAddress Address of the newly created ERC1155 clone. + /// @param owner Initial owner of the clone. + event RareERC1155ContractCreated(address indexed contractAddress, address indexed owner); + + /// @notice Emitted when the owner changes the implementation cloned by the factory. + /// @param rareERC1155 New ERC1155 implementation address. + event RareERC1155Updated(address indexed rareERC1155); + + /// @notice Emitted when the owner changes the default minter for new clones. + /// @param defaultMinter New default minter address. Zero address disables default minter approval. + event DefaultMinterUpdated(address indexed defaultMinter); + + /// @notice Returns the ERC1155 implementation address cloned by the factory. + /// @return ERC1155 implementation address. + function rareERC1155() external view returns (address); + + /// @notice Returns the optional minter approved on each newly created collection. + /// @return Default minter address. Zero address means no default minter. + function defaultMinter() external view returns (address); + + /// @notice Updates the ERC1155 implementation address cloned by future factory calls. + /// @param _rareERC1155 Address of the replacement implementation. + function setRareERC1155(address _rareERC1155) external; + + /// @notice Updates the optional minter approved during clone initialization. + /// @param _defaultMinter Address approved to mint on newly created clones, or zero address for none. + function setDefaultMinter(address _defaultMinter) external; + + /// @notice Creates a new initialized ERC1155 collection clone. + /// @param _name Human-readable collection name. + /// @param _symbol Human-readable collection symbol. + /// @param _baseURI Base URI used by the collection when a token id has no token-specific URI. + /// @return clone Address of the newly created ERC1155 clone. + function createRareERC1155Contract(string calldata _name, string calldata _symbol, string calldata _baseURI) + external + returns (address clone); +} diff --git a/src/token/ERC1155/RareERC1155.sol b/src/token/ERC1155/RareERC1155.sol new file mode 100644 index 0000000..8e9777e --- /dev/null +++ b/src/token/ERC1155/RareERC1155.sol @@ -0,0 +1,294 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {OwnableUpgradeable} from "openzeppelin-contracts-upgradeable/access/OwnableUpgradeable.sol"; +import {ERC1155Upgradeable} from "openzeppelin-contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol"; +import { + ERC1155BurnableUpgradeable +} from "openzeppelin-contracts-upgradeable/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol"; +import { + ERC1155SupplyUpgradeable +} from "openzeppelin-contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol"; + +import {ERC2981Upgradeable} from "../extensions/ERC2981Upgradeable.sol"; +import {ITokenCreator} from "../extensions/ITokenCreator.sol"; +import {IRareERC1155} from "./IRareERC1155.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155 +/// @notice Basic RARE Protocol ERC1155 collection with creator and royalty support. +/// @dev Clone-safe upgradeable-style implementation used behind minimal proxies. Token ids start at 1. +contract RareERC1155 is + IRareERC1155, + OwnableUpgradeable, + ERC1155Upgradeable, + ERC1155BurnableUpgradeable, + ERC1155SupplyUpgradeable, + ERC2981Upgradeable +{ + string public override name; + string public override symbol; + bool public override disabled; + + /// @notice Last created token id. + uint256 private tokenIdCounter; + + /// @notice Token configuration by token id. + mapping(uint256 => TokenConfig) private tokenConfigs; + + /// @notice RARE creator address by token id. + mapping(uint256 => address) private tokenCreators; + + /// @notice Approved minter status by account. + mapping(address => bool) private minterAddresses; + + /// @notice Lifetime minted quantity by token id. + mapping(uint256 => uint256) private tokenTotalMinted; + + /// @notice Ensures the collection has not been disabled. + modifier ifNotDisabled() { + // Atomic guard: disabled collections reject owner-managed writes before any state changes. + if (disabled) revert ContractIsDisabled(); + _; + } + + /// @notice Ensures a token id has been created. + /// @param _tokenId Token id that must exist. + modifier tokenExists(uint256 _tokenId) { + // Atomic guard: missing token ids cannot be minted, updated, or assigned royalties. + if (!tokenConfigs[_tokenId].exists) revert TokenDoesNotExist(_tokenId); + _; + } + + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + + /// @inheritdoc IRareERC1155 + function init( + string calldata _name, + string calldata _symbol, + string calldata _baseURI, + address _creator, + address _defaultMinter + ) public initializer { + // Atomic guard: a collection must always have a non-zero owner and royalty receiver. + if (_creator == address(0)) revert ZeroAddressUnsupported(); + + // State write: store public collection metadata before ownership is transferred. + name = _name; + symbol = _symbol; + disabled = false; + + // Initializer call: set up inherited upgradeable storage for the clone. + __Ownable_init(); + __ERC1155_init(_baseURI); + __ERC1155Burnable_init(); + __ERC1155Supply_init(); + __ERC2981__init(); + + // State writes: configure collection-wide default royalty behavior. + _setDefaultRoyaltyPercentage(10); + _setDefaultRoyaltyReceiver(_creator); + + if (_defaultMinter != address(0)) { + // State write: grant optional marketplace or minter approval at initialization. + minterAddresses[_defaultMinter] = true; + emit MinterApprovalUpdated(_defaultMinter, true); + } + + // Ownership transfer: hand the clone from the initializer caller to the intended creator. + _transferOwnership(_creator); + } + + /// @inheritdoc IRareERC1155 + function createToken(string calldata _tokenURI, uint256 _maxSupply, address _royaltyReceiver) + external + onlyOwner + ifNotDisabled + returns (uint256) + { + return _createToken(_tokenURI, _maxSupply, msg.sender, _royaltyReceiver); + } + + /// @inheritdoc IRareERC1155 + function createToken(string calldata _tokenURI, uint256 _maxSupply) + external + onlyOwner + ifNotDisabled + returns (uint256) + { + return _createToken(_tokenURI, _maxSupply, msg.sender, msg.sender); + } + + /// @inheritdoc IRareERC1155 + function mintTo(address _receiver, uint256 _tokenId, uint256 _amount) + external + ifNotDisabled + tokenExists(_tokenId) + returns (uint256) + { + // Atomic guards: validate receiver, collection-wide minter authority, and non-zero mint amount before supply math. + // Approved minters are deliberately not token-scoped so creators can approve a trusted marketplace once. + if (_receiver == address(0)) revert ZeroAddressUnsupported(); + if (msg.sender != owner() && !minterAddresses[msg.sender]) revert CallerCannotMint(msg.sender); + if (_amount == 0) revert AmountCannotBeZero(); + + // Atomic lifetime supply check: burns must not reopen edition supply. + uint256 requestedTotalMinted = tokenTotalMinted[_tokenId] + _amount; + uint256 maxSupply = tokenConfigs[_tokenId].maxSupply; + if (requestedTotalMinted > maxSupply) revert ExceededMaxSupply(_tokenId, requestedTotalMinted, maxSupply); + + // State write: record lifetime minted supply before the ERC1155 receiver hook can run. + tokenTotalMinted[_tokenId] = requestedTotalMinted; + + // Token mint: OpenZeppelin ERC1155 updates balances, total supply, and emits TransferSingle. + _mint(_receiver, _tokenId, _amount, ""); + + return _tokenId; + } + + /// @inheritdoc IRareERC1155 + function setMinterApproval(address _minter, bool _isMinter) external onlyOwner ifNotDisabled { + // Atomic guard: zero address minter entries are never meaningful and cannot mint. + if (_minter == address(0)) revert ZeroAddressUnsupported(); + + // State write: update the collection-wide minter allowlist for future mint calls. + minterAddresses[_minter] = _isMinter; + emit MinterApprovalUpdated(_minter, _isMinter); + } + + /// @inheritdoc IRareERC1155 + function setDefaultRoyaltyReceiver(address _receiver) external onlyOwner ifNotDisabled { + // Atomic guard: default royalties must pay a real recipient. + if (_receiver == address(0)) revert ZeroAddressUnsupported(); + + // State write: update inherited ERC2981 default royalty receiver. + _setDefaultRoyaltyReceiver(_receiver); + } + + /// @inheritdoc IRareERC1155 + function setRoyaltyReceiverForToken(address _receiver, uint256 _tokenId) + external + onlyOwner + ifNotDisabled + tokenExists(_tokenId) + { + // Atomic guard: token-specific royalties must pay a real recipient. + if (_receiver == address(0)) revert ZeroAddressUnsupported(); + + // State write: update inherited ERC2981 royalty receiver for a single token id. + _setRoyaltyReceiver(_tokenId, _receiver); + } + + /// @inheritdoc IRareERC1155 + function updateTokenURI(uint256 _tokenId, string calldata _tokenURI) + external + onlyOwner + ifNotDisabled + tokenExists(_tokenId) + { + // State write: replace the token-specific metadata URI. + tokenConfigs[_tokenId].tokenURI = _tokenURI; + + // ERC1155 metadata signal: notify indexers of the new URI. + emit URI(_tokenURI, _tokenId); + emit MetadataUpdate(_tokenId); + } + + /// @inheritdoc IRareERC1155 + function disableContract() external onlyOwner { + // State write: permanently stop owner-managed writes guarded by ifNotDisabled. + disabled = true; + emit ContractDisabled(msg.sender); + } + + /// @inheritdoc ITokenCreator + function tokenCreator(uint256 _tokenId) public view override(ITokenCreator) returns (address payable) { + return payable(tokenCreators[_tokenId]); + } + + /// @inheritdoc IRareERC1155 + function isApprovedMinter(address _address) external view returns (bool) { + return minterAddresses[_address]; + } + + /// @inheritdoc IRareERC1155 + function maxSupplyForToken(uint256 _tokenId) external view returns (uint256) { + return tokenConfigs[_tokenId].maxSupply; + } + + /// @inheritdoc IRareERC1155 + function totalMintedForToken(uint256 _tokenId) external view returns (uint256) { + return tokenTotalMinted[_tokenId]; + } + + /// @inheritdoc IRareERC1155 + function uri(uint256 _tokenId) public view override(ERC1155Upgradeable, IRareERC1155) returns (string memory) { + string memory tokenURI = tokenConfigs[_tokenId].tokenURI; + return bytes(tokenURI).length > 0 ? tokenURI : super.uri(_tokenId); + } + + /// @inheritdoc IRareERC1155 + function supportsInterface(bytes4 _interfaceId) + public + view + override(ERC1155Upgradeable, ERC2981Upgradeable, IRareERC1155) + returns (bool) + { + return _interfaceId == 0x49064906 || _interfaceId == type(IRareERC1155).interfaceId + || _interfaceId == type(ITokenCreator).interfaceId || super.supportsInterface(_interfaceId); + } + + /// @notice Creates a token id and configures creator and royalty state. + /// @param _tokenURI Token-specific metadata URI. + /// @param _maxSupply Maximum supply for the token id. + /// @param _creator RARE creator recorded for the token id. + /// @param _royaltyReceiver ERC2981 receiver for the token id. + /// @return tokenId Newly created token id. + function _createToken(string calldata _tokenURI, uint256 _maxSupply, address _creator, address _royaltyReceiver) + internal + returns (uint256) + { + // Atomic guards: token ids must be mintable and royalties must have a recipient. + if (_maxSupply == 0) revert MaxSupplyCannotBeZero(); + if (_royaltyReceiver == address(0)) revert ZeroAddressUnsupported(); + + // State write: advance the monotonically increasing token id counter. + tokenIdCounter++; + uint256 tokenId = tokenIdCounter; + + // State writes: register token constraints, creator lookup, and ERC2981 royalty settings. + tokenConfigs[tokenId] = TokenConfig(_maxSupply, _tokenURI, true); + tokenCreators[tokenId] = _creator; + _setRoyaltyReceiver(tokenId, _royaltyReceiver); + _setRoyaltyPercentage(tokenId, getDefaultRoyaltyPercentage()); + + // Metadata and domain events: expose the new URI and token config to indexers. + emit URI(_tokenURI, tokenId); + emit TokenCreated(tokenId, _creator, _maxSupply, _tokenURI, _royaltyReceiver); + + return tokenId; + } + + /// @notice Hook called by OpenZeppelin before ERC1155 token transfers, mints, and burns. + /// @dev Delegates to `ERC1155SupplyUpgradeable` so total supply accounting stays correct. + /// @param _operator Operator executing the transfer. + /// @param _from Source address. Zero address indicates mint. + /// @param _to Destination address. Zero address indicates burn. + /// @param _ids Token ids being transferred. + /// @param _amounts Amounts being transferred for each token id. + /// @param _data Additional transfer data. + function _beforeTokenTransfer( + address _operator, + address _from, + address _to, + uint256[] memory _ids, + uint256[] memory _amounts, + bytes memory _data + ) internal override(ERC1155Upgradeable, ERC1155SupplyUpgradeable) { + // Hook delegation: inherited supply extension performs atomic total-supply updates. + super._beforeTokenTransfer(_operator, _from, _to, _ids, _amounts, _data); + } +} diff --git a/src/token/ERC1155/RareERC1155ContractFactory.sol b/src/token/ERC1155/RareERC1155ContractFactory.sol new file mode 100644 index 0000000..cae6cbf --- /dev/null +++ b/src/token/ERC1155/RareERC1155ContractFactory.sol @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {Ownable} from "openzeppelin-contracts/access/Ownable.sol"; +import {Clones} from "openzeppelin-contracts/proxy/Clones.sol"; + +import {IRareERC1155ContractFactory} from "./IRareERC1155ContractFactory.sol"; +import {RareERC1155} from "./RareERC1155.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155ContractFactory +/// @notice Clone factory for RARE Protocol ERC1155 collections. +/// @dev Deploys EIP-1167 minimal proxies initialized with the caller as collection owner. +contract RareERC1155ContractFactory is IRareERC1155ContractFactory, Ownable { + address public override rareERC1155; + address public override defaultMinter; + + /// @notice Deploys the initial ERC1155 implementation used for clones. + constructor() { + // Deployment operation: create the clone implementation controlled by the factory owner. + rareERC1155 = address(new RareERC1155()); + } + + /// @inheritdoc IRareERC1155ContractFactory + function setRareERC1155(address _rareERC1155) external onlyOwner { + // Atomic guard: clone implementation cannot be the zero address. + if (_rareERC1155 == address(0)) revert ZeroAddressUnsupported(); + + // State write: future clones use the new implementation. + rareERC1155 = _rareERC1155; + emit RareERC1155Updated(_rareERC1155); + } + + /// @inheritdoc IRareERC1155ContractFactory + function setDefaultMinter(address _defaultMinter) external onlyOwner { + // State write: future clones inherit this minter approval during initialization. + defaultMinter = _defaultMinter; + emit DefaultMinterUpdated(_defaultMinter); + } + + /// @inheritdoc IRareERC1155ContractFactory + function createRareERC1155Contract(string calldata _name, string calldata _symbol, string calldata _baseURI) + external + returns (address) + { + // Clone operation: deploy a minimal proxy that delegates to the current implementation. + address clone = Clones.clone(rareERC1155); + + // Initialization call: set clone metadata, owner, and optional default minter. + RareERC1155(clone).init(_name, _symbol, _baseURI, msg.sender, defaultMinter); + + emit RareERC1155ContractCreated(clone, msg.sender); + + return clone; + } +} diff --git a/src/utils/MarketUtils.sol b/src/utils/MarketUtils.sol index 6ad489f..e610479 100644 --- a/src/utils/MarketUtils.sol +++ b/src/utils/MarketUtils.sol @@ -8,244 +8,244 @@ import {IPayments} from "rareprotocol/aux/payments/IPayments.sol"; import {MarketConfig} from "./structs/MarketConfig.sol"; library MarketUtils { - using SafeERC20 for IERC20; - - /// @notice Checks to see if the currenccy address is eth or an approved erc20 token. - /// @param _currencyAddress Address of currency (Zero address if eth). - function checkIfCurrencyIsApproved(MarketConfig.Config storage _config, address _currencyAddress) internal view { - require( - _currencyAddress == address(0) || _config.approvedTokenRegistry.isApprovedToken(_currencyAddress), - "Not approved currency" - ); - } - - /// @notice Checks to see if the msg sender owns the token. - /// @param _originContract Contract address of the token being checked. - /// @param _tokenId Token Id of the asset. - function senderMustBeTokenOwner(address _originContract, uint256 _tokenId) internal view { - IERC721 erc721 = IERC721(_originContract); - require(erc721.ownerOf(_tokenId) == msg.sender, "sender must be the token owner"); - } - - /// @notice Checks to see if the owner of the token has the marketplace approved. - /// @param _addr Being checked if they've approved for all - /// @param _originContract Contract address of the token being checked. - function addressMustHaveMarketplaceApprovedForNFT(address _addr, address _originContract) internal view { - IERC721 erc721 = IERC721(_originContract); - require(erc721.isApprovedForAll(_addr, address(this)), "owner must have approved contract"); - } - - /// @notice Verifies that the splits supplied are valid. - /// @dev A valid split has the same number of splits and ratios. - /// @dev There can only be a max of 5 parties split with. - /// @dev Total of the ratios should be 100 which is relative. - /// @param _splitAddrs The addresses the amount is being split with. - /// @param _splitRatios The ratios each address in _splits is getting. - function checkSplits(address payable[] calldata _splitAddrs, uint8[] calldata _splitRatios) internal pure { - require(_splitAddrs.length > 0, "checkSplits::Must have at least 1 split"); - require(_splitAddrs.length <= 5, "checkSplits::Split exceeded max size"); - require(_splitAddrs.length == _splitRatios.length, "checkSplits::Splits and ratios must be equal"); - uint256 totalRatio = 0; - - for (uint256 i = 0; i < _splitRatios.length; i++) { - totalRatio += _splitRatios[i]; + using SafeERC20 for IERC20; + + /// @notice Checks to see if the currenccy address is eth or an approved erc20 token. + /// @param _currencyAddress Address of currency (Zero address if eth). + function checkIfCurrencyIsApproved(MarketConfig.Config storage _config, address _currencyAddress) internal view { + require( + _currencyAddress == address(0) || _config.approvedTokenRegistry.isApprovedToken(_currencyAddress), + "Not approved currency" + ); } - require(totalRatio == 100, "checkSplits::Total must be equal to 100"); - } - - /// @notice Checks to see if the sender has approved the marketplace to move tokens. - /// @dev This is for offers/buys/bids and the allowance of erc20 tokens. - /// @dev Returns on zero address because no allowance is needed for eth. - /// @param _currency The address of the currency being checked. - /// @param _amount The total amount being checked. - function senderMustHaveMarketplaceApproved(address _currency, uint256 _amount) internal view { - if (_currency == address(0)) { - return; + /// @notice Checks to see if the msg sender owns the token. + /// @param _originContract Contract address of the token being checked. + /// @param _tokenId Token Id of the asset. + function senderMustBeTokenOwner(address _originContract, uint256 _tokenId) internal view { + IERC721 erc721 = IERC721(_originContract); + require(erc721.ownerOf(_tokenId) == msg.sender, "sender must be the token owner"); } - IERC20 erc20 = IERC20(_currency); - - require(erc20.allowance(msg.sender, address(this)) >= _amount, "sender needs to approve marketplace for currency"); - } - - /// @notice Checks the user has the correct amount and transfers to the marketplace. - /// @dev If the currency used is eth (zero address) the msg value is checked. - /// @dev If eth isnt used and eth is sent we revert the txn. - /// @dev We need to check this contracts balance before and after the transfer to ensure no fee. - /// @param _currencyAddress Currency address being checked and transfered. - /// @param _amount Total amount of currency. - function checkAmountAndTransfer(address _currencyAddress, uint256 _amount) internal { - if (_currencyAddress == address(0)) { - require(msg.value == _amount, "not enough eth sent"); - return; + /// @notice Checks to see if the owner of the token has the marketplace approved. + /// @param _addr Being checked if they've approved for all + /// @param _originContract Contract address of the token being checked. + function addressMustHaveMarketplaceApprovedForNFT(address _addr, address _originContract) internal view { + IERC721 erc721 = IERC721(_originContract); + require(erc721.isApprovedForAll(_addr, address(this)), "owner must have approved contract"); } - require(msg.value == 0, "msg.value should be 0 when not using eth"); - - IERC20 erc20 = IERC20(_currencyAddress); - uint256 balanceBefore = erc20.balanceOf(address(this)); - - erc20.safeTransferFrom(msg.sender, address(this), _amount); - - uint256 balanceAfter = erc20.balanceOf(address(this)); - - require(balanceAfter - balanceBefore == _amount, "not enough tokens transfered"); - } - - /// @notice Refunds an address the designated amount. - /// @dev Return if amount being refunded is zero. - /// @dev Forwards to payment contract if eth is being refunded. - /// @param _currencyAddress Address of currency being refunded. - /// @param _amount Amount being refunded. - /// @param _marketplaceFee Marketplace Fee (percentage) paid by _recipient. - /// @param _recipient Address amount is being refunded to. - function refund( - MarketConfig.Config storage _config, - address _currencyAddress, - uint256 _amount, - uint256 _marketplaceFee, - address _recipient - ) internal { - if (_amount == 0) { - return; + /// @notice Verifies that the splits supplied are valid. + /// @dev A valid split has the same number of splits and ratios. + /// @dev There can only be a max of 5 parties split with. + /// @dev Total of the ratios should be 100 which is relative. + /// @param _splitAddrs The addresses the amount is being split with. + /// @param _splitRatios The ratios each address in _splits is getting. + function checkSplits(address payable[] calldata _splitAddrs, uint8[] calldata _splitRatios) internal pure { + require(_splitAddrs.length > 0, "checkSplits::Must have at least 1 split"); + require(_splitAddrs.length <= 5, "checkSplits::Split exceeded max size"); + require(_splitAddrs.length == _splitRatios.length, "checkSplits::Splits and ratios must be equal"); + uint256 totalRatio = 0; + + for (uint256 i = 0; i < _splitRatios.length; i++) { + require(_splitAddrs[i] != address(0), "checkSplits::Split cannot be zero address"); + require(_splitRatios[i] > 0, "checkSplits::Ratio must be greater than 0"); + totalRatio += _splitRatios[i]; + } + + require(totalRatio == 100, "checkSplits::Total must be equal to 100"); } - uint256 requiredAmount = _amount + ((_amount * _marketplaceFee) / 100); - - if (_currencyAddress == address(0)) { - (bool success, bytes memory data) = address(_config.payments).call{value: requiredAmount}( - abi.encodeWithSignature("refund(address,uint256)", _recipient, requiredAmount) - ); + /// @notice Checks to see if the sender has approved the marketplace to move tokens. + /// @dev This is for offers/buys/bids and the allowance of erc20 tokens. + /// @dev Returns on zero address because no allowance is needed for eth. + /// @param _currency The address of the currency being checked. + /// @param _amount The total amount being checked. + function senderMustHaveMarketplaceApproved(address _currency, uint256 _amount) internal view { + if (_currency == address(0)) { + return; + } - require(success, string(data)); - return; - } + IERC20 erc20 = IERC20(_currency); - IERC20 erc20 = IERC20(_currencyAddress); - erc20.safeTransfer(_recipient, requiredAmount); - } - - /// @notice Sends a payout to all the necessary parties. - /// @dev Note that _splitAddrs and _splitRatios are not checked for validity. Make sure supplied values are correct by using _checkSplits. - /// @dev Sends payments to the network, royalty if applicable, and splits for the rest. - /// @dev Forwards payments to the payment contract if payout is happening in eth. - /// @dev Total amount of ratios should be 100 and is relative to the total ratio left. - /// @param _originContract Contract address of asset triggering a payout. - /// @param _tokenId Token Id of the asset. - /// @param _currencyAddress Address of currency being paid out. - /// @param _amount Total amount to be paid out. - /// @param _seller Address of the person selling the asset. - /// @param _splitAddrs Addresses that funds need to be split against. - /// @param _splitRatios Ratios for split pertaining to each address. - function payout( - MarketConfig.Config storage _config, - address _originContract, - uint256 _tokenId, - address _currencyAddress, - uint256 _amount, - address _seller, - address payable[] memory _splitAddrs, - uint8[] memory _splitRatios - ) internal { - require(_splitAddrs.length == _splitRatios.length, "Number of split addresses and ratios must be equal."); - - /* - The overall flow for payouts is: - 1. Payout marketplace fee - 2. Primary/Secondary Payouts - a. Primary -> If space sale, query space operator registry for platform comission and payout - Else query marketplace setting for primary sale comission and payout - b. Secondary -> Query global royalty registry for recipients and amounts and payout - 3. Calculate the amount for each _splitAddr based on remaining amount and payout - */ - - uint256 remainingAmount = _amount; - - // Marketplace fee - uint256 marketplaceFee = _config.marketplaceSettings.calculateMarketplaceFee(_amount); - - address payable[] memory mktFeeRecip = new address payable[](2); - mktFeeRecip[0] = payable(_config.networkBeneficiary); - mktFeeRecip[1] = payable(_config.stakingRegistry.getRewardAccumulatorAddressForUser(_seller)); - mktFeeRecip[1] = mktFeeRecip[1] == address(0) ? payable(_config.networkBeneficiary) : mktFeeRecip[1]; - uint256[] memory mktFee = new uint256[](2); - mktFee[0] = _config.stakingSettings.calculateMarketplacePayoutFee(_amount); - mktFee[1] = _config.stakingSettings.calculateStakingFee(_amount); - - performPayouts(_config, _currencyAddress, marketplaceFee, mktFeeRecip, mktFee); - - if (!_config.marketplaceSettings.hasERC721TokenSold(_originContract, _tokenId)) { - uint256[] memory platformFee = new uint256[](1); - address payable[] memory platformRecip = new address payable[](1); - platformRecip[0] = mktFeeRecip[0]; - - if (_config.spaceOperatorRegistry.isApprovedSpaceOperator(_seller)) { - uint256 platformCommission = _config.spaceOperatorRegistry.getPlatformCommission(_seller); - - remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); - - platformFee[0] = (_amount * platformCommission) / 100; - - performPayouts(_config, _currencyAddress, platformFee[0], platformRecip, platformFee); - } else { - uint256 platformCommission = _config.marketplaceSettings.getERC721ContractPrimarySaleFeePercentage( - _originContract + require( + erc20.allowance(msg.sender, address(this)) >= _amount, "sender needs to approve marketplace for currency" ); + } - remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); + /// @notice Checks the user has the correct amount and transfers to the marketplace. + /// @dev If the currency used is eth (zero address) the msg value is checked. + /// @dev If eth isnt used and eth is sent we revert the txn. + /// @dev We need to check this contracts balance before and after the transfer to ensure no fee. + /// @param _currencyAddress Currency address being checked and transfered. + /// @param _amount Total amount of currency. + function checkAmountAndTransfer(address _currencyAddress, uint256 _amount) internal { + if (_currencyAddress == address(0)) { + require(msg.value == _amount, "not enough eth sent"); + return; + } - platformFee[0] = (_amount * platformCommission) / 100; + require(msg.value == 0, "msg.value should be 0 when not using eth"); - performPayouts(_config, _currencyAddress, platformFee[0], platformRecip, platformFee); - } - } else { - (address payable[] memory receivers, uint256[] memory royalties) = _config.royaltyEngine.getRoyalty( - _originContract, - _tokenId, - _amount - ); + IERC20 erc20 = IERC20(_currencyAddress); + uint256 balanceBefore = erc20.balanceOf(address(this)); - uint256 totalRoyalties = 0; + erc20.safeTransferFrom(msg.sender, address(this), _amount); - for (uint256 i = 0; i < royalties.length; i++) { - totalRoyalties += royalties[i]; - } + uint256 balanceAfter = erc20.balanceOf(address(this)); - remainingAmount -= totalRoyalties; - performPayouts(_config, _currencyAddress, totalRoyalties, receivers, royalties); + require(balanceAfter - balanceBefore == _amount, "not enough tokens transfered"); } - uint256[] memory remainingAmts = new uint256[](_splitAddrs.length); - - uint256 totalSplit = 0; + /// @notice Refunds an address the designated amount. + /// @dev Return if amount being refunded is zero. + /// @dev Forwards to payment contract if eth is being refunded. + /// @param _currencyAddress Address of currency being refunded. + /// @param _amount Amount being refunded. + /// @param _marketplaceFee Marketplace Fee (percentage) paid by _recipient. + /// @param _recipient Address amount is being refunded to. + function refund( + MarketConfig.Config storage _config, + address _currencyAddress, + uint256 _amount, + uint256 _marketplaceFee, + address _recipient + ) internal { + if (_amount == 0) { + return; + } + + uint256 requiredAmount = _amount + ((_amount * _marketplaceFee) / 100); + + if (_currencyAddress == address(0)) { + (bool success, bytes memory data) = address(_config.payments).call{value: requiredAmount}( + abi.encodeWithSignature("refund(address,uint256)", _recipient, requiredAmount) + ); + + require(success, string(data)); + return; + } + + IERC20 erc20 = IERC20(_currencyAddress); + erc20.safeTransfer(_recipient, requiredAmount); + } - for (uint256 i = 0; i < _splitAddrs.length; i++) { - remainingAmts[i] = (remainingAmount * _splitRatios[i]) / 100; - totalSplit += (remainingAmount * _splitRatios[i]) / 100; + /// @notice Sends a payout to all the necessary parties. + /// @dev Note that _splitAddrs and _splitRatios are not checked for validity. Make sure supplied values are correct by using _checkSplits. + /// @dev Sends payments to the network, royalty if applicable, and splits for the rest. + /// @dev Forwards payments to the payment contract if payout is happening in eth. + /// @dev Total amount of ratios should be 100 and is relative to the total ratio left. + /// @param _originContract Contract address of asset triggering a payout. + /// @param _tokenId Token Id of the asset. + /// @param _currencyAddress Address of currency being paid out. + /// @param _amount Total amount to be paid out. + /// @param _seller Address of the person selling the asset. + /// @param _splitAddrs Addresses that funds need to be split against. + /// @param _splitRatios Ratios for split pertaining to each address. + function payout( + MarketConfig.Config storage _config, + address _originContract, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + address _seller, + address payable[] memory _splitAddrs, + uint8[] memory _splitRatios + ) internal { + require(_splitAddrs.length == _splitRatios.length, "Number of split addresses and ratios must be equal."); + + /* + The overall flow for payouts is: + 1. Payout marketplace fee + 2. Primary/Secondary Payouts + a. Primary -> If space sale, query space operator registry for platform comission and payout + Else query marketplace setting for primary sale comission and payout + b. Secondary -> Query global royalty registry for recipients and amounts and payout + 3. Calculate the amount for each _splitAddr based on remaining amount and payout + */ + + uint256 remainingAmount = _amount; + + // Marketplace fee + uint256 marketplaceFee = _config.marketplaceSettings.calculateMarketplaceFee(_amount); + + address payable[] memory mktFeeRecip = new address payable[](2); + mktFeeRecip[0] = payable(_config.networkBeneficiary); + mktFeeRecip[1] = payable(_config.stakingRegistry.getRewardAccumulatorAddressForUser(_seller)); + mktFeeRecip[1] = mktFeeRecip[1] == address(0) ? payable(_config.networkBeneficiary) : mktFeeRecip[1]; + uint256[] memory mktFee = new uint256[](2); + mktFee[0] = _config.stakingSettings.calculateMarketplacePayoutFee(_amount); + mktFee[1] = _config.stakingSettings.calculateStakingFee(_amount); + + performPayouts(_config, _currencyAddress, marketplaceFee, mktFeeRecip, mktFee); + + if (!_config.marketplaceSettings.hasERC721TokenSold(_originContract, _tokenId)) { + uint256[] memory platformFee = new uint256[](1); + address payable[] memory platformRecip = new address payable[](1); + platformRecip[0] = mktFeeRecip[0]; + + if (_config.spaceOperatorRegistry.isApprovedSpaceOperator(_seller)) { + uint256 platformCommission = _config.spaceOperatorRegistry.getPlatformCommission(_seller); + + remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); + + platformFee[0] = (_amount * platformCommission) / 100; + + performPayouts(_config, _currencyAddress, platformFee[0], platformRecip, platformFee); + } else { + uint256 platformCommission = + _config.marketplaceSettings.getERC721ContractPrimarySaleFeePercentage(_originContract); + + remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); + + platformFee[0] = (_amount * platformCommission) / 100; + + performPayouts(_config, _currencyAddress, platformFee[0], platformRecip, platformFee); + } + } else { + (address payable[] memory receivers, uint256[] memory royalties) = + _config.royaltyEngine.getRoyalty(_originContract, _tokenId, _amount); + + uint256 totalRoyalties = 0; + + for (uint256 i = 0; i < royalties.length; i++) { + totalRoyalties += royalties[i]; + } + + remainingAmount -= totalRoyalties; + performPayouts(_config, _currencyAddress, totalRoyalties, receivers, royalties); + } + + uint256[] memory remainingAmts = new uint256[](_splitAddrs.length); + + uint256 totalSplit = 0; + + for (uint256 i = 0; i < _splitAddrs.length; i++) { + remainingAmts[i] = (remainingAmount * _splitRatios[i]) / 100; + totalSplit += (remainingAmount * _splitRatios[i]) / 100; + } + performPayouts(_config, _currencyAddress, totalSplit, _splitAddrs, remainingAmts); } - performPayouts(_config, _currencyAddress, totalSplit, _splitAddrs, remainingAmts); - } - - function performPayouts( - MarketConfig.Config storage _config, - address _currencyAddress, - uint256 _amount, - address payable[] memory _recipients, - uint256[] memory _amounts - ) internal { - if (_currencyAddress == address(0)) { - (bool success, bytes memory data) = address(_config.payments).call{value: _amount}( - abi.encodeWithSelector(IPayments.payout.selector, _recipients, _amounts) - ); - - require(success, string(data)); - } else { - IERC20 erc20 = IERC20(_currencyAddress); - - for (uint256 i = 0; i < _recipients.length; i++) { - erc20.safeTransfer(_recipients[i], _amounts[i]); - } + + function performPayouts( + MarketConfig.Config storage _config, + address _currencyAddress, + uint256 _amount, + address payable[] memory _recipients, + uint256[] memory _amounts + ) internal { + if (_currencyAddress == address(0)) { + (bool success, bytes memory data) = address(_config.payments).call{value: _amount}( + abi.encodeWithSelector(IPayments.payout.selector, _recipients, _amounts) + ); + + require(success, string(data)); + } else { + IERC20 erc20 = IERC20(_currencyAddress); + + for (uint256 i = 0; i < _recipients.length; i++) { + erc20.safeTransfer(_recipients[i], _amounts[i]); + } + } } - } } diff --git a/src/v2/approver/ERC1155/ERC1155ApprovalManager.sol b/src/v2/approver/ERC1155/ERC1155ApprovalManager.sol new file mode 100644 index 0000000..607eab5 --- /dev/null +++ b/src/v2/approver/ERC1155/ERC1155ApprovalManager.sol @@ -0,0 +1,112 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +import {IERC1155} from "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; +import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol"; + +import {IERC1155ApprovalManager} from "./IERC1155ApprovalManager.sol"; + +/// @title ERC1155ApprovalManager +/// @notice A central approval manager for ERC1155 tokens that allows whitelisted contracts to transfer tokens. +/// @dev Users approve this manager on ERC1155 collections, and operator contracts execute transfers through it. +contract ERC1155ApprovalManager is IERC1155ApprovalManager, AccessControl { + /// @notice Role for managing operators. + bytes32 public constant MANAGER_ROLE = keccak256("MANAGER_ROLE"); + + /// @notice Role for contracts allowed to transfer tokens. + bytes32 public constant OPERATOR_ROLE = keccak256("OPERATOR_ROLE"); + + /// @notice Whether the contract is disabled. + bool public override disabled; + + /// @notice Grants deployer admin and manager roles. + constructor() { + // Role setup: deployer receives admin authority for AccessControl role administration. + _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); + + // Role setup: deployer receives explicit manager authority for this manager's admin methods. + _grantRole(MANAGER_ROLE, msg.sender); + + // State write: initialize transfer execution as enabled. + disabled = false; + } + + /// @notice Modifier to check if contract is not disabled. + modifier whenNotDisabled() { + // Atomic guard: disabled managers reject transfer execution before external token calls. + if (disabled) revert ContractDisabledError(); + _; + } + + /// @notice Modifier to check if caller has manager authority. + modifier onlyManager() { + // Atomic guard: manager-only calls reject unauthorized callers before any role or state writes. + if (!hasRole(MANAGER_ROLE, msg.sender)) revert NotManager(msg.sender); + _; + } + + /// @inheritdoc IERC1155ApprovalManager + function disable() external onlyManager { + // State write: permanently disable future transfer execution. + disabled = true; + emit ContractDisabled(msg.sender); + } + + /// @inheritdoc IERC1155ApprovalManager + function grantOperatorRole(address operator) external onlyManager { + // Role write: authorize one marketplace/operator contract to execute ERC1155 transfers. + _grantRole(OPERATOR_ROLE, operator); + } + + /// @inheritdoc IERC1155ApprovalManager + function revokeOperatorRole(address operator) external onlyManager { + // Role write: remove ERC1155 transfer authority from one operator contract. + _revokeRole(OPERATOR_ROLE, operator); + } + + /// @inheritdoc IERC1155ApprovalManager + function batchGrantOperatorRole(address[] calldata operators) external onlyManager { + for (uint256 i = 0; i < operators.length; i++) { + // Role write: authorize the current operator address in the batch. + _grantRole(OPERATOR_ROLE, operators[i]); + } + } + + /// @inheritdoc IERC1155ApprovalManager + function batchRevokeOperatorRole(address[] calldata operators) external onlyManager { + for (uint256 i = 0; i < operators.length; i++) { + // Role write: revoke the current operator address in the batch. + _revokeRole(OPERATOR_ROLE, operators[i]); + } + } + + /// @inheritdoc IERC1155ApprovalManager + function safeTransferFrom(address token, address from, address to, uint256 id, uint256 amount, bytes calldata data) + external + whenNotDisabled + { + // Atomic guard: only approved operator contracts may execute user-authorized ERC1155 transfers. + if (!hasRole(OPERATOR_ROLE, msg.sender)) revert NotOperator(); + + // External token call: token contract enforces holder approval, balance, and receiver acceptance. + IERC1155 erc1155 = IERC1155(token); + erc1155.safeTransferFrom(from, to, id, amount, data); + } + + /// @inheritdoc IERC1155ApprovalManager + function safeBatchTransferFrom( + address token, + address from, + address to, + uint256[] calldata ids, + uint256[] calldata amounts, + bytes calldata data + ) external whenNotDisabled { + // Atomic guard: only approved operator contracts may execute user-authorized ERC1155 batch transfers. + if (!hasRole(OPERATOR_ROLE, msg.sender)) revert NotOperator(); + + // External token call: token contract enforces holder approval, balances, and receiver acceptance. + IERC1155 erc1155 = IERC1155(token); + erc1155.safeBatchTransferFrom(from, to, ids, amounts, data); + } +} diff --git a/src/v2/approver/ERC1155/IERC1155ApprovalManager.sol b/src/v2/approver/ERC1155/IERC1155ApprovalManager.sol new file mode 100644 index 0000000..2d28d57 --- /dev/null +++ b/src/v2/approver/ERC1155/IERC1155ApprovalManager.sol @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +/// @title IERC1155ApprovalManager +/// @notice Interface for managing ERC1155 token approvals and transfers. +interface IERC1155ApprovalManager { + /// @notice Error thrown when caller is not a manager. + /// @param caller The account that attempted a manager-only operation. + error NotManager(address caller); + + /// @notice Error thrown when caller is not an operator. + error NotOperator(); + + /// @notice Error thrown when contract is disabled. + error ContractDisabledError(); + + /// @notice Event emitted when contract is disabled. + /// @param disabler The manager that disabled the approval manager. + event ContractDisabled(address indexed disabler); + + /// @notice Returns whether the approval manager is permanently disabled. + /// @return True when token transfer execution is disabled. + function disabled() external view returns (bool); + + /// @notice Disables token transfers through the approval manager permanently. + /// @dev Callable by an account with the manager role. + function disable() external; + + /// @notice Grants operator transfer permissions to a contract. + /// @param operator The contract address to grant the role to. + function grantOperatorRole(address operator) external; + + /// @notice Revokes operator transfer permissions from a contract. + /// @param operator The contract address to revoke the role from. + function revokeOperatorRole(address operator) external; + + /// @notice Grants operator transfer permissions to multiple contracts. + /// @param operators Contract addresses to grant the role to. + function batchGrantOperatorRole(address[] calldata operators) external; + + /// @notice Revokes operator transfer permissions from multiple contracts. + /// @param operators Contract addresses to revoke the role from. + function batchRevokeOperatorRole(address[] calldata operators) external; + + /// @notice Safely transfer ERC1155 tokens from a user to a recipient. + /// @param token The ERC1155 token contract address. + /// @param from The address to transfer from. + /// @param to The recipient address. + /// @param id The token id to transfer. + /// @param amount The amount of tokens to transfer. + /// @param data Additional data with no specified format. + function safeTransferFrom(address token, address from, address to, uint256 id, uint256 amount, bytes calldata data) + external; + + /// @notice Safely transfer a batch of ERC1155 tokens from a user to a recipient. + /// @param token The ERC1155 token contract address. + /// @param from The address to transfer from. + /// @param to The recipient address. + /// @param ids The token ids to transfer. + /// @param amounts The amounts of each token id to transfer. + /// @param data Additional data with no specified format. + function safeBatchTransferFrom( + address token, + address from, + address to, + uint256[] calldata ids, + uint256[] calldata amounts, + bytes calldata data + ) external; +} diff --git a/src/v2/utils/MarketUtilsV2.sol b/src/v2/utils/MarketUtilsV2.sol index d2a245b..50fab3c 100644 --- a/src/v2/utils/MarketUtilsV2.sol +++ b/src/v2/utils/MarketUtilsV2.sol @@ -8,343 +8,341 @@ import {IPayments} from "rareprotocol/aux/payments/IPayments.sol"; import {MarketConfigV2} from "./MarketConfigV2.sol"; library MarketUtilsV2 { - using SafeERC20 for IERC20; - - /// @notice Maximum number of royalty recipients allowed to prevent DoS attacks - uint256 public constant MAX_ROYALTY_RECIPIENTS = 5; - - /// @notice Checks to see if the currency address is eth or an approved erc20 token. - /// @param _currencyAddress Address of currency (Zero address if eth). - function checkIfCurrencyIsApproved(MarketConfigV2.Config storage _config, address _currencyAddress) internal view { - require( - _currencyAddress == address(0) || _config.approvedTokenRegistry.isApprovedToken(_currencyAddress), - "Not approved currency" - ); - } - - /// @notice Checks to see if the msg sender owns the token. - /// @param _originContract Contract address of the token being checked. - /// @param _tokenId Token Id of the asset. - function senderMustBeTokenOwner(address _originContract, uint256 _tokenId) internal view { - IERC721 erc721 = IERC721(_originContract); - require(erc721.ownerOf(_tokenId) == msg.sender, "sender must be the token owner"); - } - - /// @notice Checks to see if the approval manager has approval to transfer the NFT - /// @param _originContract Contract address of the token being checked. - /// @param _tokenId Token Id of the asset. - function addressMustHaveMarketplaceApprovedForNFT( - MarketConfigV2.Config storage _config, - address _address, - address _originContract, - uint256 _tokenId - ) internal view { - IERC721 nft = IERC721(_originContract); - require(nft.isApprovedForAll(_address, address(_config.erc721ApprovalManager)), "owner must have approved token"); - } - - /// @notice Verifies that the splits supplied are valid. - /// @dev A valid split has the same number of splits and ratios. - /// @dev There can only be a max of 5 parties split with. - /// @dev Total of the ratios should be 100 which is relative. - /// @param _splitAddrs The addresses the amount is being split with. - /// @param _splitRatios The ratios each address in _splits is getting. - function checkSplits(address payable[] calldata _splitAddrs, uint8[] calldata _splitRatios) internal pure { - require(_splitAddrs.length > 0, "checkSplits::Must have at least 1 split"); - require(_splitAddrs.length <= 5, "checkSplits::Split exceeded max size"); - require(_splitAddrs.length == _splitRatios.length, "checkSplits::Splits and ratios must be equal"); - uint256 totalRatio = 0; - - for (uint256 i = 0; i < _splitRatios.length; i++) { - totalRatio += _splitRatios[i]; - } + using SafeERC20 for IERC20; - require(totalRatio == 100, "checkSplits::Total must be equal to 100"); - } - - /// @notice Checks to see if the approval manager has approval to transfer tokens - /// @dev This is for offers/buys/bids and the allowance of erc20 tokens. - /// @dev Returns on zero address because no allowance is needed for eth. - /// @param _currency The address of the currency being checked. - /// @param _amount The total amount being checked. - function senderMustHaveMarketplaceApproved( - MarketConfigV2.Config storage _config, - address _currency, - uint256 _amount - ) internal view { - if (_currency == address(0)) { - return; - } + /// @notice Maximum number of royalty recipients allowed to prevent DoS attacks + uint256 public constant MAX_ROYALTY_RECIPIENTS = 5; - IERC20 erc20 = IERC20(_currency); - require( - erc20.allowance(msg.sender, address(_config.erc20ApprovalManager)) >= _amount, - "sender needs to approve ERC20ApprovalManager for currency" - ); - } - - /// @notice Checks the user has the correct amount and transfers to the marketplace. - /// @dev If the currency used is eth (zero address) the msg value is checked. - /// @dev If eth isnt used and eth is sent we revert the txn. - /// @dev We need to check this contracts balance before and after the transfer to ensure no fee. - /// @param _config The market config - /// @param _currencyAddress Currency address being checked and transfered. - /// @param _amount Total amount of currency. - function checkAmountAndTransfer( - MarketConfigV2.Config storage _config, - address _currencyAddress, - uint256 _amount - ) internal { - if (_currencyAddress == address(0)) { - require(msg.value == _amount, "not enough eth sent"); - return; + /// @notice Checks to see if the currency address is eth or an approved erc20 token. + /// @param _currencyAddress Address of currency (Zero address if eth). + function checkIfCurrencyIsApproved(MarketConfigV2.Config storage _config, address _currencyAddress) internal view { + require( + _currencyAddress == address(0) || _config.approvedTokenRegistry.isApprovedToken(_currencyAddress), + "Not approved currency" + ); } - require(msg.value == 0, "msg.value should be 0 when not using eth"); - - IERC20 erc20 = IERC20(_currencyAddress); - uint256 balanceBefore = erc20.balanceOf(address(this)); - - _config.erc20ApprovalManager.transferFrom(_currencyAddress, msg.sender, address(this), _amount); - - uint256 balanceAfter = erc20.balanceOf(address(this)); - - require(balanceAfter - balanceBefore == _amount, "not enough tokens transfered"); - } - - /// @notice Refunds an address the designated amount. - /// @dev Return if amount being refunded is zero. - /// @dev Forwards to payment contract if eth is being refunded. - /// @param _currencyAddress Address of currency being refunded. - /// @param _amount Amount being refunded. - /// @param _marketplaceFee Marketplace Fee (percentage) paid by _recipient. - /// @param _recipient Address amount is being refunded to. - function refund( - MarketConfigV2.Config storage _config, - address _currencyAddress, - uint256 _amount, - uint256 _marketplaceFee, - address _recipient - ) internal { - if (_amount == 0) { - return; + /// @notice Checks to see if the msg sender owns the token. + /// @param _originContract Contract address of the token being checked. + /// @param _tokenId Token Id of the asset. + function senderMustBeTokenOwner(address _originContract, uint256 _tokenId) internal view { + IERC721 erc721 = IERC721(_originContract); + require(erc721.ownerOf(_tokenId) == msg.sender, "sender must be the token owner"); } - uint256 requiredAmount = _amount + ((_amount * _marketplaceFee) / 100); + /// @notice Checks to see if the approval manager has approval to transfer the NFT + /// @param _originContract Contract address of the token being checked. + /// @param _tokenId Token Id of the asset. + function addressMustHaveMarketplaceApprovedForNFT( + MarketConfigV2.Config storage _config, + address _address, + address _originContract, + uint256 _tokenId + ) internal view { + IERC721 nft = IERC721(_originContract); + require( + nft.isApprovedForAll(_address, address(_config.erc721ApprovalManager)), "owner must have approved token" + ); + } - if (_currencyAddress == address(0)) { - (bool success, bytes memory data) = address(_config.payments).call{value: requiredAmount}( - abi.encodeWithSignature("refund(address,uint256)", _recipient, requiredAmount) - ); + /// @notice Verifies that the splits supplied are valid. + /// @dev A valid split has the same number of splits and ratios. + /// @dev There can only be a max of 5 parties split with. + /// @dev Total of the ratios should be 100 which is relative. + /// @param _splitAddrs The addresses the amount is being split with. + /// @param _splitRatios The ratios each address in _splits is getting. + function checkSplits(address payable[] calldata _splitAddrs, uint8[] calldata _splitRatios) internal pure { + require(_splitAddrs.length > 0, "checkSplits::Must have at least 1 split"); + require(_splitAddrs.length <= 5, "checkSplits::Split exceeded max size"); + require(_splitAddrs.length == _splitRatios.length, "checkSplits::Splits and ratios must be equal"); + uint256 totalRatio = 0; + + for (uint256 i = 0; i < _splitRatios.length; i++) { + require(_splitAddrs[i] != address(0), "checkSplits::Split cannot be zero address"); + require(_splitRatios[i] > 0, "checkSplits::Ratio must be greater than 0"); + totalRatio += _splitRatios[i]; + } - require(success, string(data)); - return; + require(totalRatio == 100, "checkSplits::Total must be equal to 100"); } - IERC20 erc20 = IERC20(_currencyAddress); - erc20.safeTransfer(_recipient, requiredAmount); - } - - /// @notice Sends a payout to all the necessary parties. - /// @dev Note that _splitAddrs and _splitRatios are not checked for validity. Make sure supplied values are correct by using _checkSplits. - /// @dev Sends payments to the network, royalty if applicable, and splits for the rest. - /// @dev Forwards payments to the payment contract if payout is happening in eth. - /// @dev Total amount of ratios should be 100 and is relative to the total ratio left. - /// @param _originContract Contract address of asset triggering a payout. - /// @param _tokenId Token Id of the asset. - /// @param _currencyAddress Address of currency being paid out. - /// @param _amount Total amount to be paid out. - /// @param _seller Address of the person selling the asset. - /// @param _splitAddrs Addresses that funds need to be split against. - /// @param _splitRatios Ratios for split pertaining to each address. - function payout( - MarketConfigV2.Config storage _config, - address _originContract, - uint256 _tokenId, - address _currencyAddress, - uint256 _amount, - address _seller, - address payable[] memory _splitAddrs, - uint8[] memory _splitRatios - ) internal { - payoutWithMarketplaceFee( - _config, - _originContract, - _tokenId, - _currencyAddress, - _amount, - _seller, - _splitAddrs, - _splitRatios, - _config.marketplaceSettings.getMarketplaceFeePercentage() - ); - } - - /// @notice Sends a payout to all the necessary parties with a specific marketplace fee percentage. - /// @dev Note that _splitAddrs and _splitRatios are not checked for validity. Make sure supplied values are correct by using _checkSplits. - /// @dev Sends payments to the network, royalty if applicable, and splits for the rest. - /// @dev Forwards payments to the payment contract if payout is happening in eth. - /// @dev Total amount of ratios should be 100 and is relative to the total ratio left. - /// @param _originContract Contract address of asset triggering a payout. - /// @param _tokenId Token Id of the asset. - /// @param _currencyAddress Address of currency being paid out. - /// @param _amount Total amount to be paid out. - /// @param _seller Address of the person selling the asset. - /// @param _splitAddrs Addresses that funds need to be split against. - /// @param _splitRatios Ratios for split pertaining to each address. - /// @param _marketplaceFeePercentage The marketplace fee percentage to use for this payout. - function payoutWithMarketplaceFee( - MarketConfigV2.Config storage _config, - address _originContract, - uint256 _tokenId, - address _currencyAddress, - uint256 _amount, - address _seller, - address payable[] memory _splitAddrs, - uint8[] memory _splitRatios, - uint8 _marketplaceFeePercentage - ) internal { - require(_splitAddrs.length == _splitRatios.length, "Number of split addresses and ratios must be equal."); - - /* - The overall flow for payouts is: - 1. Payout marketplace fee - 2. Primary/Secondary Payouts - a. Primary -> If space sale, query space operator registry for platform comission and payout - Else query marketplace setting for primary sale comission and payout - b. Secondary -> Query global royalty registry for recipients and amounts and payout - 3. Calculate the amount for each _splitAddr based on remaining amount and payout - */ - - uint256 remainingAmount = _amount; - - // Marketplace fee - use the provided fee percentage instead of current settings - uint256 marketplaceFee = (_amount * _marketplaceFeePercentage) / 100; - - address payable[] memory mktFeeRecip = new address payable[](2); - mktFeeRecip[0] = payable(_config.networkBeneficiary); - mktFeeRecip[1] = payable(_config.stakingRegistry.getRewardAccumulatorAddressForUser(_seller)); - mktFeeRecip[1] = mktFeeRecip[1] == address(0) ? payable(_config.networkBeneficiary) : mktFeeRecip[1]; - uint256[] memory mktFee = new uint256[](2); - require( - marketplaceFee - _config.stakingSettings.calculateStakingFee(_amount) >= 0, - "Marketplace fee is less than staking fee" - ); - mktFee[0] = marketplaceFee - _config.stakingSettings.calculateStakingFee(_amount); // All marketplace fee goes to network beneficiary - mktFee[1] = _config.stakingSettings.calculateStakingFee(_amount); // Staking fee for this implementation - - performPayouts(_config, _currencyAddress, marketplaceFee, mktFeeRecip, mktFee); - - if (!_config.marketplaceSettings.hasERC721TokenSold(_originContract, _tokenId)) { - uint256[] memory platformFee = new uint256[](1); - address payable[] memory platformRecip = new address payable[](1); - platformRecip[0] = mktFeeRecip[0]; - - if (_config.spaceOperatorRegistry.isApprovedSpaceOperator(_seller)) { - uint256 platformCommission = _config.spaceOperatorRegistry.getPlatformCommission(_seller); - - remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); - - platformFee[0] = (_amount * platformCommission) / 100; - - performPayouts(_config, _currencyAddress, platformFee[0], platformRecip, platformFee); - } else { - uint256 platformCommission = _config.marketplaceSettings.getERC721ContractPrimarySaleFeePercentage( - _originContract + /// @notice Checks to see if the approval manager has approval to transfer tokens + /// @dev This is for offers/buys/bids and the allowance of erc20 tokens. + /// @dev Returns on zero address because no allowance is needed for eth. + /// @param _currency The address of the currency being checked. + /// @param _amount The total amount being checked. + function senderMustHaveMarketplaceApproved( + MarketConfigV2.Config storage _config, + address _currency, + uint256 _amount + ) internal view { + if (_currency == address(0)) { + return; + } + + IERC20 erc20 = IERC20(_currency); + require( + erc20.allowance(msg.sender, address(_config.erc20ApprovalManager)) >= _amount, + "sender needs to approve ERC20ApprovalManager for currency" ); + } + + /// @notice Checks the user has the correct amount and transfers to the marketplace. + /// @dev If the currency used is eth (zero address) the msg value is checked. + /// @dev If eth isnt used and eth is sent we revert the txn. + /// @dev We need to check this contracts balance before and after the transfer to ensure no fee. + /// @param _config The market config + /// @param _currencyAddress Currency address being checked and transfered. + /// @param _amount Total amount of currency. + function checkAmountAndTransfer(MarketConfigV2.Config storage _config, address _currencyAddress, uint256 _amount) + internal + { + if (_currencyAddress == address(0)) { + require(msg.value == _amount, "not enough eth sent"); + return; + } - remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); - - platformFee[0] = (_amount * platformCommission) / 100; - - performPayouts(_config, _currencyAddress, platformFee[0], platformRecip, platformFee); - } - } else { - // Get royalty recipients and amounts for secondary sale - (address payable[] memory recipients, uint256[] memory amounts) = _config.royaltyEngine.getRoyalty( - _originContract, - _tokenId, - _amount - ); - - // Check for maximum royalty recipients to prevent DoS attacks - if (recipients.length > MAX_ROYALTY_RECIPIENTS) { - // Create new arrays with truncated recipients - address payable[] memory truncatedRecipients = new address payable[](MAX_ROYALTY_RECIPIENTS); - uint256[] memory truncatedAmounts = new uint256[](MAX_ROYALTY_RECIPIENTS); - - for (uint256 i = 0; i < MAX_ROYALTY_RECIPIENTS; i++) { - truncatedRecipients[i] = recipients[i]; - truncatedAmounts[i] = amounts[i]; + require(msg.value == 0, "msg.value should be 0 when not using eth"); + + IERC20 erc20 = IERC20(_currencyAddress); + uint256 balanceBefore = erc20.balanceOf(address(this)); + + _config.erc20ApprovalManager.transferFrom(_currencyAddress, msg.sender, address(this), _amount); + + uint256 balanceAfter = erc20.balanceOf(address(this)); + + require(balanceAfter - balanceBefore == _amount, "not enough tokens transfered"); + } + + /// @notice Refunds an address the designated amount. + /// @dev Return if amount being refunded is zero. + /// @dev Forwards to payment contract if eth is being refunded. + /// @param _currencyAddress Address of currency being refunded. + /// @param _amount Amount being refunded. + /// @param _marketplaceFee Marketplace Fee (percentage) paid by _recipient. + /// @param _recipient Address amount is being refunded to. + function refund( + MarketConfigV2.Config storage _config, + address _currencyAddress, + uint256 _amount, + uint256 _marketplaceFee, + address _recipient + ) internal { + if (_amount == 0) { + return; } - recipients = truncatedRecipients; - amounts = truncatedAmounts; - } + uint256 requiredAmount = _amount + ((_amount * _marketplaceFee) / 100); - // Calculate total royalty amount - uint256 totalRoyaltyAmount = 0; - for (uint256 i = 0; i < amounts.length; i++) { - totalRoyaltyAmount += amounts[i]; - } + if (_currencyAddress == address(0)) { + (bool success, bytes memory data) = address(_config.payments).call{value: requiredAmount}( + abi.encodeWithSignature("refund(address,uint256)", _recipient, requiredAmount) + ); - remainingAmount = remainingAmount - totalRoyaltyAmount; + require(success, string(data)); + return; + } - // Pay out royalties - performPayouts(_config, _currencyAddress, totalRoyaltyAmount, recipients, amounts); + IERC20 erc20 = IERC20(_currencyAddress); + erc20.safeTransfer(_recipient, requiredAmount); } - // Calculate and pay out splits - uint256[] memory splitAmounts = new uint256[](_splitRatios.length); - for (uint256 i = 0; i < _splitRatios.length; i++) { - splitAmounts[i] = (remainingAmount * _splitRatios[i]) / 100; + /// @notice Sends a payout to all the necessary parties. + /// @dev Note that _splitAddrs and _splitRatios are not checked for validity. Make sure supplied values are correct by using _checkSplits. + /// @dev Sends payments to the network, royalty if applicable, and splits for the rest. + /// @dev Forwards payments to the payment contract if payout is happening in eth. + /// @dev Total amount of ratios should be 100 and is relative to the total ratio left. + /// @param _originContract Contract address of asset triggering a payout. + /// @param _tokenId Token Id of the asset. + /// @param _currencyAddress Address of currency being paid out. + /// @param _amount Total amount to be paid out. + /// @param _seller Address of the person selling the asset. + /// @param _splitAddrs Addresses that funds need to be split against. + /// @param _splitRatios Ratios for split pertaining to each address. + function payout( + MarketConfigV2.Config storage _config, + address _originContract, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + address _seller, + address payable[] memory _splitAddrs, + uint8[] memory _splitRatios + ) internal { + payoutWithMarketplaceFee( + _config, + _originContract, + _tokenId, + _currencyAddress, + _amount, + _seller, + _splitAddrs, + _splitRatios, + _config.marketplaceSettings.getMarketplaceFeePercentage() + ); + } + + /// @notice Sends a payout to all the necessary parties with a specific marketplace fee percentage. + /// @dev Note that _splitAddrs and _splitRatios are not checked for validity. Make sure supplied values are correct by using _checkSplits. + /// @dev Sends payments to the network, royalty if applicable, and splits for the rest. + /// @dev Forwards payments to the payment contract if payout is happening in eth. + /// @dev Total amount of ratios should be 100 and is relative to the total ratio left. + /// @param _originContract Contract address of asset triggering a payout. + /// @param _tokenId Token Id of the asset. + /// @param _currencyAddress Address of currency being paid out. + /// @param _amount Total amount to be paid out. + /// @param _seller Address of the person selling the asset. + /// @param _splitAddrs Addresses that funds need to be split against. + /// @param _splitRatios Ratios for split pertaining to each address. + /// @param _marketplaceFeePercentage The marketplace fee percentage to use for this payout. + function payoutWithMarketplaceFee( + MarketConfigV2.Config storage _config, + address _originContract, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + address _seller, + address payable[] memory _splitAddrs, + uint8[] memory _splitRatios, + uint8 _marketplaceFeePercentage + ) internal { + require(_splitAddrs.length == _splitRatios.length, "Number of split addresses and ratios must be equal."); + + /* + The overall flow for payouts is: + 1. Payout marketplace fee + 2. Primary/Secondary Payouts + a. Primary -> If space sale, query space operator registry for platform comission and payout + Else query marketplace setting for primary sale comission and payout + b. Secondary -> Query global royalty registry for recipients and amounts and payout + 3. Calculate the amount for each _splitAddr based on remaining amount and payout + */ + + uint256 remainingAmount = _amount; + + // Marketplace fee - use the provided fee percentage instead of current settings + uint256 marketplaceFee = (_amount * _marketplaceFeePercentage) / 100; + + address payable[] memory mktFeeRecip = new address payable[](2); + mktFeeRecip[0] = payable(_config.networkBeneficiary); + mktFeeRecip[1] = payable(_config.stakingRegistry.getRewardAccumulatorAddressForUser(_seller)); + mktFeeRecip[1] = mktFeeRecip[1] == address(0) ? payable(_config.networkBeneficiary) : mktFeeRecip[1]; + uint256[] memory mktFee = new uint256[](2); + require( + marketplaceFee - _config.stakingSettings.calculateStakingFee(_amount) >= 0, + "Marketplace fee is less than staking fee" + ); + mktFee[0] = marketplaceFee - _config.stakingSettings.calculateStakingFee(_amount); // All marketplace fee goes to network beneficiary + mktFee[1] = _config.stakingSettings.calculateStakingFee(_amount); // Staking fee for this implementation + + performPayouts(_config, _currencyAddress, marketplaceFee, mktFeeRecip, mktFee); + + if (!_config.marketplaceSettings.hasERC721TokenSold(_originContract, _tokenId)) { + uint256[] memory platformFee = new uint256[](1); + address payable[] memory platformRecip = new address payable[](1); + platformRecip[0] = mktFeeRecip[0]; + + if (_config.spaceOperatorRegistry.isApprovedSpaceOperator(_seller)) { + uint256 platformCommission = _config.spaceOperatorRegistry.getPlatformCommission(_seller); + + remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); + + platformFee[0] = (_amount * platformCommission) / 100; + + performPayouts(_config, _currencyAddress, platformFee[0], platformRecip, platformFee); + } else { + uint256 platformCommission = + _config.marketplaceSettings.getERC721ContractPrimarySaleFeePercentage(_originContract); + + remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); + + platformFee[0] = (_amount * platformCommission) / 100; + + performPayouts(_config, _currencyAddress, platformFee[0], platformRecip, platformFee); + } + } else { + // Get royalty recipients and amounts for secondary sale + (address payable[] memory recipients, uint256[] memory amounts) = + _config.royaltyEngine.getRoyalty(_originContract, _tokenId, _amount); + + // Check for maximum royalty recipients to prevent DoS attacks + if (recipients.length > MAX_ROYALTY_RECIPIENTS) { + // Create new arrays with truncated recipients + address payable[] memory truncatedRecipients = new address payable[](MAX_ROYALTY_RECIPIENTS); + uint256[] memory truncatedAmounts = new uint256[](MAX_ROYALTY_RECIPIENTS); + + for (uint256 i = 0; i < MAX_ROYALTY_RECIPIENTS; i++) { + truncatedRecipients[i] = recipients[i]; + truncatedAmounts[i] = amounts[i]; + } + + recipients = truncatedRecipients; + amounts = truncatedAmounts; + } + + // Calculate total royalty amount + uint256 totalRoyaltyAmount = 0; + for (uint256 i = 0; i < amounts.length; i++) { + totalRoyaltyAmount += amounts[i]; + } + + remainingAmount = remainingAmount - totalRoyaltyAmount; + + // Pay out royalties + performPayouts(_config, _currencyAddress, totalRoyaltyAmount, recipients, amounts); + } + + // Calculate and pay out splits + uint256[] memory splitAmounts = new uint256[](_splitRatios.length); + for (uint256 i = 0; i < _splitRatios.length; i++) { + splitAmounts[i] = (remainingAmount * _splitRatios[i]) / 100; + } + + performPayouts(_config, _currencyAddress, remainingAmount, _splitAddrs, splitAmounts); } - performPayouts(_config, _currencyAddress, remainingAmount, _splitAddrs, splitAmounts); - } - - /// @notice Performs payouts to recipients. - /// @dev If eth is being paid out, forwards to payment contract. - /// @dev If erc20 is being paid out, transfers directly. - /// @param _currencyAddress Address of currency being paid out. - /// @param _totalAmount Total amount being paid out. - /// @param _recipients Recipients of the payouts. - /// @param _amounts Amounts pertaining to each recipient. - function performPayouts( - MarketConfigV2.Config storage _config, - address _currencyAddress, - uint256 _totalAmount, - address payable[] memory _recipients, - uint256[] memory _amounts - ) internal { - if (_currencyAddress == address(0)) { - (bool success, bytes memory data) = address(_config.payments).call{value: _totalAmount}( - abi.encodeWithSignature("payout(address[],uint256[])", _recipients, _amounts) - ); - - require(success, string(data)); - return; + /// @notice Performs payouts to recipients. + /// @dev If eth is being paid out, forwards to payment contract. + /// @dev If erc20 is being paid out, transfers directly. + /// @param _currencyAddress Address of currency being paid out. + /// @param _totalAmount Total amount being paid out. + /// @param _recipients Recipients of the payouts. + /// @param _amounts Amounts pertaining to each recipient. + function performPayouts( + MarketConfigV2.Config storage _config, + address _currencyAddress, + uint256 _totalAmount, + address payable[] memory _recipients, + uint256[] memory _amounts + ) internal { + if (_currencyAddress == address(0)) { + (bool success, bytes memory data) = address(_config.payments).call{value: _totalAmount}( + abi.encodeWithSignature("payout(address[],uint256[])", _recipients, _amounts) + ); + + require(success, string(data)); + return; + } + + IERC20 erc20 = IERC20(_currencyAddress); + for (uint256 i = 0; i < _recipients.length; i++) { + erc20.safeTransfer(_recipients[i], _amounts[i]); + } } - IERC20 erc20 = IERC20(_currencyAddress); - for (uint256 i = 0; i < _recipients.length; i++) { - erc20.safeTransfer(_recipients[i], _amounts[i]); + /// @notice Transfers an ERC721 token using the approval manager + /// @param _config The market config + /// @param _originContract The address of the ERC721 contract + /// @param _from The current owner of the token + /// @param _to The recipient of the token + /// @param _tokenId The ID of the token being transferred + function transferERC721( + MarketConfigV2.Config storage _config, + address _originContract, + address _from, + address _to, + uint256 _tokenId + ) internal { + _config.erc721ApprovalManager.transferFrom(_originContract, _from, _to, _tokenId); } - } - - /// @notice Transfers an ERC721 token using the approval manager - /// @param _config The market config - /// @param _originContract The address of the ERC721 contract - /// @param _from The current owner of the token - /// @param _to The recipient of the token - /// @param _tokenId The ID of the token being transferred - function transferERC721( - MarketConfigV2.Config storage _config, - address _originContract, - address _from, - address _to, - uint256 _tokenId - ) internal { - _config.erc721ApprovalManager.transferFrom(_originContract, _from, _to, _tokenId); - } } From 244997b0333cb2fc11b3b1d5d34e5922fe93f18a Mon Sep 17 00:00:00 2001 From: Keegan Date: Sat, 30 May 2026 12:11:31 -0400 Subject: [PATCH 02/17] Revert unrelated MarketUtils and Bazaar changes --- abis/MarketUtils.json | 2 +- abis/MarketUtilsV2.json | 2 +- abis/SuperRareBazaarBase.json | 2 +- src/bazaar/SuperRareBazaarBase.sol | 453 ++-- src/test/bazaar/BazaarBase.t.sol | 1131 +++++----- src/test/utils/MarketUtils.t.sol | 1150 +++++----- src/test/v2/utils/MarketUtilsV2.t.sol | 2797 +++++++++++++------------ src/utils/MarketUtils.sol | 436 ++-- src/v2/utils/MarketUtilsV2.sol | 628 +++--- 9 files changed, 3314 insertions(+), 3287 deletions(-) diff --git a/abis/MarketUtils.json b/abis/MarketUtils.json index cb6b411..c41ccda 100644 --- a/abis/MarketUtils.json +++ b/abis/MarketUtils.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220df770d1ab2462086c334200ed75140013b559e9948cb5c9f1fb7ee95fcfed5f864736f6c63430008120033","sourceMap":"407:11338:125:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x600080fdfea2646970667358221220df770d1ab2462086c334200ed75140013b559e9948cb5c9f1fb7ee95fcfed5f864736f6c63430008120033","sourceMap":"407:11338:125:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/MarketUtils.sol\":\"MarketUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/utils/MarketUtils.sol\":{\"keccak256\":\"0x37f875f220e8a17f99a201fb7463086516dd951ab175a7e997dc7f3d0a3fdd57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a95149772444291259c1c96e6b91285ffad94566d7fc810ebcc8936297d5510\",\"dweb:/ipfs/QmPKSKcyTj6a3FN6H73PsB4uYHGmnk9afqvL1ZovFFfH1H\"]},\"src/utils/structs/MarketConfig.sol\":{\"keccak256\":\"0xb158a05edcb54b4a71d63db51d5f494576686aa7aa74688c5ae339dd085025f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6fb394a9a58e53d58a17b04d1d7f6bc6464766a522846d740aed4b07ab35d369\",\"dweb:/ipfs/QmePsh5LE7FY4jws3tep5PzA2xDL4EmmAwbQKBxGzrLtR6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/utils/MarketUtils.sol":"MarketUtils"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/utils/MarketUtils.sol":{"keccak256":"0x37f875f220e8a17f99a201fb7463086516dd951ab175a7e997dc7f3d0a3fdd57","urls":["bzz-raw://9a95149772444291259c1c96e6b91285ffad94566d7fc810ebcc8936297d5510","dweb:/ipfs/QmPKSKcyTj6a3FN6H73PsB4uYHGmnk9afqvL1ZovFFfH1H"],"license":"MIT"},"src/utils/structs/MarketConfig.sol":{"keccak256":"0xb158a05edcb54b4a71d63db51d5f494576686aa7aa74688c5ae339dd085025f1","urls":["bzz-raw://6fb394a9a58e53d58a17b04d1d7f6bc6464766a522846d740aed4b07ab35d369","dweb:/ipfs/QmePsh5LE7FY4jws3tep5PzA2xDL4EmmAwbQKBxGzrLtR6"],"license":"MIT"}},"version":1},"id":125} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220c564fe45611e5470ad1371e77e33259d6d50f068c47f50e612754e6f89822bbf64736f6c63430008120033","sourceMap":"407:10408:238:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x600080fdfea2646970667358221220c564fe45611e5470ad1371e77e33259d6d50f068c47f50e612754e6f89822bbf64736f6c63430008120033","sourceMap":"407:10408:238:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/MarketUtils.sol\":\"MarketUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib/v3-core/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/utils/MarketUtils.sol\":{\"keccak256\":\"0xcffb924151286062619d08ceaf4d742c1c16111fad968864933bd3d05bec4875\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b5e831ffeeb02a8de81b65284f80e937fc5bb9ec6f39de60993e8b4ec24e23da\",\"dweb:/ipfs/QmNuprBmoPbvvHMwTKAKkSLnnzw5j8X7yeXkYDu9cSWiHY\"]},\"src/utils/structs/MarketConfig.sol\":{\"keccak256\":\"0xb158a05edcb54b4a71d63db51d5f494576686aa7aa74688c5ae339dd085025f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6fb394a9a58e53d58a17b04d1d7f6bc6464766a522846d740aed4b07ab35d369\",\"dweb:/ipfs/QmePsh5LE7FY4jws3tep5PzA2xDL4EmmAwbQKBxGzrLtR6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/=lib/v3-core/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/utils/MarketUtils.sol":"MarketUtils"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/utils/MarketUtils.sol":{"keccak256":"0xcffb924151286062619d08ceaf4d742c1c16111fad968864933bd3d05bec4875","urls":["bzz-raw://b5e831ffeeb02a8de81b65284f80e937fc5bb9ec6f39de60993e8b4ec24e23da","dweb:/ipfs/QmNuprBmoPbvvHMwTKAKkSLnnzw5j8X7yeXkYDu9cSWiHY"],"license":"MIT"},"src/utils/structs/MarketConfig.sol":{"keccak256":"0xb158a05edcb54b4a71d63db51d5f494576686aa7aa74688c5ae339dd085025f1","urls":["bzz-raw://6fb394a9a58e53d58a17b04d1d7f6bc6464766a522846d740aed4b07ab35d369","dweb:/ipfs/QmePsh5LE7FY4jws3tep5PzA2xDL4EmmAwbQKBxGzrLtR6"],"license":"MIT"}},"version":1},"id":238} \ No newline at end of file diff --git a/abis/MarketUtilsV2.json b/abis/MarketUtilsV2.json index cfa5325..1cde889 100644 --- a/abis/MarketUtilsV2.json +++ b/abis/MarketUtilsV2.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"MAX_ROYALTY_RECIPIENTS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"bytecode":{"object":"0x608080604052346018576075908161001e823930815050f35b600080fdfe6080806040526004361015601257600080fd5b60003560e01c6314a5454e14602657600080fd5b6000366003190112603a5780600560209252f35b600080fdfea2646970667358221220d2986f98529e8655947d03e6708b85adc34badb462c5eb7287969b9d1583d1b464736f6c63430008120033","sourceMap":"404:15800:138:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015601257600080fd5b60003560e01c6314a5454e14602657600080fd5b6000366003190112603a5780600560209252f35b600080fdfea2646970667358221220d2986f98529e8655947d03e6708b85adc34badb462c5eb7287969b9d1583d1b464736f6c63430008120033","sourceMap":"404:15800:138:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;404:15800:138;;;;;598:1;404:15800;;;;;;;","linkReferences":{}},"methodIdentifiers":{"MAX_ROYALTY_RECIPIENTS()":"14a5454e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MAX_ROYALTY_RECIPIENTS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"MAX_ROYALTY_RECIPIENTS()\":{\"notice\":\"Maximum number of royalty recipients allowed to prevent DoS attacks\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v2/utils/MarketUtilsV2.sol\":\"MarketUtilsV2\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]},\"src/v2/utils/MarketUtilsV2.sol\":{\"keccak256\":\"0xf6b5581ccab3f892486e65bf43b2059c457eccca887a69f71468de234a440fb4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6020c0be8f29416b2d682c2927191e9985c0bf76e377b1bac9d65569962545ba\",\"dweb:/ipfs/QmPky1J7ncSFEgQ8QuEVC5cu8h2kYBHFP7ZNiHavRxqy61\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_ROYALTY_RECIPIENTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"MAX_ROYALTY_RECIPIENTS()":{"notice":"Maximum number of royalty recipients allowed to prevent DoS attacks"}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v2/utils/MarketUtilsV2.sol":"MarketUtilsV2"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"},"src/v2/utils/MarketUtilsV2.sol":{"keccak256":"0xf6b5581ccab3f892486e65bf43b2059c457eccca887a69f71468de234a440fb4","urls":["bzz-raw://6020c0be8f29416b2d682c2927191e9985c0bf76e377b1bac9d65569962545ba","dweb:/ipfs/QmPky1J7ncSFEgQ8QuEVC5cu8h2kYBHFP7ZNiHavRxqy61"],"license":"MIT"}},"version":1},"id":138} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212201176969aee730d67d8a7721342b4c4c9203e39e428909437baa9fb9ec859dced64736f6c63430008120033","sourceMap":"404:11779:256:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x600080fdfea26469706673582212201176969aee730d67d8a7721342b4c4c9203e39e428909437baa9fb9ec859dced64736f6c63430008120033","sourceMap":"404:11779:256:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v2/utils/MarketUtilsV2.sol\":\"MarketUtilsV2\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib/v3-core/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]},\"src/v2/utils/MarketUtilsV2.sol\":{\"keccak256\":\"0xca43b6b268ffc150f2ac6b851f199ff6c607044e98aeed7112456eb239ff8421\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9fa0b3d5dca64b8030123080188bb52ab33f52fece9cb48c802555ee946f042\",\"dweb:/ipfs/QmTBi8e1Mh1868XtA3W321w5RnoAsK18U1CeAM1ykjTZ18\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/=lib/v3-core/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v2/utils/MarketUtilsV2.sol":"MarketUtilsV2"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"},"src/v2/utils/MarketUtilsV2.sol":{"keccak256":"0xca43b6b268ffc150f2ac6b851f199ff6c607044e98aeed7112456eb239ff8421","urls":["bzz-raw://f9fa0b3d5dca64b8030123080188bb52ab33f52fece9cb48c802555ee946f042","dweb:/ipfs/QmTBi8e1Mh1868XtA3W321w5RnoAsK18U1CeAM1ykjTZ18"],"license":"MIT"}},"version":1},"id":256} \ No newline at end of file diff --git a/abis/SuperRareBazaarBase.json b/abis/SuperRareBazaarBase.json index 7955832..46b1b22 100644 --- a/abis/SuperRareBazaarBase.json +++ b/abis/SuperRareBazaarBase.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"COLDIE_AUCTION","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NO_AUCTION","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SCHEDULED_AUCTION","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"approvedTokenRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IApprovedTokenRegistry"}],"stateMutability":"view"},{"type":"function","name":"auctionBids","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"bidder","type":"address","internalType":"address payable"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"marketplaceFee","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"auctionLengthExtension","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"marketplaceSettings","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IMarketplaceSettings"}],"stateMutability":"view"},{"type":"function","name":"maxAuctionLength","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"minimumBidIncreasePercentage","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"networkBeneficiary","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"offerCancelationDelay","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"payments","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPayments"}],"stateMutability":"view"},{"type":"function","name":"royaltyEngine","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IRoyaltyEngineV1"}],"stateMutability":"view"},{"type":"function","name":"royaltyRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IRareRoyaltyRegistry"}],"stateMutability":"view"},{"type":"function","name":"spaceOperatorRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISpaceOperatorRegistry"}],"stateMutability":"view"},{"type":"function","name":"stakingRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"superRareAuctionHouse","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"superRareMarketplace","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"tokenAuctions","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"auctionCreator","type":"address","internalType":"address payable"},{"name":"creationBlock","type":"uint256","internalType":"uint256"},{"name":"startingTime","type":"uint256","internalType":"uint256"},{"name":"lengthOfAuction","type":"uint256","internalType":"uint256"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"minimumBid","type":"uint256","internalType":"uint256"},{"name":"auctionType","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"tokenCurrentOffers","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"buyer","type":"address","internalType":"address payable"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"marketplaceFee","type":"uint8","internalType":"uint8"},{"name":"convertible","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenSalePrices","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"seller","type":"address","internalType":"address payable"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AcceptOffer","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_seller","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_splitAddresses","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"AuctionBid","inputs":[{"name":"_contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_startedAuction","type":"bool","indexed":false,"internalType":"bool"},{"name":"_newAuctionLength","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_previousBidder","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AuctionSettled","inputs":[{"name":"_contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_seller","type":"address","indexed":false,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CancelAuction","inputs":[{"name":"_contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"_auctionCreator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"CancelOffer","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NewAuction","inputs":[{"name":"_contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"_auctionCreator","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_startingTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_minimumBid","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_lengthOfAuction","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferPlaced","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_convertible","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetSalePrice","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_target","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_buyer","type":"address","indexed":true,"internalType":"address"},{"name":"_seller","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"COLDIE_AUCTION()":"c90b8714","NO_AUCTION()":"155a56b1","SCHEDULED_AUCTION()":"b23afc26","approvedTokenRegistry()":"6240cd1c","auctionBids(address,uint256)":"299a0e1e","auctionLengthExtension()":"daa26499","marketplaceSettings()":"ba50b632","maxAuctionLength()":"0e519ef9","minimumBidIncreasePercentage()":"6fe9f44c","networkBeneficiary()":"6b534ed0","offerCancelationDelay()":"0a5c4ed5","payments()":"a6d23e10","royaltyEngine()":"4c94c90c","royaltyRegistry()":"a11b0712","spaceOperatorRegistry()":"0bcba09d","stakingRegistry()":"009d9aa9","superRareAuctionHouse()":"3bc3d9be","superRareMarketplace()":"0141c590","tokenAuctions(address,uint256)":"c47c35c1","tokenCurrentOffers(address,uint256,address)":"2c419053","tokenSalePrices(address,uint256,address)":"1a2ac30f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"_splitAddresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"AcceptOffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_startedAuction\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newAuctionLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_previousBidder\",\"type\":\"address\"}],\"name\":\"AuctionBid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"AuctionSettled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_auctionCreator\",\"type\":\"address\"}],\"name\":\"CancelAuction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"CancelOffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_auctionCreator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_startingTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_minimumBid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_lengthOfAuction\",\"type\":\"uint256\"}],\"name\":\"NewAuction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_convertible\",\"type\":\"bool\"}],\"name\":\"OfferPlaced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SetSalePrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COLDIE_AUCTION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NO_AUCTION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SCHEDULED_AUCTION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"approvedTokenRegistry\",\"outputs\":[{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"auctionBids\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"bidder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"marketplaceFee\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"auctionLengthExtension\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"marketplaceSettings\",\"outputs\":[{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxAuctionLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumBidIncreasePercentage\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"networkBeneficiary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"offerCancelationDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"payments\",\"outputs\":[{\"internalType\":\"contract IPayments\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"royaltyEngine\",\"outputs\":[{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"royaltyRegistry\",\"outputs\":[{\"internalType\":\"contract IRareRoyaltyRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"spaceOperatorRegistry\",\"outputs\":[{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakingRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"superRareAuctionHouse\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"superRareMarketplace\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenAuctions\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"auctionCreator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creationBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lengthOfAuction\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minimumBid\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"auctionType\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenCurrentOffers\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"marketplaceFee\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"convertible\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenSalePrices\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"koloz\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SuperRareBazaarBase\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Base contract containing the internal functions for the SuperRareBazaar.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/bazaar/SuperRareBazaarBase.sol\":\"SuperRareBazaarBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/bazaar/SuperRareBazaarBase.sol\":{\"keccak256\":\"0xc527f3e052a207935297b35acfe9de947de86f0745e3dce41b6c12f7f98671ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac24c130ce816804348ba19910f0d433148baeec20a38ba586d56ac7599df8f3\",\"dweb:/ipfs/QmTWiwZA18ccycFEzDRFeGy7MuERAPyXQUTy59fzMNTpSd\"]},\"src/bazaar/SuperRareBazaarStorage.sol\":{\"keccak256\":\"0x5c3045f0a2282d16d841e62ab16542345e48e8ce9640a18f52cebfdebb2c4086\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d24f010509edc8bc6c3245522154ea9f27f7574d80850c23f134d8b0f59952bb\",\"dweb:/ipfs/QmbcdHpb4tyXdXMXk2xGjTrgrT1vyCiUdEZkDdWKbvW9Bo\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ICreatorRegistry.sol\":{\"keccak256\":\"0xcaeba1e630efa2ce901d39632fa5760cfbfd8647bf8657a137f4cece2d714ed8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://161e5d0d9f9b27e97cbdb4fc10134254fe329fcd549fdb07900bb553d2a1ccc1\",\"dweb:/ipfs/QmNtKFgVqB28YwLJg6TWgXWHEJybrXFXEWbU5gep99HEcP\"]},\"src/registry/interfaces/IRareRoyaltyRegistry.sol\":{\"keccak256\":\"0xd6b673182b9c6453e38fcd29bd85a788b3734f82202a77cd64d15422e98ffac9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://70fd1ef8d3a5d44f2e984e969528c8a0ab25eefc92a3b19cfa63b6394bc798e3\",\"dweb:/ipfs/QmTDCPVfxqAcXDzdYfHQbm1f4nYJSBeRz91oqjfE8fxk2r\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"address","name":"_seller","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"_splitAddresses","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"AcceptOffer","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"bool","name":"_startedAuction","type":"bool","indexed":false},{"internalType":"uint256","name":"_newAuctionLength","type":"uint256","indexed":false},{"internalType":"address","name":"_previousBidder","type":"address","indexed":false}],"type":"event","name":"AuctionBid","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"address","name":"_seller","type":"address","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false}],"type":"event","name":"AuctionSettled","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"_auctionCreator","type":"address","indexed":true}],"type":"event","name":"CancelAuction","anonymous":false},{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":true},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false}],"type":"event","name":"CancelOffer","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"_auctionCreator","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_startingTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"_minimumBid","type":"uint256","indexed":false},{"internalType":"uint256","name":"_lengthOfAuction","type":"uint256","indexed":false}],"type":"event","name":"NewAuction","anonymous":false},{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":true},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false},{"internalType":"bool","name":"_convertible","type":"bool","indexed":false}],"type":"event","name":"OfferPlaced","anonymous":false},{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":true},{"internalType":"address","name":"_target","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SetSalePrice","anonymous":false},{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_buyer","type":"address","indexed":true},{"internalType":"address","name":"_seller","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"COLDIE_AUCTION","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NO_AUCTION","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SCHEDULED_AUCTION","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"approvedTokenRegistry","outputs":[{"internalType":"contract IApprovedTokenRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"auctionBids","outputs":[{"internalType":"address payable","name":"bidder","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint8","name":"marketplaceFee","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"auctionLengthExtension","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"marketplaceSettings","outputs":[{"internalType":"contract IMarketplaceSettings","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxAuctionLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minimumBidIncreasePercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"networkBeneficiary","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"offerCancelationDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"payments","outputs":[{"internalType":"contract IPayments","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"royaltyEngine","outputs":[{"internalType":"contract IRoyaltyEngineV1","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"royaltyRegistry","outputs":[{"internalType":"contract IRareRoyaltyRegistry","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"spaceOperatorRegistry","outputs":[{"internalType":"contract ISpaceOperatorRegistry","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"stakingRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"superRareAuctionHouse","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"superRareMarketplace","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenAuctions","outputs":[{"internalType":"address payable","name":"auctionCreator","type":"address"},{"internalType":"uint256","name":"creationBlock","type":"uint256"},{"internalType":"uint256","name":"startingTime","type":"uint256"},{"internalType":"uint256","name":"lengthOfAuction","type":"uint256"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"minimumBid","type":"uint256"},{"internalType":"bytes32","name":"auctionType","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"tokenCurrentOffers","outputs":[{"internalType":"address payable","name":"buyer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint8","name":"marketplaceFee","type":"uint8"},{"internalType":"bool","name":"convertible","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"tokenSalePrices","outputs":[{"internalType":"address payable","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/bazaar/SuperRareBazaarBase.sol":"SuperRareBazaarBase"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/bazaar/SuperRareBazaarBase.sol":{"keccak256":"0xc527f3e052a207935297b35acfe9de947de86f0745e3dce41b6c12f7f98671ec","urls":["bzz-raw://ac24c130ce816804348ba19910f0d433148baeec20a38ba586d56ac7599df8f3","dweb:/ipfs/QmTWiwZA18ccycFEzDRFeGy7MuERAPyXQUTy59fzMNTpSd"],"license":"MIT"},"src/bazaar/SuperRareBazaarStorage.sol":{"keccak256":"0x5c3045f0a2282d16d841e62ab16542345e48e8ce9640a18f52cebfdebb2c4086","urls":["bzz-raw://d24f010509edc8bc6c3245522154ea9f27f7574d80850c23f134d8b0f59952bb","dweb:/ipfs/QmbcdHpb4tyXdXMXk2xGjTrgrT1vyCiUdEZkDdWKbvW9Bo"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ICreatorRegistry.sol":{"keccak256":"0xcaeba1e630efa2ce901d39632fa5760cfbfd8647bf8657a137f4cece2d714ed8","urls":["bzz-raw://161e5d0d9f9b27e97cbdb4fc10134254fe329fcd549fdb07900bb553d2a1ccc1","dweb:/ipfs/QmNtKFgVqB28YwLJg6TWgXWHEJybrXFXEWbU5gep99HEcP"],"license":"MIT"},"src/registry/interfaces/IRareRoyaltyRegistry.sol":{"keccak256":"0xd6b673182b9c6453e38fcd29bd85a788b3734f82202a77cd64d15422e98ffac9","urls":["bzz-raw://70fd1ef8d3a5d44f2e984e969528c8a0ab25eefc92a3b19cfa63b6394bc798e3","dweb:/ipfs/QmTDCPVfxqAcXDzdYfHQbm1f4nYJSBeRz91oqjfE8fxk2r"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"}},"version":1},"id":84} \ No newline at end of file +{"abi":[{"type":"function","name":"COLDIE_AUCTION","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"NO_AUCTION","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SCHEDULED_AUCTION","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"approvedTokenRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IApprovedTokenRegistry"}],"stateMutability":"view"},{"type":"function","name":"auctionBids","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"bidder","type":"address","internalType":"address payable"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"marketplaceFee","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"auctionLengthExtension","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"marketplaceSettings","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IMarketplaceSettings"}],"stateMutability":"view"},{"type":"function","name":"maxAuctionLength","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"minimumBidIncreasePercentage","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"networkBeneficiary","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"offerCancelationDelay","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"payments","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPayments"}],"stateMutability":"view"},{"type":"function","name":"royaltyEngine","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IRoyaltyEngineV1"}],"stateMutability":"view"},{"type":"function","name":"royaltyRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IRareRoyaltyRegistry"}],"stateMutability":"view"},{"type":"function","name":"spaceOperatorRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISpaceOperatorRegistry"}],"stateMutability":"view"},{"type":"function","name":"stakingRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"superRareAuctionHouse","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"superRareMarketplace","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"tokenAuctions","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"auctionCreator","type":"address","internalType":"address payable"},{"name":"creationBlock","type":"uint256","internalType":"uint256"},{"name":"startingTime","type":"uint256","internalType":"uint256"},{"name":"lengthOfAuction","type":"uint256","internalType":"uint256"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"minimumBid","type":"uint256","internalType":"uint256"},{"name":"auctionType","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"tokenCurrentOffers","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"buyer","type":"address","internalType":"address payable"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"marketplaceFee","type":"uint8","internalType":"uint8"},{"name":"convertible","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenSalePrices","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"seller","type":"address","internalType":"address payable"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AcceptOffer","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_seller","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_splitAddresses","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"AuctionBid","inputs":[{"name":"_contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_startedAuction","type":"bool","indexed":false,"internalType":"bool"},{"name":"_newAuctionLength","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_previousBidder","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AuctionSettled","inputs":[{"name":"_contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_seller","type":"address","indexed":false,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CancelAuction","inputs":[{"name":"_contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"_auctionCreator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"CancelOffer","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NewAuction","inputs":[{"name":"_contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"_auctionCreator","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_startingTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_minimumBid","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_lengthOfAuction","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferPlaced","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_bidder","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_convertible","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SetSalePrice","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":true,"internalType":"address"},{"name":"_target","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"_originContract","type":"address","indexed":true,"internalType":"address"},{"name":"_buyer","type":"address","indexed":true,"internalType":"address"},{"name":"_seller","type":"address","indexed":true,"internalType":"address"},{"name":"_currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"_amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"COLDIE_AUCTION()":"c90b8714","NO_AUCTION()":"155a56b1","SCHEDULED_AUCTION()":"b23afc26","approvedTokenRegistry()":"6240cd1c","auctionBids(address,uint256)":"299a0e1e","auctionLengthExtension()":"daa26499","marketplaceSettings()":"ba50b632","maxAuctionLength()":"0e519ef9","minimumBidIncreasePercentage()":"6fe9f44c","networkBeneficiary()":"6b534ed0","offerCancelationDelay()":"0a5c4ed5","payments()":"a6d23e10","royaltyEngine()":"4c94c90c","royaltyRegistry()":"a11b0712","spaceOperatorRegistry()":"0bcba09d","stakingRegistry()":"009d9aa9","superRareAuctionHouse()":"3bc3d9be","superRareMarketplace()":"0141c590","tokenAuctions(address,uint256)":"c47c35c1","tokenCurrentOffers(address,uint256,address)":"2c419053","tokenSalePrices(address,uint256,address)":"1a2ac30f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"_splitAddresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"AcceptOffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_startedAuction\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newAuctionLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_previousBidder\",\"type\":\"address\"}],\"name\":\"AuctionBid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"AuctionSettled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_auctionCreator\",\"type\":\"address\"}],\"name\":\"CancelAuction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"CancelOffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_auctionCreator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_startingTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_minimumBid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_lengthOfAuction\",\"type\":\"uint256\"}],\"name\":\"NewAuction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_bidder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_convertible\",\"type\":\"bool\"}],\"name\":\"OfferPlaced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SetSalePrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_originContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COLDIE_AUCTION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NO_AUCTION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SCHEDULED_AUCTION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"approvedTokenRegistry\",\"outputs\":[{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"auctionBids\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"bidder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"marketplaceFee\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"auctionLengthExtension\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"marketplaceSettings\",\"outputs\":[{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxAuctionLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumBidIncreasePercentage\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"networkBeneficiary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"offerCancelationDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"payments\",\"outputs\":[{\"internalType\":\"contract IPayments\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"royaltyEngine\",\"outputs\":[{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"royaltyRegistry\",\"outputs\":[{\"internalType\":\"contract IRareRoyaltyRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"spaceOperatorRegistry\",\"outputs\":[{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakingRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"superRareAuctionHouse\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"superRareMarketplace\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenAuctions\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"auctionCreator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creationBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lengthOfAuction\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minimumBid\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"auctionType\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenCurrentOffers\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"marketplaceFee\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"convertible\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenSalePrices\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"koloz\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SuperRareBazaarBase\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Base contract containing the internal functions for the SuperRareBazaar.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/bazaar/SuperRareBazaarBase.sol\":\"SuperRareBazaarBase\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib/v3-core/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/bazaar/SuperRareBazaarBase.sol\":{\"keccak256\":\"0x7807f318b68688f0114217bcd528f7a2623421e500dc3164b1067d3e45f2b826\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab4167a3ddbfada171bb4a286e1ab7e90f9be00ada86571999a5f1e5768eed9d\",\"dweb:/ipfs/QmfH6EKVMNrmYwbuTqtpsTePBdbVL2WheRkpCk3N16xXPa\"]},\"src/bazaar/SuperRareBazaarStorage.sol\":{\"keccak256\":\"0x07b013f4ed5ca846af48f74faae20547b1f806d98093eef050d2ac6e838f3714\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a0dc91b04769e552b01efd38a796df6f20694a9e478c582b37fdd103894195a\",\"dweb:/ipfs/QmUM79e82SXrAp9oHQZRmhXS3BjtUhsKZ5rQMwUcT6FTgc\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ICreatorRegistry.sol\":{\"keccak256\":\"0xcaeba1e630efa2ce901d39632fa5760cfbfd8647bf8657a137f4cece2d714ed8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://161e5d0d9f9b27e97cbdb4fc10134254fe329fcd549fdb07900bb553d2a1ccc1\",\"dweb:/ipfs/QmNtKFgVqB28YwLJg6TWgXWHEJybrXFXEWbU5gep99HEcP\"]},\"src/registry/interfaces/IRareRoyaltyRegistry.sol\":{\"keccak256\":\"0xd6b673182b9c6453e38fcd29bd85a788b3734f82202a77cd64d15422e98ffac9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://70fd1ef8d3a5d44f2e984e969528c8a0ab25eefc92a3b19cfa63b6394bc798e3\",\"dweb:/ipfs/QmTDCPVfxqAcXDzdYfHQbm1f4nYJSBeRz91oqjfE8fxk2r\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"address","name":"_seller","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"_splitAddresses","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"AcceptOffer","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"bool","name":"_startedAuction","type":"bool","indexed":false},{"internalType":"uint256","name":"_newAuctionLength","type":"uint256","indexed":false},{"internalType":"address","name":"_previousBidder","type":"address","indexed":false}],"type":"event","name":"AuctionBid","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"address","name":"_seller","type":"address","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false}],"type":"event","name":"AuctionSettled","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"_auctionCreator","type":"address","indexed":true}],"type":"event","name":"CancelAuction","anonymous":false},{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":true},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false}],"type":"event","name":"CancelOffer","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"_auctionCreator","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_startingTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"_minimumBid","type":"uint256","indexed":false},{"internalType":"uint256","name":"_lengthOfAuction","type":"uint256","indexed":false}],"type":"event","name":"NewAuction","anonymous":false},{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_bidder","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":true},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false},{"internalType":"bool","name":"_convertible","type":"bool","indexed":false}],"type":"event","name":"OfferPlaced","anonymous":false},{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":true},{"internalType":"address","name":"_target","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SetSalePrice","anonymous":false},{"inputs":[{"internalType":"address","name":"_originContract","type":"address","indexed":true},{"internalType":"address","name":"_buyer","type":"address","indexed":true},{"internalType":"address","name":"_seller","type":"address","indexed":true},{"internalType":"address","name":"_currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"_amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"COLDIE_AUCTION","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NO_AUCTION","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SCHEDULED_AUCTION","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"approvedTokenRegistry","outputs":[{"internalType":"contract IApprovedTokenRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"auctionBids","outputs":[{"internalType":"address payable","name":"bidder","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint8","name":"marketplaceFee","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"auctionLengthExtension","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"marketplaceSettings","outputs":[{"internalType":"contract IMarketplaceSettings","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxAuctionLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minimumBidIncreasePercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"networkBeneficiary","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"offerCancelationDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"payments","outputs":[{"internalType":"contract IPayments","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"royaltyEngine","outputs":[{"internalType":"contract IRoyaltyEngineV1","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"royaltyRegistry","outputs":[{"internalType":"contract IRareRoyaltyRegistry","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"spaceOperatorRegistry","outputs":[{"internalType":"contract ISpaceOperatorRegistry","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"stakingRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"superRareAuctionHouse","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"superRareMarketplace","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenAuctions","outputs":[{"internalType":"address payable","name":"auctionCreator","type":"address"},{"internalType":"uint256","name":"creationBlock","type":"uint256"},{"internalType":"uint256","name":"startingTime","type":"uint256"},{"internalType":"uint256","name":"lengthOfAuction","type":"uint256"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"minimumBid","type":"uint256"},{"internalType":"bytes32","name":"auctionType","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"tokenCurrentOffers","outputs":[{"internalType":"address payable","name":"buyer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint8","name":"marketplaceFee","type":"uint8"},{"internalType":"bool","name":"convertible","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"tokenSalePrices","outputs":[{"internalType":"address payable","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/=lib/v3-core/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/bazaar/SuperRareBazaarBase.sol":"SuperRareBazaarBase"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/bazaar/SuperRareBazaarBase.sol":{"keccak256":"0x7807f318b68688f0114217bcd528f7a2623421e500dc3164b1067d3e45f2b826","urls":["bzz-raw://ab4167a3ddbfada171bb4a286e1ab7e90f9be00ada86571999a5f1e5768eed9d","dweb:/ipfs/QmfH6EKVMNrmYwbuTqtpsTePBdbVL2WheRkpCk3N16xXPa"],"license":"MIT"},"src/bazaar/SuperRareBazaarStorage.sol":{"keccak256":"0x07b013f4ed5ca846af48f74faae20547b1f806d98093eef050d2ac6e838f3714","urls":["bzz-raw://8a0dc91b04769e552b01efd38a796df6f20694a9e478c582b37fdd103894195a","dweb:/ipfs/QmUM79e82SXrAp9oHQZRmhXS3BjtUhsKZ5rQMwUcT6FTgc"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ICreatorRegistry.sol":{"keccak256":"0xcaeba1e630efa2ce901d39632fa5760cfbfd8647bf8657a137f4cece2d714ed8","urls":["bzz-raw://161e5d0d9f9b27e97cbdb4fc10134254fe329fcd549fdb07900bb553d2a1ccc1","dweb:/ipfs/QmNtKFgVqB28YwLJg6TWgXWHEJybrXFXEWbU5gep99HEcP"],"license":"MIT"},"src/registry/interfaces/IRareRoyaltyRegistry.sol":{"keccak256":"0xd6b673182b9c6453e38fcd29bd85a788b3734f82202a77cd64d15422e98ffac9","urls":["bzz-raw://70fd1ef8d3a5d44f2e984e969528c8a0ab25eefc92a3b19cfa63b6394bc798e3","dweb:/ipfs/QmTDCPVfxqAcXDzdYfHQbm1f4nYJSBeRz91oqjfE8fxk2r"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"}},"version":1},"id":61} \ No newline at end of file diff --git a/src/bazaar/SuperRareBazaarBase.sol b/src/bazaar/SuperRareBazaarBase.sol index 98e6068..011c956 100644 --- a/src/bazaar/SuperRareBazaarBase.sol +++ b/src/bazaar/SuperRareBazaarBase.sol @@ -13,244 +13,247 @@ import {IRareStakingRegistry} from "../staking/registry/IRareStakingRegistry.sol /// @title SuperRareBazaarBase /// @notice Base contract containing the internal functions for the SuperRareBazaar. abstract contract SuperRareBazaarBase is SuperRareBazaarStorage { - using SafeERC20 for IERC20; - - ///////////////////////////////////////////////////////////////////////// - // Internal Functions - ///////////////////////////////////////////////////////////////////////// - - /// @notice Checks to see if the currenccy address is eth or an approved erc20 token. - /// @param _currencyAddress Address of currency (Zero address if eth). - function _checkIfCurrencyIsApproved(address _currencyAddress) internal view { - require( - _currencyAddress == address(0) || approvedTokenRegistry.isApprovedToken(_currencyAddress), - "Not approved currency" - ); + using SafeERC20 for IERC20; + + ///////////////////////////////////////////////////////////////////////// + // Internal Functions + ///////////////////////////////////////////////////////////////////////// + + /// @notice Checks to see if the currenccy address is eth or an approved erc20 token. + /// @param _currencyAddress Address of currency (Zero address if eth). + function _checkIfCurrencyIsApproved(address _currencyAddress) internal view { + require( + _currencyAddress == address(0) || approvedTokenRegistry.isApprovedToken(_currencyAddress), + "Not approved currency" + ); + } + + /// @notice Checks to see if the owner of the token has the marketplace approved. + /// @param _originContract Contract address of the token being checked. + /// @param _tokenId Token Id of the asset. + function _ownerMustHaveMarketplaceApprovedForNFT(address _originContract, uint256 _tokenId) internal view { + IERC721 erc721 = IERC721(_originContract); + address owner = erc721.ownerOf(_tokenId); + require(erc721.isApprovedForAll(owner, address(this)), "owner must have approved contract"); + } + + /// @notice Checks to see if the msg sender owns the token. + /// @param _originContract Contract address of the token being checked. + /// @param _tokenId Token Id of the asset. + function _senderMustBeTokenOwner(address _originContract, uint256 _tokenId) internal view { + IERC721 erc721 = IERC721(_originContract); + require(erc721.ownerOf(_tokenId) == msg.sender, "sender must be the token owner"); + } + + /// @notice Verifies that the splits supplied are valid. + /// @dev A valid split has the same number of splits and ratios. + /// @dev There can only be a max of 5 parties split with. + /// @dev Total of the ratios should be 100 which is relative. + /// @param _splits The addresses the amount is being split with. + /// @param _ratios The ratios each address in _splits is getting. + function _checkSplits(address payable[] calldata _splits, uint8[] calldata _ratios) internal pure { + require(_splits.length > 0, "checkSplits::Must have at least 1 split"); + require(_splits.length <= 5, "checkSplits::Split exceeded max size"); + require(_splits.length == _ratios.length, "checkSplits::Splits and ratios must be equal"); + uint256 totalRatio = 0; + + for (uint256 i = 0; i < _ratios.length; i++) { + totalRatio += _ratios[i]; } - /// @notice Checks to see if the owner of the token has the marketplace approved. - /// @param _originContract Contract address of the token being checked. - /// @param _tokenId Token Id of the asset. - function _ownerMustHaveMarketplaceApprovedForNFT(address _originContract, uint256 _tokenId) internal view { - IERC721 erc721 = IERC721(_originContract); - address owner = erc721.ownerOf(_tokenId); - require(erc721.isApprovedForAll(owner, address(this)), "owner must have approved contract"); + require(totalRatio == 100, "checkSplits::Total must be equal to 100"); + } + + /// @notice Checks to see if the sender has approved the marketplace to move tokens. + /// @dev This is for offers/buys/bids and the allowance of erc20 tokens. + /// @dev Returns on zero address because no allowance is needed for eth. + /// @param _contract The address of the currency being checked. + /// @param _amount The total amount being checked. + function _senderMustHaveMarketplaceApproved(address _contract, uint256 _amount) internal view { + if (_contract == address(0)) { + return; } - /// @notice Checks to see if the msg sender owns the token. - /// @param _originContract Contract address of the token being checked. - /// @param _tokenId Token Id of the asset. - function _senderMustBeTokenOwner(address _originContract, uint256 _tokenId) internal view { - IERC721 erc721 = IERC721(_originContract); - require(erc721.ownerOf(_tokenId) == msg.sender, "sender must be the token owner"); + IERC20 erc20 = IERC20(_contract); + + require(erc20.allowance(msg.sender, address(this)) >= _amount, "sender needs to approve marketplace for currency"); + } + + /// @notice Checks the user has the correct amount and transfers to the marketplace. + /// @dev If the currency used is eth (zero address) the msg value is checked. + /// @dev If eth isnt used and eth is sent we revert the txn. + /// @dev We need to check this contracts balance before and after the transfer to ensure no fee. + /// @param _currencyAddress Currency address being checked and transfered. + /// @param _amount Total amount of currency. + function _checkAmountAndTransfer(address _currencyAddress, uint256 _amount) internal { + if (_currencyAddress == address(0)) { + require(msg.value == _amount, "not enough eth sent"); + return; } - /// @notice Verifies that the splits supplied are valid. - /// @dev A valid split has the same number of splits and ratios. - /// @dev There can only be a max of 5 parties split with. - /// @dev Total of the ratios should be 100 which is relative. - /// @param _splits The addresses the amount is being split with. - /// @param _ratios The ratios each address in _splits is getting. - function _checkSplits(address payable[] calldata _splits, uint8[] calldata _ratios) internal pure { - require(_splits.length > 0, "checkSplits::Must have at least 1 split"); - require(_splits.length <= 5, "checkSplits::Split exceeded max size"); - require(_splits.length == _ratios.length, "checkSplits::Splits and ratios must be equal"); - uint256 totalRatio = 0; - - for (uint256 i = 0; i < _ratios.length; i++) { - require(_splits[i] != address(0), "checkSplits::Split cannot be zero address"); - require(_ratios[i] > 0, "checkSplits::Ratio must be greater than 0"); - totalRatio += _ratios[i]; - } - - require(totalRatio == 100, "checkSplits::Total must be equal to 100"); + require(msg.value == 0, "msg.value should be 0 when not using eth"); + + IERC20 erc20 = IERC20(_currencyAddress); + uint256 balanceBefore = erc20.balanceOf(address(this)); + + erc20.safeTransferFrom(msg.sender, address(this), _amount); + + uint256 balanceAfter = erc20.balanceOf(address(this)); + + require(balanceAfter - balanceBefore == _amount, "not enough tokens transfered"); + } + + /// @notice Refunds an address the designated amount. + /// @dev Return if amount being refunded is zero. + /// @dev Forwards to payment contract if eth is being refunded. + /// @param _currencyAddress Address of currency being refunded. + /// @param _amount Amount being refunded. + /// @param _marketplaceFee Marketplace Fee (percentage) paid by _recipient. + /// @param _recipient Address amount is being refunded to. + function _refund( + address _currencyAddress, + uint256 _amount, + uint256 _marketplaceFee, + address _recipient + ) internal { + if (_amount == 0) { + return; } - /// @notice Checks to see if the sender has approved the marketplace to move tokens. - /// @dev This is for offers/buys/bids and the allowance of erc20 tokens. - /// @dev Returns on zero address because no allowance is needed for eth. - /// @param _contract The address of the currency being checked. - /// @param _amount The total amount being checked. - function _senderMustHaveMarketplaceApproved(address _contract, uint256 _amount) internal view { - if (_contract == address(0)) { - return; - } - - IERC20 erc20 = IERC20(_contract); - - require( - erc20.allowance(msg.sender, address(this)) >= _amount, "sender needs to approve marketplace for currency" - ); - } - - /// @notice Checks the user has the correct amount and transfers to the marketplace. - /// @dev If the currency used is eth (zero address) the msg value is checked. - /// @dev If eth isnt used and eth is sent we revert the txn. - /// @dev We need to check this contracts balance before and after the transfer to ensure no fee. - /// @param _currencyAddress Currency address being checked and transfered. - /// @param _amount Total amount of currency. - function _checkAmountAndTransfer(address _currencyAddress, uint256 _amount) internal { - if (_currencyAddress == address(0)) { - require(msg.value == _amount, "not enough eth sent"); - return; - } - - require(msg.value == 0, "msg.value should be 0 when not using eth"); - - IERC20 erc20 = IERC20(_currencyAddress); - uint256 balanceBefore = erc20.balanceOf(address(this)); + uint256 requiredAmount = _amount + ((_amount * _marketplaceFee) / 100); - erc20.safeTransferFrom(msg.sender, address(this), _amount); + if (_currencyAddress == address(0)) { + (bool success, bytes memory data) = address(payments).call{value: requiredAmount}( + abi.encodeWithSignature("refund(address,uint256)", _recipient, requiredAmount) + ); - uint256 balanceAfter = erc20.balanceOf(address(this)); - - require(balanceAfter - balanceBefore == _amount, "not enough tokens transfered"); + require(success, string(data)); + return; } - /// @notice Refunds an address the designated amount. - /// @dev Return if amount being refunded is zero. - /// @dev Forwards to payment contract if eth is being refunded. - /// @param _currencyAddress Address of currency being refunded. - /// @param _amount Amount being refunded. - /// @param _marketplaceFee Marketplace Fee (percentage) paid by _recipient. - /// @param _recipient Address amount is being refunded to. - function _refund(address _currencyAddress, uint256 _amount, uint256 _marketplaceFee, address _recipient) internal { - if (_amount == 0) { - return; - } - - uint256 requiredAmount = _amount + ((_amount * _marketplaceFee) / 100); - - if (_currencyAddress == address(0)) { - (bool success, bytes memory data) = address(payments).call{value: requiredAmount}( - abi.encodeWithSignature("refund(address,uint256)", _recipient, requiredAmount) - ); - - require(success, string(data)); - return; - } - - IERC20 erc20 = IERC20(_currencyAddress); - erc20.safeTransfer(_recipient, requiredAmount); + IERC20 erc20 = IERC20(_currencyAddress); + erc20.safeTransfer(_recipient, requiredAmount); + } + + /// @notice Sends a payout to all the necessary parties. + /// @dev Note that _splitAddrs and _splitRatios are not checked for validity. Make sure supplied values are correct by using _checkSplits. + /// @dev Sends payments to the network, royalty if applicable, and splits for the rest. + /// @dev Forwards payments to the payment contract if payout is happening in eth. + /// @dev Total amount of ratios should be 100 and is relative to the total ratio left. + /// @param _originContract Contract address of asset triggering a payout. + /// @param _tokenId Token Id of the asset. + /// @param _currencyAddress Address of currency being paid out. + /// @param _amount Total amount to be paid out. + /// @param _seller Address of the person selling the asset. + /// @param _splitAddrs Addresses that funds need to be split against. + /// @param _splitRatios Ratios for split pertaining to each address. + function _payout( + address _originContract, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + address _seller, + address payable[] memory _splitAddrs, + uint8[] memory _splitRatios + ) internal { + require(_splitAddrs.length == _splitRatios.length, "Number of split addresses and ratios must be equal."); + + /* + The overall flow for payouts is: + 1. Payout marketplace fee + 2. Primary/Secondary Payouts + a. Primary -> If space sale, query space operator registry for platform comission and payout + Else query marketplace setting for primary sale comission and payout + b. Secondary -> Query global royalty registry for recipients and amounts and payout + 3. Calculate the amount for each _splitAddr based on remaining amount and payout + */ + + // Recipients of marketplace fee + uint256 remainingAmount = _amount; + + // Marketplace fee + + // Amounts for recipients of marketplace fee + uint256 marketplaceFee = marketplaceSettings.calculateMarketplaceFee(_amount); + + address payable[] memory mktFeeRecip = new address payable[](2); + mktFeeRecip[0] = payable(networkBeneficiary); + mktFeeRecip[1] = payable(IRareStakingRegistry(stakingRegistry).getRewardAccumulatorAddressForUser(_seller)); + mktFeeRecip[1] = mktFeeRecip[1] == address(0) ? payable(networkBeneficiary) : mktFeeRecip[1]; + uint256[] memory mktFee = new uint256[](2); + mktFee[0] = IStakingSettings(address(marketplaceSettings)).calculateMarketplacePayoutFee(_amount); + mktFee[1] = IStakingSettings(address(marketplaceSettings)).calculateStakingFee(_amount); + + _performPayouts(_currencyAddress, marketplaceFee, mktFeeRecip, mktFee); + + if (!marketplaceSettings.hasERC721TokenSold(_originContract, _tokenId)) { + uint256[] memory platformFee = new uint256[](1); + address payable[] memory platformRecip = new address payable[](1); + platformRecip[0] = mktFeeRecip[0]; + + if (spaceOperatorRegistry.isApprovedSpaceOperator(_seller)) { + uint256 platformCommission = spaceOperatorRegistry.getPlatformCommission(_seller); + + remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); + + platformFee[0] = (_amount * platformCommission) / 100; + + _performPayouts(_currencyAddress, platformFee[0], platformRecip, platformFee); + } else { + uint256 platformCommission = marketplaceSettings.getERC721ContractPrimarySaleFeePercentage(_originContract); + + remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); + + platformFee[0] = (_amount * platformCommission) / 100; + + _performPayouts(_currencyAddress, platformFee[0], platformRecip, platformFee); + } + } else { + (address payable[] memory receivers, uint256[] memory royalties) = royaltyEngine.getRoyalty( + _originContract, + _tokenId, + _amount + ); + + uint256 totalRoyalties = 0; + + for (uint256 i = 0; i < royalties.length; i++) { + totalRoyalties += royalties[i]; + } + + remainingAmount -= totalRoyalties; + _performPayouts(_currencyAddress, totalRoyalties, receivers, royalties); } - /// @notice Sends a payout to all the necessary parties. - /// @dev Note that _splitAddrs and _splitRatios are not checked for validity. Make sure supplied values are correct by using _checkSplits. - /// @dev Sends payments to the network, royalty if applicable, and splits for the rest. - /// @dev Forwards payments to the payment contract if payout is happening in eth. - /// @dev Total amount of ratios should be 100 and is relative to the total ratio left. - /// @param _originContract Contract address of asset triggering a payout. - /// @param _tokenId Token Id of the asset. - /// @param _currencyAddress Address of currency being paid out. - /// @param _amount Total amount to be paid out. - /// @param _seller Address of the person selling the asset. - /// @param _splitAddrs Addresses that funds need to be split against. - /// @param _splitRatios Ratios for split pertaining to each address. - function _payout( - address _originContract, - uint256 _tokenId, - address _currencyAddress, - uint256 _amount, - address _seller, - address payable[] memory _splitAddrs, - uint8[] memory _splitRatios - ) internal { - require(_splitAddrs.length == _splitRatios.length, "Number of split addresses and ratios must be equal."); - - /* - The overall flow for payouts is: - 1. Payout marketplace fee - 2. Primary/Secondary Payouts - a. Primary -> If space sale, query space operator registry for platform comission and payout - Else query marketplace setting for primary sale comission and payout - b. Secondary -> Query global royalty registry for recipients and amounts and payout - 3. Calculate the amount for each _splitAddr based on remaining amount and payout - */ - - // Recipients of marketplace fee - uint256 remainingAmount = _amount; - - // Marketplace fee - - // Amounts for recipients of marketplace fee - uint256 marketplaceFee = marketplaceSettings.calculateMarketplaceFee(_amount); - - address payable[] memory mktFeeRecip = new address payable[](2); - mktFeeRecip[0] = payable(networkBeneficiary); - mktFeeRecip[1] = payable(IRareStakingRegistry(stakingRegistry).getRewardAccumulatorAddressForUser(_seller)); - mktFeeRecip[1] = mktFeeRecip[1] == address(0) ? payable(networkBeneficiary) : mktFeeRecip[1]; - uint256[] memory mktFee = new uint256[](2); - mktFee[0] = IStakingSettings(address(marketplaceSettings)).calculateMarketplacePayoutFee(_amount); - mktFee[1] = IStakingSettings(address(marketplaceSettings)).calculateStakingFee(_amount); - - _performPayouts(_currencyAddress, marketplaceFee, mktFeeRecip, mktFee); - - if (!marketplaceSettings.hasERC721TokenSold(_originContract, _tokenId)) { - uint256[] memory platformFee = new uint256[](1); - address payable[] memory platformRecip = new address payable[](1); - platformRecip[0] = mktFeeRecip[0]; - - if (spaceOperatorRegistry.isApprovedSpaceOperator(_seller)) { - uint256 platformCommission = spaceOperatorRegistry.getPlatformCommission(_seller); - - remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); - - platformFee[0] = (_amount * platformCommission) / 100; - - _performPayouts(_currencyAddress, platformFee[0], platformRecip, platformFee); - } else { - uint256 platformCommission = - marketplaceSettings.getERC721ContractPrimarySaleFeePercentage(_originContract); - - remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); - - platformFee[0] = (_amount * platformCommission) / 100; - - _performPayouts(_currencyAddress, platformFee[0], platformRecip, platformFee); - } - } else { - (address payable[] memory receivers, uint256[] memory royalties) = - royaltyEngine.getRoyalty(_originContract, _tokenId, _amount); - - uint256 totalRoyalties = 0; - - for (uint256 i = 0; i < royalties.length; i++) { - totalRoyalties += royalties[i]; - } - - remainingAmount -= totalRoyalties; - _performPayouts(_currencyAddress, totalRoyalties, receivers, royalties); - } - - uint256[] memory remainingAmts = new uint256[](_splitAddrs.length); - - uint256 totalSplit = 0; - - for (uint256 i = 0; i < _splitAddrs.length; i++) { - remainingAmts[i] = (remainingAmount * _splitRatios[i]) / 100; - totalSplit += (remainingAmount * _splitRatios[i]) / 100; - } - _performPayouts(_currencyAddress, totalSplit, _splitAddrs, remainingAmts); - } + uint256[] memory remainingAmts = new uint256[](_splitAddrs.length); - function _performPayouts( - address _currencyAddress, - uint256 _amount, - address payable[] memory _recipients, - uint256[] memory _amounts - ) internal { - if (_currencyAddress == address(0)) { - (bool success, bytes memory data) = address(payments).call{value: _amount}( - abi.encodeWithSelector(IPayments.payout.selector, _recipients, _amounts) - ); - - require(success, string(data)); - } else { - IERC20 erc20 = IERC20(_currencyAddress); - - for (uint256 i = 0; i < _recipients.length; i++) { - erc20.safeTransfer(_recipients[i], _amounts[i]); - } - } + uint256 totalSplit = 0; + + for (uint256 i = 0; i < _splitAddrs.length; i++) { + remainingAmts[i] = (remainingAmount * _splitRatios[i]) / 100; + totalSplit += (remainingAmount * _splitRatios[i]) / 100; + } + _performPayouts(_currencyAddress, totalSplit, _splitAddrs, remainingAmts); + } + + function _performPayouts( + address _currencyAddress, + uint256 _amount, + address payable[] memory _recipients, + uint256[] memory _amounts + ) internal { + if (_currencyAddress == address(0)) { + (bool success, bytes memory data) = address(payments).call{value: _amount}( + abi.encodeWithSelector(IPayments.payout.selector, _recipients, _amounts) + ); + + require(success, string(data)); + } else { + IERC20 erc20 = IERC20(_currencyAddress); + + for (uint256 i = 0; i < _recipients.length; i++) { + erc20.safeTransfer(_recipients[i], _amounts[i]); + } } -} + } +} \ No newline at end of file diff --git a/src/test/bazaar/BazaarBase.t.sol b/src/test/bazaar/BazaarBase.t.sol index b6590d4..baa11d7 100644 --- a/src/test/bazaar/BazaarBase.t.sol +++ b/src/test/bazaar/BazaarBase.t.sol @@ -20,585 +20,586 @@ import {MarketConfig} from "../../utils/structs/MarketConfig.sol"; import {IRareStakingRegistry} from "../../staking/registry/IRareStakingRegistry.sol"; contract TestContract is SuperRareBazaarBase { - constructor( - address _marketplaceSettings, - address _royaltyEngine, - address _spaceOperatorRegistry, - address _approvedTokenRegistry, - address _payments, - address _stakingRegistry, - address _networkBeneficiary - ) { - marketplaceSettings = IMarketplaceSettings(_marketplaceSettings); - royaltyEngine = IRoyaltyEngineV1(_royaltyEngine); - spaceOperatorRegistry = ISpaceOperatorRegistry(_spaceOperatorRegistry); - approvedTokenRegistry = IApprovedTokenRegistry(_approvedTokenRegistry); - payments = IPayments(_payments); - stakingRegistry = _stakingRegistry; - networkBeneficiary = _networkBeneficiary; - - minimumBidIncreasePercentage = 10; - maxAuctionLength = 7 days; - auctionLengthExtension = 15 minutes; - offerCancelationDelay = 5 minutes; - } - - function payout( - address _originContract, - uint256 _tokenId, - address _currencyAddress, - uint256 _amount, - address _seller, - address payable[] memory _splitAddrs, - uint8[] memory _splitRatios - ) public payable { - _payout(_originContract, _tokenId, _currencyAddress, _amount, _seller, _splitAddrs, _splitRatios); - } - - function checkSplits(address payable[] calldata _splits, uint8[] calldata _ratios) public pure { - _checkSplits(_splits, _ratios); - } + constructor( + address _marketplaceSettings, + address _royaltyEngine, + address _spaceOperatorRegistry, + address _approvedTokenRegistry, + address _payments, + address _stakingRegistry, + address _networkBeneficiary + ) { + marketplaceSettings = IMarketplaceSettings(_marketplaceSettings); + royaltyEngine = IRoyaltyEngineV1(_royaltyEngine); + spaceOperatorRegistry = ISpaceOperatorRegistry(_spaceOperatorRegistry); + approvedTokenRegistry = IApprovedTokenRegistry(_approvedTokenRegistry); + payments = IPayments(_payments); + stakingRegistry = _stakingRegistry; + networkBeneficiary = _networkBeneficiary; + + minimumBidIncreasePercentage = 10; + maxAuctionLength = 7 days; + auctionLengthExtension = 15 minutes; + offerCancelationDelay = 5 minutes; + } + + function payout( + address _originContract, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + address _seller, + address payable[] memory _splitAddrs, + uint8[] memory _splitRatios + ) public payable { + _payout(_originContract, _tokenId, _currencyAddress, _amount, _seller, _splitAddrs, _splitRatios); + } } contract TestRare is ERC20 { - constructor() ERC20("Rare", "RARE") { - _mint(msg.sender, 1_000_000_000 ether); - } + constructor() ERC20("Rare", "RARE") { + _mint(msg.sender, 1_000_000_000 ether); + } - function burn(uint256 amount) public { - _burn(msg.sender, amount); - } + function burn(uint256 amount) public { + _burn(msg.sender, amount); + } } contract RareBazaarBaseTest is Test { - TestContract tc; - Payments payments; - TestRare public rare; - uint256 constant initialRare = 1000 * 1e18; - - address deployer = address(0xabadabab); - address alice = address(0xbeef); - address bob = address(0xcafe); - address charlie = address(0xdead); - address marketplaceSettings = address(0xabadaba1); - address royaltyRegistry = address(0xabadaba2); - address royaltyEngine = address(0xabadaba3); - address spaceOperatorRegistry = address(0xabadaba6); - address approvedTokenRegistry = address(0xabadaba7); - address stakingRegistry = address(0xabadaba9); - address networkBeneficiary = address(0xabadabaa); - address rewardPool = address(0xcccc); - - function contractDeploy() internal { - vm.startPrank(deployer); - - // Deploy TestRare - rare = new TestRare(); - - // Deploy Payments - payments = new Payments(); - - tc = new TestContract( - marketplaceSettings, - royaltyEngine, - spaceOperatorRegistry, - approvedTokenRegistry, - address(payments), - stakingRegistry, - networkBeneficiary - ); - - // etch code into these so we can stub out methods. Need some - vm.etch(marketplaceSettings, address(rare).code); - vm.etch(stakingRegistry, address(rare).code); - vm.etch(royaltyRegistry, address(rare).code); - vm.etch(royaltyEngine, address(rare).code); - vm.etch(spaceOperatorRegistry, address(rare).code); - vm.etch(approvedTokenRegistry, address(rare).code); - - vm.stopPrank(); + TestContract tc; + Payments payments; + TestRare public rare; + uint256 constant initialRare = 1000 * 1e18; + + address deployer = address(0xabadabab); + address alice = address(0xbeef); + address bob = address(0xcafe); + address charlie = address(0xdead); + address marketplaceSettings = address(0xabadaba1); + address royaltyRegistry = address(0xabadaba2); + address royaltyEngine = address(0xabadaba3); + address spaceOperatorRegistry = address(0xabadaba6); + address approvedTokenRegistry = address(0xabadaba7); + address stakingRegistry = address(0xabadaba9); + address networkBeneficiary = address(0xabadabaa); + address rewardPool = address(0xcccc); + + function contractDeploy() internal { + vm.startPrank(deployer); + + // Deploy TestRare + rare = new TestRare(); + + // Deploy Payments + payments = new Payments(); + + tc = new TestContract( + marketplaceSettings, + royaltyEngine, + spaceOperatorRegistry, + approvedTokenRegistry, + address(payments), + stakingRegistry, + networkBeneficiary + ); + + // etch code into these so we can stub out methods. Need some + vm.etch(marketplaceSettings, address(rare).code); + vm.etch(stakingRegistry, address(rare).code); + vm.etch(royaltyRegistry, address(rare).code); + vm.etch(royaltyEngine, address(rare).code); + vm.etch(spaceOperatorRegistry, address(rare).code); + vm.etch(approvedTokenRegistry, address(rare).code); + + vm.stopPrank(); + } + + function setUp() public { + deal(deployer, 100 ether); + deal(alice, 100 ether); + deal(bob, 100 ether); + deal(charlie, 100 ether); + contractDeploy(); + vm.startPrank(deployer); + rare.transfer(alice, initialRare); + rare.transfer(bob, initialRare); + vm.stopPrank(); + } + + function test_payout_primary() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup has isApprovedSpaceOperator -- false + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup has getERC721ContractPrimarySaleFeePercentage -- 15% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), + abi.encode(15) + ); + uint256 balanceBefore = charlie.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + uint256 balanceAfter = charlie.balance; + uint256 expectedBalance = balanceBefore + ((amount * 85) / 100); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); } - - function setUp() public { - deal(deployer, 100 ether); - deal(alice, 100 ether); - deal(bob, 100 ether); - deal(charlie, 100 ether); - contractDeploy(); - vm.startPrank(deployer); - rare.transfer(alice, initialRare); - rare.transfer(bob, initialRare); - vm.stopPrank(); + } + + function test_payout_primary_spaces() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call -- 0% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup isApprovedSpaceOperator -- true + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(true) + ); + + // setup getPlatformCommission -- 5% + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.getPlatformCommission.selector, charlie), + abi.encode(5) + ); + uint256 balanceBefore = charlie.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + uint256 balanceAfter = charlie.balance; + uint256 expectedBalance = balanceBefore + ((amount * 95) / 100); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); } - - function test_checkSplits_ZeroAddressRecipient() public { - address payable[] memory splitAddrs = new address payable[](2); - uint8[] memory splitRatios = new uint8[](2); - splitAddrs[0] = payable(alice); - splitAddrs[1] = payable(address(0)); - splitRatios[0] = 50; - splitRatios[1] = 50; - - vm.expectRevert("checkSplits::Split cannot be zero address"); - tc.checkSplits(splitAddrs, splitRatios); + } + + function test_payout_secondary() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + address payable[] memory royaltyReceiverAddrs = new address payable[](1); + uint256[] memory royaltyAmounts = new uint256[](1); + royaltyReceiverAddrs[0] = payable(alice); + royaltyAmounts[0] = (amount * 10) / 100; + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(true) + ); + + // setup has getRoyalty -- 10% + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, 1, amount), + abi.encode(royaltyReceiverAddrs, royaltyAmounts) + ); + + uint256 balanceBefore = charlie.balance; + uint256 aliceBalanceBefore = alice.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + uint256 balanceAfter = charlie.balance; + uint256 expectedBalance = balanceBefore + ((amount * 90) / 100); + uint256 aliceBalanceAfter = alice.balance; + uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 10) / 100); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); } - - function test_checkSplits_ZeroRatio() public { - address payable[] memory splitAddrs = new address payable[](2); - uint8[] memory splitRatios = new uint8[](2); - splitAddrs[0] = payable(alice); - splitAddrs[1] = payable(bob); - splitRatios[0] = 100; - splitRatios[1] = 0; - - vm.expectRevert("checkSplits::Ratio must be greater than 0"); - tc.checkSplits(splitAddrs, splitRatios); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: aliceExpectedBalance", aliceExpectedBalance); + emit log_named_uint("Actual: aliceBalanceAfter", aliceBalanceAfter); + revert("incorrect balance after on payout"); } - - function test_payout_primary() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup has isApprovedSpaceOperator -- false - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup has getERC721ContractPrimarySaleFeePercentage -- 15% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector( - IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract - ), - abi.encode(15) - ); - uint256 balanceBefore = charlie.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - uint256 balanceAfter = charlie.balance; - uint256 expectedBalance = balanceBefore + ((amount * 85) / 100); - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); - } + } + + function test_payout_staking_pool() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(rewardPool) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 2) / 100) + ); + + // setup calculateStakingFee call -- 1% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(amount / 100) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup has isApprovedSpaceOperator -- false + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup has getERC721ContractPrimarySaleFeePercentage -- 15% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), + abi.encode(15) + ); + uint256 balanceBefore = rewardPool.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + uint256 balanceAfter = rewardPool.balance; + uint256 expectedBalance = balanceBefore + (amount / 100); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); } - - function test_payout_primary_spaces() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call -- 0% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup isApprovedSpaceOperator -- true - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(true) - ); - - // setup getPlatformCommission -- 5% - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.getPlatformCommission.selector, charlie), - abi.encode(5) - ); - uint256 balanceBefore = charlie.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - uint256 balanceAfter = charlie.balance; - uint256 expectedBalance = balanceBefore + ((amount * 95) / 100); - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); - } + } + + function test_payout_no_staking_pool() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 2) / 100) + ); + + // setup calculateStakingFee call -- 1% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(amount / 100) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup has isApprovedSpaceOperator -- false + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup has getERC721ContractPrimarySaleFeePercentage -- 15% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), + abi.encode(15) + ); + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + uint256 balanceAfter = rewardPool.balance; + uint256 expectedBalance = balanceAfter; + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); } - - function test_payout_secondary() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - address payable[] memory royaltyReceiverAddrs = new address payable[](1); - uint256[] memory royaltyAmounts = new uint256[](1); - royaltyReceiverAddrs[0] = payable(alice); - royaltyAmounts[0] = (amount * 10) / 100; - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(true) - ); - - // setup has getRoyalty -- 10% - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, 1, amount), - abi.encode(royaltyReceiverAddrs, royaltyAmounts) - ); - - uint256 balanceBefore = charlie.balance; - uint256 aliceBalanceBefore = alice.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - uint256 balanceAfter = charlie.balance; - uint256 expectedBalance = balanceBefore + ((amount * 90) / 100); - uint256 aliceBalanceAfter = alice.balance; - uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 10) / 100); - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); - } - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: aliceExpectedBalance", aliceExpectedBalance); - emit log_named_uint("Actual: aliceBalanceAfter", aliceBalanceAfter); - revert("incorrect balance after on payout"); - } - } - - function test_payout_staking_pool() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(rewardPool) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 2) / 100) - ); - - // setup calculateStakingFee call -- 1% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(amount / 100) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup has isApprovedSpaceOperator -- false - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup has getERC721ContractPrimarySaleFeePercentage -- 15% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector( - IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract - ), - abi.encode(15) - ); - uint256 balanceBefore = rewardPool.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - uint256 balanceAfter = rewardPool.balance; - uint256 expectedBalance = balanceBefore + (amount / 100); - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); - } - } - - function test_payout_no_staking_pool() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 2) / 100) - ); - - // setup calculateStakingFee call -- 1% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(amount / 100) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup has isApprovedSpaceOperator -- false - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup has getERC721ContractPrimarySaleFeePercentage -- 15% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector( - IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract - ), - abi.encode(15) - ); - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - uint256 balanceAfter = rewardPool.balance; - uint256 expectedBalance = balanceAfter; - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); - } + } + function test_payout_erc20_no_staking_pool() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(rare); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 2) / 100) + ); + + // setup calculateStakingFee call -- 1% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(amount / 100) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup has isApprovedSpaceOperator -- false + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup has getERC721ContractPrimarySaleFeePercentage -- 15% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), + abi.encode(15) + ); + vm.prank(deployer); + rare.transfer(address(tc), amount + ((amount * 3) / 100)); + uint256 nbBalanceBefore = rare.balanceOf(networkBeneficiary); + tc.payout( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + uint256 balanceAfter = rewardPool.balance; + uint256 expectedBalance = balanceAfter; + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); } - function test_payout_erc20_no_staking_pool() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(rare); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 2) / 100) - ); - - // setup calculateStakingFee call -- 1% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(amount / 100) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup has isApprovedSpaceOperator -- false - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup has getERC721ContractPrimarySaleFeePercentage -- 15% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector( - IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract - ), - abi.encode(15) - ); - vm.prank(deployer); - rare.transfer(address(tc), amount + ((amount * 3) / 100)); - uint256 nbBalanceBefore = rare.balanceOf(networkBeneficiary); - tc.payout(originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios); - uint256 balanceAfter = rewardPool.balance; - uint256 expectedBalance = balanceAfter; - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); - } - - uint256 nbBalanceAfter = rare.balanceOf(networkBeneficiary); - uint256 nbExpectedBalance = nbBalanceBefore + ((amount * (15 + 3)) / 100); - if (nbBalanceAfter != nbExpectedBalance) { - emit log_named_uint("Expected: nbBalanceAfter", nbExpectedBalance); - emit log_named_uint("Actual: nbBalanceAfter", nbBalanceAfter); - revert("incorrect balance for network beneficiary after on payout"); - } + uint256 nbBalanceAfter = rare.balanceOf(networkBeneficiary); + uint256 nbExpectedBalance = nbBalanceBefore + ((amount * (15 + 3)) / 100); + if (nbBalanceAfter != nbExpectedBalance) { + emit log_named_uint("Expected: nbBalanceAfter", nbExpectedBalance); + emit log_named_uint("Actual: nbBalanceAfter", nbBalanceAfter); + revert("incorrect balance for network beneficiary after on payout"); } + } } diff --git a/src/test/utils/MarketUtils.t.sol b/src/test/utils/MarketUtils.t.sol index 4101c6a..9aedd34 100644 --- a/src/test/utils/MarketUtils.t.sol +++ b/src/test/utils/MarketUtils.t.sol @@ -19,598 +19,592 @@ import {MarketConfig} from "../../utils/structs/MarketConfig.sol"; import {IRareStakingRegistry} from "../../staking/registry/IRareStakingRegistry.sol"; contract TestContract { - using MarketUtils for MarketConfig.Config; - - MarketConfig.Config config; - - constructor( - address _marketplaceSettings, - address _stakingSettings, - address _royaltyEngine, - address _spaceOperatorRegistry, - address _approvedTokenRegistry, - address _payments, - address _stakingRegistry, - address _networkBeneficiary - ) { - require(_marketplaceSettings != address(0)); - require(_stakingSettings != address(0)); - require(_royaltyEngine != address(0)); - require(_spaceOperatorRegistry != address(0)); - require(_approvedTokenRegistry != address(0)); - require(_payments != address(0)); - require(_networkBeneficiary != address(0)); - config = MarketConfig.generateMarketConfig( - _networkBeneficiary, - _marketplaceSettings, - _spaceOperatorRegistry, - _royaltyEngine, - _payments, - _approvedTokenRegistry, - _stakingSettings, - _stakingRegistry - ); - } - - function payout( - address _originContract, - uint256 _tokenId, - address _currencyAddress, - uint256 _amount, - address _seller, - address payable[] memory _splitAddrs, - uint8[] memory _splitRatios - ) public payable { - config.payout(_originContract, _tokenId, _currencyAddress, _amount, _seller, _splitAddrs, _splitRatios); - } - - function checkSplits(address payable[] calldata _splitAddrs, uint8[] calldata _splitRatios) public pure { - MarketUtils.checkSplits(_splitAddrs, _splitRatios); - } + using MarketUtils for MarketConfig.Config; + + MarketConfig.Config config; + + constructor( + address _marketplaceSettings, + address _stakingSettings, + address _royaltyEngine, + address _spaceOperatorRegistry, + address _approvedTokenRegistry, + address _payments, + address _stakingRegistry, + address _networkBeneficiary + ) { + require(_marketplaceSettings != address(0)); + require(_stakingSettings != address(0)); + require(_royaltyEngine != address(0)); + require(_spaceOperatorRegistry != address(0)); + require(_approvedTokenRegistry != address(0)); + require(_payments != address(0)); + require(_networkBeneficiary != address(0)); + config = MarketConfig.generateMarketConfig( + _networkBeneficiary, + _marketplaceSettings, + _spaceOperatorRegistry, + _royaltyEngine, + _payments, + _approvedTokenRegistry, + _stakingSettings, + _stakingRegistry + ); + } + + function payout( + address _originContract, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + address _seller, + address payable[] memory _splitAddrs, + uint8[] memory _splitRatios + ) public payable { + config.payout(_originContract, _tokenId, _currencyAddress, _amount, _seller, _splitAddrs, _splitRatios); + } } contract TestRare is ERC20 { - constructor() ERC20("Rare", "RARE") { - _mint(msg.sender, 1_000_000_000 ether); - } + constructor() ERC20("Rare", "RARE") { + _mint(msg.sender, 1_000_000_000 ether); + } - function burn(uint256 amount) public { - _burn(msg.sender, amount); - } + function burn(uint256 amount) public { + _burn(msg.sender, amount); + } } contract MarketUtilsTest is Test { - TestContract tc; - Payments payments; - TestRare public rare; - uint256 constant initialRare = 1000 * 1e18; - - address deployer = address(0xabadabab); - address alice = address(0xbeef); - address bob = address(0xcafe); - address charlie = address(0xdead); - address stakingSettings = address(0xabadaba0); - address marketplaceSettings = address(0xabadaba1); - address royaltyRegistry = address(0xabadaba2); - address royaltyEngine = address(0xabadaba3); - address spaceOperatorRegistry = address(0xabadaba6); - address approvedTokenRegistry = address(0xabadaba7); - address stakingRegistry = address(0xabadaba9); - address networkBeneficiary = address(0xabadabaa); - address rewardPool = address(0xcccc); - - function contractDeploy() internal { - vm.startPrank(deployer); - - // Deploy TestRare - rare = new TestRare(); - - // Deploy Payments - payments = new Payments(); - - tc = new TestContract( - marketplaceSettings, - stakingSettings, - royaltyEngine, - spaceOperatorRegistry, - approvedTokenRegistry, - address(payments), - stakingRegistry, - networkBeneficiary - ); - - // etch code into these so we can stub out methods. Need some - vm.etch(marketplaceSettings, address(rare).code); - vm.etch(stakingSettings, address(rare).code); - vm.etch(stakingRegistry, address(rare).code); - vm.etch(royaltyRegistry, address(rare).code); - vm.etch(royaltyEngine, address(rare).code); - vm.etch(spaceOperatorRegistry, address(rare).code); - vm.etch(approvedTokenRegistry, address(rare).code); - - vm.stopPrank(); + TestContract tc; + Payments payments; + TestRare public rare; + uint256 constant initialRare = 1000 * 1e18; + + address deployer = address(0xabadabab); + address alice = address(0xbeef); + address bob = address(0xcafe); + address charlie = address(0xdead); + address stakingSettings = address(0xabadaba0); + address marketplaceSettings = address(0xabadaba1); + address royaltyRegistry = address(0xabadaba2); + address royaltyEngine = address(0xabadaba3); + address spaceOperatorRegistry = address(0xabadaba6); + address approvedTokenRegistry = address(0xabadaba7); + address stakingRegistry = address(0xabadaba9); + address networkBeneficiary = address(0xabadabaa); + address rewardPool = address(0xcccc); + + function contractDeploy() internal { + vm.startPrank(deployer); + + // Deploy TestRare + rare = new TestRare(); + + // Deploy Payments + payments = new Payments(); + + tc = new TestContract( + marketplaceSettings, + stakingSettings, + royaltyEngine, + spaceOperatorRegistry, + approvedTokenRegistry, + address(payments), + stakingRegistry, + networkBeneficiary + ); + + // etch code into these so we can stub out methods. Need some + vm.etch(marketplaceSettings, address(rare).code); + vm.etch(stakingSettings, address(rare).code); + vm.etch(stakingRegistry, address(rare).code); + vm.etch(royaltyRegistry, address(rare).code); + vm.etch(royaltyEngine, address(rare).code); + vm.etch(spaceOperatorRegistry, address(rare).code); + vm.etch(approvedTokenRegistry, address(rare).code); + + vm.stopPrank(); + } + + function setUp() public { + deal(deployer, 100 ether); + deal(alice, 100 ether); + deal(bob, 100 ether); + deal(charlie, 100 ether); + contractDeploy(); + vm.startPrank(deployer); + rare.transfer(alice, initialRare); + rare.transfer(bob, initialRare); + vm.stopPrank(); + } + + function test_payout_primary() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call -- 3% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup has isApprovedSpaceOperator -- false + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup has getERC721ContractPrimarySaleFeePercentage -- 15% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), + abi.encode(15) + ); + uint256 balanceBefore = charlie.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + uint256 balanceAfter = charlie.balance; + uint256 expectedBalance = balanceBefore + ((amount * 85) / 100); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); } - - function setUp() public { - deal(deployer, 100 ether); - deal(alice, 100 ether); - deal(bob, 100 ether); - deal(charlie, 100 ether); - contractDeploy(); - vm.startPrank(deployer); - rare.transfer(alice, initialRare); - rare.transfer(bob, initialRare); - vm.stopPrank(); + } + + function test_payout_primary_spaces() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call -- 0% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup isApprovedSpaceOperator -- true + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(true) + ); + + // setup getPlatformCommission -- 5% + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.getPlatformCommission.selector, charlie), + abi.encode(5) + ); + uint256 balanceBefore = charlie.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + uint256 balanceAfter = charlie.balance; + uint256 expectedBalance = balanceBefore + ((amount * 95) / 100); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); } - - function test_checkSplits_ZeroAddressRecipient() public { - address payable[] memory splitAddrs = new address payable[](2); - uint8[] memory splitRatios = new uint8[](2); - splitAddrs[0] = payable(alice); - splitAddrs[1] = payable(address(0)); - splitRatios[0] = 50; - splitRatios[1] = 50; - - vm.expectRevert("checkSplits::Split cannot be zero address"); - tc.checkSplits(splitAddrs, splitRatios); + } + + function test_payout_secondary() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + address payable[] memory royaltyReceiverAddrs = new address payable[](1); + uint256[] memory royaltyAmounts = new uint256[](1); + royaltyReceiverAddrs[0] = payable(alice); + royaltyAmounts[0] = (amount * 10) / 100; + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call -- 3% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(true) + ); + + // setup has getRoyalty -- 10% + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, 1, amount), + abi.encode(royaltyReceiverAddrs, royaltyAmounts) + ); + + uint256 balanceBefore = charlie.balance; + uint256 aliceBalanceBefore = alice.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + uint256 balanceAfter = charlie.balance; + uint256 expectedBalance = balanceBefore + ((amount * 90) / 100); + uint256 aliceBalanceAfter = alice.balance; + uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 10) / 100); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); } - - function test_checkSplits_ZeroRatio() public { - address payable[] memory splitAddrs = new address payable[](2); - uint8[] memory splitRatios = new uint8[](2); - splitAddrs[0] = payable(alice); - splitAddrs[1] = payable(bob); - splitRatios[0] = 100; - splitRatios[1] = 0; - - vm.expectRevert("checkSplits::Ratio must be greater than 0"); - tc.checkSplits(splitAddrs, splitRatios); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: aliceExpectedBalance", aliceExpectedBalance); + emit log_named_uint("Actual: aliceBalanceAfter", aliceBalanceAfter); + revert("incorrect balance after on payout"); } - - function test_payout_primary() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call -- 3% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup has isApprovedSpaceOperator -- false - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup has getERC721ContractPrimarySaleFeePercentage -- 15% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector( - IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract - ), - abi.encode(15) - ); - uint256 balanceBefore = charlie.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - uint256 balanceAfter = charlie.balance; - uint256 expectedBalance = balanceBefore + ((amount * 85) / 100); - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); - } + } + + function test_payout_staking_pool() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(rewardPool) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 2) / 100) + ); + + // setup calculateStakingFee call -- 1% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(amount / 100) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup has isApprovedSpaceOperator -- false + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup has getERC721ContractPrimarySaleFeePercentage -- 15% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), + abi.encode(15) + ); + uint256 balanceBefore = rewardPool.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + uint256 balanceAfter = rewardPool.balance; + uint256 expectedBalance = balanceBefore + (amount / 100); + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); } - - function test_payout_primary_spaces() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call -- 0% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup isApprovedSpaceOperator -- true - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(true) - ); - - // setup getPlatformCommission -- 5% - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.getPlatformCommission.selector, charlie), - abi.encode(5) - ); - uint256 balanceBefore = charlie.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - uint256 balanceAfter = charlie.balance; - uint256 expectedBalance = balanceBefore + ((amount * 95) / 100); - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); - } + } + + function test_payout_no_staking_pool() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 2) / 100) + ); + + // setup calculateStakingFee call -- 1% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(amount / 100) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup has isApprovedSpaceOperator -- false + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup has getERC721ContractPrimarySaleFeePercentage -- 15% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), + abi.encode(15) + ); + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + uint256 balanceAfter = rewardPool.balance; + uint256 expectedBalance = balanceAfter; + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); } - - function test_payout_secondary() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - address payable[] memory royaltyReceiverAddrs = new address payable[](1); - uint256[] memory royaltyAmounts = new uint256[](1); - royaltyReceiverAddrs[0] = payable(alice); - royaltyAmounts[0] = (amount * 10) / 100; - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call -- 3% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(true) - ); - - // setup has getRoyalty -- 10% - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, 1, amount), - abi.encode(royaltyReceiverAddrs, royaltyAmounts) - ); - - uint256 balanceBefore = charlie.balance; - uint256 aliceBalanceBefore = alice.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - uint256 balanceAfter = charlie.balance; - uint256 expectedBalance = balanceBefore + ((amount * 90) / 100); - uint256 aliceBalanceAfter = alice.balance; - uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 10) / 100); - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); - } - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: aliceExpectedBalance", aliceExpectedBalance); - emit log_named_uint("Actual: aliceBalanceAfter", aliceBalanceAfter); - revert("incorrect balance after on payout"); - } - } - - function test_payout_staking_pool() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(rewardPool) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 2) / 100) - ); - - // setup calculateStakingFee call -- 1% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(amount / 100) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup has isApprovedSpaceOperator -- false - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup has getERC721ContractPrimarySaleFeePercentage -- 15% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector( - IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract - ), - abi.encode(15) - ); - uint256 balanceBefore = rewardPool.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - uint256 balanceAfter = rewardPool.balance; - uint256 expectedBalance = balanceBefore + (amount / 100); - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); - } - } - - function test_payout_no_staking_pool() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 2) / 100) - ); - - // setup calculateStakingFee call -- 1% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(amount / 100) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup has isApprovedSpaceOperator -- false - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup has getERC721ContractPrimarySaleFeePercentage -- 15% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector( - IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract - ), - abi.encode(15) - ); - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - uint256 balanceAfter = rewardPool.balance; - uint256 expectedBalance = balanceAfter; - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); - } + } + + function test_payout_erc20_no_staking_pool() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(rare); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call -- 3% + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call -- 3% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 2) / 100) + ); + + // setup calculateStakingFee call -- 1% + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(amount / 100) + ); + + // setup calculateMarketplaceFee call -- 3% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup has hasERC721TokenSold -- false + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + // setup has isApprovedSpaceOperator -- false + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup has getERC721ContractPrimarySaleFeePercentage -- 15% + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), + abi.encode(15) + ); + vm.prank(deployer); + rare.transfer(address(tc), amount + ((amount * 3) / 100)); + uint256 nbBalanceBefore = rare.balanceOf(networkBeneficiary); + tc.payout(originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios); + uint256 balanceAfter = rewardPool.balance; + uint256 expectedBalance = balanceAfter; + if (balanceAfter != expectedBalance) { + emit log_named_uint("Expected: balanceAfter", expectedBalance); + emit log_named_uint("Actual: balanceAfter", balanceAfter); + revert("incorrect balance after on payout"); } - function test_payout_erc20_no_staking_pool() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(rare); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call -- 3% - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call -- 3% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 2) / 100) - ); - - // setup calculateStakingFee call -- 1% - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(amount / 100) - ); - - // setup calculateMarketplaceFee call -- 3% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup has hasERC721TokenSold -- false - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - // setup has isApprovedSpaceOperator -- false - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup has getERC721ContractPrimarySaleFeePercentage -- 15% - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector( - IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract - ), - abi.encode(15) - ); - vm.prank(deployer); - rare.transfer(address(tc), amount + ((amount * 3) / 100)); - uint256 nbBalanceBefore = rare.balanceOf(networkBeneficiary); - tc.payout(originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios); - uint256 balanceAfter = rewardPool.balance; - uint256 expectedBalance = balanceAfter; - if (balanceAfter != expectedBalance) { - emit log_named_uint("Expected: balanceAfter", expectedBalance); - emit log_named_uint("Actual: balanceAfter", balanceAfter); - revert("incorrect balance after on payout"); - } - - uint256 nbBalanceAfter = rare.balanceOf(networkBeneficiary); - uint256 nbExpectedBalance = nbBalanceBefore + ((amount * (15 + 3)) / 100); - if (nbBalanceAfter != nbExpectedBalance) { - emit log_named_uint("Expected: nbBalanceAfter", nbExpectedBalance); - emit log_named_uint("Actual: nbBalanceAfter", nbBalanceAfter); - revert("incorrect balance for network beneficiary after on payout"); - } + uint256 nbBalanceAfter = rare.balanceOf(networkBeneficiary); + uint256 nbExpectedBalance = nbBalanceBefore + ((amount * (15 + 3)) / 100); + if (nbBalanceAfter != nbExpectedBalance) { + emit log_named_uint("Expected: nbBalanceAfter", nbExpectedBalance); + emit log_named_uint("Actual: nbBalanceAfter", nbBalanceAfter); + revert("incorrect balance for network beneficiary after on payout"); } + } } diff --git a/src/test/v2/utils/MarketUtilsV2.t.sol b/src/test/v2/utils/MarketUtilsV2.t.sol index b03ca70..5e8ac0a 100644 --- a/src/test/v2/utils/MarketUtilsV2.t.sol +++ b/src/test/v2/utils/MarketUtilsV2.t.sol @@ -23,1408 +23,1435 @@ import {ERC721ApprovalManager} from "../../../v2/approver/ERC721/ERC721ApprovalM import {TestNFT} from "../utils/TestNft.sol"; contract TestContract { - using MarketUtilsV2 for MarketConfigV2.Config; - - MarketConfigV2.Config config; - - constructor( - address _marketplaceSettings, - address _stakingSettings, - address _royaltyEngine, - address _spaceOperatorRegistry, - address _approvedTokenRegistry, - address _payments, - address _stakingRegistry, - address _networkBeneficiary, - address _erc20ApprovalManager, - address _erc721ApprovalManager - ) { - require(_marketplaceSettings != address(0)); - require(_stakingSettings != address(0)); - require(_royaltyEngine != address(0)); - require(_spaceOperatorRegistry != address(0)); - require(_approvedTokenRegistry != address(0)); - require(_payments != address(0)); - require(_networkBeneficiary != address(0)); - require(_erc20ApprovalManager != address(0)); - require(_erc721ApprovalManager != address(0)); - config = MarketConfigV2.generateMarketConfig( - _networkBeneficiary, - _marketplaceSettings, - _spaceOperatorRegistry, - _royaltyEngine, - _payments, - _approvedTokenRegistry, - _stakingSettings, - _stakingRegistry, - _erc20ApprovalManager, - _erc721ApprovalManager - ); - } - - function checkIfCurrencyIsApproved(address _currencyAddress) public view { - config.checkIfCurrencyIsApproved(_currencyAddress); - } - - function senderMustBeTokenOwner(address _originContract, uint256 _tokenId) public view { - MarketUtilsV2.senderMustBeTokenOwner(_originContract, _tokenId); - } - - function addressMustHaveMarketplaceApprovedForNFT(address _addr, address _originContract, uint256 _tokenId) - public - view - { - config.addressMustHaveMarketplaceApprovedForNFT(_addr, _originContract, _tokenId); - } - - function checkSplits(address payable[] calldata _splitAddrs, uint8[] calldata _splitRatios) public pure { - MarketUtilsV2.checkSplits(_splitAddrs, _splitRatios); - } - - function senderMustHaveMarketplaceApproved(address _currency, uint256 _amount) public view { - config.senderMustHaveMarketplaceApproved(_currency, _amount); - } - - function checkAmountAndTransfer(address _currencyAddress, uint256 _amount) public payable { - config.checkAmountAndTransfer(_currencyAddress, _amount); - } - - function refund(address _currencyAddress, uint256 _amount, uint256 _marketplaceFee, address _recipient) public { - config.refund(_currencyAddress, _amount, _marketplaceFee, _recipient); - } - - function payout( - address _originContract, - uint256 _tokenId, - address _currencyAddress, - uint256 _amount, - address _seller, - address payable[] memory _splitAddrs, - uint8[] memory _splitRatios - ) public payable { - config.payout(_originContract, _tokenId, _currencyAddress, _amount, _seller, _splitAddrs, _splitRatios); - } - - function transferERC721(address _originContract, address _from, address _to, uint256 _tokenId) public { - config.transferERC721(_originContract, _from, _to, _tokenId); - } + using MarketUtilsV2 for MarketConfigV2.Config; + + MarketConfigV2.Config config; + + constructor( + address _marketplaceSettings, + address _stakingSettings, + address _royaltyEngine, + address _spaceOperatorRegistry, + address _approvedTokenRegistry, + address _payments, + address _stakingRegistry, + address _networkBeneficiary, + address _erc20ApprovalManager, + address _erc721ApprovalManager + ) { + require(_marketplaceSettings != address(0)); + require(_stakingSettings != address(0)); + require(_royaltyEngine != address(0)); + require(_spaceOperatorRegistry != address(0)); + require(_approvedTokenRegistry != address(0)); + require(_payments != address(0)); + require(_networkBeneficiary != address(0)); + require(_erc20ApprovalManager != address(0)); + require(_erc721ApprovalManager != address(0)); + config = MarketConfigV2.generateMarketConfig( + _networkBeneficiary, + _marketplaceSettings, + _spaceOperatorRegistry, + _royaltyEngine, + _payments, + _approvedTokenRegistry, + _stakingSettings, + _stakingRegistry, + _erc20ApprovalManager, + _erc721ApprovalManager + ); + } + + function checkIfCurrencyIsApproved(address _currencyAddress) public view { + config.checkIfCurrencyIsApproved(_currencyAddress); + } + + function senderMustBeTokenOwner(address _originContract, uint256 _tokenId) public view { + MarketUtilsV2.senderMustBeTokenOwner(_originContract, _tokenId); + } + + function addressMustHaveMarketplaceApprovedForNFT( + address _addr, + address _originContract, + uint256 _tokenId + ) public view { + config.addressMustHaveMarketplaceApprovedForNFT(_addr, _originContract, _tokenId); + } + + function checkSplits(address payable[] calldata _splitAddrs, uint8[] calldata _splitRatios) public pure { + MarketUtilsV2.checkSplits(_splitAddrs, _splitRatios); + } + + function senderMustHaveMarketplaceApproved(address _currency, uint256 _amount) public view { + config.senderMustHaveMarketplaceApproved(_currency, _amount); + } + + function checkAmountAndTransfer(address _currencyAddress, uint256 _amount) public payable { + config.checkAmountAndTransfer(_currencyAddress, _amount); + } + + function refund(address _currencyAddress, uint256 _amount, uint256 _marketplaceFee, address _recipient) public { + config.refund(_currencyAddress, _amount, _marketplaceFee, _recipient); + } + + function payout( + address _originContract, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + address _seller, + address payable[] memory _splitAddrs, + uint8[] memory _splitRatios + ) public payable { + config.payout(_originContract, _tokenId, _currencyAddress, _amount, _seller, _splitAddrs, _splitRatios); + } + + function transferERC721(address _originContract, address _from, address _to, uint256 _tokenId) public { + config.transferERC721(_originContract, _from, _to, _tokenId); + } } contract TestRare is ERC20 { - constructor() ERC20("Rare", "RARE") { - _mint(msg.sender, 1_000_000_000 ether); - } + constructor() ERC20("Rare", "RARE") { + _mint(msg.sender, 1_000_000_000 ether); + } - function burn(uint256 amount) public { - _burn(msg.sender, amount); - } + function burn(uint256 amount) public { + _burn(msg.sender, amount); + } } contract MarketUtilsV2Test is Test { - TestContract tc; - Payments payments; - TestRare public rare; - TestNFT public nft; - ERC20ApprovalManager public erc20ApprovalManager; - ERC721ApprovalManager public erc721ApprovalManager; - uint256 constant initialRare = 1000 * 1e18; - - address deployer = address(0xabadabab); - address alice = address(0xbeef); - address bob = address(0xcafe); - address charlie = address(0xdead); - address stakingSettings = address(0xabadaba0); - address marketplaceSettings = address(0xabadaba1); - address royaltyRegistry = address(0xabadaba2); - address royaltyEngine = address(0xabadaba3); - address spaceOperatorRegistry = address(0xabadaba6); - address approvedTokenRegistry = address(0xabadaba7); - address stakingRegistry = address(0xabadaba9); - address networkBeneficiary = address(0xabadabaa); - address rewardPool = address(0xcccc); - - function contractDeploy() internal { - vm.startPrank(deployer); - - // Deploy TestRare - rare = new TestRare(); - - // Deploy TestNFT - nft = new TestNFT(); - - // Deploy Payments - payments = new Payments(); - - // Deploy actual approval managers - erc20ApprovalManager = new ERC20ApprovalManager(); - erc721ApprovalManager = new ERC721ApprovalManager(); - - tc = new TestContract( - marketplaceSettings, - stakingSettings, - royaltyEngine, - spaceOperatorRegistry, - approvedTokenRegistry, - address(payments), - stakingRegistry, - networkBeneficiary, - address(erc20ApprovalManager), - address(erc721ApprovalManager) - ); - - // Setup operator role after test contract is created - erc20ApprovalManager.grantRole(erc20ApprovalManager.OPERATOR_ROLE(), address(tc)); - erc721ApprovalManager.grantRole(erc721ApprovalManager.OPERATOR_ROLE(), address(tc)); - - // etch code into these so we can stub out methods - vm.etch(marketplaceSettings, address(rare).code); - vm.etch(stakingSettings, address(rare).code); - vm.etch(stakingRegistry, address(rare).code); - vm.etch(royaltyRegistry, address(rare).code); - vm.etch(royaltyEngine, address(rare).code); - vm.etch(spaceOperatorRegistry, address(rare).code); - vm.etch(approvedTokenRegistry, address(rare).code); - - vm.stopPrank(); - } - - function setUp() public { - deal(deployer, 100 ether); - deal(alice, 100 ether); - deal(bob, 100 ether); - deal(charlie, 100 ether); - contractDeploy(); - vm.startPrank(deployer); - rare.transfer(alice, initialRare); - rare.transfer(bob, initialRare); - vm.stopPrank(); - } - - function test_checkIfCurrencyIsApproved_ETH() public { - // ETH (address(0)) should always be approved - tc.checkIfCurrencyIsApproved(address(0)); - } - - function test_checkIfCurrencyIsApproved_ApprovedERC20() public { - // Mock approved token check - vm.mockCall( - approvedTokenRegistry, - abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(rare)), - abi.encode(true) - ); - - tc.checkIfCurrencyIsApproved(address(rare)); - } - - function test_checkIfCurrencyIsApproved_UnapprovedERC20() public { - // Mock unapproved token check - vm.mockCall( - approvedTokenRegistry, - abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(rare)), - abi.encode(false) - ); - - vm.expectRevert("Not approved currency"); - tc.checkIfCurrencyIsApproved(address(rare)); - } - - function test_senderMustBeTokenOwner_Success() public { - address nftContract = address(0x1234); - uint256 tokenId = 1; - - // Mock NFT ownership - vm.mockCall(nftContract, abi.encodeWithSelector(IERC721.ownerOf.selector, tokenId), abi.encode(address(this))); - - vm.prank(address(this)); - tc.senderMustBeTokenOwner(nftContract, tokenId); - } - - function test_senderMustBeTokenOwner_Failure() public { - address nftContract = address(0x1234); - uint256 tokenId = 1; - - // Mock NFT ownership to different address - vm.mockCall(nftContract, abi.encodeWithSelector(IERC721.ownerOf.selector, tokenId), abi.encode(address(0x5678))); - - vm.expectRevert("sender must be the token owner"); - tc.senderMustBeTokenOwner(nftContract, tokenId); - } - - function test_addressMustHaveMarketplaceApprovedForNFT_Success() public { - // Mint NFT to alice - vm.prank(deployer); - uint256 tokenId = nft.mint(alice); - - // Have alice approve the marketplace - vm.prank(alice); - nft.setApprovalForAll(address(erc721ApprovalManager), true); - - tc.addressMustHaveMarketplaceApprovedForNFT(alice, address(nft), tokenId); - } - - function test_addressMustHaveMarketplaceApprovedForNFT_SpecificTokenSuccess() public { - // Mint NFT to alice - vm.prank(deployer); - uint256 tokenId = nft.mint(alice); - - // Have alice approve the marketplace - vm.prank(alice); - nft.setApprovalForAll(address(erc721ApprovalManager), true); - - tc.addressMustHaveMarketplaceApprovedForNFT(alice, address(nft), tokenId); - } - - function test_addressMustHaveMarketplaceApprovedForNFT_Failure() public { - // Mint NFT to alice - vm.prank(deployer); - uint256 tokenId = nft.mint(alice); - - // Don't approve the marketplace - this should fail - vm.expectRevert("owner must have approved token"); - tc.addressMustHaveMarketplaceApprovedForNFT(alice, address(nft), tokenId); - } - - function test_checkSplits_Success() public { - address payable[] memory splitAddrs = new address payable[](2); - uint8[] memory splitRatios = new uint8[](2); - - splitAddrs[0] = payable(alice); - splitAddrs[1] = payable(bob); - splitRatios[0] = 60; - splitRatios[1] = 40; - - tc.checkSplits(splitAddrs, splitRatios); - } - - function test_checkSplits_EmptyArrays() public { - address payable[] memory splitAddrs = new address payable[](0); - uint8[] memory splitRatios = new uint8[](0); - - vm.expectRevert("checkSplits::Must have at least 1 split"); - tc.checkSplits(splitAddrs, splitRatios); - } - - function test_checkSplits_TooManySplits() public { - address payable[] memory splitAddrs = new address payable[](6); - uint8[] memory splitRatios = new uint8[](6); - - vm.expectRevert("checkSplits::Split exceeded max size"); - tc.checkSplits(splitAddrs, splitRatios); - } - - function test_checkSplits_UnequalArrays() public { - address payable[] memory splitAddrs = new address payable[](2); - uint8[] memory splitRatios = new uint8[](3); - - vm.expectRevert("checkSplits::Splits and ratios must be equal"); - tc.checkSplits(splitAddrs, splitRatios); - } - - function test_checkSplits_InvalidTotal() public { - address payable[] memory splitAddrs = new address payable[](2); - uint8[] memory splitRatios = new uint8[](2); - - splitAddrs[0] = payable(alice); - splitAddrs[1] = payable(bob); - splitRatios[0] = 60; - splitRatios[1] = 30; - - vm.expectRevert("checkSplits::Total must be equal to 100"); - tc.checkSplits(splitAddrs, splitRatios); - } - - function test_checkSplits_ZeroAddressRecipient() public { - address payable[] memory splitAddrs = new address payable[](2); - uint8[] memory splitRatios = new uint8[](2); - - splitAddrs[0] = payable(alice); - splitAddrs[1] = payable(address(0)); - splitRatios[0] = 50; - splitRatios[1] = 50; - - vm.expectRevert("checkSplits::Split cannot be zero address"); - tc.checkSplits(splitAddrs, splitRatios); - } - - function test_checkSplits_ZeroRatio() public { - address payable[] memory splitAddrs = new address payable[](2); - uint8[] memory splitRatios = new uint8[](2); - - splitAddrs[0] = payable(alice); - splitAddrs[1] = payable(bob); - splitRatios[0] = 100; - splitRatios[1] = 0; - - vm.expectRevert("checkSplits::Ratio must be greater than 0"); - tc.checkSplits(splitAddrs, splitRatios); - } - - function test_senderMustHaveMarketplaceApproved_ETH() public { - // ETH doesn't need approval - tc.senderMustHaveMarketplaceApproved(address(0), 1 ether); - } - - function test_senderMustHaveMarketplaceApproved_ERC20Success() public { - uint256 amount = 1 ether; - - // Transfer RARE tokens to this contract - vm.prank(deployer); - rare.transfer(address(this), amount); - - // Approve the ERC20ApprovalManager to spend tokens - rare.approve(address(erc20ApprovalManager), amount); - - tc.senderMustHaveMarketplaceApproved(address(rare), amount); - } - - function test_senderMustHaveMarketplaceApproved_ERC20Failure() public { - uint256 amount = 1 ether; - - // Transfer RARE tokens to this contract - vm.prank(deployer); - rare.transfer(address(this), amount); - - // Approve less than the required amount - rare.approve(address(erc20ApprovalManager), amount - 1); - - vm.expectRevert("sender needs to approve ERC20ApprovalManager for currency"); - tc.senderMustHaveMarketplaceApproved(address(rare), amount); - } - - function test_checkAmountAndTransfer_ETHSuccess() public { - uint256 amount = 1 ether; - - vm.deal(address(this), amount); - tc.checkAmountAndTransfer{value: amount}(address(0), amount); - } - - function test_checkAmountAndTransfer_ETHFailure() public { - uint256 amount = 1 ether; - - vm.deal(address(this), amount - 0.1 ether); - vm.expectRevert("not enough eth sent"); - tc.checkAmountAndTransfer{value: amount - 0.1 ether}(address(0), amount); - } - - function test_checkAmountAndTransfer_ERC20Success() public { - uint256 amount = 1 ether; - - // Transfer RARE tokens to the test contract - vm.startPrank(deployer); - rare.transfer(address(this), amount); - vm.stopPrank(); - - // Approve the ERC20ApprovalManager to spend tokens - vm.prank(address(this)); - rare.approve(address(erc20ApprovalManager), amount); - - tc.checkAmountAndTransfer(address(rare), amount); - } - - function test_refund_ETH() public { - uint256 amount = 1 ether; - uint256 marketplaceFee = 3; - uint256 totalAmount = amount + ((amount * marketplaceFee) / 100); - - // Fund the test contract first - vm.deal(address(tc), totalAmount); - - tc.refund(address(0), amount, marketplaceFee, alice); - } - - function test_refund_ERC20() public { - uint256 amount = 1 ether; - uint256 marketplaceFee = 3; - uint256 totalAmount = amount + ((amount * marketplaceFee) / 100); - - vm.mockCall( - address(rare), abi.encodeWithSelector(IERC20.transfer.selector, alice, totalAmount), abi.encode(true) - ); + TestContract tc; + Payments payments; + TestRare public rare; + TestNFT public nft; + ERC20ApprovalManager public erc20ApprovalManager; + ERC721ApprovalManager public erc721ApprovalManager; + uint256 constant initialRare = 1000 * 1e18; + + address deployer = address(0xabadabab); + address alice = address(0xbeef); + address bob = address(0xcafe); + address charlie = address(0xdead); + address stakingSettings = address(0xabadaba0); + address marketplaceSettings = address(0xabadaba1); + address royaltyRegistry = address(0xabadaba2); + address royaltyEngine = address(0xabadaba3); + address spaceOperatorRegistry = address(0xabadaba6); + address approvedTokenRegistry = address(0xabadaba7); + address stakingRegistry = address(0xabadaba9); + address networkBeneficiary = address(0xabadabaa); + address rewardPool = address(0xcccc); + + function contractDeploy() internal { + vm.startPrank(deployer); + + // Deploy TestRare + rare = new TestRare(); + + // Deploy TestNFT + nft = new TestNFT(); + + // Deploy Payments + payments = new Payments(); + + // Deploy actual approval managers + erc20ApprovalManager = new ERC20ApprovalManager(); + erc721ApprovalManager = new ERC721ApprovalManager(); + + tc = new TestContract( + marketplaceSettings, + stakingSettings, + royaltyEngine, + spaceOperatorRegistry, + approvedTokenRegistry, + address(payments), + stakingRegistry, + networkBeneficiary, + address(erc20ApprovalManager), + address(erc721ApprovalManager) + ); + + // Setup operator role after test contract is created + erc20ApprovalManager.grantRole(erc20ApprovalManager.OPERATOR_ROLE(), address(tc)); + erc721ApprovalManager.grantRole(erc721ApprovalManager.OPERATOR_ROLE(), address(tc)); + + // etch code into these so we can stub out methods + vm.etch(marketplaceSettings, address(rare).code); + vm.etch(stakingSettings, address(rare).code); + vm.etch(stakingRegistry, address(rare).code); + vm.etch(royaltyRegistry, address(rare).code); + vm.etch(royaltyEngine, address(rare).code); + vm.etch(spaceOperatorRegistry, address(rare).code); + vm.etch(approvedTokenRegistry, address(rare).code); + + vm.stopPrank(); + } + + function setUp() public { + deal(deployer, 100 ether); + deal(alice, 100 ether); + deal(bob, 100 ether); + deal(charlie, 100 ether); + contractDeploy(); + vm.startPrank(deployer); + rare.transfer(alice, initialRare); + rare.transfer(bob, initialRare); + vm.stopPrank(); + } + + function test_checkIfCurrencyIsApproved_ETH() public { + // ETH (address(0)) should always be approved + tc.checkIfCurrencyIsApproved(address(0)); + } + + function test_checkIfCurrencyIsApproved_ApprovedERC20() public { + // Mock approved token check + vm.mockCall( + approvedTokenRegistry, + abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(rare)), + abi.encode(true) + ); + + tc.checkIfCurrencyIsApproved(address(rare)); + } + + function test_checkIfCurrencyIsApproved_UnapprovedERC20() public { + // Mock unapproved token check + vm.mockCall( + approvedTokenRegistry, + abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(rare)), + abi.encode(false) + ); + + vm.expectRevert("Not approved currency"); + tc.checkIfCurrencyIsApproved(address(rare)); + } + + function test_senderMustBeTokenOwner_Success() public { + address nftContract = address(0x1234); + uint256 tokenId = 1; + + // Mock NFT ownership + vm.mockCall(nftContract, abi.encodeWithSelector(IERC721.ownerOf.selector, tokenId), abi.encode(address(this))); + + vm.prank(address(this)); + tc.senderMustBeTokenOwner(nftContract, tokenId); + } + + function test_senderMustBeTokenOwner_Failure() public { + address nftContract = address(0x1234); + uint256 tokenId = 1; + + // Mock NFT ownership to different address + vm.mockCall(nftContract, abi.encodeWithSelector(IERC721.ownerOf.selector, tokenId), abi.encode(address(0x5678))); + + vm.expectRevert("sender must be the token owner"); + tc.senderMustBeTokenOwner(nftContract, tokenId); + } + + function test_addressMustHaveMarketplaceApprovedForNFT_Success() public { + // Mint NFT to alice + vm.prank(deployer); + uint256 tokenId = nft.mint(alice); + + // Have alice approve the marketplace + vm.prank(alice); + nft.setApprovalForAll(address(erc721ApprovalManager), true); + + tc.addressMustHaveMarketplaceApprovedForNFT(alice, address(nft), tokenId); + } + + function test_addressMustHaveMarketplaceApprovedForNFT_SpecificTokenSuccess() public { + // Mint NFT to alice + vm.prank(deployer); + uint256 tokenId = nft.mint(alice); + + // Have alice approve the marketplace + vm.prank(alice); + nft.setApprovalForAll(address(erc721ApprovalManager), true); + + tc.addressMustHaveMarketplaceApprovedForNFT(alice, address(nft), tokenId); + } + + function test_addressMustHaveMarketplaceApprovedForNFT_Failure() public { + // Mint NFT to alice + vm.prank(deployer); + uint256 tokenId = nft.mint(alice); + + // Don't approve the marketplace - this should fail + vm.expectRevert("owner must have approved token"); + tc.addressMustHaveMarketplaceApprovedForNFT(alice, address(nft), tokenId); + } + + function test_checkSplits_Success() public { + address payable[] memory splitAddrs = new address payable[](2); + uint8[] memory splitRatios = new uint8[](2); + + splitAddrs[0] = payable(alice); + splitAddrs[1] = payable(bob); + splitRatios[0] = 60; + splitRatios[1] = 40; + + tc.checkSplits(splitAddrs, splitRatios); + } + + function test_checkSplits_EmptyArrays() public { + address payable[] memory splitAddrs = new address payable[](0); + uint8[] memory splitRatios = new uint8[](0); - deal(address(rare), address(tc), totalAmount); - tc.refund(address(rare), amount, marketplaceFee, alice); - } + vm.expectRevert("checkSplits::Must have at least 1 split"); + tc.checkSplits(splitAddrs, splitRatios); + } - function test_payout_primary() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - - // setup isApprovedSpaceOperator - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup getERC721ContractPrimarySaleFeePercentage - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector( - IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract - ), - abi.encode(15) - ); - - // Mock royalty engine to return empty arrays for primary sale - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(new address payable[](0), new uint256[](0)) - ); - - uint256 balanceBefore = charlie.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - uint256 balanceAfter = charlie.balance; - uint256 expectedBalance = balanceBefore + ((amount * 85) / 100); - assertEq(balanceAfter, expectedBalance, "incorrect balance after payout"); - } + function test_checkSplits_TooManySplits() public { + address payable[] memory splitAddrs = new address payable[](6); + uint8[] memory splitRatios = new uint8[](6); - function test_payout_secondary() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - address payable[] memory royaltyReceiverAddrs = new address payable[](1); - uint256[] memory royaltyAmounts = new uint256[](1); - royaltyReceiverAddrs[0] = payable(alice); - royaltyAmounts[0] = (amount * 10) / 100; - - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold -- true for secondary sale - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(true) - ); - - // setup getRoyalty - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(royaltyReceiverAddrs, royaltyAmounts) - ); - - uint256 balanceBefore = charlie.balance; - uint256 aliceBalanceBefore = alice.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - uint256 balanceAfter = charlie.balance; - uint256 aliceBalanceAfter = alice.balance; - - // Seller should receive 90% (100% - 10% royalty) - uint256 expectedBalance = balanceBefore + ((amount * 90) / 100); - // Royalty receiver should receive 10% - uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 10) / 100); - - assertEq(balanceAfter, expectedBalance, "incorrect seller balance after payout"); - assertEq(aliceBalanceAfter, aliceExpectedBalance, "incorrect royalty receiver balance after payout"); - } + vm.expectRevert("checkSplits::Split exceeded max size"); + tc.checkSplits(splitAddrs, splitRatios); + } - function test_payout_primary_spaceOperator() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - - // setup isApprovedSpaceOperator -- true - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(true) - ); - - // setup getPlatformCommission -- 5% - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.getPlatformCommission.selector, charlie), - abi.encode(5) - ); - - // Mock royalty engine to return empty arrays for primary sale with space operator - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(new address payable[](0), new uint256[](0)) - ); - - uint256 balanceBefore = charlie.balance; - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - uint256 balanceAfter = charlie.balance; - - // Space operator should receive 95% (100% - 5% platform commission) - uint256 expectedBalance = balanceBefore + ((amount * 95) / 100); - assertEq(balanceAfter, expectedBalance, "incorrect balance after payout for space operator"); - } + function test_checkSplits_UnequalArrays() public { + address payable[] memory splitAddrs = new address payable[](2); + uint8[] memory splitRatios = new uint8[](3); - function test_payout_multipleRoyaltyReceivers() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // Setup multiple royalty receivers - address payable[] memory royaltyReceiverAddrs = new address payable[](2); - uint256[] memory royaltyAmounts = new uint256[](2); - royaltyReceiverAddrs[0] = payable(alice); - royaltyReceiverAddrs[1] = payable(bob); - royaltyAmounts[0] = (amount * 5) / 100; // 5% - royaltyAmounts[1] = (amount * 5) / 100; // 5% - - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold -- true for secondary sale - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(true) - ); - - // setup getRoyalty with multiple receivers - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(royaltyReceiverAddrs, royaltyAmounts) - ); - - uint256 balanceBefore = charlie.balance; - uint256 aliceBalanceBefore = alice.balance; - uint256 bobBalanceBefore = bob.balance; - - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - - uint256 balanceAfter = charlie.balance; - uint256 aliceBalanceAfter = alice.balance; - uint256 bobBalanceAfter = bob.balance; - - // Seller should receive 90% (100% - 10% total royalties) - uint256 expectedBalance = balanceBefore + ((amount * 90) / 100); - // Each royalty receiver should receive 5% - uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 5) / 100); - uint256 bobExpectedBalance = bobBalanceBefore + ((amount * 5) / 100); - - assertEq(balanceAfter, expectedBalance, "incorrect seller balance after payout"); - assertEq(aliceBalanceAfter, aliceExpectedBalance, "incorrect first royalty receiver balance after payout"); - assertEq(bobBalanceAfter, bobExpectedBalance, "incorrect second royalty receiver balance after payout"); - } + vm.expectRevert("checkSplits::Splits and ratios must be equal"); + tc.checkSplits(splitAddrs, splitRatios); + } - function test_payout_multipleSplits() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - - // Setup multiple splits - address payable[] memory splitAddrs = new address payable[](2); - uint8[] memory splitRatios = new uint8[](2); - splitAddrs[0] = payable(charlie); - splitAddrs[1] = payable(bob); - splitRatios[0] = 60; // 60% - splitRatios[1] = 40; // 40% - - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - - // setup isApprovedSpaceOperator - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup getERC721ContractPrimarySaleFeePercentage - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector( - IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract - ), - abi.encode(15) - ); - - // Mock royalty engine to return empty arrays for primary sale with splits - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(new address payable[](0), new uint256[](0)) - ); - - uint256 charlieBalanceBefore = charlie.balance; - uint256 bobBalanceBefore = bob.balance; - - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - - uint256 charlieBalanceAfter = charlie.balance; - uint256 bobBalanceAfter = bob.balance; - - // Calculate expected balances after 15% platform fee and split ratios - uint256 remainingAmount = (amount * 85) / 100; // After 15% platform fee - uint256 charlieExpectedBalance = charlieBalanceBefore + ((remainingAmount * 60) / 100); - uint256 bobExpectedBalance = bobBalanceBefore + ((remainingAmount * 40) / 100); - - assertEq(charlieBalanceAfter, charlieExpectedBalance, "incorrect first split receiver balance after payout"); - assertEq(bobBalanceAfter, bobExpectedBalance, "incorrect second split receiver balance after payout"); - } + function test_checkSplits_InvalidTotal() public { + address payable[] memory splitAddrs = new address payable[](2); + uint8[] memory splitRatios = new uint8[](2); - function test_payout_tooManyRoyaltyRecipients() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // Setup TOO MANY royalty receivers (6, when max is 5) - address payable[] memory royaltyReceiverAddrs = new address payable[](6); - uint256[] memory royaltyAmounts = new uint256[](6); - - // Fill with different addresses - royaltyReceiverAddrs[0] = payable(alice); - royaltyReceiverAddrs[1] = payable(bob); - royaltyReceiverAddrs[2] = payable(address(0x1111)); - royaltyReceiverAddrs[3] = payable(address(0x2222)); - royaltyReceiverAddrs[4] = payable(address(0x3333)); - royaltyReceiverAddrs[5] = payable(address(0x4444)); // This should be ignored - - // Each gets 1% royalty - for (uint256 i = 0; i < 6; i++) { - royaltyAmounts[i] = (amount * 1) / 100; - } - - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold -- true for secondary sale - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(true) - ); - - // setup getRoyalty with TOO MANY receivers (6) - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(royaltyReceiverAddrs, royaltyAmounts) - ); - - // Record balances before payout - uint256 charlieBalanceBefore = charlie.balance; - uint256 aliceBalanceBefore = alice.balance; - uint256 bobBalanceBefore = bob.balance; - uint256 addr1111BalanceBefore = address(0x1111).balance; - uint256 addr2222BalanceBefore = address(0x2222).balance; - uint256 addr3333BalanceBefore = address(0x3333).balance; - uint256 addr4444BalanceBefore = address(0x4444).balance; // Should not receive anything - - // Should NOT revert - should truncate to first 5 recipients - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - - // Record balances after payout - uint256 charlieBalanceAfter = charlie.balance; - uint256 aliceBalanceAfter = alice.balance; - uint256 bobBalanceAfter = bob.balance; - uint256 addr1111BalanceAfter = address(0x1111).balance; - uint256 addr2222BalanceAfter = address(0x2222).balance; - uint256 addr3333BalanceAfter = address(0x3333).balance; - uint256 addr4444BalanceAfter = address(0x4444).balance; // Should remain unchanged - - // Verify that only the first 5 recipients received royalties (1% each = 5% total) - // Seller should receive 95% (100% - 5% total royalties from first 5 recipients) - uint256 expectedSellerBalance = charlieBalanceBefore + ((amount * 95) / 100); - uint256 expectedRoyaltyPerRecipient = (amount * 1) / 100; - - assertEq(charlieBalanceAfter, expectedSellerBalance, "Seller should receive 95% after truncated royalties"); - assertEq( - aliceBalanceAfter, aliceBalanceBefore + expectedRoyaltyPerRecipient, "First recipient should receive 1%" - ); - assertEq(bobBalanceAfter, bobBalanceBefore + expectedRoyaltyPerRecipient, "Second recipient should receive 1%"); - assertEq( - addr1111BalanceAfter, - addr1111BalanceBefore + expectedRoyaltyPerRecipient, - "Third recipient should receive 1%" - ); - assertEq( - addr2222BalanceAfter, - addr2222BalanceBefore + expectedRoyaltyPerRecipient, - "Fourth recipient should receive 1%" - ); - assertEq( - addr3333BalanceAfter, - addr3333BalanceBefore + expectedRoyaltyPerRecipient, - "Fifth recipient should receive 1%" - ); - assertEq(addr4444BalanceAfter, addr4444BalanceBefore, "Sixth recipient should receive nothing (truncated)"); - } + splitAddrs[0] = payable(alice); + splitAddrs[1] = payable(bob); + splitRatios[0] = 60; + splitRatios[1] = 30; - function test_payout_truncationVerifyOrder() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // Setup 7 royalty receivers to test truncation preserves order - address payable[] memory royaltyReceiverAddrs = new address payable[](7); - uint256[] memory royaltyAmounts = new uint256[](7); - - // Use distinct amounts to verify order is preserved - royaltyReceiverAddrs[0] = payable(alice); // Should get 1% - royaltyReceiverAddrs[1] = payable(bob); // Should get 2% - royaltyReceiverAddrs[2] = payable(address(0x1111)); // Should get 3% - royaltyReceiverAddrs[3] = payable(address(0x2222)); // Should get 4% - royaltyReceiverAddrs[4] = payable(address(0x3333)); // Should get 5% - royaltyReceiverAddrs[5] = payable(address(0x4444)); // Should get nothing (truncated) - royaltyReceiverAddrs[6] = payable(address(0x5555)); // Should get nothing (truncated) - - // Different amounts to verify ordering - royaltyAmounts[0] = (amount * 1) / 100; // 1% - royaltyAmounts[1] = (amount * 2) / 100; // 2% - royaltyAmounts[2] = (amount * 3) / 100; // 3% - royaltyAmounts[3] = (amount * 4) / 100; // 4% - royaltyAmounts[4] = (amount * 5) / 100; // 5% - royaltyAmounts[5] = (amount * 6) / 100; // Should be ignored - royaltyAmounts[6] = (amount * 7) / 100; // Should be ignored - - // Mock necessary calls - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(true) - ); - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(royaltyReceiverAddrs, royaltyAmounts) - ); - - uint256 charlieBalanceBefore = charlie.balance; - uint256 aliceBalanceBefore = alice.balance; - uint256 bobBalanceBefore = bob.balance; - uint256 addr1111BalanceBefore = address(0x1111).balance; - uint256 addr2222BalanceBefore = address(0x2222).balance; - uint256 addr3333BalanceBefore = address(0x3333).balance; - uint256 addr4444BalanceBefore = address(0x4444).balance; - uint256 addr5555BalanceBefore = address(0x5555).balance; - - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - - // Verify only first 5 recipients received their respective amounts - // Total paid: 1% + 2% + 3% + 4% + 5% = 15% - // Seller should get: 100% - 15% = 85% - assertEq(charlie.balance, charlieBalanceBefore + ((amount * 85) / 100), "Seller should receive 85%"); - assertEq(alice.balance, aliceBalanceBefore + ((amount * 1) / 100), "Alice should receive 1%"); - assertEq(bob.balance, bobBalanceBefore + ((amount * 2) / 100), "Bob should receive 2%"); - assertEq( - address(0x1111).balance, addr1111BalanceBefore + ((amount * 3) / 100), "Third recipient should receive 3%" - ); - assertEq( - address(0x2222).balance, addr2222BalanceBefore + ((amount * 4) / 100), "Fourth recipient should receive 4%" - ); - assertEq( - address(0x3333).balance, addr3333BalanceBefore + ((amount * 5) / 100), "Fifth recipient should receive 5%" - ); - assertEq(address(0x4444).balance, addr4444BalanceBefore, "Sixth recipient should receive nothing"); - assertEq(address(0x5555).balance, addr5555BalanceBefore, "Seventh recipient should receive nothing"); + vm.expectRevert("checkSplits::Total must be equal to 100"); + tc.checkSplits(splitAddrs, splitRatios); + } + + function test_senderMustHaveMarketplaceApproved_ETH() public { + // ETH doesn't need approval + tc.senderMustHaveMarketplaceApproved(address(0), 1 ether); + } + + function test_senderMustHaveMarketplaceApproved_ERC20Success() public { + uint256 amount = 1 ether; + + // Transfer RARE tokens to this contract + vm.prank(deployer); + rare.transfer(address(this), amount); + + // Approve the ERC20ApprovalManager to spend tokens + rare.approve(address(erc20ApprovalManager), amount); + + tc.senderMustHaveMarketplaceApproved(address(rare), amount); + } + + function test_senderMustHaveMarketplaceApproved_ERC20Failure() public { + uint256 amount = 1 ether; + + // Transfer RARE tokens to this contract + vm.prank(deployer); + rare.transfer(address(this), amount); + + // Approve less than the required amount + rare.approve(address(erc20ApprovalManager), amount - 1); + + vm.expectRevert("sender needs to approve ERC20ApprovalManager for currency"); + tc.senderMustHaveMarketplaceApproved(address(rare), amount); + } + + function test_checkAmountAndTransfer_ETHSuccess() public { + uint256 amount = 1 ether; + + vm.deal(address(this), amount); + tc.checkAmountAndTransfer{value: amount}(address(0), amount); + } + + function test_checkAmountAndTransfer_ETHFailure() public { + uint256 amount = 1 ether; + + vm.deal(address(this), amount - 0.1 ether); + vm.expectRevert("not enough eth sent"); + tc.checkAmountAndTransfer{value: amount - 0.1 ether}(address(0), amount); + } + + function test_checkAmountAndTransfer_ERC20Success() public { + uint256 amount = 1 ether; + + // Transfer RARE tokens to the test contract + vm.startPrank(deployer); + rare.transfer(address(this), amount); + vm.stopPrank(); + + // Approve the ERC20ApprovalManager to spend tokens + vm.prank(address(this)); + rare.approve(address(erc20ApprovalManager), amount); + + tc.checkAmountAndTransfer(address(rare), amount); + } + + function test_refund_ETH() public { + uint256 amount = 1 ether; + uint256 marketplaceFee = 3; + uint256 totalAmount = amount + ((amount * marketplaceFee) / 100); + + // Fund the test contract first + vm.deal(address(tc), totalAmount); + + tc.refund(address(0), amount, marketplaceFee, alice); + } + + function test_refund_ERC20() public { + uint256 amount = 1 ether; + uint256 marketplaceFee = 3; + uint256 totalAmount = amount + ((amount * marketplaceFee) / 100); + + vm.mockCall(address(rare), abi.encodeWithSelector(IERC20.transfer.selector, alice, totalAmount), abi.encode(true)); + + deal(address(rare), address(tc), totalAmount); + tc.refund(address(rare), amount, marketplaceFee, alice); + } + + function test_payout_primary() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + + // setup isApprovedSpaceOperator + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup getERC721ContractPrimarySaleFeePercentage + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), + abi.encode(15) + ); + + // Mock royalty engine to return empty arrays for primary sale + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(new address payable[](0), new uint256[](0)) + ); + + uint256 balanceBefore = charlie.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + uint256 balanceAfter = charlie.balance; + uint256 expectedBalance = balanceBefore + ((amount * 85) / 100); + assertEq(balanceAfter, expectedBalance, "incorrect balance after payout"); + } + + function test_payout_secondary() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + address payable[] memory royaltyReceiverAddrs = new address payable[](1); + uint256[] memory royaltyAmounts = new uint256[](1); + royaltyReceiverAddrs[0] = payable(alice); + royaltyAmounts[0] = (amount * 10) / 100; + + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold -- true for secondary sale + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(true) + ); + + // setup getRoyalty + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(royaltyReceiverAddrs, royaltyAmounts) + ); + + uint256 balanceBefore = charlie.balance; + uint256 aliceBalanceBefore = alice.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + uint256 balanceAfter = charlie.balance; + uint256 aliceBalanceAfter = alice.balance; + + // Seller should receive 90% (100% - 10% royalty) + uint256 expectedBalance = balanceBefore + ((amount * 90) / 100); + // Royalty receiver should receive 10% + uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 10) / 100); + + assertEq(balanceAfter, expectedBalance, "incorrect seller balance after payout"); + assertEq(aliceBalanceAfter, aliceExpectedBalance, "incorrect royalty receiver balance after payout"); + } + + function test_payout_primary_spaceOperator() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + + // setup isApprovedSpaceOperator -- true + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(true) + ); + + // setup getPlatformCommission -- 5% + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.getPlatformCommission.selector, charlie), + abi.encode(5) + ); + + // Mock royalty engine to return empty arrays for primary sale with space operator + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(new address payable[](0), new uint256[](0)) + ); + + uint256 balanceBefore = charlie.balance; + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + uint256 balanceAfter = charlie.balance; + + // Space operator should receive 95% (100% - 5% platform commission) + uint256 expectedBalance = balanceBefore + ((amount * 95) / 100); + assertEq(balanceAfter, expectedBalance, "incorrect balance after payout for space operator"); + } + + function test_payout_multipleRoyaltyReceivers() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // Setup multiple royalty receivers + address payable[] memory royaltyReceiverAddrs = new address payable[](2); + uint256[] memory royaltyAmounts = new uint256[](2); + royaltyReceiverAddrs[0] = payable(alice); + royaltyReceiverAddrs[1] = payable(bob); + royaltyAmounts[0] = (amount * 5) / 100; // 5% + royaltyAmounts[1] = (amount * 5) / 100; // 5% + + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold -- true for secondary sale + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(true) + ); + + // setup getRoyalty with multiple receivers + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(royaltyReceiverAddrs, royaltyAmounts) + ); + + uint256 balanceBefore = charlie.balance; + uint256 aliceBalanceBefore = alice.balance; + uint256 bobBalanceBefore = bob.balance; + + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + + uint256 balanceAfter = charlie.balance; + uint256 aliceBalanceAfter = alice.balance; + uint256 bobBalanceAfter = bob.balance; + + // Seller should receive 90% (100% - 10% total royalties) + uint256 expectedBalance = balanceBefore + ((amount * 90) / 100); + // Each royalty receiver should receive 5% + uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 5) / 100); + uint256 bobExpectedBalance = bobBalanceBefore + ((amount * 5) / 100); + + assertEq(balanceAfter, expectedBalance, "incorrect seller balance after payout"); + assertEq(aliceBalanceAfter, aliceExpectedBalance, "incorrect first royalty receiver balance after payout"); + assertEq(bobBalanceAfter, bobExpectedBalance, "incorrect second royalty receiver balance after payout"); + } + + function test_payout_multipleSplits() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + + // Setup multiple splits + address payable[] memory splitAddrs = new address payable[](2); + uint8[] memory splitRatios = new uint8[](2); + splitAddrs[0] = payable(charlie); + splitAddrs[1] = payable(bob); + splitRatios[0] = 60; // 60% + splitRatios[1] = 40; // 40% + + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + + // setup isApprovedSpaceOperator + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup getERC721ContractPrimarySaleFeePercentage + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), + abi.encode(15) + ); + + // Mock royalty engine to return empty arrays for primary sale with splits + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(new address payable[](0), new uint256[](0)) + ); + + uint256 charlieBalanceBefore = charlie.balance; + uint256 bobBalanceBefore = bob.balance; + + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + + uint256 charlieBalanceAfter = charlie.balance; + uint256 bobBalanceAfter = bob.balance; + + // Calculate expected balances after 15% platform fee and split ratios + uint256 remainingAmount = (amount * 85) / 100; // After 15% platform fee + uint256 charlieExpectedBalance = charlieBalanceBefore + ((remainingAmount * 60) / 100); + uint256 bobExpectedBalance = bobBalanceBefore + ((remainingAmount * 40) / 100); + + assertEq(charlieBalanceAfter, charlieExpectedBalance, "incorrect first split receiver balance after payout"); + assertEq(bobBalanceAfter, bobExpectedBalance, "incorrect second split receiver balance after payout"); + } + + function test_payout_tooManyRoyaltyRecipients() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // Setup TOO MANY royalty receivers (6, when max is 5) + address payable[] memory royaltyReceiverAddrs = new address payable[](6); + uint256[] memory royaltyAmounts = new uint256[](6); + + // Fill with different addresses + royaltyReceiverAddrs[0] = payable(alice); + royaltyReceiverAddrs[1] = payable(bob); + royaltyReceiverAddrs[2] = payable(address(0x1111)); + royaltyReceiverAddrs[3] = payable(address(0x2222)); + royaltyReceiverAddrs[4] = payable(address(0x3333)); + royaltyReceiverAddrs[5] = payable(address(0x4444)); // This should be ignored + + // Each gets 1% royalty + for (uint256 i = 0; i < 6; i++) { + royaltyAmounts[i] = (amount * 1) / 100; } - function test_payout_exactlyMaxRoyaltyRecipients() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // Setup EXACTLY the maximum royalty receivers (5) - address payable[] memory royaltyReceiverAddrs = new address payable[](5); - uint256[] memory royaltyAmounts = new uint256[](5); - - // Fill with different addresses - royaltyReceiverAddrs[0] = payable(alice); - royaltyReceiverAddrs[1] = payable(bob); - royaltyReceiverAddrs[2] = payable(address(0x1111)); - royaltyReceiverAddrs[3] = payable(address(0x2222)); - royaltyReceiverAddrs[4] = payable(address(0x3333)); - - // Each gets 2% royalty (10% total) - for (uint256 i = 0; i < 5; i++) { - royaltyAmounts[i] = (amount * 2) / 100; - } - - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold -- true for secondary sale - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(true) - ); - - // setup getRoyalty with exactly max receivers (5) - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(royaltyReceiverAddrs, royaltyAmounts) - ); - - uint256 charlieBalanceBefore = charlie.balance; - uint256 aliceBalanceBefore = alice.balance; - uint256 bobBalanceBefore = bob.balance; - - // Should NOT revert with exactly 5 recipients - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - - uint256 charlieBalanceAfter = charlie.balance; - uint256 aliceBalanceAfter = alice.balance; - uint256 bobBalanceAfter = bob.balance; - - // Seller should receive 90% (100% - 10% total royalties) - uint256 expectedBalance = charlieBalanceBefore + ((amount * 90) / 100); - // First two royalty receivers should each receive 2% - uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 2) / 100); - uint256 bobExpectedBalance = bobBalanceBefore + ((amount * 2) / 100); - - assertEq(charlieBalanceAfter, expectedBalance, "incorrect seller balance after payout"); - assertEq(aliceBalanceAfter, aliceExpectedBalance, "incorrect first royalty receiver balance after payout"); - assertEq(bobBalanceAfter, bobExpectedBalance, "incorrect second royalty receiver balance after payout"); + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold -- true for secondary sale + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(true) + ); + + // setup getRoyalty with TOO MANY receivers (6) + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(royaltyReceiverAddrs, royaltyAmounts) + ); + + // Record balances before payout + uint256 charlieBalanceBefore = charlie.balance; + uint256 aliceBalanceBefore = alice.balance; + uint256 bobBalanceBefore = bob.balance; + uint256 addr1111BalanceBefore = address(0x1111).balance; + uint256 addr2222BalanceBefore = address(0x2222).balance; + uint256 addr3333BalanceBefore = address(0x3333).balance; + uint256 addr4444BalanceBefore = address(0x4444).balance; // Should not receive anything + + // Should NOT revert - should truncate to first 5 recipients + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + + // Record balances after payout + uint256 charlieBalanceAfter = charlie.balance; + uint256 aliceBalanceAfter = alice.balance; + uint256 bobBalanceAfter = bob.balance; + uint256 addr1111BalanceAfter = address(0x1111).balance; + uint256 addr2222BalanceAfter = address(0x2222).balance; + uint256 addr3333BalanceAfter = address(0x3333).balance; + uint256 addr4444BalanceAfter = address(0x4444).balance; // Should remain unchanged + + // Verify that only the first 5 recipients received royalties (1% each = 5% total) + // Seller should receive 95% (100% - 5% total royalties from first 5 recipients) + uint256 expectedSellerBalance = charlieBalanceBefore + ((amount * 95) / 100); + uint256 expectedRoyaltyPerRecipient = (amount * 1) / 100; + + assertEq(charlieBalanceAfter, expectedSellerBalance, "Seller should receive 95% after truncated royalties"); + assertEq(aliceBalanceAfter, aliceBalanceBefore + expectedRoyaltyPerRecipient, "First recipient should receive 1%"); + assertEq(bobBalanceAfter, bobBalanceBefore + expectedRoyaltyPerRecipient, "Second recipient should receive 1%"); + assertEq( + addr1111BalanceAfter, + addr1111BalanceBefore + expectedRoyaltyPerRecipient, + "Third recipient should receive 1%" + ); + assertEq( + addr2222BalanceAfter, + addr2222BalanceBefore + expectedRoyaltyPerRecipient, + "Fourth recipient should receive 1%" + ); + assertEq( + addr3333BalanceAfter, + addr3333BalanceBefore + expectedRoyaltyPerRecipient, + "Fifth recipient should receive 1%" + ); + assertEq(addr4444BalanceAfter, addr4444BalanceBefore, "Sixth recipient should receive nothing (truncated)"); + } + + function test_payout_truncationVerifyOrder() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // Setup 7 royalty receivers to test truncation preserves order + address payable[] memory royaltyReceiverAddrs = new address payable[](7); + uint256[] memory royaltyAmounts = new uint256[](7); + + // Use distinct amounts to verify order is preserved + royaltyReceiverAddrs[0] = payable(alice); // Should get 1% + royaltyReceiverAddrs[1] = payable(bob); // Should get 2% + royaltyReceiverAddrs[2] = payable(address(0x1111)); // Should get 3% + royaltyReceiverAddrs[3] = payable(address(0x2222)); // Should get 4% + royaltyReceiverAddrs[4] = payable(address(0x3333)); // Should get 5% + royaltyReceiverAddrs[5] = payable(address(0x4444)); // Should get nothing (truncated) + royaltyReceiverAddrs[6] = payable(address(0x5555)); // Should get nothing (truncated) + + // Different amounts to verify ordering + royaltyAmounts[0] = (amount * 1) / 100; // 1% + royaltyAmounts[1] = (amount * 2) / 100; // 2% + royaltyAmounts[2] = (amount * 3) / 100; // 3% + royaltyAmounts[3] = (amount * 4) / 100; // 4% + royaltyAmounts[4] = (amount * 5) / 100; // 5% + royaltyAmounts[5] = (amount * 6) / 100; // Should be ignored + royaltyAmounts[6] = (amount * 7) / 100; // Should be ignored + + // Mock necessary calls + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(true) + ); + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(royaltyReceiverAddrs, royaltyAmounts) + ); + + uint256 charlieBalanceBefore = charlie.balance; + uint256 aliceBalanceBefore = alice.balance; + uint256 bobBalanceBefore = bob.balance; + uint256 addr1111BalanceBefore = address(0x1111).balance; + uint256 addr2222BalanceBefore = address(0x2222).balance; + uint256 addr3333BalanceBefore = address(0x3333).balance; + uint256 addr4444BalanceBefore = address(0x4444).balance; + uint256 addr5555BalanceBefore = address(0x5555).balance; + + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + + // Verify only first 5 recipients received their respective amounts + // Total paid: 1% + 2% + 3% + 4% + 5% = 15% + // Seller should get: 100% - 15% = 85% + assertEq(charlie.balance, charlieBalanceBefore + ((amount * 85) / 100), "Seller should receive 85%"); + assertEq(alice.balance, aliceBalanceBefore + ((amount * 1) / 100), "Alice should receive 1%"); + assertEq(bob.balance, bobBalanceBefore + ((amount * 2) / 100), "Bob should receive 2%"); + assertEq( + address(0x1111).balance, + addr1111BalanceBefore + ((amount * 3) / 100), + "Third recipient should receive 3%" + ); + assertEq( + address(0x2222).balance, + addr2222BalanceBefore + ((amount * 4) / 100), + "Fourth recipient should receive 4%" + ); + assertEq( + address(0x3333).balance, + addr3333BalanceBefore + ((amount * 5) / 100), + "Fifth recipient should receive 5%" + ); + assertEq(address(0x4444).balance, addr4444BalanceBefore, "Sixth recipient should receive nothing"); + assertEq(address(0x5555).balance, addr5555BalanceBefore, "Seventh recipient should receive nothing"); + } + + function test_payout_exactlyMaxRoyaltyRecipients() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // Setup EXACTLY the maximum royalty receivers (5) + address payable[] memory royaltyReceiverAddrs = new address payable[](5); + uint256[] memory royaltyAmounts = new uint256[](5); + + // Fill with different addresses + royaltyReceiverAddrs[0] = payable(alice); + royaltyReceiverAddrs[1] = payable(bob); + royaltyReceiverAddrs[2] = payable(address(0x1111)); + royaltyReceiverAddrs[3] = payable(address(0x2222)); + royaltyReceiverAddrs[4] = payable(address(0x3333)); + + // Each gets 2% royalty (10% total) + for (uint256 i = 0; i < 5; i++) { + royaltyAmounts[i] = (amount * 2) / 100; } - function test_transferERC721_Success() public { - // Mint NFT to alice - vm.prank(deployer); - uint256 tokenId = nft.mint(alice); - - // Have alice approve the marketplace - vm.prank(alice); - nft.approve(address(erc721ApprovalManager), tokenId); - - // Transfer NFT from alice to bob - tc.transferERC721(address(nft), alice, bob, tokenId); - - // Verify the transfer happened - assertEq(nft.ownerOf(tokenId), bob, "NFT was not transferred to bob"); - } - - function test_payout_primary_noRoyalties() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold -- false for primary sale - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(false) - ); - - // setup isApprovedSpaceOperator - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup getERC721ContractPrimarySaleFeePercentage - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector( - IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract - ), - abi.encode(15) - ); - - // Mock royalty engine to return non-empty arrays to verify they are ignored - address payable[] memory royaltyReceiverAddrs = new address payable[](1); - uint256[] memory royaltyAmounts = new uint256[](1); - royaltyReceiverAddrs[0] = payable(alice); - royaltyAmounts[0] = (amount * 10) / 100; - - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(royaltyReceiverAddrs, royaltyAmounts) - ); - - uint256 charlieBalanceBefore = charlie.balance; - uint256 aliceBalanceBefore = alice.balance; - - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - - uint256 charlieBalanceAfter = charlie.balance; - uint256 aliceBalanceAfter = alice.balance; - - // Seller should receive 85% (100% - 15% primary fee) - uint256 expectedBalance = charlieBalanceBefore + ((amount * 85) / 100); - // Royalty receiver should receive nothing - uint256 aliceExpectedBalance = aliceBalanceBefore; - - assertEq(charlieBalanceAfter, expectedBalance, "incorrect seller balance after primary sale"); - assertEq( - aliceBalanceAfter, aliceExpectedBalance, "royalty receiver should not receive anything in primary sale" - ); - } - - function test_payout_secondary_noPrimaryFees() public { - address originContract = address(0xaaaa); - uint256 tokenId = 1; - address currencyAddress = address(0); - uint256 amount = 1 ether; - address payable[] memory splitAddrs = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRatios[0] = 100; - splitAddrs[0] = payable(charlie); - - // setup getRewardAccumulatorAddressForUser call - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), - abi.encode(address(0)) - ); - - // setup calculateMarketplacePayoutFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup calculateStakingFee call - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), - abi.encode(0) - ); - - // setup calculateMarketplaceFee call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), - abi.encode((amount * 3) / 100) - ); - - // setup getMarketplaceFeePercentage call - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), - abi.encode(3) - ); - - // setup hasERC721TokenSold -- true for secondary sale - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), - abi.encode(true) - ); - - // setup isApprovedSpaceOperator - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), - abi.encode(false) - ); - - // setup getERC721ContractPrimarySaleFeePercentage - should be ignored - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector( - IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract - ), - abi.encode(15) - ); - - // Mock royalty engine to return empty arrays to verify primary fees aren't paid - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), - abi.encode(new address payable[](0), new uint256[](0)) - ); - - uint256 charlieBalanceBefore = charlie.balance; - - vm.prank(deployer); - tc.payout{value: amount + ((amount * 3) / 100)}( - originContract, tokenId, currencyAddress, amount, charlie, splitAddrs, splitRatios - ); - - uint256 charlieBalanceAfter = charlie.balance; - - // Seller should receive 100% (no primary fees in secondary sale) - uint256 expectedBalance = charlieBalanceBefore + amount; - - assertEq( - charlieBalanceAfter, - expectedBalance, - "incorrect seller balance after secondary sale - primary fees should not be taken" - ); - } + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold -- true for secondary sale + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(true) + ); + + // setup getRoyalty with exactly max receivers (5) + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(royaltyReceiverAddrs, royaltyAmounts) + ); + + uint256 charlieBalanceBefore = charlie.balance; + uint256 aliceBalanceBefore = alice.balance; + uint256 bobBalanceBefore = bob.balance; + + // Should NOT revert with exactly 5 recipients + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + + uint256 charlieBalanceAfter = charlie.balance; + uint256 aliceBalanceAfter = alice.balance; + uint256 bobBalanceAfter = bob.balance; + + // Seller should receive 90% (100% - 10% total royalties) + uint256 expectedBalance = charlieBalanceBefore + ((amount * 90) / 100); + // First two royalty receivers should each receive 2% + uint256 aliceExpectedBalance = aliceBalanceBefore + ((amount * 2) / 100); + uint256 bobExpectedBalance = bobBalanceBefore + ((amount * 2) / 100); + + assertEq(charlieBalanceAfter, expectedBalance, "incorrect seller balance after payout"); + assertEq(aliceBalanceAfter, aliceExpectedBalance, "incorrect first royalty receiver balance after payout"); + assertEq(bobBalanceAfter, bobExpectedBalance, "incorrect second royalty receiver balance after payout"); + } + + function test_transferERC721_Success() public { + // Mint NFT to alice + vm.prank(deployer); + uint256 tokenId = nft.mint(alice); + + // Have alice approve the marketplace + vm.prank(alice); + nft.approve(address(erc721ApprovalManager), tokenId); + + // Transfer NFT from alice to bob + tc.transferERC721(address(nft), alice, bob, tokenId); + + // Verify the transfer happened + assertEq(nft.ownerOf(tokenId), bob, "NFT was not transferred to bob"); + } + + function test_payout_primary_noRoyalties() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold -- false for primary sale + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(false) + ); + + // setup isApprovedSpaceOperator + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup getERC721ContractPrimarySaleFeePercentage + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), + abi.encode(15) + ); + + // Mock royalty engine to return non-empty arrays to verify they are ignored + address payable[] memory royaltyReceiverAddrs = new address payable[](1); + uint256[] memory royaltyAmounts = new uint256[](1); + royaltyReceiverAddrs[0] = payable(alice); + royaltyAmounts[0] = (amount * 10) / 100; + + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(royaltyReceiverAddrs, royaltyAmounts) + ); + + uint256 charlieBalanceBefore = charlie.balance; + uint256 aliceBalanceBefore = alice.balance; + + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + + uint256 charlieBalanceAfter = charlie.balance; + uint256 aliceBalanceAfter = alice.balance; + + // Seller should receive 85% (100% - 15% primary fee) + uint256 expectedBalance = charlieBalanceBefore + ((amount * 85) / 100); + // Royalty receiver should receive nothing + uint256 aliceExpectedBalance = aliceBalanceBefore; + + assertEq(charlieBalanceAfter, expectedBalance, "incorrect seller balance after primary sale"); + assertEq(aliceBalanceAfter, aliceExpectedBalance, "royalty receiver should not receive anything in primary sale"); + } + + function test_payout_secondary_noPrimaryFees() public { + address originContract = address(0xaaaa); + uint256 tokenId = 1; + address currencyAddress = address(0); + uint256 amount = 1 ether; + address payable[] memory splitAddrs = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRatios[0] = 100; + splitAddrs[0] = payable(charlie); + + // setup getRewardAccumulatorAddressForUser call + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, charlie), + abi.encode(address(0)) + ); + + // setup calculateMarketplacePayoutFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup calculateStakingFee call + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, amount), + abi.encode(0) + ); + + // setup calculateMarketplaceFee call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, amount), + abi.encode((amount * 3) / 100) + ); + + // setup getMarketplaceFeePercentage call + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getMarketplaceFeePercentage.selector), + abi.encode(3) + ); + + // setup hasERC721TokenSold -- true for secondary sale + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.hasERC721TokenSold.selector, originContract, 1), + abi.encode(true) + ); + + // setup isApprovedSpaceOperator + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, charlie), + abi.encode(false) + ); + + // setup getERC721ContractPrimarySaleFeePercentage - should be ignored + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, originContract), + abi.encode(15) + ); + + // Mock royalty engine to return empty arrays to verify primary fees aren't paid + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, originContract, tokenId, amount), + abi.encode(new address payable[](0), new uint256[](0)) + ); + + uint256 charlieBalanceBefore = charlie.balance; + + vm.prank(deployer); + tc.payout{value: amount + ((amount * 3) / 100)}( + originContract, + tokenId, + currencyAddress, + amount, + charlie, + splitAddrs, + splitRatios + ); + + uint256 charlieBalanceAfter = charlie.balance; + + // Seller should receive 100% (no primary fees in secondary sale) + uint256 expectedBalance = charlieBalanceBefore + amount; + + assertEq( + charlieBalanceAfter, + expectedBalance, + "incorrect seller balance after secondary sale - primary fees should not be taken" + ); + } } diff --git a/src/utils/MarketUtils.sol b/src/utils/MarketUtils.sol index e610479..6ad489f 100644 --- a/src/utils/MarketUtils.sol +++ b/src/utils/MarketUtils.sol @@ -8,244 +8,244 @@ import {IPayments} from "rareprotocol/aux/payments/IPayments.sol"; import {MarketConfig} from "./structs/MarketConfig.sol"; library MarketUtils { - using SafeERC20 for IERC20; - - /// @notice Checks to see if the currenccy address is eth or an approved erc20 token. - /// @param _currencyAddress Address of currency (Zero address if eth). - function checkIfCurrencyIsApproved(MarketConfig.Config storage _config, address _currencyAddress) internal view { - require( - _currencyAddress == address(0) || _config.approvedTokenRegistry.isApprovedToken(_currencyAddress), - "Not approved currency" - ); + using SafeERC20 for IERC20; + + /// @notice Checks to see if the currenccy address is eth or an approved erc20 token. + /// @param _currencyAddress Address of currency (Zero address if eth). + function checkIfCurrencyIsApproved(MarketConfig.Config storage _config, address _currencyAddress) internal view { + require( + _currencyAddress == address(0) || _config.approvedTokenRegistry.isApprovedToken(_currencyAddress), + "Not approved currency" + ); + } + + /// @notice Checks to see if the msg sender owns the token. + /// @param _originContract Contract address of the token being checked. + /// @param _tokenId Token Id of the asset. + function senderMustBeTokenOwner(address _originContract, uint256 _tokenId) internal view { + IERC721 erc721 = IERC721(_originContract); + require(erc721.ownerOf(_tokenId) == msg.sender, "sender must be the token owner"); + } + + /// @notice Checks to see if the owner of the token has the marketplace approved. + /// @param _addr Being checked if they've approved for all + /// @param _originContract Contract address of the token being checked. + function addressMustHaveMarketplaceApprovedForNFT(address _addr, address _originContract) internal view { + IERC721 erc721 = IERC721(_originContract); + require(erc721.isApprovedForAll(_addr, address(this)), "owner must have approved contract"); + } + + /// @notice Verifies that the splits supplied are valid. + /// @dev A valid split has the same number of splits and ratios. + /// @dev There can only be a max of 5 parties split with. + /// @dev Total of the ratios should be 100 which is relative. + /// @param _splitAddrs The addresses the amount is being split with. + /// @param _splitRatios The ratios each address in _splits is getting. + function checkSplits(address payable[] calldata _splitAddrs, uint8[] calldata _splitRatios) internal pure { + require(_splitAddrs.length > 0, "checkSplits::Must have at least 1 split"); + require(_splitAddrs.length <= 5, "checkSplits::Split exceeded max size"); + require(_splitAddrs.length == _splitRatios.length, "checkSplits::Splits and ratios must be equal"); + uint256 totalRatio = 0; + + for (uint256 i = 0; i < _splitRatios.length; i++) { + totalRatio += _splitRatios[i]; } - /// @notice Checks to see if the msg sender owns the token. - /// @param _originContract Contract address of the token being checked. - /// @param _tokenId Token Id of the asset. - function senderMustBeTokenOwner(address _originContract, uint256 _tokenId) internal view { - IERC721 erc721 = IERC721(_originContract); - require(erc721.ownerOf(_tokenId) == msg.sender, "sender must be the token owner"); + require(totalRatio == 100, "checkSplits::Total must be equal to 100"); + } + + /// @notice Checks to see if the sender has approved the marketplace to move tokens. + /// @dev This is for offers/buys/bids and the allowance of erc20 tokens. + /// @dev Returns on zero address because no allowance is needed for eth. + /// @param _currency The address of the currency being checked. + /// @param _amount The total amount being checked. + function senderMustHaveMarketplaceApproved(address _currency, uint256 _amount) internal view { + if (_currency == address(0)) { + return; } - /// @notice Checks to see if the owner of the token has the marketplace approved. - /// @param _addr Being checked if they've approved for all - /// @param _originContract Contract address of the token being checked. - function addressMustHaveMarketplaceApprovedForNFT(address _addr, address _originContract) internal view { - IERC721 erc721 = IERC721(_originContract); - require(erc721.isApprovedForAll(_addr, address(this)), "owner must have approved contract"); + IERC20 erc20 = IERC20(_currency); + + require(erc20.allowance(msg.sender, address(this)) >= _amount, "sender needs to approve marketplace for currency"); + } + + /// @notice Checks the user has the correct amount and transfers to the marketplace. + /// @dev If the currency used is eth (zero address) the msg value is checked. + /// @dev If eth isnt used and eth is sent we revert the txn. + /// @dev We need to check this contracts balance before and after the transfer to ensure no fee. + /// @param _currencyAddress Currency address being checked and transfered. + /// @param _amount Total amount of currency. + function checkAmountAndTransfer(address _currencyAddress, uint256 _amount) internal { + if (_currencyAddress == address(0)) { + require(msg.value == _amount, "not enough eth sent"); + return; } - /// @notice Verifies that the splits supplied are valid. - /// @dev A valid split has the same number of splits and ratios. - /// @dev There can only be a max of 5 parties split with. - /// @dev Total of the ratios should be 100 which is relative. - /// @param _splitAddrs The addresses the amount is being split with. - /// @param _splitRatios The ratios each address in _splits is getting. - function checkSplits(address payable[] calldata _splitAddrs, uint8[] calldata _splitRatios) internal pure { - require(_splitAddrs.length > 0, "checkSplits::Must have at least 1 split"); - require(_splitAddrs.length <= 5, "checkSplits::Split exceeded max size"); - require(_splitAddrs.length == _splitRatios.length, "checkSplits::Splits and ratios must be equal"); - uint256 totalRatio = 0; - - for (uint256 i = 0; i < _splitRatios.length; i++) { - require(_splitAddrs[i] != address(0), "checkSplits::Split cannot be zero address"); - require(_splitRatios[i] > 0, "checkSplits::Ratio must be greater than 0"); - totalRatio += _splitRatios[i]; - } - - require(totalRatio == 100, "checkSplits::Total must be equal to 100"); + require(msg.value == 0, "msg.value should be 0 when not using eth"); + + IERC20 erc20 = IERC20(_currencyAddress); + uint256 balanceBefore = erc20.balanceOf(address(this)); + + erc20.safeTransferFrom(msg.sender, address(this), _amount); + + uint256 balanceAfter = erc20.balanceOf(address(this)); + + require(balanceAfter - balanceBefore == _amount, "not enough tokens transfered"); + } + + /// @notice Refunds an address the designated amount. + /// @dev Return if amount being refunded is zero. + /// @dev Forwards to payment contract if eth is being refunded. + /// @param _currencyAddress Address of currency being refunded. + /// @param _amount Amount being refunded. + /// @param _marketplaceFee Marketplace Fee (percentage) paid by _recipient. + /// @param _recipient Address amount is being refunded to. + function refund( + MarketConfig.Config storage _config, + address _currencyAddress, + uint256 _amount, + uint256 _marketplaceFee, + address _recipient + ) internal { + if (_amount == 0) { + return; } - /// @notice Checks to see if the sender has approved the marketplace to move tokens. - /// @dev This is for offers/buys/bids and the allowance of erc20 tokens. - /// @dev Returns on zero address because no allowance is needed for eth. - /// @param _currency The address of the currency being checked. - /// @param _amount The total amount being checked. - function senderMustHaveMarketplaceApproved(address _currency, uint256 _amount) internal view { - if (_currency == address(0)) { - return; - } + uint256 requiredAmount = _amount + ((_amount * _marketplaceFee) / 100); - IERC20 erc20 = IERC20(_currency); + if (_currencyAddress == address(0)) { + (bool success, bytes memory data) = address(_config.payments).call{value: requiredAmount}( + abi.encodeWithSignature("refund(address,uint256)", _recipient, requiredAmount) + ); - require( - erc20.allowance(msg.sender, address(this)) >= _amount, "sender needs to approve marketplace for currency" - ); + require(success, string(data)); + return; } - /// @notice Checks the user has the correct amount and transfers to the marketplace. - /// @dev If the currency used is eth (zero address) the msg value is checked. - /// @dev If eth isnt used and eth is sent we revert the txn. - /// @dev We need to check this contracts balance before and after the transfer to ensure no fee. - /// @param _currencyAddress Currency address being checked and transfered. - /// @param _amount Total amount of currency. - function checkAmountAndTransfer(address _currencyAddress, uint256 _amount) internal { - if (_currencyAddress == address(0)) { - require(msg.value == _amount, "not enough eth sent"); - return; - } + IERC20 erc20 = IERC20(_currencyAddress); + erc20.safeTransfer(_recipient, requiredAmount); + } + + /// @notice Sends a payout to all the necessary parties. + /// @dev Note that _splitAddrs and _splitRatios are not checked for validity. Make sure supplied values are correct by using _checkSplits. + /// @dev Sends payments to the network, royalty if applicable, and splits for the rest. + /// @dev Forwards payments to the payment contract if payout is happening in eth. + /// @dev Total amount of ratios should be 100 and is relative to the total ratio left. + /// @param _originContract Contract address of asset triggering a payout. + /// @param _tokenId Token Id of the asset. + /// @param _currencyAddress Address of currency being paid out. + /// @param _amount Total amount to be paid out. + /// @param _seller Address of the person selling the asset. + /// @param _splitAddrs Addresses that funds need to be split against. + /// @param _splitRatios Ratios for split pertaining to each address. + function payout( + MarketConfig.Config storage _config, + address _originContract, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + address _seller, + address payable[] memory _splitAddrs, + uint8[] memory _splitRatios + ) internal { + require(_splitAddrs.length == _splitRatios.length, "Number of split addresses and ratios must be equal."); + + /* + The overall flow for payouts is: + 1. Payout marketplace fee + 2. Primary/Secondary Payouts + a. Primary -> If space sale, query space operator registry for platform comission and payout + Else query marketplace setting for primary sale comission and payout + b. Secondary -> Query global royalty registry for recipients and amounts and payout + 3. Calculate the amount for each _splitAddr based on remaining amount and payout + */ + + uint256 remainingAmount = _amount; + + // Marketplace fee + uint256 marketplaceFee = _config.marketplaceSettings.calculateMarketplaceFee(_amount); + + address payable[] memory mktFeeRecip = new address payable[](2); + mktFeeRecip[0] = payable(_config.networkBeneficiary); + mktFeeRecip[1] = payable(_config.stakingRegistry.getRewardAccumulatorAddressForUser(_seller)); + mktFeeRecip[1] = mktFeeRecip[1] == address(0) ? payable(_config.networkBeneficiary) : mktFeeRecip[1]; + uint256[] memory mktFee = new uint256[](2); + mktFee[0] = _config.stakingSettings.calculateMarketplacePayoutFee(_amount); + mktFee[1] = _config.stakingSettings.calculateStakingFee(_amount); + + performPayouts(_config, _currencyAddress, marketplaceFee, mktFeeRecip, mktFee); + + if (!_config.marketplaceSettings.hasERC721TokenSold(_originContract, _tokenId)) { + uint256[] memory platformFee = new uint256[](1); + address payable[] memory platformRecip = new address payable[](1); + platformRecip[0] = mktFeeRecip[0]; + + if (_config.spaceOperatorRegistry.isApprovedSpaceOperator(_seller)) { + uint256 platformCommission = _config.spaceOperatorRegistry.getPlatformCommission(_seller); + + remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); + + platformFee[0] = (_amount * platformCommission) / 100; + + performPayouts(_config, _currencyAddress, platformFee[0], platformRecip, platformFee); + } else { + uint256 platformCommission = _config.marketplaceSettings.getERC721ContractPrimarySaleFeePercentage( + _originContract + ); - require(msg.value == 0, "msg.value should be 0 when not using eth"); + remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); - IERC20 erc20 = IERC20(_currencyAddress); - uint256 balanceBefore = erc20.balanceOf(address(this)); + platformFee[0] = (_amount * platformCommission) / 100; - erc20.safeTransferFrom(msg.sender, address(this), _amount); + performPayouts(_config, _currencyAddress, platformFee[0], platformRecip, platformFee); + } + } else { + (address payable[] memory receivers, uint256[] memory royalties) = _config.royaltyEngine.getRoyalty( + _originContract, + _tokenId, + _amount + ); - uint256 balanceAfter = erc20.balanceOf(address(this)); + uint256 totalRoyalties = 0; - require(balanceAfter - balanceBefore == _amount, "not enough tokens transfered"); - } + for (uint256 i = 0; i < royalties.length; i++) { + totalRoyalties += royalties[i]; + } - /// @notice Refunds an address the designated amount. - /// @dev Return if amount being refunded is zero. - /// @dev Forwards to payment contract if eth is being refunded. - /// @param _currencyAddress Address of currency being refunded. - /// @param _amount Amount being refunded. - /// @param _marketplaceFee Marketplace Fee (percentage) paid by _recipient. - /// @param _recipient Address amount is being refunded to. - function refund( - MarketConfig.Config storage _config, - address _currencyAddress, - uint256 _amount, - uint256 _marketplaceFee, - address _recipient - ) internal { - if (_amount == 0) { - return; - } - - uint256 requiredAmount = _amount + ((_amount * _marketplaceFee) / 100); - - if (_currencyAddress == address(0)) { - (bool success, bytes memory data) = address(_config.payments).call{value: requiredAmount}( - abi.encodeWithSignature("refund(address,uint256)", _recipient, requiredAmount) - ); - - require(success, string(data)); - return; - } - - IERC20 erc20 = IERC20(_currencyAddress); - erc20.safeTransfer(_recipient, requiredAmount); + remainingAmount -= totalRoyalties; + performPayouts(_config, _currencyAddress, totalRoyalties, receivers, royalties); } - /// @notice Sends a payout to all the necessary parties. - /// @dev Note that _splitAddrs and _splitRatios are not checked for validity. Make sure supplied values are correct by using _checkSplits. - /// @dev Sends payments to the network, royalty if applicable, and splits for the rest. - /// @dev Forwards payments to the payment contract if payout is happening in eth. - /// @dev Total amount of ratios should be 100 and is relative to the total ratio left. - /// @param _originContract Contract address of asset triggering a payout. - /// @param _tokenId Token Id of the asset. - /// @param _currencyAddress Address of currency being paid out. - /// @param _amount Total amount to be paid out. - /// @param _seller Address of the person selling the asset. - /// @param _splitAddrs Addresses that funds need to be split against. - /// @param _splitRatios Ratios for split pertaining to each address. - function payout( - MarketConfig.Config storage _config, - address _originContract, - uint256 _tokenId, - address _currencyAddress, - uint256 _amount, - address _seller, - address payable[] memory _splitAddrs, - uint8[] memory _splitRatios - ) internal { - require(_splitAddrs.length == _splitRatios.length, "Number of split addresses and ratios must be equal."); - - /* - The overall flow for payouts is: - 1. Payout marketplace fee - 2. Primary/Secondary Payouts - a. Primary -> If space sale, query space operator registry for platform comission and payout - Else query marketplace setting for primary sale comission and payout - b. Secondary -> Query global royalty registry for recipients and amounts and payout - 3. Calculate the amount for each _splitAddr based on remaining amount and payout - */ - - uint256 remainingAmount = _amount; - - // Marketplace fee - uint256 marketplaceFee = _config.marketplaceSettings.calculateMarketplaceFee(_amount); - - address payable[] memory mktFeeRecip = new address payable[](2); - mktFeeRecip[0] = payable(_config.networkBeneficiary); - mktFeeRecip[1] = payable(_config.stakingRegistry.getRewardAccumulatorAddressForUser(_seller)); - mktFeeRecip[1] = mktFeeRecip[1] == address(0) ? payable(_config.networkBeneficiary) : mktFeeRecip[1]; - uint256[] memory mktFee = new uint256[](2); - mktFee[0] = _config.stakingSettings.calculateMarketplacePayoutFee(_amount); - mktFee[1] = _config.stakingSettings.calculateStakingFee(_amount); - - performPayouts(_config, _currencyAddress, marketplaceFee, mktFeeRecip, mktFee); - - if (!_config.marketplaceSettings.hasERC721TokenSold(_originContract, _tokenId)) { - uint256[] memory platformFee = new uint256[](1); - address payable[] memory platformRecip = new address payable[](1); - platformRecip[0] = mktFeeRecip[0]; - - if (_config.spaceOperatorRegistry.isApprovedSpaceOperator(_seller)) { - uint256 platformCommission = _config.spaceOperatorRegistry.getPlatformCommission(_seller); - - remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); - - platformFee[0] = (_amount * platformCommission) / 100; - - performPayouts(_config, _currencyAddress, platformFee[0], platformRecip, platformFee); - } else { - uint256 platformCommission = - _config.marketplaceSettings.getERC721ContractPrimarySaleFeePercentage(_originContract); - - remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); - - platformFee[0] = (_amount * platformCommission) / 100; - - performPayouts(_config, _currencyAddress, platformFee[0], platformRecip, platformFee); - } - } else { - (address payable[] memory receivers, uint256[] memory royalties) = - _config.royaltyEngine.getRoyalty(_originContract, _tokenId, _amount); - - uint256 totalRoyalties = 0; - - for (uint256 i = 0; i < royalties.length; i++) { - totalRoyalties += royalties[i]; - } - - remainingAmount -= totalRoyalties; - performPayouts(_config, _currencyAddress, totalRoyalties, receivers, royalties); - } - - uint256[] memory remainingAmts = new uint256[](_splitAddrs.length); - - uint256 totalSplit = 0; - - for (uint256 i = 0; i < _splitAddrs.length; i++) { - remainingAmts[i] = (remainingAmount * _splitRatios[i]) / 100; - totalSplit += (remainingAmount * _splitRatios[i]) / 100; - } - performPayouts(_config, _currencyAddress, totalSplit, _splitAddrs, remainingAmts); - } + uint256[] memory remainingAmts = new uint256[](_splitAddrs.length); + + uint256 totalSplit = 0; - function performPayouts( - MarketConfig.Config storage _config, - address _currencyAddress, - uint256 _amount, - address payable[] memory _recipients, - uint256[] memory _amounts - ) internal { - if (_currencyAddress == address(0)) { - (bool success, bytes memory data) = address(_config.payments).call{value: _amount}( - abi.encodeWithSelector(IPayments.payout.selector, _recipients, _amounts) - ); - - require(success, string(data)); - } else { - IERC20 erc20 = IERC20(_currencyAddress); - - for (uint256 i = 0; i < _recipients.length; i++) { - erc20.safeTransfer(_recipients[i], _amounts[i]); - } - } + for (uint256 i = 0; i < _splitAddrs.length; i++) { + remainingAmts[i] = (remainingAmount * _splitRatios[i]) / 100; + totalSplit += (remainingAmount * _splitRatios[i]) / 100; + } + performPayouts(_config, _currencyAddress, totalSplit, _splitAddrs, remainingAmts); + } + + function performPayouts( + MarketConfig.Config storage _config, + address _currencyAddress, + uint256 _amount, + address payable[] memory _recipients, + uint256[] memory _amounts + ) internal { + if (_currencyAddress == address(0)) { + (bool success, bytes memory data) = address(_config.payments).call{value: _amount}( + abi.encodeWithSelector(IPayments.payout.selector, _recipients, _amounts) + ); + + require(success, string(data)); + } else { + IERC20 erc20 = IERC20(_currencyAddress); + + for (uint256 i = 0; i < _recipients.length; i++) { + erc20.safeTransfer(_recipients[i], _amounts[i]); + } } + } } diff --git a/src/v2/utils/MarketUtilsV2.sol b/src/v2/utils/MarketUtilsV2.sol index 50fab3c..d2a245b 100644 --- a/src/v2/utils/MarketUtilsV2.sol +++ b/src/v2/utils/MarketUtilsV2.sol @@ -8,341 +8,343 @@ import {IPayments} from "rareprotocol/aux/payments/IPayments.sol"; import {MarketConfigV2} from "./MarketConfigV2.sol"; library MarketUtilsV2 { - using SafeERC20 for IERC20; - - /// @notice Maximum number of royalty recipients allowed to prevent DoS attacks - uint256 public constant MAX_ROYALTY_RECIPIENTS = 5; - - /// @notice Checks to see if the currency address is eth or an approved erc20 token. - /// @param _currencyAddress Address of currency (Zero address if eth). - function checkIfCurrencyIsApproved(MarketConfigV2.Config storage _config, address _currencyAddress) internal view { - require( - _currencyAddress == address(0) || _config.approvedTokenRegistry.isApprovedToken(_currencyAddress), - "Not approved currency" - ); + using SafeERC20 for IERC20; + + /// @notice Maximum number of royalty recipients allowed to prevent DoS attacks + uint256 public constant MAX_ROYALTY_RECIPIENTS = 5; + + /// @notice Checks to see if the currency address is eth or an approved erc20 token. + /// @param _currencyAddress Address of currency (Zero address if eth). + function checkIfCurrencyIsApproved(MarketConfigV2.Config storage _config, address _currencyAddress) internal view { + require( + _currencyAddress == address(0) || _config.approvedTokenRegistry.isApprovedToken(_currencyAddress), + "Not approved currency" + ); + } + + /// @notice Checks to see if the msg sender owns the token. + /// @param _originContract Contract address of the token being checked. + /// @param _tokenId Token Id of the asset. + function senderMustBeTokenOwner(address _originContract, uint256 _tokenId) internal view { + IERC721 erc721 = IERC721(_originContract); + require(erc721.ownerOf(_tokenId) == msg.sender, "sender must be the token owner"); + } + + /// @notice Checks to see if the approval manager has approval to transfer the NFT + /// @param _originContract Contract address of the token being checked. + /// @param _tokenId Token Id of the asset. + function addressMustHaveMarketplaceApprovedForNFT( + MarketConfigV2.Config storage _config, + address _address, + address _originContract, + uint256 _tokenId + ) internal view { + IERC721 nft = IERC721(_originContract); + require(nft.isApprovedForAll(_address, address(_config.erc721ApprovalManager)), "owner must have approved token"); + } + + /// @notice Verifies that the splits supplied are valid. + /// @dev A valid split has the same number of splits and ratios. + /// @dev There can only be a max of 5 parties split with. + /// @dev Total of the ratios should be 100 which is relative. + /// @param _splitAddrs The addresses the amount is being split with. + /// @param _splitRatios The ratios each address in _splits is getting. + function checkSplits(address payable[] calldata _splitAddrs, uint8[] calldata _splitRatios) internal pure { + require(_splitAddrs.length > 0, "checkSplits::Must have at least 1 split"); + require(_splitAddrs.length <= 5, "checkSplits::Split exceeded max size"); + require(_splitAddrs.length == _splitRatios.length, "checkSplits::Splits and ratios must be equal"); + uint256 totalRatio = 0; + + for (uint256 i = 0; i < _splitRatios.length; i++) { + totalRatio += _splitRatios[i]; } - /// @notice Checks to see if the msg sender owns the token. - /// @param _originContract Contract address of the token being checked. - /// @param _tokenId Token Id of the asset. - function senderMustBeTokenOwner(address _originContract, uint256 _tokenId) internal view { - IERC721 erc721 = IERC721(_originContract); - require(erc721.ownerOf(_tokenId) == msg.sender, "sender must be the token owner"); - } - - /// @notice Checks to see if the approval manager has approval to transfer the NFT - /// @param _originContract Contract address of the token being checked. - /// @param _tokenId Token Id of the asset. - function addressMustHaveMarketplaceApprovedForNFT( - MarketConfigV2.Config storage _config, - address _address, - address _originContract, - uint256 _tokenId - ) internal view { - IERC721 nft = IERC721(_originContract); - require( - nft.isApprovedForAll(_address, address(_config.erc721ApprovalManager)), "owner must have approved token" - ); + require(totalRatio == 100, "checkSplits::Total must be equal to 100"); + } + + /// @notice Checks to see if the approval manager has approval to transfer tokens + /// @dev This is for offers/buys/bids and the allowance of erc20 tokens. + /// @dev Returns on zero address because no allowance is needed for eth. + /// @param _currency The address of the currency being checked. + /// @param _amount The total amount being checked. + function senderMustHaveMarketplaceApproved( + MarketConfigV2.Config storage _config, + address _currency, + uint256 _amount + ) internal view { + if (_currency == address(0)) { + return; } - /// @notice Verifies that the splits supplied are valid. - /// @dev A valid split has the same number of splits and ratios. - /// @dev There can only be a max of 5 parties split with. - /// @dev Total of the ratios should be 100 which is relative. - /// @param _splitAddrs The addresses the amount is being split with. - /// @param _splitRatios The ratios each address in _splits is getting. - function checkSplits(address payable[] calldata _splitAddrs, uint8[] calldata _splitRatios) internal pure { - require(_splitAddrs.length > 0, "checkSplits::Must have at least 1 split"); - require(_splitAddrs.length <= 5, "checkSplits::Split exceeded max size"); - require(_splitAddrs.length == _splitRatios.length, "checkSplits::Splits and ratios must be equal"); - uint256 totalRatio = 0; - - for (uint256 i = 0; i < _splitRatios.length; i++) { - require(_splitAddrs[i] != address(0), "checkSplits::Split cannot be zero address"); - require(_splitRatios[i] > 0, "checkSplits::Ratio must be greater than 0"); - totalRatio += _splitRatios[i]; - } - - require(totalRatio == 100, "checkSplits::Total must be equal to 100"); - } - - /// @notice Checks to see if the approval manager has approval to transfer tokens - /// @dev This is for offers/buys/bids and the allowance of erc20 tokens. - /// @dev Returns on zero address because no allowance is needed for eth. - /// @param _currency The address of the currency being checked. - /// @param _amount The total amount being checked. - function senderMustHaveMarketplaceApproved( - MarketConfigV2.Config storage _config, - address _currency, - uint256 _amount - ) internal view { - if (_currency == address(0)) { - return; - } - - IERC20 erc20 = IERC20(_currency); - require( - erc20.allowance(msg.sender, address(_config.erc20ApprovalManager)) >= _amount, - "sender needs to approve ERC20ApprovalManager for currency" - ); + IERC20 erc20 = IERC20(_currency); + require( + erc20.allowance(msg.sender, address(_config.erc20ApprovalManager)) >= _amount, + "sender needs to approve ERC20ApprovalManager for currency" + ); + } + + /// @notice Checks the user has the correct amount and transfers to the marketplace. + /// @dev If the currency used is eth (zero address) the msg value is checked. + /// @dev If eth isnt used and eth is sent we revert the txn. + /// @dev We need to check this contracts balance before and after the transfer to ensure no fee. + /// @param _config The market config + /// @param _currencyAddress Currency address being checked and transfered. + /// @param _amount Total amount of currency. + function checkAmountAndTransfer( + MarketConfigV2.Config storage _config, + address _currencyAddress, + uint256 _amount + ) internal { + if (_currencyAddress == address(0)) { + require(msg.value == _amount, "not enough eth sent"); + return; } - /// @notice Checks the user has the correct amount and transfers to the marketplace. - /// @dev If the currency used is eth (zero address) the msg value is checked. - /// @dev If eth isnt used and eth is sent we revert the txn. - /// @dev We need to check this contracts balance before and after the transfer to ensure no fee. - /// @param _config The market config - /// @param _currencyAddress Currency address being checked and transfered. - /// @param _amount Total amount of currency. - function checkAmountAndTransfer(MarketConfigV2.Config storage _config, address _currencyAddress, uint256 _amount) - internal - { - if (_currencyAddress == address(0)) { - require(msg.value == _amount, "not enough eth sent"); - return; - } - - require(msg.value == 0, "msg.value should be 0 when not using eth"); - - IERC20 erc20 = IERC20(_currencyAddress); - uint256 balanceBefore = erc20.balanceOf(address(this)); - - _config.erc20ApprovalManager.transferFrom(_currencyAddress, msg.sender, address(this), _amount); - - uint256 balanceAfter = erc20.balanceOf(address(this)); - - require(balanceAfter - balanceBefore == _amount, "not enough tokens transfered"); + require(msg.value == 0, "msg.value should be 0 when not using eth"); + + IERC20 erc20 = IERC20(_currencyAddress); + uint256 balanceBefore = erc20.balanceOf(address(this)); + + _config.erc20ApprovalManager.transferFrom(_currencyAddress, msg.sender, address(this), _amount); + + uint256 balanceAfter = erc20.balanceOf(address(this)); + + require(balanceAfter - balanceBefore == _amount, "not enough tokens transfered"); + } + + /// @notice Refunds an address the designated amount. + /// @dev Return if amount being refunded is zero. + /// @dev Forwards to payment contract if eth is being refunded. + /// @param _currencyAddress Address of currency being refunded. + /// @param _amount Amount being refunded. + /// @param _marketplaceFee Marketplace Fee (percentage) paid by _recipient. + /// @param _recipient Address amount is being refunded to. + function refund( + MarketConfigV2.Config storage _config, + address _currencyAddress, + uint256 _amount, + uint256 _marketplaceFee, + address _recipient + ) internal { + if (_amount == 0) { + return; } - /// @notice Refunds an address the designated amount. - /// @dev Return if amount being refunded is zero. - /// @dev Forwards to payment contract if eth is being refunded. - /// @param _currencyAddress Address of currency being refunded. - /// @param _amount Amount being refunded. - /// @param _marketplaceFee Marketplace Fee (percentage) paid by _recipient. - /// @param _recipient Address amount is being refunded to. - function refund( - MarketConfigV2.Config storage _config, - address _currencyAddress, - uint256 _amount, - uint256 _marketplaceFee, - address _recipient - ) internal { - if (_amount == 0) { - return; - } - - uint256 requiredAmount = _amount + ((_amount * _marketplaceFee) / 100); - - if (_currencyAddress == address(0)) { - (bool success, bytes memory data) = address(_config.payments).call{value: requiredAmount}( - abi.encodeWithSignature("refund(address,uint256)", _recipient, requiredAmount) - ); + uint256 requiredAmount = _amount + ((_amount * _marketplaceFee) / 100); - require(success, string(data)); - return; - } - - IERC20 erc20 = IERC20(_currencyAddress); - erc20.safeTransfer(_recipient, requiredAmount); - } + if (_currencyAddress == address(0)) { + (bool success, bytes memory data) = address(_config.payments).call{value: requiredAmount}( + abi.encodeWithSignature("refund(address,uint256)", _recipient, requiredAmount) + ); - /// @notice Sends a payout to all the necessary parties. - /// @dev Note that _splitAddrs and _splitRatios are not checked for validity. Make sure supplied values are correct by using _checkSplits. - /// @dev Sends payments to the network, royalty if applicable, and splits for the rest. - /// @dev Forwards payments to the payment contract if payout is happening in eth. - /// @dev Total amount of ratios should be 100 and is relative to the total ratio left. - /// @param _originContract Contract address of asset triggering a payout. - /// @param _tokenId Token Id of the asset. - /// @param _currencyAddress Address of currency being paid out. - /// @param _amount Total amount to be paid out. - /// @param _seller Address of the person selling the asset. - /// @param _splitAddrs Addresses that funds need to be split against. - /// @param _splitRatios Ratios for split pertaining to each address. - function payout( - MarketConfigV2.Config storage _config, - address _originContract, - uint256 _tokenId, - address _currencyAddress, - uint256 _amount, - address _seller, - address payable[] memory _splitAddrs, - uint8[] memory _splitRatios - ) internal { - payoutWithMarketplaceFee( - _config, - _originContract, - _tokenId, - _currencyAddress, - _amount, - _seller, - _splitAddrs, - _splitRatios, - _config.marketplaceSettings.getMarketplaceFeePercentage() - ); + require(success, string(data)); + return; } - /// @notice Sends a payout to all the necessary parties with a specific marketplace fee percentage. - /// @dev Note that _splitAddrs and _splitRatios are not checked for validity. Make sure supplied values are correct by using _checkSplits. - /// @dev Sends payments to the network, royalty if applicable, and splits for the rest. - /// @dev Forwards payments to the payment contract if payout is happening in eth. - /// @dev Total amount of ratios should be 100 and is relative to the total ratio left. - /// @param _originContract Contract address of asset triggering a payout. - /// @param _tokenId Token Id of the asset. - /// @param _currencyAddress Address of currency being paid out. - /// @param _amount Total amount to be paid out. - /// @param _seller Address of the person selling the asset. - /// @param _splitAddrs Addresses that funds need to be split against. - /// @param _splitRatios Ratios for split pertaining to each address. - /// @param _marketplaceFeePercentage The marketplace fee percentage to use for this payout. - function payoutWithMarketplaceFee( - MarketConfigV2.Config storage _config, - address _originContract, - uint256 _tokenId, - address _currencyAddress, - uint256 _amount, - address _seller, - address payable[] memory _splitAddrs, - uint8[] memory _splitRatios, - uint8 _marketplaceFeePercentage - ) internal { - require(_splitAddrs.length == _splitRatios.length, "Number of split addresses and ratios must be equal."); - - /* - The overall flow for payouts is: - 1. Payout marketplace fee - 2. Primary/Secondary Payouts - a. Primary -> If space sale, query space operator registry for platform comission and payout - Else query marketplace setting for primary sale comission and payout - b. Secondary -> Query global royalty registry for recipients and amounts and payout - 3. Calculate the amount for each _splitAddr based on remaining amount and payout - */ - - uint256 remainingAmount = _amount; - - // Marketplace fee - use the provided fee percentage instead of current settings - uint256 marketplaceFee = (_amount * _marketplaceFeePercentage) / 100; - - address payable[] memory mktFeeRecip = new address payable[](2); - mktFeeRecip[0] = payable(_config.networkBeneficiary); - mktFeeRecip[1] = payable(_config.stakingRegistry.getRewardAccumulatorAddressForUser(_seller)); - mktFeeRecip[1] = mktFeeRecip[1] == address(0) ? payable(_config.networkBeneficiary) : mktFeeRecip[1]; - uint256[] memory mktFee = new uint256[](2); - require( - marketplaceFee - _config.stakingSettings.calculateStakingFee(_amount) >= 0, - "Marketplace fee is less than staking fee" + IERC20 erc20 = IERC20(_currencyAddress); + erc20.safeTransfer(_recipient, requiredAmount); + } + + /// @notice Sends a payout to all the necessary parties. + /// @dev Note that _splitAddrs and _splitRatios are not checked for validity. Make sure supplied values are correct by using _checkSplits. + /// @dev Sends payments to the network, royalty if applicable, and splits for the rest. + /// @dev Forwards payments to the payment contract if payout is happening in eth. + /// @dev Total amount of ratios should be 100 and is relative to the total ratio left. + /// @param _originContract Contract address of asset triggering a payout. + /// @param _tokenId Token Id of the asset. + /// @param _currencyAddress Address of currency being paid out. + /// @param _amount Total amount to be paid out. + /// @param _seller Address of the person selling the asset. + /// @param _splitAddrs Addresses that funds need to be split against. + /// @param _splitRatios Ratios for split pertaining to each address. + function payout( + MarketConfigV2.Config storage _config, + address _originContract, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + address _seller, + address payable[] memory _splitAddrs, + uint8[] memory _splitRatios + ) internal { + payoutWithMarketplaceFee( + _config, + _originContract, + _tokenId, + _currencyAddress, + _amount, + _seller, + _splitAddrs, + _splitRatios, + _config.marketplaceSettings.getMarketplaceFeePercentage() + ); + } + + /// @notice Sends a payout to all the necessary parties with a specific marketplace fee percentage. + /// @dev Note that _splitAddrs and _splitRatios are not checked for validity. Make sure supplied values are correct by using _checkSplits. + /// @dev Sends payments to the network, royalty if applicable, and splits for the rest. + /// @dev Forwards payments to the payment contract if payout is happening in eth. + /// @dev Total amount of ratios should be 100 and is relative to the total ratio left. + /// @param _originContract Contract address of asset triggering a payout. + /// @param _tokenId Token Id of the asset. + /// @param _currencyAddress Address of currency being paid out. + /// @param _amount Total amount to be paid out. + /// @param _seller Address of the person selling the asset. + /// @param _splitAddrs Addresses that funds need to be split against. + /// @param _splitRatios Ratios for split pertaining to each address. + /// @param _marketplaceFeePercentage The marketplace fee percentage to use for this payout. + function payoutWithMarketplaceFee( + MarketConfigV2.Config storage _config, + address _originContract, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + address _seller, + address payable[] memory _splitAddrs, + uint8[] memory _splitRatios, + uint8 _marketplaceFeePercentage + ) internal { + require(_splitAddrs.length == _splitRatios.length, "Number of split addresses and ratios must be equal."); + + /* + The overall flow for payouts is: + 1. Payout marketplace fee + 2. Primary/Secondary Payouts + a. Primary -> If space sale, query space operator registry for platform comission and payout + Else query marketplace setting for primary sale comission and payout + b. Secondary -> Query global royalty registry for recipients and amounts and payout + 3. Calculate the amount for each _splitAddr based on remaining amount and payout + */ + + uint256 remainingAmount = _amount; + + // Marketplace fee - use the provided fee percentage instead of current settings + uint256 marketplaceFee = (_amount * _marketplaceFeePercentage) / 100; + + address payable[] memory mktFeeRecip = new address payable[](2); + mktFeeRecip[0] = payable(_config.networkBeneficiary); + mktFeeRecip[1] = payable(_config.stakingRegistry.getRewardAccumulatorAddressForUser(_seller)); + mktFeeRecip[1] = mktFeeRecip[1] == address(0) ? payable(_config.networkBeneficiary) : mktFeeRecip[1]; + uint256[] memory mktFee = new uint256[](2); + require( + marketplaceFee - _config.stakingSettings.calculateStakingFee(_amount) >= 0, + "Marketplace fee is less than staking fee" + ); + mktFee[0] = marketplaceFee - _config.stakingSettings.calculateStakingFee(_amount); // All marketplace fee goes to network beneficiary + mktFee[1] = _config.stakingSettings.calculateStakingFee(_amount); // Staking fee for this implementation + + performPayouts(_config, _currencyAddress, marketplaceFee, mktFeeRecip, mktFee); + + if (!_config.marketplaceSettings.hasERC721TokenSold(_originContract, _tokenId)) { + uint256[] memory platformFee = new uint256[](1); + address payable[] memory platformRecip = new address payable[](1); + platformRecip[0] = mktFeeRecip[0]; + + if (_config.spaceOperatorRegistry.isApprovedSpaceOperator(_seller)) { + uint256 platformCommission = _config.spaceOperatorRegistry.getPlatformCommission(_seller); + + remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); + + platformFee[0] = (_amount * platformCommission) / 100; + + performPayouts(_config, _currencyAddress, platformFee[0], platformRecip, platformFee); + } else { + uint256 platformCommission = _config.marketplaceSettings.getERC721ContractPrimarySaleFeePercentage( + _originContract ); - mktFee[0] = marketplaceFee - _config.stakingSettings.calculateStakingFee(_amount); // All marketplace fee goes to network beneficiary - mktFee[1] = _config.stakingSettings.calculateStakingFee(_amount); // Staking fee for this implementation - - performPayouts(_config, _currencyAddress, marketplaceFee, mktFeeRecip, mktFee); - - if (!_config.marketplaceSettings.hasERC721TokenSold(_originContract, _tokenId)) { - uint256[] memory platformFee = new uint256[](1); - address payable[] memory platformRecip = new address payable[](1); - platformRecip[0] = mktFeeRecip[0]; - - if (_config.spaceOperatorRegistry.isApprovedSpaceOperator(_seller)) { - uint256 platformCommission = _config.spaceOperatorRegistry.getPlatformCommission(_seller); - - remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); - - platformFee[0] = (_amount * platformCommission) / 100; - - performPayouts(_config, _currencyAddress, platformFee[0], platformRecip, platformFee); - } else { - uint256 platformCommission = - _config.marketplaceSettings.getERC721ContractPrimarySaleFeePercentage(_originContract); - - remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); - platformFee[0] = (_amount * platformCommission) / 100; - - performPayouts(_config, _currencyAddress, platformFee[0], platformRecip, platformFee); - } - } else { - // Get royalty recipients and amounts for secondary sale - (address payable[] memory recipients, uint256[] memory amounts) = - _config.royaltyEngine.getRoyalty(_originContract, _tokenId, _amount); - - // Check for maximum royalty recipients to prevent DoS attacks - if (recipients.length > MAX_ROYALTY_RECIPIENTS) { - // Create new arrays with truncated recipients - address payable[] memory truncatedRecipients = new address payable[](MAX_ROYALTY_RECIPIENTS); - uint256[] memory truncatedAmounts = new uint256[](MAX_ROYALTY_RECIPIENTS); - - for (uint256 i = 0; i < MAX_ROYALTY_RECIPIENTS; i++) { - truncatedRecipients[i] = recipients[i]; - truncatedAmounts[i] = amounts[i]; - } - - recipients = truncatedRecipients; - amounts = truncatedAmounts; - } + remainingAmount = remainingAmount - ((_amount * platformCommission) / 100); + + platformFee[0] = (_amount * platformCommission) / 100; + + performPayouts(_config, _currencyAddress, platformFee[0], platformRecip, platformFee); + } + } else { + // Get royalty recipients and amounts for secondary sale + (address payable[] memory recipients, uint256[] memory amounts) = _config.royaltyEngine.getRoyalty( + _originContract, + _tokenId, + _amount + ); + + // Check for maximum royalty recipients to prevent DoS attacks + if (recipients.length > MAX_ROYALTY_RECIPIENTS) { + // Create new arrays with truncated recipients + address payable[] memory truncatedRecipients = new address payable[](MAX_ROYALTY_RECIPIENTS); + uint256[] memory truncatedAmounts = new uint256[](MAX_ROYALTY_RECIPIENTS); + + for (uint256 i = 0; i < MAX_ROYALTY_RECIPIENTS; i++) { + truncatedRecipients[i] = recipients[i]; + truncatedAmounts[i] = amounts[i]; + } - // Calculate total royalty amount - uint256 totalRoyaltyAmount = 0; - for (uint256 i = 0; i < amounts.length; i++) { - totalRoyaltyAmount += amounts[i]; - } + recipients = truncatedRecipients; + amounts = truncatedAmounts; + } - remainingAmount = remainingAmount - totalRoyaltyAmount; + // Calculate total royalty amount + uint256 totalRoyaltyAmount = 0; + for (uint256 i = 0; i < amounts.length; i++) { + totalRoyaltyAmount += amounts[i]; + } - // Pay out royalties - performPayouts(_config, _currencyAddress, totalRoyaltyAmount, recipients, amounts); - } + remainingAmount = remainingAmount - totalRoyaltyAmount; - // Calculate and pay out splits - uint256[] memory splitAmounts = new uint256[](_splitRatios.length); - for (uint256 i = 0; i < _splitRatios.length; i++) { - splitAmounts[i] = (remainingAmount * _splitRatios[i]) / 100; - } - - performPayouts(_config, _currencyAddress, remainingAmount, _splitAddrs, splitAmounts); + // Pay out royalties + performPayouts(_config, _currencyAddress, totalRoyaltyAmount, recipients, amounts); } - /// @notice Performs payouts to recipients. - /// @dev If eth is being paid out, forwards to payment contract. - /// @dev If erc20 is being paid out, transfers directly. - /// @param _currencyAddress Address of currency being paid out. - /// @param _totalAmount Total amount being paid out. - /// @param _recipients Recipients of the payouts. - /// @param _amounts Amounts pertaining to each recipient. - function performPayouts( - MarketConfigV2.Config storage _config, - address _currencyAddress, - uint256 _totalAmount, - address payable[] memory _recipients, - uint256[] memory _amounts - ) internal { - if (_currencyAddress == address(0)) { - (bool success, bytes memory data) = address(_config.payments).call{value: _totalAmount}( - abi.encodeWithSignature("payout(address[],uint256[])", _recipients, _amounts) - ); - - require(success, string(data)); - return; - } + // Calculate and pay out splits + uint256[] memory splitAmounts = new uint256[](_splitRatios.length); + for (uint256 i = 0; i < _splitRatios.length; i++) { + splitAmounts[i] = (remainingAmount * _splitRatios[i]) / 100; + } - IERC20 erc20 = IERC20(_currencyAddress); - for (uint256 i = 0; i < _recipients.length; i++) { - erc20.safeTransfer(_recipients[i], _amounts[i]); - } + performPayouts(_config, _currencyAddress, remainingAmount, _splitAddrs, splitAmounts); + } + + /// @notice Performs payouts to recipients. + /// @dev If eth is being paid out, forwards to payment contract. + /// @dev If erc20 is being paid out, transfers directly. + /// @param _currencyAddress Address of currency being paid out. + /// @param _totalAmount Total amount being paid out. + /// @param _recipients Recipients of the payouts. + /// @param _amounts Amounts pertaining to each recipient. + function performPayouts( + MarketConfigV2.Config storage _config, + address _currencyAddress, + uint256 _totalAmount, + address payable[] memory _recipients, + uint256[] memory _amounts + ) internal { + if (_currencyAddress == address(0)) { + (bool success, bytes memory data) = address(_config.payments).call{value: _totalAmount}( + abi.encodeWithSignature("payout(address[],uint256[])", _recipients, _amounts) + ); + + require(success, string(data)); + return; } - /// @notice Transfers an ERC721 token using the approval manager - /// @param _config The market config - /// @param _originContract The address of the ERC721 contract - /// @param _from The current owner of the token - /// @param _to The recipient of the token - /// @param _tokenId The ID of the token being transferred - function transferERC721( - MarketConfigV2.Config storage _config, - address _originContract, - address _from, - address _to, - uint256 _tokenId - ) internal { - _config.erc721ApprovalManager.transferFrom(_originContract, _from, _to, _tokenId); + IERC20 erc20 = IERC20(_currencyAddress); + for (uint256 i = 0; i < _recipients.length; i++) { + erc20.safeTransfer(_recipients[i], _amounts[i]); } + } + + /// @notice Transfers an ERC721 token using the approval manager + /// @param _config The market config + /// @param _originContract The address of the ERC721 contract + /// @param _from The current owner of the token + /// @param _to The recipient of the token + /// @param _tokenId The ID of the token being transferred + function transferERC721( + MarketConfigV2.Config storage _config, + address _originContract, + address _from, + address _to, + uint256 _tokenId + ) internal { + _config.erc721ApprovalManager.transferFrom(_originContract, _from, _to, _tokenId); + } } From 9f2117496c0d028c4a1fcc6e9776af267d2fed4c Mon Sep 17 00:00:00 2001 From: Keegan Date: Sat, 30 May 2026 19:34:15 -0400 Subject: [PATCH 03/17] Update ERC1155 implementations --- abis/IRareERC1155.json | 2 +- abis/IRareERC1155Listings.json | 1 + abis/IRareERC1155Marketplace.json | 1 - abis/RareERC1155.json | 2 +- abis/RareERC1155Listings.json | 1 + abis/RareERC1155Marketplace.json | 1 - ....s.sol => RareERC1155ListingsDeploy.s.sol} | 10 +- ...l => RareERC1155ListingsLogicUpdate.s.sol} | 14 +- ...rketplace.sol => IRareERC1155Listings.sol} | 204 ++-- ...arketplace.sol => RareERC1155Listings.sol} | 900 ++++++++++++------ ...tplace.t.sol => RareERC1155Listings.t.sol} | 775 ++++++++++++--- src/test/token/ERC1155/RareERC1155.t.sol | 160 +++- src/token/ERC1155/IRareERC1155.sol | 90 +- src/token/ERC1155/RareERC1155.sol | 159 ++-- 14 files changed, 1711 insertions(+), 609 deletions(-) create mode 100644 abis/IRareERC1155Listings.json delete mode 100644 abis/IRareERC1155Marketplace.json create mode 100644 abis/RareERC1155Listings.json delete mode 100644 abis/RareERC1155Marketplace.json rename script/marketplace/{RareERC1155MarketplaceDeploy.s.sol => RareERC1155ListingsDeploy.s.sol} (90%) rename script/marketplace/{RareERC1155MarketplaceLogicUpdate.s.sol => RareERC1155ListingsLogicUpdate.s.sol} (61%) rename src/marketplace/{IRareERC1155Marketplace.sol => IRareERC1155Listings.sol} (79%) rename src/marketplace/{RareERC1155Marketplace.sol => RareERC1155Listings.sol} (55%) rename src/test/marketplace/{RareERC1155Marketplace.t.sol => RareERC1155Listings.t.sol} (55%) diff --git a/abis/IRareERC1155.json b/abis/IRareERC1155.json index 0ac79a7..1f8b70d 100644 --- a/abis/IRareERC1155.json +++ b/abis/IRareERC1155.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"},{"name":"_royaltyReceiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyReceiverForToken","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"_interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"},{"name":"royaltyReceiver","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"createToken(string,uint256)":"72b3b620","createToken(string,uint256,address)":"1542bb95","disableContract()":"894ba833","disabled()":"ee070805","init(string,string,string,address,address)":"a7eae21c","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","setRoyaltyReceiverForToken(address,uint256)":"efc32cd4","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"royaltyReceiver\",\"type\":\"address\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_royaltyReceiver\",\"type\":\"address\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"setRoyaltyReceiverForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Extends the RARE `ITokenCreator` interface so marketplace and royalty infrastructure can resolve creators per token id.\",\"errors\":{\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,uint256,string,address)\":{\"params\":{\"creator\":\"RARE creator recorded for the token id.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"royaltyReceiver\":\"ERC2981 royalty receiver configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}}},\"kind\":\"dev\",\"methods\":{\"createToken(string,uint256)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"createToken(string,uint256,address)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_royaltyReceiver\":\"Address that receives ERC2981 royalties for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"disabled()\":{\"returns\":{\"_0\":\"True when disabled.\"}},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and default royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"The minted token id.\"}},\"name()\":{\"returns\":{\"_0\":\"Collection name.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"setRoyaltyReceiverForToken(address,uint256)\":{\"params\":{\"_receiver\":\"New royalty receiver for the token id.\",\"_tokenId\":\"Token id whose royalty receiver is updated.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"Interface id to inspect.\"},\"returns\":{\"_0\":\"True when the interface id is supported.\"}},\"symbol()\":{\"returns\":{\"_0\":\"Collection symbol.\"}},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"title\":\"IRareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,uint256,string,address)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"createToken(string,uint256)\":{\"notice\":\"Creates a new token type using the caller as the royalty receiver.\"},\"createToken(string,uint256,address)\":{\"notice\":\"Creates a new token type with a token-specific URI, max supply, and royalty receiver.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints an existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the fallback royalty receiver for tokens that rely on default royalties.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes minter approval for an address.\"},\"setRoyaltyReceiverForToken(address,uint256)\":{\"notice\":\"Updates the royalty receiver for a specific token id.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Returns whether this contract supports an interface id.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Interface for the RARE Protocol ERC1155 token.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/IRareERC1155.sol\":\"IRareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x9dc23a2064e31818e89092b5935ab96079a99b29e1aa1456565ee698d3fd23a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5aaa41dbed645e29ec41a7159bee7a10519ebaa71fb86187bd109aba732db40\",\"dweb:/ipfs/Qma3yM1SZuHAxo6HS16uFMX1yVVqikkXX9v6n5op5Tss1V\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false},{"internalType":"address","name":"royaltyReceiver","type":"address","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"address","name":"_royaltyReceiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyReceiverForToken"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"createToken(string,uint256)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"createToken(string,uint256,address)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_royaltyReceiver":"Address that receives ERC2981 royalties for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"disabled()":{"returns":{"_0":"True when disabled."}},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and default royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"The minted token id."}},"name()":{"returns":{"_0":"Collection name."}},"setDefaultRoyaltyReceiver(address)":{"params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"setRoyaltyReceiverForToken(address,uint256)":{"params":{"_receiver":"New royalty receiver for the token id.","_tokenId":"Token id whose royalty receiver is updated."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"Interface id to inspect."},"returns":{"_0":"True when the interface id is supported."}},"symbol()":{"returns":{"_0":"Collection symbol."}},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"createToken(string,uint256)":{"notice":"Creates a new token type using the caller as the royalty receiver."},"createToken(string,uint256,address)":{"notice":"Creates a new token type with a token-specific URI, max supply, and royalty receiver."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintTo(address,uint256,uint256)":{"notice":"Mints an existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the fallback royalty receiver for tokens that rely on default royalties."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes minter approval for an address."},"setRoyaltyReceiverForToken(address,uint256)":{"notice":"Updates the royalty receiver for a specific token id."},"supportsInterface(bytes4)":{"notice":"Returns whether this contract supports an interface id."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/IRareERC1155.sol":"IRareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x9dc23a2064e31818e89092b5935ab96079a99b29e1aa1456565ee698d3fd23a6","urls":["bzz-raw://d5aaa41dbed645e29ec41a7159bee7a10519ebaa71fb86187bd109aba732db40","dweb:/ipfs/Qma3yM1SZuHAxo6HS16uFMX1yVVqikkXX9v6n5op5Tss1V"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":211} \ No newline at end of file +{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintBatchTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"royaltyAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setDefaultRoyaltyPercentage","inputs":[{"name":"_percentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"BatchLengthMismatch","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"RoyaltyPercentageTooHigh","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","createToken(string,uint256)":"72b3b620","disableContract()":"894ba833","disabled()":"ee070805","init(string,string,string,address,address)":"a7eae21c","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintBatchTo(address,uint256[],uint256[])":"3512639c","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","royaltyInfo(uint256,uint256)":"2a55205a","setDefaultRoyaltyPercentage(uint256)":"e27a41bf","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RoyaltyPercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBatchTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_percentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRoyaltyPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Extends the RARE `ITokenCreator` interface so marketplace and royalty infrastructure can resolve creators per token id.\",\"errors\":{\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported percentage.\",\"supplied\":\"Percentage supplied by the caller.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"params\":{\"tokenId\":\"Token id that is not greater than the previous token id.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,uint256,string)\":{\"params\":{\"creator\":\"RARE creator recorded for the token id.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}}},\"kind\":\"dev\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"createToken(string,uint256)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"disabled()\":{\"returns\":{\"_0\":\"True when disabled.\"}},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and ERC2981 royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintBatchTo(address,uint256[],uint256[])\":{\"details\":\"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.\",\"params\":{\"_amounts\":\"Quantities to mint for each token id.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenIds\":\"Existing token ids to mint.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"Minted token id.\"}},\"name()\":{\"returns\":{\"_0\":\"Collection name.\"}},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"params\":{\"_percentage\":\"New royalty percentage, expressed as whole percentage points.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"details\":\"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.\",\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"returns\":{\"_0\":\"Collection symbol.\"}},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"title\":\"IRareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"BatchLengthMismatch()\":[{\"notice\":\"Reverted when parallel batch arrays have different lengths.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"notice\":\"Reverted when the default royalty percentage is above 100%.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,uint256,string)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch mint operations.\"},\"createToken(string,uint256)\":{\"notice\":\"Creates a new token type.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintBatchTo(address,uint256[],uint256[])\":{\"notice\":\"Mints existing token ids to a receiver.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints one existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"notice\":\"Updates the collection-wide ERC2981 royalty percentage.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the collection-wide ERC2981 royalty receiver.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes collection-wide minter approval for an address.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Interface for the RARE Protocol ERC1155 token.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/IRareERC1155.sol\":\"IRareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x423f16f31739668c0162422d91b2f9eea3769de9389d876d876928369b298976\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b942a7152ad01624065e302e75505c551348ddeca2bbb80d2ce556a0d15b0b2a\",\"dweb:/ipfs/QmQrtDpdLvntxFnh9tqFVUiRQPHQpf5BZjGp9PhM558gvJ\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[],"type":"error","name":"BatchLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"RoyaltyPercentageTooHigh"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[],"stateMutability":"pure","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"mintBatchTo"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyPercentage"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"MAX_BATCH_SIZE()":{"returns":{"_0":"Maximum supported batch item count."}},"createToken(string,uint256)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"disabled()":{"returns":{"_0":"True when disabled."}},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and ERC2981 royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintBatchTo(address,uint256[],uint256[])":{"details":"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.","params":{"_amounts":"Quantities to mint for each token id.","_receiver":"Address that receives the minted tokens.","_tokenIds":"Existing token ids to mint."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"Minted token id."}},"name()":{"returns":{"_0":"Collection name."}},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"setDefaultRoyaltyPercentage(uint256)":{"params":{"_percentage":"New royalty percentage, expressed as whole percentage points."}},"setDefaultRoyaltyReceiver(address)":{"params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"details":"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.","params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"returns":{"_0":"Collection symbol."}},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch mint operations."},"createToken(string,uint256)":{"notice":"Creates a new token type."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintBatchTo(address,uint256[],uint256[])":{"notice":"Mints existing token ids to a receiver."},"mintTo(address,uint256,uint256)":{"notice":"Mints one existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"setDefaultRoyaltyPercentage(uint256)":{"notice":"Updates the collection-wide ERC2981 royalty percentage."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the collection-wide ERC2981 royalty receiver."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes collection-wide minter approval for an address."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/IRareERC1155.sol":"IRareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x423f16f31739668c0162422d91b2f9eea3769de9389d876d876928369b298976","urls":["bzz-raw://b942a7152ad01624065e302e75505c551348ddeca2bbb80d2ce556a0d15b0b2a","dweb:/ipfs/QmQrtDpdLvntxFnh9tqFVUiRQPHQpf5BZjGp9PhM558gvJ"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":81} \ No newline at end of file diff --git a/abis/IRareERC1155Listings.json b/abis/IRareERC1155Listings.json new file mode 100644 index 0000000..c3b4d04 --- /dev/null +++ b/abis/IRareERC1155Listings.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"cancelSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getDirectSaleConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Listings.DirectSaleConfig","components":[{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getERC1155ApprovalManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getMarketConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct MarketConfigV2.Config","components":[{"name":"networkBeneficiary","type":"address","internalType":"address"},{"name":"marketplaceSettings","type":"address","internalType":"contract IMarketplaceSettings"},{"name":"spaceOperatorRegistry","type":"address","internalType":"contract ISpaceOperatorRegistry"},{"name":"royaltyEngine","type":"address","internalType":"contract IRoyaltyEngineV1"},{"name":"payments","type":"address","internalType":"contract IPayments"},{"name":"approvedTokenRegistry","type":"address","internalType":"contract IApprovedTokenRegistry"},{"name":"stakingSettings","type":"address","internalType":"contract IStakingSettings"},{"name":"stakingRegistry","type":"address","internalType":"contract IRareStakingRegistry"},{"name":"erc20ApprovalManager","type":"address","internalType":"contract IERC20ApprovalManager"},{"name":"erc721ApprovalManager","type":"address","internalType":"contract IERC721ApprovalManager"}]}],"stateMutability":"view"},{"type":"function","name":"getSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Listings.SalePrice","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenAllowListConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Listings.AllowListConfig","components":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenMintsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"},{"name":"_marketplaceSettings","type":"address","internalType":"address"},{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"},{"name":"_royaltyEngine","type":"address","internalType":"address"},{"name":"_payments","type":"address","internalType":"address"},{"name":"_approvedTokenRegistry","type":"address","internalType":"address"},{"name":"_stakingSettings","type":"address","internalType":"address"},{"name":"_stakingRegistry","type":"address","internalType":"address"},{"name":"_erc20ApprovalManager","type":"address","internalType":"address"},{"name":"_erc721ApprovalManager","type":"address","internalType":"address"},{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"prepareMintDirectSales","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.DirectSaleRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovedTokenRegistry","inputs":[{"name":"_approvedTokenRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setContractPaused","inputs":[{"name":"_isPaused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC1155ApprovalManager","inputs":[{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20ApprovalManager","inputs":[{"name":"_erc20ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC721ApprovalManager","inputs":[{"name":"_erc721ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketplaceSettings","inputs":[{"name":"_marketplaceSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkBeneficiary","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPayments","inputs":[{"name":"_payments","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyEngine","inputs":[{"name":"_royaltyEngine","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.SalePriceRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpaceOperatorRegistry","inputs":[{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingRegistry","inputs":[{"name":"_stakingRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingSettings","inputs":[{"name":"_stakingSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenAllowListConfigs","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.AllowListConfigRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenMintLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenTxLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","cancelSalePrices(address,uint256[])":"2f79f335","getDirectSaleConfig(address,uint256)":"6e2f4d8b","getERC1155ApprovalManager()":"c7c83d17","getMarketConfig()":"614bd944","getSalePrice(address,uint256,address)":"369679a4","getTokenAllowListConfig(address,uint256)":"bf3d90f8","getTokenMintLimit(address,uint256)":"8760251a","getTokenMintsPerAddress(address,uint256,address)":"28fbba03","getTokenTxLimit(address,uint256)":"552f791d","getTokenTxsPerAddress(address,uint256,address)":"5a501f8f","initialize(address,address,address,address,address,address,address,address,address,address,address)":"76902b83","isPaused()":"b187bd26","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7","prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"be542141","setApprovedTokenRegistry(address)":"e4e87e3b","setContractPaused(bool)":"882796f1","setERC1155ApprovalManager(address)":"ff5c83a4","setERC20ApprovalManager(address)":"d7a9fb7c","setERC721ApprovalManager(address)":"d80b23e3","setMarketplaceSettings(address)":"176ab440","setNetworkBeneficiary(address)":"3492e5a8","setPayments(address)":"af231a58","setRoyaltyEngine(address)":"21ede032","setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"ff3a52d4","setSpaceOperatorRegistry(address)":"7f358230","setStakingRegistry(address)":"2c740844","setStakingSettings(address)":"f1035744","setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":"373a9412","setTokenMintLimits(address,(uint256,uint256)[])":"c7ec1b98","setTokenTxLimits(address,(uint256,uint256)[])":"6442950e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"cancelSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDirectSaleConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155Listings.DirectSaleConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC1155ApprovalManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"contract IPayments\",\"name\":\"payments\",\"type\":\"address\"},{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IStakingSettings\",\"name\":\"stakingSettings\",\"type\":\"address\"},{\"internalType\":\"contract IRareStakingRegistry\",\"name\":\"stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IERC20ApprovalManager\",\"name\":\"erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC721ApprovalManager\",\"name\":\"erc721ApprovalManager\",\"type\":\"address\"}],\"internalType\":\"struct MarketConfigV2.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"getSalePrice\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155Listings.SalePrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenAllowListConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.AllowListConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenMintLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getTokenMintsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenTxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getTokenTxsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155Listings.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.DirectSaleRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"prepareMintDirectSales\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"}],\"name\":\"setApprovedTokenRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isPaused\",\"type\":\"bool\"}],\"name\":\"setContractPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC1155ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC20ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC721ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"}],\"name\":\"setMarketplaceSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"}],\"name\":\"setNetworkBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"}],\"name\":\"setPayments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"}],\"name\":\"setRoyaltyEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.SalePriceRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"setSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"}],\"name\":\"setSpaceOperatorRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"}],\"name\":\"setStakingRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"}],\"name\":\"setStakingSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.AllowListConfigRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenAllowListConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenMintLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenTxLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Primary sales are configured per `(collection, tokenId)`. Secondary listings are approval-based and keyed by `(collection, tokenId, seller)`. Secondary listings intentionally do not expire on-chain; they remain fillable until sold, cancelled, or made invalid by seller balance, ERC1155 approval, or currency policy.\",\"errors\":{\"AddressNotAllowlisted(address)\":[{\"params\":{\"_account\":\"Buyer account that failed allowlist verification.\"}}],\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"ContractHasNoOwner(address)\":[{\"params\":{\"_contractAddress\":\"Contract that did not expose a valid `owner()`.\"}}],\"CurrencyMismatch(address,address)\":[{\"params\":{\"_configuredCurrency\":\"Currency stored in marketplace configuration.\",\"_suppliedCurrency\":\"Currency supplied by the caller.\"}}],\"CurrencyNotApproved(address)\":[{\"params\":{\"_currencyAddress\":\"Currency that failed approval.\"}}],\"DirectSaleNotConfigured(address,uint256)\":[{\"params\":{\"_contractAddress\":\"Collection address.\",\"_tokenId\":\"Token id missing a primary sale config.\"}}],\"ERC20FeeOnTransferUnsupported(address,uint256,uint256)\":[{\"params\":{\"_currencyAddress\":\"ERC20 token address.\",\"_expectedAmount\":\"Amount expected by the marketplace.\",\"_receivedAmount\":\"Amount actually received by the marketplace.\"}}],\"IncorrectETHAmount(uint256,uint256)\":[{\"params\":{\"_requiredAmount\":\"Amount required by the marketplace.\",\"_suppliedAmount\":\"Amount supplied as `msg.value`.\"}}],\"InsufficientTokenBalance(address,address,uint256,uint256,uint256)\":[{\"params\":{\"_account\":\"Account whose balance was checked.\",\"_availableQuantity\":\"Quantity available at check time.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_requestedQuantity\":\"Quantity required by the operation.\",\"_tokenId\":\"Token id whose balance was checked.\"}}],\"InvalidERC1155Contract(address)\":[{\"params\":{\"_contractAddress\":\"Collection address that failed validation.\"}}],\"InvalidERC1155Transfer(address,uint256,address,address,uint256)\":[{\"params\":{\"_buyer\":\"Buyer whose balance should increase.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_quantity\":\"Quantity that should be transferred.\",\"_seller\":\"Seller whose balance should decrease.\",\"_tokenId\":\"Token id transferred.\"}}],\"MarketConfigAddressCannotBeZero(bytes32)\":[{\"params\":{\"_field\":\"Name of the dependency field that was zero.\"}}],\"MarketplaceNotApproved(address,address)\":[{\"params\":{\"_account\":\"ERC1155 owner that must approve the marketplace.\",\"_contractAddress\":\"ERC1155 collection address.\"}}],\"MaxMintExceeded(uint256,uint256)\":[{\"params\":{\"_maxMints\":\"Configured max quantity per transaction.\",\"_requestedQuantity\":\"Requested mint quantity.\"}}],\"MintLimitExceeded(address,uint256,address,uint256,uint256,uint256)\":[{\"params\":{\"_account\":\"Buyer account.\",\"_contractAddress\":\"Collection address.\",\"_limit\":\"Configured mint limit.\",\"_mintedQuantity\":\"Quantity already minted by the account.\",\"_requestedQuantity\":\"Requested mint quantity.\",\"_tokenId\":\"Token id being minted.\"}}],\"NotContractOwner(address,address)\":[{\"params\":{\"_account\":\"Account that failed the owner check.\",\"_contractAddress\":\"Collection address whose owner was checked.\"}}],\"PayoutFailed(bytes)\":[{\"params\":{\"_revertData\":\"Raw revert data returned by the failed payout call.\"}}],\"PayoutLengthMismatch(uint256,uint256)\":[{\"params\":{\"_amountsLength\":\"Number of payout amounts supplied.\",\"_recipientsLength\":\"Number of payout recipients supplied.\"}}],\"PayoutTotalMismatch(uint256,uint256)\":[{\"params\":{\"_actualAmount\":\"Sum of supplied payout amounts.\",\"_expectedAmount\":\"Amount expected to be paid by the batch.\"}}],\"PlatformCommissionExceeded(uint256,uint256)\":[{\"params\":{\"_maxPlatformCommission\":\"Maximum supported platform commission percentage.\",\"_platformCommission\":\"Supplied primary platform commission percentage.\"}}],\"PriceMismatch(uint256,uint256)\":[{\"params\":{\"_configuredPrice\":\"Price stored in marketplace configuration.\",\"_suppliedPrice\":\"Price supplied by the caller.\"}}],\"QuantityExceedsSalePriceQuantity(uint256,uint256)\":[{\"params\":{\"_availableQuantity\":\"Quantity currently listed.\",\"_requestedQuantity\":\"Quantity requested by the buyer.\"}}],\"RoyaltiesExceedSaleAmount(uint256,uint256)\":[{\"params\":{\"_royalties\":\"Total royalties returned by the royalty engine.\",\"_saleAmount\":\"Gross sale amount before royalty deduction.\"}}],\"SaleNotStarted(uint256)\":[{\"params\":{\"_startTime\":\"Configured sale start timestamp.\"}}],\"SalePriceDoesNotExist(address,uint256,address)\":[{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_seller\":\"Seller whose listing was requested.\",\"_tokenId\":\"Token id requested.\"}}],\"SalePriceExpirationInvalid(uint256,uint256)\":[{\"params\":{\"_currentTime\":\"Current block timestamp.\",\"_expirationTime\":\"Expiration supplied for the listing.\"}}],\"SalePriceExpired(address,uint256,address,uint256)\":[{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_expirationTime\":\"Stored listing expiration timestamp.\",\"_seller\":\"Seller whose listing was requested.\",\"_tokenId\":\"Token id requested.\"}}],\"SelfPurchaseUnsupported(address)\":[{\"params\":{\"_seller\":\"Seller whose listing was targeted.\"}}],\"SplitLengthMismatch(uint256,uint256)\":[{\"params\":{\"_ratiosLength\":\"Supplied ratio count.\",\"_recipientsLength\":\"Supplied recipient count.\"}}],\"SplitRatioCannotBeZero(uint256)\":[{\"params\":{\"_index\":\"Index of the invalid split ratio.\"}}],\"SplitRecipientCannotBeZero(uint256)\":[{\"params\":{\"_index\":\"Index of the invalid split recipient.\"}}],\"SplitRecipientsExceededMax(uint256,uint256)\":[{\"params\":{\"_maxRecipients\":\"Maximum supported recipient count.\",\"_recipientsLength\":\"Supplied recipient count.\"}}],\"SplitTotalInvalid(uint256,uint256)\":[{\"params\":{\"_requiredTotal\":\"Required ratio total.\",\"_totalRatio\":\"Supplied ratio total.\"}}],\"StakingFeeExceedsMarketplaceFee(uint256,uint256)\":[{\"params\":{\"_marketplaceFee\":\"Total marketplace fee collected from the buyer.\",\"_stakingFee\":\"Staking portion requested by staking settings.\"}}],\"TokenIdsNotStrictlyAscending(uint256,uint256,uint256)\":[{\"params\":{\"index\":\"Index of the token id that is not greater than the previous token id.\",\"previousTokenId\":\"Token id at `index - 1`.\",\"tokenId\":\"Token id at `index`.\"}}],\"TokenNotFound(address,uint256)\":[{\"params\":{\"_contractAddress\":\"Collection address.\",\"_tokenId\":\"Missing token id.\"}}],\"TransactionLimitExceeded(address,uint256,address,uint256,uint256)\":[{\"params\":{\"_account\":\"Buyer account.\",\"_contractAddress\":\"Collection address.\",\"_limit\":\"Configured transaction limit.\",\"_tokenId\":\"Token id being minted.\",\"_usedTransactions\":\"Transactions already used by the account.\"}}]},\"events\":{\"ContractPausedUpdated(bool)\":{\"params\":{\"isPaused\":\"True when marketplace writes are paused.\"}},\"MarketplaceDependencyUpdated(bytes32,address)\":{\"params\":{\"dependency\":\"New dependency address.\",\"field\":\"Config field that was updated.\"}},\"MintDirectSale(address,uint256,address,address,uint256,address,uint256)\":{\"params\":{\"buyer\":\"Address that paid for and received the mint.\",\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Sale currency. Zero address indicates ETH.\",\"price\":\"Unit price paid.\",\"quantity\":\"Quantity minted.\",\"seller\":\"Creator/seller that received proceeds.\",\"tokenId\":\"Minted token id.\"}},\"PrepareMintDirectSale(address,uint256,address,address,uint256,uint256,uint256,address[],uint8[])\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Sale currency. Zero address indicates ETH.\",\"maxMints\":\"Max quantity per transaction. Zero means unlimited.\",\"price\":\"Unit price per token.\",\"seller\":\"Creator/seller that receives sale proceeds.\",\"splitRatios\":\"Percentages for `splitRecipients`.\",\"splitRecipients\":\"Recipients that split seller proceeds.\",\"startTime\":\"Timestamp when minting may begin.\",\"tokenId\":\"Token id sold by the primary sale.\"}},\"SalePriceCancelled(address,address,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"seller\":\"Seller that cancelled the listing.\",\"tokenId\":\"Token id whose listing was cancelled.\"}},\"SalePriceSet(address,address,uint256,address,uint256,uint256,uint256,address[],uint8[])\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Listing currency. Zero address indicates ETH.\",\"expirationTime\":\"Timestamp when the listing can no longer be filled. Zero means no expiration.\",\"price\":\"Unit price per token.\",\"quantity\":\"Quantity listed.\",\"seller\":\"Seller that owns the listed ERC1155 balance.\",\"splitRatios\":\"Percentages for `splitRecipients`.\",\"splitRecipients\":\"Recipients that split seller proceeds.\",\"tokenId\":\"Listed token id.\"}},\"SetTokenAllowListConfig(address,uint256,bytes32,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"endTimestamp\":\"Timestamp when allowlist enforcement expires.\",\"root\":\"Merkle root for allowlisted buyers.\",\"tokenId\":\"Token id controlled by the allowlist.\"}},\"Sold(address,address,address,uint256,address,uint256,uint256)\":{\"params\":{\"buyer\":\"Buyer that paid and received the ERC1155 tokens.\",\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Purchase currency. Zero address indicates ETH.\",\"price\":\"Unit price paid.\",\"quantity\":\"Quantity purchased.\",\"seller\":\"Seller that transferred the ERC1155 tokens.\",\"tokenId\":\"Purchased token id.\"}},\"TokenMintLimitSet(address,uint256,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"limit\":\"Max quantity each address may mint while the limit is enabled. Zero disables the limit.\",\"tokenId\":\"Token id controlled by the limit.\"}},\"TokenTxLimitSet(address,uint256,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"limit\":\"Max mint transactions each address may submit while the limit is enabled. Zero disables the limit.\",\"tokenId\":\"Token id controlled by the limit.\"}}},\"kind\":\"dev\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending. A one-token buy is represented by a one-item batch.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Currency expected by the buyer.\",\"_requests\":\"Buy requests to execute.\",\"_seller\":\"Seller whose listing is being filled.\"}},\"cancelSalePrices(address,uint256[])\":{\"details\":\"Token ids must be strictly ascending.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenIds\":\"Listed token ids.\"}},\"getDirectSaleConfig(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Primary sale config for the token id.\"}},\"getERC1155ApprovalManager()\":{\"returns\":{\"_0\":\"Current ERC1155 approval manager address.\"}},\"getMarketConfig()\":{\"returns\":{\"_0\":\"Current market config struct.\"}},\"getSalePrice(address,uint256,address)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_seller\":\"Seller whose listing is returned.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Secondary fixed-price listing for the seller and token id.\"}},\"getTokenAllowListConfig(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Allowlist config for the token id.\"}},\"getTokenMintLimit(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Mint quantity limit. Zero means disabled/unlimited.\"}},\"getTokenMintsPerAddress(address,uint256,address)\":{\"params\":{\"_address\":\"Address whose minted quantity is returned.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Quantity minted by `_address` during enabled mint-limit periods.\"}},\"getTokenTxLimit(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Transaction limit. Zero means disabled/unlimited.\"}},\"getTokenTxsPerAddress(address,uint256,address)\":{\"params\":{\"_address\":\"Address whose transaction count is returned.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Number of mint transactions used by `_address` during enabled tx-limit periods.\"}},\"initialize(address,address,address,address,address,address,address,address,address,address,address)\":{\"params\":{\"_approvedTokenRegistry\":\"Registry of approved ERC20 currencies.\",\"_erc1155ApprovalManager\":\"ERC1155 transfer manager for seller token approvals.\",\"_erc20ApprovalManager\":\"ERC20 transfer manager for buyer currency approvals.\",\"_erc721ApprovalManager\":\"ERC721 transfer manager kept in shared V2 market config.\",\"_marketplaceSettings\":\"Marketplace settings contract.\",\"_networkBeneficiary\":\"Address receiving network marketplace fees.\",\"_payments\":\"Payments contract used for ETH fan-out.\",\"_royaltyEngine\":\"Royalty engine contract.\",\"_spaceOperatorRegistry\":\"Space operator registry contract.\",\"_stakingRegistry\":\"Staking registry contract.\",\"_stakingSettings\":\"Staking fee settings contract.\"}},\"isPaused()\":{\"returns\":{\"_0\":\"True when paused.\"}},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Request token ids must be strictly ascending. Each token id included in a batch consumes one transaction against that token's tx limit when the token tx limit is enabled.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Currency expected by the buyer.\",\"_requests\":\"Mint requests to execute.\"}},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending. A one-token sale is represented by a one-item batch.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Sale currency. Zero address indicates ETH.\",\"_requests\":\"Sale configs to apply.\",\"_splitRatios\":\"Percentages for `splitRecipients`, totaling 100.\",\"_splitRecipients\":\"Recipients that split seller proceeds.\"}},\"setApprovedTokenRegistry(address)\":{\"params\":{\"_approvedTokenRegistry\":\"New approved token registry contract.\"}},\"setContractPaused(bool)\":{\"params\":{\"_isPaused\":\"New pause state.\"}},\"setERC1155ApprovalManager(address)\":{\"params\":{\"_erc1155ApprovalManager\":\"New ERC1155 approval manager contract.\"}},\"setERC20ApprovalManager(address)\":{\"params\":{\"_erc20ApprovalManager\":\"New ERC20 approval manager contract.\"}},\"setERC721ApprovalManager(address)\":{\"params\":{\"_erc721ApprovalManager\":\"New ERC721 approval manager contract.\"}},\"setMarketplaceSettings(address)\":{\"params\":{\"_marketplaceSettings\":\"New marketplace settings contract.\"}},\"setNetworkBeneficiary(address)\":{\"params\":{\"_networkBeneficiary\":\"New network beneficiary.\"}},\"setPayments(address)\":{\"params\":{\"_payments\":\"New payments contract.\"}},\"setRoyaltyEngine(address)\":{\"params\":{\"_royaltyEngine\":\"New royalty engine contract.\"}},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending. `expirationTime == 0` means no expiration. Listings can be cancelled by the seller with `cancelSalePrices`.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Listing currency. Zero address indicates ETH.\",\"_requests\":\"Listing configs to apply.\",\"_splitRatios\":\"Percentages for `splitRecipients`, totaling 100.\",\"_splitRecipients\":\"Recipients that split seller proceeds.\"}},\"setSpaceOperatorRegistry(address)\":{\"params\":{\"_spaceOperatorRegistry\":\"New space operator registry contract.\"}},\"setStakingRegistry(address)\":{\"params\":{\"_stakingRegistry\":\"New staking registry contract.\"}},\"setStakingSettings(address)\":{\"params\":{\"_stakingSettings\":\"New staking settings contract.\"}},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_requests\":\"Allowlist configs to apply.\"}},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_requests\":\"Mint limits to apply. Zero disables a token id's limit and disabled periods are not counted.\"}},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_requests\":\"Transaction limits to apply. Zero disables a token id's limit and disabled periods are not counted.\"}}},\"title\":\"IRareERC1155Listings\",\"version\":1},\"userdoc\":{\"errors\":{\"AddressNotAllowlisted(address)\":[{\"notice\":\"Reverted when a buyer is not included in an active allowlist.\"}],\"ApprovalManagerCannotBeZero()\":[{\"notice\":\"Reverted when an approval manager address is zero.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"ContractHasNoOwner(address)\":[{\"notice\":\"Reverted when ownership cannot be read from a collection.\"}],\"ContractPaused()\":[{\"notice\":\"Reverted when a write function is called while the marketplace is paused.\"}],\"CurrencyMismatch(address,address)\":[{\"notice\":\"Reverted when a caller-supplied currency does not match the configured currency.\"}],\"CurrencyNotApproved(address)\":[{\"notice\":\"Reverted when a currency is neither ETH nor approved by the token registry.\"}],\"DirectSaleNotConfigured(address,uint256)\":[{\"notice\":\"Reverted when a primary mint is attempted before sale configuration exists.\"}],\"ERC20FeeOnTransferUnsupported(address,uint256,uint256)\":[{\"notice\":\"Reverted when an ERC20 transfer receives less or more than expected.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"IncorrectETHAmount(uint256,uint256)\":[{\"notice\":\"Reverted when an ETH purchase sends the wrong `msg.value`.\"}],\"InsufficientTokenBalance(address,address,uint256,uint256,uint256)\":[{\"notice\":\"Reverted when a seller does not have enough ERC1155 balance for a listing or purchase.\"}],\"InvalidERC1155Contract(address)\":[{\"notice\":\"Reverted when a secondary collection is not a deployed ERC1155 contract.\"}],\"InvalidERC1155Transfer(address,uint256,address,address,uint256)\":[{\"notice\":\"Reverted when an ERC1155 transfer completes without exact seller and buyer balance deltas.\"}],\"MarketConfigAddressCannotBeZero(bytes32)\":[{\"notice\":\"Reverted when a required market config dependency address is zero.\"}],\"MarketplaceNotApproved(address,address)\":[{\"notice\":\"Reverted when the marketplace is not approved to transfer a seller's ERC1155 tokens.\"}],\"MaxMintExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a mint quantity exceeds the sale's per-transaction max.\"}],\"MintLimitExceeded(address,uint256,address,uint256,uint256,uint256)\":[{\"notice\":\"Reverted when a mint would exceed a buyer's per-address mint limit for a token id.\"}],\"MsgValueMustBeZero()\":[{\"notice\":\"Reverted when a free mint includes ETH.\"}],\"MsgValueUnsupportedForERC20()\":[{\"notice\":\"Reverted when ETH is supplied for an ERC20 purchase.\"}],\"NotContractOwner(address,address)\":[{\"notice\":\"Reverted when a caller is not the owner of a collection.\"}],\"PayoutFailed(bytes)\":[{\"notice\":\"Reverted when ETH payout through the Payments contract fails.\"}],\"PayoutLengthMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when payout recipients and amounts have different lengths.\"}],\"PayoutTotalMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when payout amounts do not sum to the expected batch amount.\"}],\"PlatformCommissionExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when primary platform commission exceeds 100%.\"}],\"PriceMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when a caller-supplied price does not match the configured price.\"}],\"QuantityCannotBeZero()\":[{\"notice\":\"Reverted when a quantity argument is zero.\"}],\"QuantityExceedsSalePriceQuantity(uint256,uint256)\":[{\"notice\":\"Reverted when a purchase quantity exceeds listed quantity.\"}],\"RoyaltiesExceedSaleAmount(uint256,uint256)\":[{\"notice\":\"Reverted when royalties returned by the royalty engine exceed sale proceeds.\"}],\"SaleNotStarted(uint256)\":[{\"notice\":\"Reverted when a primary mint is attempted before the start time.\"}],\"SalePriceCannotBeZero()\":[{\"notice\":\"Reverted when a secondary listing price is zero.\"}],\"SalePriceDoesNotExist(address,uint256,address)\":[{\"notice\":\"Reverted when no secondary listing exists for a seller and token id.\"}],\"SalePriceExpirationInvalid(uint256,uint256)\":[{\"notice\":\"Reverted when a secondary listing expiration is nonzero and not in the future.\"}],\"SalePriceExpired(address,uint256,address,uint256)\":[{\"notice\":\"Reverted when a buyer tries to fill an expired secondary listing.\"}],\"SelfPurchaseUnsupported(address)\":[{\"notice\":\"Reverted when a buyer tries to fill their own secondary listing.\"}],\"SplitLengthMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when split recipient and ratio arrays have different lengths.\"}],\"SplitRatioCannotBeZero(uint256)\":[{\"notice\":\"Reverted when a split ratio is zero.\"}],\"SplitRecipientCannotBeZero(uint256)\":[{\"notice\":\"Reverted when a split recipient is the zero address.\"}],\"SplitRecipientsExceededMax(uint256,uint256)\":[{\"notice\":\"Reverted when a sale config has more split recipients than supported.\"}],\"SplitRecipientsRequired()\":[{\"notice\":\"Reverted when a sale config has no split recipients.\"}],\"SplitTotalInvalid(uint256,uint256)\":[{\"notice\":\"Reverted when split ratios do not total 100.\"}],\"StakingFeeExceedsMarketplaceFee(uint256,uint256)\":[{\"notice\":\"Reverted when the staking fee exceeds the buyer-paid marketplace fee.\"}],\"TokenIdsNotStrictlyAscending(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"TokenNotFound(address,uint256)\":[{\"notice\":\"Reverted when a token id has not been created on a collection.\"}],\"TransactionLimitExceeded(address,uint256,address,uint256,uint256)\":[{\"notice\":\"Reverted when a mint would exceed a buyer's per-address transaction limit for a token id.\"}]},\"events\":{\"ContractPausedUpdated(bool)\":{\"notice\":\"Emitted when an owner updates marketplace pause state.\"},\"MarketplaceDependencyUpdated(bytes32,address)\":{\"notice\":\"Emitted when an owner updates a critical marketplace dependency.\"},\"MintDirectSale(address,uint256,address,address,uint256,address,uint256)\":{\"notice\":\"Emitted when a buyer mints through a primary sale.\"},\"PrepareMintDirectSale(address,uint256,address,address,uint256,uint256,uint256,address[],uint8[])\":{\"notice\":\"Emitted when a creator configures a primary mint sale.\"},\"SalePriceCancelled(address,address,uint256)\":{\"notice\":\"Emitted when a seller cancels a secondary listing.\"},\"SalePriceSet(address,address,uint256,address,uint256,uint256,uint256,address[],uint8[])\":{\"notice\":\"Emitted when a seller creates or replaces a secondary fixed-price listing.\"},\"SetTokenAllowListConfig(address,uint256,bytes32,uint256)\":{\"notice\":\"Emitted when a token allowlist config is set.\"},\"Sold(address,address,address,uint256,address,uint256,uint256)\":{\"notice\":\"Emitted when a buyer fills a secondary fixed-price listing.\"},\"TokenMintLimitSet(address,uint256,uint256)\":{\"notice\":\"Emitted when a per-address mint limit is set for a token id.\"},\"TokenTxLimitSet(address,uint256,uint256)\":{\"notice\":\"Emitted when a per-address transaction limit is set for a token id.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch operations.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings.\"},\"cancelSalePrices(address,uint256[])\":{\"notice\":\"Cancels the caller's secondary listings for token ids.\"},\"getDirectSaleConfig(address,uint256)\":{\"notice\":\"Returns the primary mint sale config for a token id.\"},\"getERC1155ApprovalManager()\":{\"notice\":\"Returns the ERC1155 approval manager used for secondary transfers.\"},\"getMarketConfig()\":{\"notice\":\"Returns the marketplace dependency configuration.\"},\"getSalePrice(address,uint256,address)\":{\"notice\":\"Returns a seller's secondary fixed-price listing.\"},\"getTokenAllowListConfig(address,uint256)\":{\"notice\":\"Returns the allowlist config for a token id.\"},\"getTokenMintLimit(address,uint256)\":{\"notice\":\"Returns the per-address mint quantity limit for a token id.\"},\"getTokenMintsPerAddress(address,uint256,address)\":{\"notice\":\"Returns quantity minted by an address for a token id while the mint limit was enabled.\"},\"getTokenTxLimit(address,uint256)\":{\"notice\":\"Returns the per-address transaction limit for a token id.\"},\"getTokenTxsPerAddress(address,uint256,address)\":{\"notice\":\"Returns mint transactions used by an address for a token id while the tx limit was enabled.\"},\"initialize(address,address,address,address,address,address,address,address,address,address,address)\":{\"notice\":\"Initializes the UUPS marketplace implementation behind a proxy.\"},\"isPaused()\":{\"notice\":\"Returns whether marketplace writes are paused.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Configures or replaces primary mint sales for token ids.\"},\"setApprovedTokenRegistry(address)\":{\"notice\":\"Updates the approved token registry address.\"},\"setContractPaused(bool)\":{\"notice\":\"Pauses or unpauses marketplace write operations.\"},\"setERC1155ApprovalManager(address)\":{\"notice\":\"Updates the ERC1155 approval manager address.\"},\"setERC20ApprovalManager(address)\":{\"notice\":\"Updates the ERC20 approval manager address.\"},\"setERC721ApprovalManager(address)\":{\"notice\":\"Updates the ERC721 approval manager address retained by the shared V2 market config.\"},\"setMarketplaceSettings(address)\":{\"notice\":\"Updates the marketplace settings contract address.\"},\"setNetworkBeneficiary(address)\":{\"notice\":\"Updates the network beneficiary address.\"},\"setPayments(address)\":{\"notice\":\"Updates the Payments contract address used for ETH fan-out.\"},\"setRoyaltyEngine(address)\":{\"notice\":\"Updates the royalty engine address.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Creates or replaces secondary fixed-price listings.\"},\"setSpaceOperatorRegistry(address)\":{\"notice\":\"Updates the space operator registry address.\"},\"setStakingRegistry(address)\":{\"notice\":\"Updates the staking registry address.\"},\"setStakingSettings(address)\":{\"notice\":\"Updates the staking settings address.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"notice\":\"Sets token id allowlist configurations.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets the max quantity each address may mint for token ids while the limit is enabled.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets the max number of mint transactions each address may submit for token ids while the limit is enabled.\"}},\"notice\":\"Interface for RARE Protocol ERC1155 primary mint sales and ERC1155 fixed-price secondary sales.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155Listings.sol\":\"IRareERC1155Listings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155Listings.sol\":{\"keccak256\":\"0x4772059a1b272c84ea7ea7d463ba92e67aded8ec11219a7d8117e12b47e59f52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45ccce54d9d11c50b7829e31443a39b196e9b17bceae954b59b562bdcc3d1f43\",\"dweb:/ipfs/QmeMQR5XVVmFSYUUmofn2sHC88e63vAv6ENjWjotPYi8Xa\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[],"stateMutability":"pure","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"cancelSalePrices"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDirectSaleConfig","outputs":[{"internalType":"struct IRareERC1155Listings.DirectSaleConfig","name":"","type":"tuple","components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getERC1155ApprovalManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMarketConfig","outputs":[{"internalType":"struct MarketConfigV2.Config","name":"","type":"tuple","components":[{"internalType":"address","name":"networkBeneficiary","type":"address"},{"internalType":"contract IMarketplaceSettings","name":"marketplaceSettings","type":"address"},{"internalType":"contract ISpaceOperatorRegistry","name":"spaceOperatorRegistry","type":"address"},{"internalType":"contract IRoyaltyEngineV1","name":"royaltyEngine","type":"address"},{"internalType":"contract IPayments","name":"payments","type":"address"},{"internalType":"contract IApprovedTokenRegistry","name":"approvedTokenRegistry","type":"address"},{"internalType":"contract IStakingSettings","name":"stakingSettings","type":"address"},{"internalType":"contract IRareStakingRegistry","name":"stakingRegistry","type":"address"},{"internalType":"contract IERC20ApprovalManager","name":"erc20ApprovalManager","type":"address"},{"internalType":"contract IERC721ApprovalManager","name":"erc721ApprovalManager","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"stateMutability":"view","type":"function","name":"getSalePrice","outputs":[{"internalType":"struct IRareERC1155Listings.SalePrice","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenAllowListConfig","outputs":[{"internalType":"struct IRareERC1155Listings.AllowListConfig","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenTxsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"},{"internalType":"address","name":"_marketplaceSettings","type":"address"},{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"},{"internalType":"address","name":"_royaltyEngine","type":"address"},{"internalType":"address","name":"_payments","type":"address"},{"internalType":"address","name":"_approvedTokenRegistry","type":"address"},{"internalType":"address","name":"_stakingSettings","type":"address"},{"internalType":"address","name":"_stakingRegistry","type":"address"},{"internalType":"address","name":"_erc20ApprovalManager","type":"address"},{"internalType":"address","name":"_erc721ApprovalManager","type":"address"},{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.DirectSaleRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"prepareMintDirectSales"},{"inputs":[{"internalType":"address","name":"_approvedTokenRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setApprovedTokenRegistry"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setContractPaused"},{"inputs":[{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC1155ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc20ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC20ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc721ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC721ApprovalManager"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketplaceSettings"},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkBeneficiary"},{"inputs":[{"internalType":"address","name":"_payments","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPayments"},{"inputs":[{"internalType":"address","name":"_royaltyEngine","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyEngine"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.SalePriceRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"setSalePrices"},{"inputs":[{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSpaceOperatorRegistry"},{"inputs":[{"internalType":"address","name":"_stakingRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingRegistry"},{"inputs":[{"internalType":"address","name":"_stakingSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingSettings"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.AllowListConfigRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenAllowListConfigs"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenMintLimits"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenTxLimits"}],"devdoc":{"kind":"dev","methods":{"MAX_BATCH_SIZE()":{"returns":{"_0":"Maximum supported batch item count."}},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"details":"Request token ids must be strictly ascending. A one-token buy is represented by a one-item batch.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Currency expected by the buyer.","_requests":"Buy requests to execute.","_seller":"Seller whose listing is being filled."}},"cancelSalePrices(address,uint256[])":{"details":"Token ids must be strictly ascending.","params":{"_contractAddress":"ERC1155 collection address.","_tokenIds":"Listed token ids."}},"getDirectSaleConfig(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Primary sale config for the token id."}},"getERC1155ApprovalManager()":{"returns":{"_0":"Current ERC1155 approval manager address."}},"getMarketConfig()":{"returns":{"_0":"Current market config struct."}},"getSalePrice(address,uint256,address)":{"params":{"_contractAddress":"ERC1155 collection address.","_seller":"Seller whose listing is returned.","_tokenId":"Token id to inspect."},"returns":{"_0":"Secondary fixed-price listing for the seller and token id."}},"getTokenAllowListConfig(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Allowlist config for the token id."}},"getTokenMintLimit(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Mint quantity limit. Zero means disabled/unlimited."}},"getTokenMintsPerAddress(address,uint256,address)":{"params":{"_address":"Address whose minted quantity is returned.","_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Quantity minted by `_address` during enabled mint-limit periods."}},"getTokenTxLimit(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Transaction limit. Zero means disabled/unlimited."}},"getTokenTxsPerAddress(address,uint256,address)":{"params":{"_address":"Address whose transaction count is returned.","_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Number of mint transactions used by `_address` during enabled tx-limit periods."}},"initialize(address,address,address,address,address,address,address,address,address,address,address)":{"params":{"_approvedTokenRegistry":"Registry of approved ERC20 currencies.","_erc1155ApprovalManager":"ERC1155 transfer manager for seller token approvals.","_erc20ApprovalManager":"ERC20 transfer manager for buyer currency approvals.","_erc721ApprovalManager":"ERC721 transfer manager kept in shared V2 market config.","_marketplaceSettings":"Marketplace settings contract.","_networkBeneficiary":"Address receiving network marketplace fees.","_payments":"Payments contract used for ETH fan-out.","_royaltyEngine":"Royalty engine contract.","_spaceOperatorRegistry":"Space operator registry contract.","_stakingRegistry":"Staking registry contract.","_stakingSettings":"Staking fee settings contract."}},"isPaused()":{"returns":{"_0":"True when paused."}},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"details":"Request token ids must be strictly ascending. Each token id included in a batch consumes one transaction against that token's tx limit when the token tx limit is enabled.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Currency expected by the buyer.","_requests":"Mint requests to execute."}},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending. A one-token sale is represented by a one-item batch.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Sale currency. Zero address indicates ETH.","_requests":"Sale configs to apply.","_splitRatios":"Percentages for `splitRecipients`, totaling 100.","_splitRecipients":"Recipients that split seller proceeds."}},"setApprovedTokenRegistry(address)":{"params":{"_approvedTokenRegistry":"New approved token registry contract."}},"setContractPaused(bool)":{"params":{"_isPaused":"New pause state."}},"setERC1155ApprovalManager(address)":{"params":{"_erc1155ApprovalManager":"New ERC1155 approval manager contract."}},"setERC20ApprovalManager(address)":{"params":{"_erc20ApprovalManager":"New ERC20 approval manager contract."}},"setERC721ApprovalManager(address)":{"params":{"_erc721ApprovalManager":"New ERC721 approval manager contract."}},"setMarketplaceSettings(address)":{"params":{"_marketplaceSettings":"New marketplace settings contract."}},"setNetworkBeneficiary(address)":{"params":{"_networkBeneficiary":"New network beneficiary."}},"setPayments(address)":{"params":{"_payments":"New payments contract."}},"setRoyaltyEngine(address)":{"params":{"_royaltyEngine":"New royalty engine contract."}},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending. `expirationTime == 0` means no expiration. Listings can be cancelled by the seller with `cancelSalePrices`.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Listing currency. Zero address indicates ETH.","_requests":"Listing configs to apply.","_splitRatios":"Percentages for `splitRecipients`, totaling 100.","_splitRecipients":"Recipients that split seller proceeds."}},"setSpaceOperatorRegistry(address)":{"params":{"_spaceOperatorRegistry":"New space operator registry contract."}},"setStakingRegistry(address)":{"params":{"_stakingRegistry":"New staking registry contract."}},"setStakingSettings(address)":{"params":{"_stakingSettings":"New staking settings contract."}},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"details":"Request token ids must be strictly ascending.","params":{"_contractAddress":"ERC1155 collection address.","_requests":"Allowlist configs to apply."}},"setTokenMintLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending.","params":{"_contractAddress":"ERC1155 collection address.","_requests":"Mint limits to apply. Zero disables a token id's limit and disabled periods are not counted."}},"setTokenTxLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending.","params":{"_contractAddress":"ERC1155 collection address.","_requests":"Transaction limits to apply. Zero disables a token id's limit and disabled periods are not counted."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch operations."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings."},"cancelSalePrices(address,uint256[])":{"notice":"Cancels the caller's secondary listings for token ids."},"getDirectSaleConfig(address,uint256)":{"notice":"Returns the primary mint sale config for a token id."},"getERC1155ApprovalManager()":{"notice":"Returns the ERC1155 approval manager used for secondary transfers."},"getMarketConfig()":{"notice":"Returns the marketplace dependency configuration."},"getSalePrice(address,uint256,address)":{"notice":"Returns a seller's secondary fixed-price listing."},"getTokenAllowListConfig(address,uint256)":{"notice":"Returns the allowlist config for a token id."},"getTokenMintLimit(address,uint256)":{"notice":"Returns the per-address mint quantity limit for a token id."},"getTokenMintsPerAddress(address,uint256,address)":{"notice":"Returns quantity minted by an address for a token id while the mint limit was enabled."},"getTokenTxLimit(address,uint256)":{"notice":"Returns the per-address transaction limit for a token id."},"getTokenTxsPerAddress(address,uint256,address)":{"notice":"Returns mint transactions used by an address for a token id while the tx limit was enabled."},"initialize(address,address,address,address,address,address,address,address,address,address,address)":{"notice":"Initializes the UUPS marketplace implementation behind a proxy."},"isPaused()":{"notice":"Returns whether marketplace writes are paused."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Configures or replaces primary mint sales for token ids."},"setApprovedTokenRegistry(address)":{"notice":"Updates the approved token registry address."},"setContractPaused(bool)":{"notice":"Pauses or unpauses marketplace write operations."},"setERC1155ApprovalManager(address)":{"notice":"Updates the ERC1155 approval manager address."},"setERC20ApprovalManager(address)":{"notice":"Updates the ERC20 approval manager address."},"setERC721ApprovalManager(address)":{"notice":"Updates the ERC721 approval manager address retained by the shared V2 market config."},"setMarketplaceSettings(address)":{"notice":"Updates the marketplace settings contract address."},"setNetworkBeneficiary(address)":{"notice":"Updates the network beneficiary address."},"setPayments(address)":{"notice":"Updates the Payments contract address used for ETH fan-out."},"setRoyaltyEngine(address)":{"notice":"Updates the royalty engine address."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Creates or replaces secondary fixed-price listings."},"setSpaceOperatorRegistry(address)":{"notice":"Updates the space operator registry address."},"setStakingRegistry(address)":{"notice":"Updates the staking registry address."},"setStakingSettings(address)":{"notice":"Updates the staking settings address."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"notice":"Sets token id allowlist configurations."},"setTokenMintLimits(address,(uint256,uint256)[])":{"notice":"Sets the max quantity each address may mint for token ids while the limit is enabled."},"setTokenTxLimits(address,(uint256,uint256)[])":{"notice":"Sets the max number of mint transactions each address may submit for token ids while the limit is enabled."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155Listings.sol":"IRareERC1155Listings"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155Listings.sol":{"keccak256":"0x4772059a1b272c84ea7ea7d463ba92e67aded8ec11219a7d8117e12b47e59f52","urls":["bzz-raw://45ccce54d9d11c50b7829e31443a39b196e9b17bceae954b59b562bdcc3d1f43","dweb:/ipfs/QmeMQR5XVVmFSYUUmofn2sHC88e63vAv6ENjWjotPYi8Xa"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":71} \ No newline at end of file diff --git a/abis/IRareERC1155Marketplace.json b/abis/IRareERC1155Marketplace.json deleted file mode 100644 index 378b910..0000000 --- a/abis/IRareERC1155Marketplace.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"buy","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"cancelSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getDirectSaleConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Marketplace.DirectSaleConfig","components":[{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getERC1155ApprovalManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getMarketConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct MarketConfigV2.Config","components":[{"name":"networkBeneficiary","type":"address","internalType":"address"},{"name":"marketplaceSettings","type":"address","internalType":"contract IMarketplaceSettings"},{"name":"spaceOperatorRegistry","type":"address","internalType":"contract ISpaceOperatorRegistry"},{"name":"royaltyEngine","type":"address","internalType":"contract IRoyaltyEngineV1"},{"name":"payments","type":"address","internalType":"contract IPayments"},{"name":"approvedTokenRegistry","type":"address","internalType":"contract IApprovedTokenRegistry"},{"name":"stakingSettings","type":"address","internalType":"contract IStakingSettings"},{"name":"stakingRegistry","type":"address","internalType":"contract IRareStakingRegistry"},{"name":"erc20ApprovalManager","type":"address","internalType":"contract IERC20ApprovalManager"},{"name":"erc721ApprovalManager","type":"address","internalType":"contract IERC721ApprovalManager"}]}],"stateMutability":"view"},{"type":"function","name":"getSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Marketplace.SalePrice","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenAllowListConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Marketplace.AllowListConfig","components":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenMintsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"},{"name":"_marketplaceSettings","type":"address","internalType":"address"},{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"},{"name":"_royaltyEngine","type":"address","internalType":"address"},{"name":"_payments","type":"address","internalType":"address"},{"name":"_approvedTokenRegistry","type":"address","internalType":"address"},{"name":"_stakingSettings","type":"address","internalType":"address"},{"name":"_stakingRegistry","type":"address","internalType":"address"},{"name":"_erc20ApprovalManager","type":"address","internalType":"address"},{"name":"_erc721ApprovalManager","type":"address","internalType":"address"},{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mintDirectSale","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_proof","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"prepareMintDirectSale","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_startTime","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovedTokenRegistry","inputs":[{"name":"_approvedTokenRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setContractPaused","inputs":[{"name":"_isPaused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC1155ApprovalManager","inputs":[{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20ApprovalManager","inputs":[{"name":"_erc20ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC721ApprovalManager","inputs":[{"name":"_erc721ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketplaceSettings","inputs":[{"name":"_marketplaceSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkBeneficiary","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPayments","inputs":[{"name":"_payments","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyEngine","inputs":[{"name":"_royaltyEngine","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpaceOperatorRegistry","inputs":[{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingRegistry","inputs":[{"name":"_stakingRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingSettings","inputs":[{"name":"_stakingSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenAllowListConfig","inputs":[{"name":"_root","type":"bytes32","internalType":"bytes32"},{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"buy(address,uint256,address,address,uint256,uint256)":"6afaf006","cancelSalePrice(address,uint256)":"3f83e9e0","getDirectSaleConfig(address,uint256)":"6e2f4d8b","getERC1155ApprovalManager()":"c7c83d17","getMarketConfig()":"614bd944","getSalePrice(address,uint256,address)":"369679a4","getTokenAllowListConfig(address,uint256)":"bf3d90f8","getTokenMintLimit(address,uint256)":"8760251a","getTokenMintsPerAddress(address,uint256,address)":"28fbba03","getTokenTxLimit(address,uint256)":"552f791d","getTokenTxsPerAddress(address,uint256,address)":"5a501f8f","initialize(address,address,address,address,address,address,address,address,address,address,address)":"76902b83","isPaused()":"b187bd26","mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])":"99273b3d","prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])":"d5f339a8","setApprovedTokenRegistry(address)":"e4e87e3b","setContractPaused(bool)":"882796f1","setERC1155ApprovalManager(address)":"ff5c83a4","setERC20ApprovalManager(address)":"d7a9fb7c","setERC721ApprovalManager(address)":"d80b23e3","setMarketplaceSettings(address)":"176ab440","setNetworkBeneficiary(address)":"3492e5a8","setPayments(address)":"af231a58","setRoyaltyEngine(address)":"21ede032","setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])":"5faec406","setSpaceOperatorRegistry(address)":"7f358230","setStakingRegistry(address)":"2c740844","setStakingSettings(address)":"f1035744","setTokenAllowListConfig(bytes32,uint256,address,uint256)":"b64843b2","setTokenMintLimit(address,uint256,uint256)":"b8aefc63","setTokenTxLimit(address,uint256,uint256)":"7b2db4bb"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"buy\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"cancelSalePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDirectSaleConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155Marketplace.DirectSaleConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC1155ApprovalManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"contract IPayments\",\"name\":\"payments\",\"type\":\"address\"},{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IStakingSettings\",\"name\":\"stakingSettings\",\"type\":\"address\"},{\"internalType\":\"contract IRareStakingRegistry\",\"name\":\"stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IERC20ApprovalManager\",\"name\":\"erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC721ApprovalManager\",\"name\":\"erc721ApprovalManager\",\"type\":\"address\"}],\"internalType\":\"struct MarketConfigV2.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"getSalePrice\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155Marketplace.SalePrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenAllowListConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Marketplace.AllowListConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenMintLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getTokenMintsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenTxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getTokenTxsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"_proof\",\"type\":\"bytes32[]\"}],\"name\":\"mintDirectSale\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"prepareMintDirectSale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"}],\"name\":\"setApprovedTokenRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isPaused\",\"type\":\"bool\"}],\"name\":\"setContractPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC1155ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC20ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC721ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"}],\"name\":\"setMarketplaceSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"}],\"name\":\"setNetworkBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"}],\"name\":\"setPayments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"}],\"name\":\"setRoyaltyEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"setSalePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"}],\"name\":\"setSpaceOperatorRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"}],\"name\":\"setStakingRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"}],\"name\":\"setStakingSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"setTokenAllowListConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"setTokenMintLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"setTokenTxLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Primary sales are configured per `(collection, tokenId)`. Secondary listings are approval-based and keyed by `(collection, tokenId, seller)`. Secondary listings intentionally do not expire on-chain; they remain fillable until sold, cancelled, or made invalid by seller balance, ERC1155 approval, or currency policy.\",\"errors\":{\"AddressNotAllowlisted(address)\":[{\"params\":{\"_account\":\"Buyer account that failed allowlist verification.\"}}],\"ContractHasNoOwner(address)\":[{\"params\":{\"_contractAddress\":\"Contract that did not expose a valid `owner()`.\"}}],\"CurrencyMismatch(address,address)\":[{\"params\":{\"_configuredCurrency\":\"Currency stored in marketplace configuration.\",\"_suppliedCurrency\":\"Currency supplied by the caller.\"}}],\"CurrencyNotApproved(address)\":[{\"params\":{\"_currencyAddress\":\"Currency that failed approval.\"}}],\"DirectSaleNotConfigured(address,uint256)\":[{\"params\":{\"_contractAddress\":\"Collection address.\",\"_tokenId\":\"Token id missing a primary sale config.\"}}],\"ERC20FeeOnTransferUnsupported(address,uint256,uint256)\":[{\"params\":{\"_currencyAddress\":\"ERC20 token address.\",\"_expectedAmount\":\"Amount expected by the marketplace.\",\"_receivedAmount\":\"Amount actually received by the marketplace.\"}}],\"IncorrectETHAmount(uint256,uint256)\":[{\"params\":{\"_requiredAmount\":\"Amount required by the marketplace.\",\"_suppliedAmount\":\"Amount supplied as `msg.value`.\"}}],\"InsufficientTokenBalance(address,address,uint256,uint256,uint256)\":[{\"params\":{\"_account\":\"Account whose balance was checked.\",\"_availableQuantity\":\"Quantity available at check time.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_requestedQuantity\":\"Quantity required by the operation.\",\"_tokenId\":\"Token id whose balance was checked.\"}}],\"InvalidERC1155Contract(address)\":[{\"params\":{\"_contractAddress\":\"Collection address that failed validation.\"}}],\"InvalidERC1155Transfer(address,uint256,address,address,uint256)\":[{\"params\":{\"_buyer\":\"Buyer whose balance should increase.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_quantity\":\"Quantity that should be transferred.\",\"_seller\":\"Seller whose balance should decrease.\",\"_tokenId\":\"Token id transferred.\"}}],\"MarketConfigAddressCannotBeZero(bytes32)\":[{\"params\":{\"_field\":\"Name of the dependency field that was zero.\"}}],\"MarketplaceNotApproved(address,address)\":[{\"params\":{\"_account\":\"ERC1155 owner that must approve the marketplace.\",\"_contractAddress\":\"ERC1155 collection address.\"}}],\"MaxMintExceeded(uint256,uint256)\":[{\"params\":{\"_maxMints\":\"Configured max quantity per transaction.\",\"_requestedQuantity\":\"Requested mint quantity.\"}}],\"MintLimitExceeded(address,uint256,address,uint256,uint256,uint256)\":[{\"params\":{\"_account\":\"Buyer account.\",\"_contractAddress\":\"Collection address.\",\"_limit\":\"Configured mint limit.\",\"_mintedQuantity\":\"Quantity already minted by the account.\",\"_requestedQuantity\":\"Requested mint quantity.\",\"_tokenId\":\"Token id being minted.\"}}],\"NotContractOwner(address,address)\":[{\"params\":{\"_account\":\"Account that failed the owner check.\",\"_contractAddress\":\"Collection address whose owner was checked.\"}}],\"PayoutFailed(bytes)\":[{\"params\":{\"_revertData\":\"Raw revert data returned by the failed payout call.\"}}],\"PayoutLengthMismatch(uint256,uint256)\":[{\"params\":{\"_amountsLength\":\"Number of payout amounts supplied.\",\"_recipientsLength\":\"Number of payout recipients supplied.\"}}],\"PayoutTotalMismatch(uint256,uint256)\":[{\"params\":{\"_actualAmount\":\"Sum of supplied payout amounts.\",\"_expectedAmount\":\"Amount expected to be paid by the batch.\"}}],\"PlatformCommissionExceeded(uint256,uint256)\":[{\"params\":{\"_maxPlatformCommission\":\"Maximum supported platform commission percentage.\",\"_platformCommission\":\"Supplied primary platform commission percentage.\"}}],\"PriceMismatch(uint256,uint256)\":[{\"params\":{\"_configuredPrice\":\"Price stored in marketplace configuration.\",\"_suppliedPrice\":\"Price supplied by the caller.\"}}],\"QuantityExceedsSalePriceQuantity(uint256,uint256)\":[{\"params\":{\"_availableQuantity\":\"Quantity currently listed.\",\"_requestedQuantity\":\"Quantity requested by the buyer.\"}}],\"RoyaltiesExceedSaleAmount(uint256,uint256)\":[{\"params\":{\"_royalties\":\"Total royalties returned by the royalty engine.\",\"_saleAmount\":\"Gross sale amount before royalty deduction.\"}}],\"SaleNotStarted(uint256)\":[{\"params\":{\"_startTime\":\"Configured sale start timestamp.\"}}],\"SalePriceDoesNotExist(address,uint256,address)\":[{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_seller\":\"Seller whose listing was requested.\",\"_tokenId\":\"Token id requested.\"}}],\"SelfPurchaseUnsupported(address)\":[{\"params\":{\"_seller\":\"Seller whose listing was targeted.\"}}],\"SplitLengthMismatch(uint256,uint256)\":[{\"params\":{\"_ratiosLength\":\"Supplied ratio count.\",\"_recipientsLength\":\"Supplied recipient count.\"}}],\"SplitRatioCannotBeZero(uint256)\":[{\"params\":{\"_index\":\"Index of the invalid split ratio.\"}}],\"SplitRecipientCannotBeZero(uint256)\":[{\"params\":{\"_index\":\"Index of the invalid split recipient.\"}}],\"SplitRecipientsExceededMax(uint256,uint256)\":[{\"params\":{\"_maxRecipients\":\"Maximum supported recipient count.\",\"_recipientsLength\":\"Supplied recipient count.\"}}],\"SplitTotalInvalid(uint256,uint256)\":[{\"params\":{\"_requiredTotal\":\"Required ratio total.\",\"_totalRatio\":\"Supplied ratio total.\"}}],\"StakingFeeExceedsMarketplaceFee(uint256,uint256)\":[{\"params\":{\"_marketplaceFee\":\"Total marketplace fee collected from the buyer.\",\"_stakingFee\":\"Staking portion requested by staking settings.\"}}],\"TokenNotFound(address,uint256)\":[{\"params\":{\"_contractAddress\":\"Collection address.\",\"_tokenId\":\"Missing token id.\"}}],\"TransactionLimitExceeded(address,uint256,address,uint256,uint256)\":[{\"params\":{\"_account\":\"Buyer account.\",\"_contractAddress\":\"Collection address.\",\"_limit\":\"Configured transaction limit.\",\"_tokenId\":\"Token id being minted.\",\"_usedTransactions\":\"Transactions already used by the account.\"}}]},\"events\":{\"MintDirectSale(address,uint256,address,address,uint256,address,uint256)\":{\"params\":{\"buyer\":\"Address that paid for and received the mint.\",\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Sale currency. Zero address indicates ETH.\",\"price\":\"Unit price paid.\",\"quantity\":\"Quantity minted.\",\"seller\":\"Creator/seller that received proceeds.\",\"tokenId\":\"Minted token id.\"}},\"PrepareMintDirectSale(address,uint256,address,address,uint256,uint256,uint256,address[],uint8[])\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Sale currency. Zero address indicates ETH.\",\"maxMints\":\"Max quantity per transaction. Zero means unlimited.\",\"price\":\"Unit price per token.\",\"seller\":\"Creator/seller that receives sale proceeds.\",\"splitRatios\":\"Percentages for `splitRecipients`.\",\"splitRecipients\":\"Recipients that split seller proceeds.\",\"startTime\":\"Timestamp when minting may begin.\",\"tokenId\":\"Token id sold by the primary sale.\"}},\"SalePriceCancelled(address,address,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"seller\":\"Seller that cancelled the listing.\",\"tokenId\":\"Token id whose listing was cancelled.\"}},\"SalePriceSet(address,address,uint256,address,uint256,uint256,address[],uint8[])\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Listing currency. Zero address indicates ETH.\",\"price\":\"Unit price per token.\",\"quantity\":\"Quantity listed.\",\"seller\":\"Seller that owns the listed ERC1155 balance.\",\"splitRatios\":\"Percentages for `splitRecipients`.\",\"splitRecipients\":\"Recipients that split seller proceeds.\",\"tokenId\":\"Listed token id.\"}},\"SetTokenAllowListConfig(address,uint256,bytes32,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"endTimestamp\":\"Timestamp when allowlist enforcement expires.\",\"root\":\"Merkle root for allowlisted buyers.\",\"tokenId\":\"Token id controlled by the allowlist.\"}},\"Sold(address,address,address,uint256,address,uint256,uint256)\":{\"params\":{\"buyer\":\"Buyer that paid and received the ERC1155 tokens.\",\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Purchase currency. Zero address indicates ETH.\",\"price\":\"Unit price paid.\",\"quantity\":\"Quantity purchased.\",\"seller\":\"Seller that transferred the ERC1155 tokens.\",\"tokenId\":\"Purchased token id.\"}},\"TokenMintLimitSet(address,uint256,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"limit\":\"Max quantity each address may mint while the limit is enabled. Zero disables the limit.\",\"tokenId\":\"Token id controlled by the limit.\"}},\"TokenTxLimitSet(address,uint256,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"limit\":\"Max mint transactions each address may submit while the limit is enabled. Zero disables the limit.\",\"tokenId\":\"Token id controlled by the limit.\"}}},\"kind\":\"dev\",\"methods\":{\"buy(address,uint256,address,address,uint256,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Currency expected by the buyer.\",\"_price\":\"Unit price expected by the buyer.\",\"_quantity\":\"Quantity to buy.\",\"_seller\":\"Seller whose listing is being filled.\",\"_tokenId\":\"Token id to buy.\"}},\"cancelSalePrice(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Listed token id.\"}},\"getDirectSaleConfig(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Primary sale config for the token id.\"}},\"getERC1155ApprovalManager()\":{\"returns\":{\"_0\":\"Current ERC1155 approval manager address.\"}},\"getMarketConfig()\":{\"returns\":{\"_0\":\"Current market config struct.\"}},\"getSalePrice(address,uint256,address)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_seller\":\"Seller whose listing is returned.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Secondary fixed-price listing for the seller and token id.\"}},\"getTokenAllowListConfig(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Allowlist config for the token id.\"}},\"getTokenMintLimit(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Mint quantity limit. Zero means disabled/unlimited.\"}},\"getTokenMintsPerAddress(address,uint256,address)\":{\"params\":{\"_address\":\"Address whose minted quantity is returned.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Quantity minted by `_address` during enabled mint-limit periods.\"}},\"getTokenTxLimit(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Transaction limit. Zero means disabled/unlimited.\"}},\"getTokenTxsPerAddress(address,uint256,address)\":{\"params\":{\"_address\":\"Address whose transaction count is returned.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Number of mint transactions used by `_address` during enabled tx-limit periods.\"}},\"initialize(address,address,address,address,address,address,address,address,address,address,address)\":{\"params\":{\"_approvedTokenRegistry\":\"Registry of approved ERC20 currencies.\",\"_erc1155ApprovalManager\":\"ERC1155 transfer manager for seller token approvals.\",\"_erc20ApprovalManager\":\"ERC20 transfer manager for buyer currency approvals.\",\"_erc721ApprovalManager\":\"ERC721 transfer manager kept in shared V2 market config.\",\"_marketplaceSettings\":\"Marketplace settings contract.\",\"_networkBeneficiary\":\"Address receiving network marketplace fees.\",\"_payments\":\"Payments contract used for ETH fan-out.\",\"_royaltyEngine\":\"Royalty engine contract.\",\"_spaceOperatorRegistry\":\"Space operator registry contract.\",\"_stakingRegistry\":\"Staking registry contract.\",\"_stakingSettings\":\"Staking fee settings contract.\"}},\"isPaused()\":{\"returns\":{\"_0\":\"True when paused.\"}},\"mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Currency expected by the buyer.\",\"_price\":\"Unit price expected by the buyer.\",\"_proof\":\"Merkle proof for active allowlist sales.\",\"_quantity\":\"Quantity to mint.\",\"_tokenId\":\"Token id to mint.\"}},\"prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Sale currency. Zero address indicates ETH.\",\"_maxMints\":\"Max quantity per mint transaction. Zero means unlimited.\",\"_price\":\"Unit price per token.\",\"_splitRatios\":\"Percentages for `splitRecipients`, totaling 100.\",\"_splitRecipients\":\"Recipients that split seller proceeds.\",\"_startTime\":\"Timestamp when minting may begin.\",\"_tokenId\":\"Token id to sell through primary minting.\"}},\"setApprovedTokenRegistry(address)\":{\"params\":{\"_approvedTokenRegistry\":\"New approved token registry contract.\"}},\"setContractPaused(bool)\":{\"params\":{\"_isPaused\":\"New pause state.\"}},\"setERC1155ApprovalManager(address)\":{\"params\":{\"_erc1155ApprovalManager\":\"New ERC1155 approval manager contract.\"}},\"setERC20ApprovalManager(address)\":{\"params\":{\"_erc20ApprovalManager\":\"New ERC20 approval manager contract.\"}},\"setERC721ApprovalManager(address)\":{\"params\":{\"_erc721ApprovalManager\":\"New ERC721 approval manager contract.\"}},\"setMarketplaceSettings(address)\":{\"params\":{\"_marketplaceSettings\":\"New marketplace settings contract.\"}},\"setNetworkBeneficiary(address)\":{\"params\":{\"_networkBeneficiary\":\"New network beneficiary.\"}},\"setPayments(address)\":{\"params\":{\"_payments\":\"New payments contract.\"}},\"setRoyaltyEngine(address)\":{\"params\":{\"_royaltyEngine\":\"New royalty engine contract.\"}},\"setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Listings intentionally have no expiry timestamp and can be cancelled by the seller with `cancelSalePrice`.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Listing currency. Zero address indicates ETH.\",\"_price\":\"Unit price per token.\",\"_quantity\":\"Quantity listed.\",\"_splitRatios\":\"Percentages for `splitRecipients`, totaling 100.\",\"_splitRecipients\":\"Recipients that split seller proceeds.\",\"_tokenId\":\"Token id to list.\"}},\"setSpaceOperatorRegistry(address)\":{\"params\":{\"_spaceOperatorRegistry\":\"New space operator registry contract.\"}},\"setStakingRegistry(address)\":{\"params\":{\"_stakingRegistry\":\"New staking registry contract.\"}},\"setStakingSettings(address)\":{\"params\":{\"_stakingSettings\":\"New staking settings contract.\"}},\"setTokenAllowListConfig(bytes32,uint256,address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_endTimestamp\":\"Timestamp when allowlist enforcement expires.\",\"_root\":\"Merkle root for allowlisted minters. Zero root disables allowlist enforcement.\",\"_tokenId\":\"Token id controlled by the allowlist.\"}},\"setTokenMintLimit(address,uint256,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_limit\":\"Max mint quantity per address. Zero disables the limit and disabled periods are not counted.\",\"_tokenId\":\"Token id controlled by the limit.\"}},\"setTokenTxLimit(address,uint256,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_limit\":\"Max transactions per address. Zero disables the limit and disabled periods are not counted.\",\"_tokenId\":\"Token id controlled by the limit.\"}}},\"title\":\"IRareERC1155Marketplace\",\"version\":1},\"userdoc\":{\"errors\":{\"AddressNotAllowlisted(address)\":[{\"notice\":\"Reverted when a buyer is not included in an active allowlist.\"}],\"ApprovalManagerCannotBeZero()\":[{\"notice\":\"Reverted when an approval manager address is zero.\"}],\"ContractHasNoOwner(address)\":[{\"notice\":\"Reverted when ownership cannot be read from a collection.\"}],\"ContractPaused()\":[{\"notice\":\"Reverted when a write function is called while the marketplace is paused.\"}],\"CurrencyMismatch(address,address)\":[{\"notice\":\"Reverted when a caller-supplied currency does not match the configured currency.\"}],\"CurrencyNotApproved(address)\":[{\"notice\":\"Reverted when a currency is neither ETH nor approved by the token registry.\"}],\"DirectSaleNotConfigured(address,uint256)\":[{\"notice\":\"Reverted when a primary mint is attempted before sale configuration exists.\"}],\"ERC20FeeOnTransferUnsupported(address,uint256,uint256)\":[{\"notice\":\"Reverted when an ERC20 transfer receives less or more than expected.\"}],\"IncorrectETHAmount(uint256,uint256)\":[{\"notice\":\"Reverted when an ETH purchase sends the wrong `msg.value`.\"}],\"InsufficientTokenBalance(address,address,uint256,uint256,uint256)\":[{\"notice\":\"Reverted when a seller does not have enough ERC1155 balance for a listing or purchase.\"}],\"InvalidERC1155Contract(address)\":[{\"notice\":\"Reverted when a secondary collection is not a deployed ERC1155 contract.\"}],\"InvalidERC1155Transfer(address,uint256,address,address,uint256)\":[{\"notice\":\"Reverted when an ERC1155 transfer completes without exact seller and buyer balance deltas.\"}],\"MarketConfigAddressCannotBeZero(bytes32)\":[{\"notice\":\"Reverted when a required market config dependency address is zero.\"}],\"MarketplaceNotApproved(address,address)\":[{\"notice\":\"Reverted when the marketplace is not approved to transfer a seller's ERC1155 tokens.\"}],\"MaxMintExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a mint quantity exceeds the sale's per-transaction max.\"}],\"MintLimitExceeded(address,uint256,address,uint256,uint256,uint256)\":[{\"notice\":\"Reverted when a mint would exceed a buyer's per-address mint limit for a token id.\"}],\"MsgValueMustBeZero()\":[{\"notice\":\"Reverted when a free mint includes ETH.\"}],\"MsgValueUnsupportedForERC20()\":[{\"notice\":\"Reverted when ETH is supplied for an ERC20 purchase.\"}],\"NotContractOwner(address,address)\":[{\"notice\":\"Reverted when a caller is not the owner of a collection.\"}],\"PayoutFailed(bytes)\":[{\"notice\":\"Reverted when ETH payout through the Payments contract fails.\"}],\"PayoutLengthMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when payout recipients and amounts have different lengths.\"}],\"PayoutTotalMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when payout amounts do not sum to the expected batch amount.\"}],\"PlatformCommissionExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when primary platform commission exceeds 100%.\"}],\"PriceMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when a caller-supplied price does not match the configured price.\"}],\"QuantityCannotBeZero()\":[{\"notice\":\"Reverted when a quantity argument is zero.\"}],\"QuantityExceedsSalePriceQuantity(uint256,uint256)\":[{\"notice\":\"Reverted when a purchase quantity exceeds listed quantity.\"}],\"RoyaltiesExceedSaleAmount(uint256,uint256)\":[{\"notice\":\"Reverted when royalties returned by the royalty engine exceed sale proceeds.\"}],\"SaleNotStarted(uint256)\":[{\"notice\":\"Reverted when a primary mint is attempted before the start time.\"}],\"SalePriceCannotBeZero()\":[{\"notice\":\"Reverted when a secondary listing price is zero.\"}],\"SalePriceDoesNotExist(address,uint256,address)\":[{\"notice\":\"Reverted when no secondary listing exists for a seller and token id.\"}],\"SelfPurchaseUnsupported(address)\":[{\"notice\":\"Reverted when a buyer tries to fill their own secondary listing.\"}],\"SplitLengthMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when split recipient and ratio arrays have different lengths.\"}],\"SplitRatioCannotBeZero(uint256)\":[{\"notice\":\"Reverted when a split ratio is zero.\"}],\"SplitRecipientCannotBeZero(uint256)\":[{\"notice\":\"Reverted when a split recipient is the zero address.\"}],\"SplitRecipientsExceededMax(uint256,uint256)\":[{\"notice\":\"Reverted when a sale config has more split recipients than supported.\"}],\"SplitRecipientsRequired()\":[{\"notice\":\"Reverted when a sale config has no split recipients.\"}],\"SplitTotalInvalid(uint256,uint256)\":[{\"notice\":\"Reverted when split ratios do not total 100.\"}],\"StakingFeeExceedsMarketplaceFee(uint256,uint256)\":[{\"notice\":\"Reverted when the staking fee exceeds the buyer-paid marketplace fee.\"}],\"TokenNotFound(address,uint256)\":[{\"notice\":\"Reverted when a token id has not been created on a collection.\"}],\"TransactionLimitExceeded(address,uint256,address,uint256,uint256)\":[{\"notice\":\"Reverted when a mint would exceed a buyer's per-address transaction limit for a token id.\"}]},\"events\":{\"MintDirectSale(address,uint256,address,address,uint256,address,uint256)\":{\"notice\":\"Emitted when a buyer mints through a primary sale.\"},\"PrepareMintDirectSale(address,uint256,address,address,uint256,uint256,uint256,address[],uint8[])\":{\"notice\":\"Emitted when a creator configures a primary mint sale.\"},\"SalePriceCancelled(address,address,uint256)\":{\"notice\":\"Emitted when a seller cancels a secondary listing.\"},\"SalePriceSet(address,address,uint256,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Emitted when a seller creates or replaces a secondary fixed-price listing.\"},\"SetTokenAllowListConfig(address,uint256,bytes32,uint256)\":{\"notice\":\"Emitted when a token allowlist config is set.\"},\"Sold(address,address,address,uint256,address,uint256,uint256)\":{\"notice\":\"Emitted when a buyer fills a secondary fixed-price listing.\"},\"TokenMintLimitSet(address,uint256,uint256)\":{\"notice\":\"Emitted when a per-address mint limit is set for a token id.\"},\"TokenTxLimitSet(address,uint256,uint256)\":{\"notice\":\"Emitted when a per-address transaction limit is set for a token id.\"}},\"kind\":\"user\",\"methods\":{\"buy(address,uint256,address,address,uint256,uint256)\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listing.\"},\"cancelSalePrice(address,uint256)\":{\"notice\":\"Cancels the caller's secondary listing for a token id.\"},\"getDirectSaleConfig(address,uint256)\":{\"notice\":\"Returns the primary mint sale config for a token id.\"},\"getERC1155ApprovalManager()\":{\"notice\":\"Returns the ERC1155 approval manager used for secondary transfers.\"},\"getMarketConfig()\":{\"notice\":\"Returns the marketplace dependency configuration.\"},\"getSalePrice(address,uint256,address)\":{\"notice\":\"Returns a seller's secondary fixed-price listing.\"},\"getTokenAllowListConfig(address,uint256)\":{\"notice\":\"Returns the allowlist config for a token id.\"},\"getTokenMintLimit(address,uint256)\":{\"notice\":\"Returns the per-address mint quantity limit for a token id.\"},\"getTokenMintsPerAddress(address,uint256,address)\":{\"notice\":\"Returns quantity minted by an address for a token id while the mint limit was enabled.\"},\"getTokenTxLimit(address,uint256)\":{\"notice\":\"Returns the per-address transaction limit for a token id.\"},\"getTokenTxsPerAddress(address,uint256,address)\":{\"notice\":\"Returns mint transactions used by an address for a token id while the tx limit was enabled.\"},\"initialize(address,address,address,address,address,address,address,address,address,address,address)\":{\"notice\":\"Initializes the UUPS marketplace implementation behind a proxy.\"},\"isPaused()\":{\"notice\":\"Returns whether marketplace writes are paused.\"},\"mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])\":{\"notice\":\"Mints tokens from a configured primary sale.\"},\"prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])\":{\"notice\":\"Configures or replaces a primary mint sale for a token id.\"},\"setApprovedTokenRegistry(address)\":{\"notice\":\"Updates the approved token registry address.\"},\"setContractPaused(bool)\":{\"notice\":\"Pauses or unpauses marketplace write operations.\"},\"setERC1155ApprovalManager(address)\":{\"notice\":\"Updates the ERC1155 approval manager address.\"},\"setERC20ApprovalManager(address)\":{\"notice\":\"Updates the ERC20 approval manager address.\"},\"setERC721ApprovalManager(address)\":{\"notice\":\"Updates the ERC721 approval manager address retained by the shared V2 market config.\"},\"setMarketplaceSettings(address)\":{\"notice\":\"Updates the marketplace settings contract address.\"},\"setNetworkBeneficiary(address)\":{\"notice\":\"Updates the network beneficiary address.\"},\"setPayments(address)\":{\"notice\":\"Updates the Payments contract address used for ETH fan-out.\"},\"setRoyaltyEngine(address)\":{\"notice\":\"Updates the royalty engine address.\"},\"setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Creates or replaces a secondary fixed-price listing.\"},\"setSpaceOperatorRegistry(address)\":{\"notice\":\"Updates the space operator registry address.\"},\"setStakingRegistry(address)\":{\"notice\":\"Updates the staking registry address.\"},\"setStakingSettings(address)\":{\"notice\":\"Updates the staking settings address.\"},\"setTokenAllowListConfig(bytes32,uint256,address,uint256)\":{\"notice\":\"Sets a token id allowlist configuration.\"},\"setTokenMintLimit(address,uint256,uint256)\":{\"notice\":\"Sets the max quantity each address may mint for a token id while the limit is enabled.\"},\"setTokenTxLimit(address,uint256,uint256)\":{\"notice\":\"Sets the max number of mint transactions each address may submit for a token id while the limit is enabled.\"}},\"notice\":\"Interface for RARE Protocol ERC1155 primary mint sales and ERC1155 fixed-price secondary sales.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155Marketplace.sol\":\"IRareERC1155Marketplace\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155Marketplace.sol\":{\"keccak256\":\"0xdc49e7eb0b48b0eb40aa5776b44b0fcb4f2f38223762b6ca2fbcc814f16ae3cb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86188372ffe2e7ff9025f1e8e0ee62940c9ac7ec787a892b176421eab3f7bae0\",\"dweb:/ipfs/Qmf83TtD6ax7M97dKtMEeQEohs1aKWPMrCWV4aB1NHtunb\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"stateMutability":"payable","type":"function","name":"buy"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"cancelSalePrice"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDirectSaleConfig","outputs":[{"internalType":"struct IRareERC1155Marketplace.DirectSaleConfig","name":"","type":"tuple","components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getERC1155ApprovalManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMarketConfig","outputs":[{"internalType":"struct MarketConfigV2.Config","name":"","type":"tuple","components":[{"internalType":"address","name":"networkBeneficiary","type":"address"},{"internalType":"contract IMarketplaceSettings","name":"marketplaceSettings","type":"address"},{"internalType":"contract ISpaceOperatorRegistry","name":"spaceOperatorRegistry","type":"address"},{"internalType":"contract IRoyaltyEngineV1","name":"royaltyEngine","type":"address"},{"internalType":"contract IPayments","name":"payments","type":"address"},{"internalType":"contract IApprovedTokenRegistry","name":"approvedTokenRegistry","type":"address"},{"internalType":"contract IStakingSettings","name":"stakingSettings","type":"address"},{"internalType":"contract IRareStakingRegistry","name":"stakingRegistry","type":"address"},{"internalType":"contract IERC20ApprovalManager","name":"erc20ApprovalManager","type":"address"},{"internalType":"contract IERC721ApprovalManager","name":"erc721ApprovalManager","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"stateMutability":"view","type":"function","name":"getSalePrice","outputs":[{"internalType":"struct IRareERC1155Marketplace.SalePrice","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenAllowListConfig","outputs":[{"internalType":"struct IRareERC1155Marketplace.AllowListConfig","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenTxsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"},{"internalType":"address","name":"_marketplaceSettings","type":"address"},{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"},{"internalType":"address","name":"_royaltyEngine","type":"address"},{"internalType":"address","name":"_payments","type":"address"},{"internalType":"address","name":"_approvedTokenRegistry","type":"address"},{"internalType":"address","name":"_stakingSettings","type":"address"},{"internalType":"address","name":"_stakingRegistry","type":"address"},{"internalType":"address","name":"_erc20ApprovalManager","type":"address"},{"internalType":"address","name":"_erc721ApprovalManager","type":"address"},{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"bytes32[]","name":"_proof","type":"bytes32[]"}],"stateMutability":"payable","type":"function","name":"mintDirectSale"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"prepareMintDirectSale"},{"inputs":[{"internalType":"address","name":"_approvedTokenRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setApprovedTokenRegistry"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setContractPaused"},{"inputs":[{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC1155ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc20ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC20ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc721ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC721ApprovalManager"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketplaceSettings"},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkBeneficiary"},{"inputs":[{"internalType":"address","name":"_payments","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPayments"},{"inputs":[{"internalType":"address","name":"_royaltyEngine","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyEngine"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"setSalePrice"},{"inputs":[{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSpaceOperatorRegistry"},{"inputs":[{"internalType":"address","name":"_stakingRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingRegistry"},{"inputs":[{"internalType":"address","name":"_stakingSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingSettings"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"},{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setTokenAllowListConfig"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setTokenMintLimit"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setTokenTxLimit"}],"devdoc":{"kind":"dev","methods":{"buy(address,uint256,address,address,uint256,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Currency expected by the buyer.","_price":"Unit price expected by the buyer.","_quantity":"Quantity to buy.","_seller":"Seller whose listing is being filled.","_tokenId":"Token id to buy."}},"cancelSalePrice(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Listed token id."}},"getDirectSaleConfig(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Primary sale config for the token id."}},"getERC1155ApprovalManager()":{"returns":{"_0":"Current ERC1155 approval manager address."}},"getMarketConfig()":{"returns":{"_0":"Current market config struct."}},"getSalePrice(address,uint256,address)":{"params":{"_contractAddress":"ERC1155 collection address.","_seller":"Seller whose listing is returned.","_tokenId":"Token id to inspect."},"returns":{"_0":"Secondary fixed-price listing for the seller and token id."}},"getTokenAllowListConfig(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Allowlist config for the token id."}},"getTokenMintLimit(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Mint quantity limit. Zero means disabled/unlimited."}},"getTokenMintsPerAddress(address,uint256,address)":{"params":{"_address":"Address whose minted quantity is returned.","_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Quantity minted by `_address` during enabled mint-limit periods."}},"getTokenTxLimit(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Transaction limit. Zero means disabled/unlimited."}},"getTokenTxsPerAddress(address,uint256,address)":{"params":{"_address":"Address whose transaction count is returned.","_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Number of mint transactions used by `_address` during enabled tx-limit periods."}},"initialize(address,address,address,address,address,address,address,address,address,address,address)":{"params":{"_approvedTokenRegistry":"Registry of approved ERC20 currencies.","_erc1155ApprovalManager":"ERC1155 transfer manager for seller token approvals.","_erc20ApprovalManager":"ERC20 transfer manager for buyer currency approvals.","_erc721ApprovalManager":"ERC721 transfer manager kept in shared V2 market config.","_marketplaceSettings":"Marketplace settings contract.","_networkBeneficiary":"Address receiving network marketplace fees.","_payments":"Payments contract used for ETH fan-out.","_royaltyEngine":"Royalty engine contract.","_spaceOperatorRegistry":"Space operator registry contract.","_stakingRegistry":"Staking registry contract.","_stakingSettings":"Staking fee settings contract."}},"isPaused()":{"returns":{"_0":"True when paused."}},"mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])":{"params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Currency expected by the buyer.","_price":"Unit price expected by the buyer.","_proof":"Merkle proof for active allowlist sales.","_quantity":"Quantity to mint.","_tokenId":"Token id to mint."}},"prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])":{"params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Sale currency. Zero address indicates ETH.","_maxMints":"Max quantity per mint transaction. Zero means unlimited.","_price":"Unit price per token.","_splitRatios":"Percentages for `splitRecipients`, totaling 100.","_splitRecipients":"Recipients that split seller proceeds.","_startTime":"Timestamp when minting may begin.","_tokenId":"Token id to sell through primary minting."}},"setApprovedTokenRegistry(address)":{"params":{"_approvedTokenRegistry":"New approved token registry contract."}},"setContractPaused(bool)":{"params":{"_isPaused":"New pause state."}},"setERC1155ApprovalManager(address)":{"params":{"_erc1155ApprovalManager":"New ERC1155 approval manager contract."}},"setERC20ApprovalManager(address)":{"params":{"_erc20ApprovalManager":"New ERC20 approval manager contract."}},"setERC721ApprovalManager(address)":{"params":{"_erc721ApprovalManager":"New ERC721 approval manager contract."}},"setMarketplaceSettings(address)":{"params":{"_marketplaceSettings":"New marketplace settings contract."}},"setNetworkBeneficiary(address)":{"params":{"_networkBeneficiary":"New network beneficiary."}},"setPayments(address)":{"params":{"_payments":"New payments contract."}},"setRoyaltyEngine(address)":{"params":{"_royaltyEngine":"New royalty engine contract."}},"setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])":{"details":"Listings intentionally have no expiry timestamp and can be cancelled by the seller with `cancelSalePrice`.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Listing currency. Zero address indicates ETH.","_price":"Unit price per token.","_quantity":"Quantity listed.","_splitRatios":"Percentages for `splitRecipients`, totaling 100.","_splitRecipients":"Recipients that split seller proceeds.","_tokenId":"Token id to list."}},"setSpaceOperatorRegistry(address)":{"params":{"_spaceOperatorRegistry":"New space operator registry contract."}},"setStakingRegistry(address)":{"params":{"_stakingRegistry":"New staking registry contract."}},"setStakingSettings(address)":{"params":{"_stakingSettings":"New staking settings contract."}},"setTokenAllowListConfig(bytes32,uint256,address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_endTimestamp":"Timestamp when allowlist enforcement expires.","_root":"Merkle root for allowlisted minters. Zero root disables allowlist enforcement.","_tokenId":"Token id controlled by the allowlist."}},"setTokenMintLimit(address,uint256,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_limit":"Max mint quantity per address. Zero disables the limit and disabled periods are not counted.","_tokenId":"Token id controlled by the limit."}},"setTokenTxLimit(address,uint256,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_limit":"Max transactions per address. Zero disables the limit and disabled periods are not counted.","_tokenId":"Token id controlled by the limit."}}},"version":1},"userdoc":{"kind":"user","methods":{"buy(address,uint256,address,address,uint256,uint256)":{"notice":"Buys tokens from a seller's secondary fixed-price listing."},"cancelSalePrice(address,uint256)":{"notice":"Cancels the caller's secondary listing for a token id."},"getDirectSaleConfig(address,uint256)":{"notice":"Returns the primary mint sale config for a token id."},"getERC1155ApprovalManager()":{"notice":"Returns the ERC1155 approval manager used for secondary transfers."},"getMarketConfig()":{"notice":"Returns the marketplace dependency configuration."},"getSalePrice(address,uint256,address)":{"notice":"Returns a seller's secondary fixed-price listing."},"getTokenAllowListConfig(address,uint256)":{"notice":"Returns the allowlist config for a token id."},"getTokenMintLimit(address,uint256)":{"notice":"Returns the per-address mint quantity limit for a token id."},"getTokenMintsPerAddress(address,uint256,address)":{"notice":"Returns quantity minted by an address for a token id while the mint limit was enabled."},"getTokenTxLimit(address,uint256)":{"notice":"Returns the per-address transaction limit for a token id."},"getTokenTxsPerAddress(address,uint256,address)":{"notice":"Returns mint transactions used by an address for a token id while the tx limit was enabled."},"initialize(address,address,address,address,address,address,address,address,address,address,address)":{"notice":"Initializes the UUPS marketplace implementation behind a proxy."},"isPaused()":{"notice":"Returns whether marketplace writes are paused."},"mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])":{"notice":"Mints tokens from a configured primary sale."},"prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])":{"notice":"Configures or replaces a primary mint sale for a token id."},"setApprovedTokenRegistry(address)":{"notice":"Updates the approved token registry address."},"setContractPaused(bool)":{"notice":"Pauses or unpauses marketplace write operations."},"setERC1155ApprovalManager(address)":{"notice":"Updates the ERC1155 approval manager address."},"setERC20ApprovalManager(address)":{"notice":"Updates the ERC20 approval manager address."},"setERC721ApprovalManager(address)":{"notice":"Updates the ERC721 approval manager address retained by the shared V2 market config."},"setMarketplaceSettings(address)":{"notice":"Updates the marketplace settings contract address."},"setNetworkBeneficiary(address)":{"notice":"Updates the network beneficiary address."},"setPayments(address)":{"notice":"Updates the Payments contract address used for ETH fan-out."},"setRoyaltyEngine(address)":{"notice":"Updates the royalty engine address."},"setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])":{"notice":"Creates or replaces a secondary fixed-price listing."},"setSpaceOperatorRegistry(address)":{"notice":"Updates the space operator registry address."},"setStakingRegistry(address)":{"notice":"Updates the staking registry address."},"setStakingSettings(address)":{"notice":"Updates the staking settings address."},"setTokenAllowListConfig(bytes32,uint256,address,uint256)":{"notice":"Sets a token id allowlist configuration."},"setTokenMintLimit(address,uint256,uint256)":{"notice":"Sets the max quantity each address may mint for a token id while the limit is enabled."},"setTokenTxLimit(address,uint256,uint256)":{"notice":"Sets the max number of mint transactions each address may submit for a token id while the limit is enabled."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155Marketplace.sol":"IRareERC1155Marketplace"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155Marketplace.sol":{"keccak256":"0xdc49e7eb0b48b0eb40aa5776b44b0fcb4f2f38223762b6ca2fbcc814f16ae3cb","urls":["bzz-raw://86188372ffe2e7ff9025f1e8e0ee62940c9ac7ec787a892b176421eab3f7bae0","dweb:/ipfs/Qmf83TtD6ax7M97dKtMEeQEohs1aKWPMrCWV4aB1NHtunb"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":62} \ No newline at end of file diff --git a/abis/RareERC1155.json b/abis/RareERC1155.json index b60f50f..41d53bc 100644 --- a/abis/RareERC1155.json +++ b/abis/RareERC1155.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBatch","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnBatch","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"},{"name":"_royaltyReceiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"exists","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getDefaultRoyaltyPercentage","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getDefaultRoyaltyReceiver","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"royaltyAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyReceiverForToken","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"_interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"},{"name":"royaltyReceiver","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TransferBatch","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"values","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"TransferSingle","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"URI","inputs":[{"name":"value","type":"string","indexed":false,"internalType":"string"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x6080806040523461001657613003908161001c8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461248e57806301ffc9a7146123d457806306fdde03146123425780630de54ba0146122c95780630e89341c146121475780631542bb95146120de57806318e97fd114611f665780632a55205a14611ec55780632baf2acb14611beb5780632eb2c2d6146118115780633403c4e9146117e75780633a3d146f146117a75780633ebc82c51461175557806340c1a064146117205780634e1273f4146115825780634f558e79146115545780636b20c454146112fa578063715018a61461129d57806372b3b6201461122c578063894ba833146111dd5780638da5cb5b146111b457806395d89b41146110e1578063a22cb4651461100a578063a7eae21c14610997578063ab69607a14610978578063bd85b0391461094c578063c33ae88f1461091f578063e985e9c5146108c9578063ee070805146108a5578063efc32cd414610808578063f242432a1461043b578063f2fde38b146103ae578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101356020526020604060002054604051908152f35b600080fd5b346101be576101d1366125f3565b6001600160a01b0390921691903383148015610385575b6101f190612889565b8215926101fe8415612b5e565b61020782612b29565b9161021184612b29565b9460006040516102208161251b565b52610331575b60005b83518110156102c45761023c818561285f565b51610247828861285f565b51908060005260fb602081815260406000205492848410610280579061027b95949392916000525203604060002055612850565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020612fae833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612bb6565b8386526097602052604086208587526020520360408520556040519182526020820152600080516020612f6e83398151915260403392a461032f60405161251b565b005b929060005b835181101561037d578061034d610378928861285f565b51610358828761285f565b5160005260fb60205261037160406000209182546129a5565b9055612850565b610336565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103c76124b5565b6103cf61272a565b6001600160a01b038116156103e75761032f90612782565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be576104546124b5565b61045c6124cb565b90608480356001600160401b0381116101be5761047d9036906004016126d8565b6001600160a01b039190838316331480156107dd575b61049c90612889565b828516156104aa81156128ec565b6104b5604435612b29565b6104c0606435612b29565b918587161561079d575b6106ef575b505060443560005260209460978652604060002084861660005286526040600020546104ff606435821015612946565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061054a60643582546129a5565b90556040516044358152606435878201528482169085871690600080516020612f6e83398151915260403392a4803b61057f57005b60a060006105c9958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a4830190612557565b0393165af1600091816106c0575b506106965750506001906105e9612a9d565b6308c379a014610661575b506105fb57005b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608490fd5b0390fd5b610669612abb565b908161067557506105f4565b61065d60405192839262461bcd60e51b845260048401526024830190612557565b6001600160e01b03191614905061032f5760405162461bcd60e51b81528061065d60048201612a54565b6106e1919250843d86116106e8575b6106d98183612536565b810190612a34565b90846105d7565b503d6106cf565b92959194909360005b845181101561078e5761070b818661285f565b5190610717818861285f565b518260005260fb60205260406000205481811061074b576107469360005260fb60205203604060002055612850565b6106f8565b60405162461bcd60e51b81526020600482015260286024820152600080516020612fae833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104cf565b959260009794919592975b86518110156107cf57806107bf6107ca928b61285f565b51610358828a61285f565b6107a8565b5092959691949093966104ca565b50828416600052609860205260406000203360005260205261049c60ff604060002054169050610493565b346101be5760403660031901126101be576108216124b5565b6024359061082d61272a565b8160005261013560205260ff600260406000200154161561088c576001600160a01b031690811561087a57600090815261012f6020526040902080546001600160a01b0319169091179055005b604051637827912560e01b8152600490fd5b60405163c927e5bf60e01b815260048101839052602490fd5b346101be5760003660031901126101be57602060ff61013354166040519015158152f35b346101be5760403660031901126101be576108e26124b5565b6108ea6124cb565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be576004356000526101386020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760003660031901126101be57602061012e54604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be576109c79036906004016125c6565b906024356001600160401b0381116101be576109e79036906004016125c6565b6044939193356001600160401b0381116101be57610a099036906004016125c6565b6001600160a01b03959192909160643580881690036101be576084359487861686036101be576000549660ff8860081c161597888099610ffd575b8015610fe6575b15610f8a5760ff19811660011760005588610f78575b5088606435161561087a576001600160401b038211610d80578190610a88610131546124e1565b601f8111610f0a575b50600090601f8311600114610e8157600092610e76575b50508160011b916000199060031b1c191617610131555b6001600160401b038211610d8057610ad9610132546124e1565b601f8111610e14575b50600090601f8311600114610da157610b4d9493929160009183610d96575b50508160011b916000199060031b1c191617610132555b61013360ff198154169055610b3d60ff60005460081c16610b3881612c62565b612c62565b610b4633612782565b3691612692565b92610b6360ff60005460081c16610b3881612c62565b83516001600160401b038111610d8057610b7e6099546124e1565b601f8111610d1b575b50602094601f8211600114610cb457948192939495600092610ca9575b50508160011b916000199060031b1c1916176099555b610be160ff60005460081c16610bcf81612c62565b610bd881612c62565b610b3881612c62565b600a61012e5561012d80546001600160a01b0319166001600160a01b0360643516179055808216610c58575b5050610c1a606435612782565b610c2057005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6020817f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b592841660005261013782526040600020600160ff1982541617905560405193600185521692a28180610c0d565b015190508580610ba4565b601f198216956099600052806000209160005b888110610d0357508360019596979810610cea575b505050811b01609955610bba565b015160001960f88460031b161c19169055858080610cdc565b91926020600181928685015181550194019201610cc7565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610d76575b601f0160051c01905b818110610d6a5750610b87565b60008155600101610d5d565b9091508190610d54565b634e487b7160e01b600052604160045260246000fd5b013590508880610b01565b61013260005260206000209160005b601f1985168110610dfc5750918391600193610b4d979695601f19811610610de2575b505050811b0161013255610b18565b0135600019600384901b60f8161c19169055888080610dd3565b90926020600181928686013581550194019101610db0565b6101326000527fc53bdfd4aa1ab65dfdaf681ca6bda958ae4a123d4ed68c4277796592280e7835601f840160051c810160208510610e6f575b601f830160051c82018110610e63575050610ae2565b60008155600101610e4d565b5080610e4d565b013590508980610aa8565b610131600090815293507fbd987ad6ccdb7c7567f7335ea839f95dc944431abcf935b6924f70215963db73915b601f1984168510610ef2576001945083601f19811610610ed8575b505050811b0161013155610abf565b0135600019600384901b60f8161c19169055898080610ec9565b81810135835560209485019460019093019201610eae565b6101316000529091507fbd987ad6ccdb7c7567f7335ea839f95dc944431abcf935b6924f70215963db73601f840160051c810160208510610f71575b90849392915b601f830160051c82018110610f62575050610a91565b60008155859450600101610f4c565b5080610f46565b61ffff19166101011760005589610a61565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610a4b5750600160ff821614610a4b565b50600160ff821610610a44565b346101be5761101836612597565b6001600160a01b039091169033821461108a5733600052609860205260406000208260005260205261105a8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be57604051600090610132805490611107826124e1565b90818452600192838116908160001461118c575060011461114b575b6111478461113381880382612536565b604051918291602083526020830190612557565b0390f35b90935060005260209283600020916000925b8284106111795750505081611147936111339282010193611123565b805485850187015292850192810161115d565b61114796506111339450602092508593915060ff191682840152151560051b82010193611123565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be576111f661272a565b610133805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760403660031901126101be576004356001600160401b0381116101be5761125c9036906004016125c6565b61126461272a565b60ff610133541661128b57602091611283913391339160243591612ce3565b604051908152f35b604051637abbf1c960e01b8152600490fd5b346101be5760003660031901126101be576112b661272a565b603380546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101be5760603660031901126101be576113136124b5565b6024906001600160401b039082358281116101be57611336903690600401612634565b9160449081359081116101be57611351903690600401612634565b6001600160a01b0390921692338414801561152b575b61137090612889565b831561137c8115612b5e565b61138982518551146129b2565b60006040516113978161251b565b526114f3575b60005b8151811015611439576113b3818361285f565b516113be828661285f565b51908060005260fb6020818152604060002054928484106113f757906113f295949392916000525203604060002055612850565b6113a0565b60405162461bcd60e51b8152600481018390526028818d0152600080516020612fae833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b82518110156114ae57806114566114a9928561285f565b51611461828761285f565b519080600052609760209080825260406000208760005282526040600020549261148d85851015612bb6565b6000528152604060002090866000525203604060002055612850565b61143f565b50907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6114e5600094604051918291339583612a0f565b0390a461032f60405161251b565b9260009491945b8451811015611521578061151161151c928661285f565b51610358828861285f565b6114fa565b509293909361139d565b5083600052609860205260406000203360005260205261137060ff604060002054169050611367565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be578160040135906115bf8261261d565b926115cd6040519485612536565b82845260209260248486019160051b830101913683116101be57602401905b828210611701575050506024359081116101be5761160e903690600401612634565b82518151036116aa578251926116238461261d565b936116316040519586612536565b808552611640601f199161261d565b01368486013760005b81518110156116935761168e9061167e6001600160a01b0361166b838661285f565b5116611677838761285f565b51906127cb565b611688828861285f565b52612850565b611649565b5050506111476040519282849384528301906126f6565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115ec565b346101be5760203660031901126101be57600435600052610136602052602060018060a01b0360406000205416604051908152f35b346101be5760203660031901126101be5761176e6124b5565b61177661272a565b6001600160a01b0381161561087a5761012d80546001600160a01b0319166001600160a01b03909216919091179055005b346101be5760203660031901126101be576001600160a01b036117c86124b5565b16600052610137602052602060ff604060002054166040519015158152f35b346101be5760003660031901126101be5761012d546040516001600160a01b039091168152602090f35b346101be5760031960a0368201126101be5761182b6124b5565b906118346124cb565b6044908135926001600160401b03938481116101be57611858903690600401612634565b606480358681116101be57611871903690600401612634565b9460849687359081116101be5761188c9036906004016126d8565b6001600160a01b039489861633148015611bc0575b6118aa90612889565b6118b785518951146129b2565b858716156118c581156128ec565b868b1615611b7d575b611ac8575b60005b855181101561196b57806118ed611966928861285f565b518c6118f9838d61285f565b519180600052609790838c602094848652604060002082821660005286526040600020549161192a84841015612946565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c166000525261037160406000209182546129a5565b6118d6565b50888a989796949789604051887f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb89808d16941692806119ad87339583612a0f565b0390a4873b6119b857005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a487016119ec916126f6565b908487830301908701526119ff916126f6565b918483030190840152611a1191612557565b03921691815a602094600091f160009181611aa8575b50611a805750506001611a38612a9d565b6308c379a014611a49575b6105fb57005b611a51612abb565b80611a5c5750611a43565b60405162461bcd60e51b81526020600482015290819061065d906024830190612557565b6001600160e01b0319161461032f5760405162461bcd60e51b81528061065d60048201612a54565b611ac191925060203d81116106e8576106d98183612536565b9083611a27565b9796949060009993999692965b8551811015611b6d57611ae8818761285f565b51611af3828961285f565b519080600052602060fb815260406000205491838310611b2c57611b279493929160fb916000525203604060002055612850565b611ad5565b508b9067616c537570706c7960c01b8f600080516020612fae8339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b50909496979892989591956118d3565b99969498959392919060005b8a51811015611bb157808b61035882611ba5611bac958f61285f565b519261285f565b611b89565b509091929395989496996118ce565b50858a1660005260986020526040600020336000526020526118aa60ff6040600020541690506118a1565b346101be57611bf9366125f3565b60ff610133939293541661128b57826000526101359060209382855260ff6002604060002001541615611ead576001600160a01b038481169390841561087a576033541633141580611e94575b611e7c578215611e6a5781600052610138808752611c69846040600020546129a5565b91836000528752604060002054808311611e46575082600052865260406000205560405191611c978361251b565b60008352611ca482612b29565b93611cae82612b29565b9360005b888751821015611cf3575080611ccb611cee928861285f565b51611cd6828a61285f565b5160005260fb8b5261037160406000209182546129a5565b611cb2565b955050849087856000526097835260406000208460005283526040600020611d1c8682546129a5565b90558360006040518881528786820152600080516020612f6e83398151915260403392a43b611d4f575b50604051848152f35b600092611d939160405194858094819363f23a6e6160e01b998a84523360048501528460248501528b6044850152606484015260a0608484015260a4830190612557565b03925af160009181611e27575b50611dff5750506001611db1612a9d565b6308c379a014611dca575b6105fb575b82808381611d46565b611dd2612abb565b80611ddd5750611dbc565b8361065d60405192839262461bcd60e51b845260048401526024830190612557565b6001600160e01b03191614611dc15760405162461bcd60e51b81528061065d60048201612a54565b611e3f919250853d87116106e8576106d98183612536565b9085611da0565b836064918460405192630d6f5ed560e11b8452600484015260248301526044820152fd5b60405163d11b25af60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b5033600052610137865260ff6040600020541615611c46565b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760403660031901126101be57600435600090815261012f6020526040902054602435906001600160a01b039081168015611f5957905b6101306020526040600020548015611f4e57925b838102938185041490151715611f3857604092606491845193168352046020820152f35b634e487b7160e01b600052601160045260246000fd5b5061012e5492611f14565b508061012d541690611f00565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611f9a9036906004016125c6565b9190611fa461272a565b836000526101359160209280845260ff60026040600020015416156120c557856000528352600180604060002001918511610d8057611fed85611fe784546124e1565b84612c0e565b6000601f861160011461204e57918580600080516020612f8e8339815191529796959361203e95600093612043575b501b906000198760031b1c19161790555b604051938385948552840191612cc2565b0390a2005b85013592508a61201c565b601f1986169083600052856000209160005b8181106120b05750918796959391600080516020612f8e8339815191529861203e969410612096575b505085811b01905561202d565b840135600019600389901b60f8161c191690558880612089565b86830135845592840192918701918701612060565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576004356001600160401b0381116101be5761210e9036906004016125c6565b906044356001600160a01b03811681036101be5761212a61272a565b60ff610133541661128b5760209261128392339160243591612ce3565b346101be576020806003193601126101be57600435600052610135815260018060406000200190826040518093600090805490612183826124e1565b808552918681169081156122a85750600114612267575b50506121a892500383612536565b8151156121c65750905b611147604051928284938452830190612557565b90506040519060009083609954916121dd836124e1565b9283865285828216918260001461224757505060011461220d575b50505081612207910382612536565b906121b2565b91909250609960005282600020916000925b828410612234575050508201018183856121f8565b805486850186015292840192810161221f565b60ff19168482015293151560051b840190920193508591508690506121f8565b9091506000528260002090846000925b82841061229157505050916121a89282010185928761219a565b805488850187015287945092850192869101612277565b9150506121a894925060ff191682840152151560051b82010185928761219a565b346101be576122d736612597565b906122e061272a565b6001600160a01b031690811561087a5760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261013782526123378160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be57604051600090610131805490612368826124e1565b90818452600192838116908160001461118c5750600114612393576111478461113381880382612536565b90935060005260209283600020916000925b8284106123c15750505081611147936111339282010193611123565b80548585018701529285019281016123a5565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be5760209063d20de18960e01b811490811561247d575b8115612420575b506040519015158152f35b63152a902d60e11b81149150811561243a575b5082612415565b636cdb3d1360e11b81149150811561246c575b811561245b575b5082612433565b6301ffc9a760e01b14905082612454565b6303a24d0760e21b8114915061244d565b631030681960e21b8114915061240e565b346101be5760403660031901126101be5760206112836124ac6124b5565b602435906127cb565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c92168015612511575b60208310146124fb57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124f0565b602081019081106001600160401b03821117610d8057604052565b90601f801991011681019081106001600160401b03821117610d8057604052565b919082519283825260005b848110612583575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612562565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610d805760051b60200190565b81601f820112156101be5780359161264b8361261d565b926126596040519485612536565b808452602092838086019260051b8201019283116101be578301905b828210612683575050505090565b81358152908301908301612675565b9291926001600160401b038211610d8057604051916126bb601f8201601f191660200184612536565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be578160206126f393359101612692565b90565b90815180825260208080930193019160005b828110612716575050505090565b835185529381019392810192600101612708565b6033546001600160a01b0316330361273e57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b03169081156127f857600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b6000198114611f385760010190565b80518210156128735760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b1561289057565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b156128f357565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561294d57565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b91908201809211611f3857565b156129b957565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612a266126f3936040845260408401906126f6565b9160208184039101526126f6565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612aaa57565b905060046000803e60005160e01c90565b600060443d106126f357604051600319913d83016004833e81516001600160401b03918282113d602484011117612b1857818401948551938411612b20573d85010160208487010111612b1857506126f392910160200190612536565b949350505050565b50949350505050565b60405190604082018281106001600160401b03821117610d805760405260018252602082016020368237825115612873575290565b15612b6557565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612bbd57565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c1c57505050565b600091825260208220906020601f850160051c83019410612c58575b601f0160051c01915b828110612c4d57505050565b818155600101612c41565b9092508290612c38565b15612c6957565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9193908415612f5b576001600160a01b0382161561087a5761013494612d098654612850565b8096556040519260608401936001600160401b039481811086821117610d8057604052828152612d3a368588612692565b906020810191825260016040820152886000526101356020526040600020918151835551958651908111610d80578996612d8482612d7b60018701546124e1565b60018701612c0e565b602090601f8311600114612eb55760407f06ec8b3fb63a2a91fc1109b41eed7d76ac33c774d1d49f298836f97561ed07a4999a9484612dfc95612e949895600295600092612eaa575b50508160011b916000199060031b1c19161760018501555b0151151591019060ff801983541691151516179055565b8660005261013660205260406000209760018060a01b03169760018060a01b031990898282541617905561012f60205260406000209060018060a01b0385169082541617905561012e5461013060205260406000205586600080516020612f8e8339815191526040516020815280612e78602082018a87612cc2565b0390a26040519485948552606060208601526060850191612cc2565b6001600160a01b0390911660408301520390a390565b015190503880612dcd565b6001859493929a950160005260206000209060005b601f1984168110612f405750612dfc936001846002947f06ec8b3fb63a2a91fc1109b41eed7d76ac33c774d1d49f298836f97561ed07a49d9e604095612e949b9a98601f19811610612f27575b505050811b016001850155612de5565b015160001960f88460031b161c19169055388080612f17565b818c0151835560209b8c019b8e9b5060019093019201612eca565b604051631dd0e19360e01b8152600490fdfec3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f626bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a264697066735822122077965fa0e0e98965ee2091700b624025a480f5e36e32a78c2f0d090944ea05a164736f6c63430008120033","sourceMap":"975:10373:213:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461248e57806301ffc9a7146123d457806306fdde03146123425780630de54ba0146122c95780630e89341c146121475780631542bb95146120de57806318e97fd114611f665780632a55205a14611ec55780632baf2acb14611beb5780632eb2c2d6146118115780633403c4e9146117e75780633a3d146f146117a75780633ebc82c51461175557806340c1a064146117205780634e1273f4146115825780634f558e79146115545780636b20c454146112fa578063715018a61461129d57806372b3b6201461122c578063894ba833146111dd5780638da5cb5b146111b457806395d89b41146110e1578063a22cb4651461100a578063a7eae21c14610997578063ab69607a14610978578063bd85b0391461094c578063c33ae88f1461091f578063e985e9c5146108c9578063ee070805146108a5578063efc32cd414610808578063f242432a1461043b578063f2fde38b146103ae578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101356020526020604060002054604051908152f35b600080fd5b346101be576101d1366125f3565b6001600160a01b0390921691903383148015610385575b6101f190612889565b8215926101fe8415612b5e565b61020782612b29565b9161021184612b29565b9460006040516102208161251b565b52610331575b60005b83518110156102c45761023c818561285f565b51610247828861285f565b51908060005260fb602081815260406000205492848410610280579061027b95949392916000525203604060002055612850565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020612fae833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612bb6565b8386526097602052604086208587526020520360408520556040519182526020820152600080516020612f6e83398151915260403392a461032f60405161251b565b005b929060005b835181101561037d578061034d610378928861285f565b51610358828761285f565b5160005260fb60205261037160406000209182546129a5565b9055612850565b610336565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103c76124b5565b6103cf61272a565b6001600160a01b038116156103e75761032f90612782565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be576104546124b5565b61045c6124cb565b90608480356001600160401b0381116101be5761047d9036906004016126d8565b6001600160a01b039190838316331480156107dd575b61049c90612889565b828516156104aa81156128ec565b6104b5604435612b29565b6104c0606435612b29565b918587161561079d575b6106ef575b505060443560005260209460978652604060002084861660005286526040600020546104ff606435821015612946565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061054a60643582546129a5565b90556040516044358152606435878201528482169085871690600080516020612f6e83398151915260403392a4803b61057f57005b60a060006105c9958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a4830190612557565b0393165af1600091816106c0575b506106965750506001906105e9612a9d565b6308c379a014610661575b506105fb57005b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608490fd5b0390fd5b610669612abb565b908161067557506105f4565b61065d60405192839262461bcd60e51b845260048401526024830190612557565b6001600160e01b03191614905061032f5760405162461bcd60e51b81528061065d60048201612a54565b6106e1919250843d86116106e8575b6106d98183612536565b810190612a34565b90846105d7565b503d6106cf565b92959194909360005b845181101561078e5761070b818661285f565b5190610717818861285f565b518260005260fb60205260406000205481811061074b576107469360005260fb60205203604060002055612850565b6106f8565b60405162461bcd60e51b81526020600482015260286024820152600080516020612fae833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104cf565b959260009794919592975b86518110156107cf57806107bf6107ca928b61285f565b51610358828a61285f565b6107a8565b5092959691949093966104ca565b50828416600052609860205260406000203360005260205261049c60ff604060002054169050610493565b346101be5760403660031901126101be576108216124b5565b6024359061082d61272a565b8160005261013560205260ff600260406000200154161561088c576001600160a01b031690811561087a57600090815261012f6020526040902080546001600160a01b0319169091179055005b604051637827912560e01b8152600490fd5b60405163c927e5bf60e01b815260048101839052602490fd5b346101be5760003660031901126101be57602060ff61013354166040519015158152f35b346101be5760403660031901126101be576108e26124b5565b6108ea6124cb565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be576004356000526101386020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760003660031901126101be57602061012e54604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be576109c79036906004016125c6565b906024356001600160401b0381116101be576109e79036906004016125c6565b6044939193356001600160401b0381116101be57610a099036906004016125c6565b6001600160a01b03959192909160643580881690036101be576084359487861686036101be576000549660ff8860081c161597888099610ffd575b8015610fe6575b15610f8a5760ff19811660011760005588610f78575b5088606435161561087a576001600160401b038211610d80578190610a88610131546124e1565b601f8111610f0a575b50600090601f8311600114610e8157600092610e76575b50508160011b916000199060031b1c191617610131555b6001600160401b038211610d8057610ad9610132546124e1565b601f8111610e14575b50600090601f8311600114610da157610b4d9493929160009183610d96575b50508160011b916000199060031b1c191617610132555b61013360ff198154169055610b3d60ff60005460081c16610b3881612c62565b612c62565b610b4633612782565b3691612692565b92610b6360ff60005460081c16610b3881612c62565b83516001600160401b038111610d8057610b7e6099546124e1565b601f8111610d1b575b50602094601f8211600114610cb457948192939495600092610ca9575b50508160011b916000199060031b1c1916176099555b610be160ff60005460081c16610bcf81612c62565b610bd881612c62565b610b3881612c62565b600a61012e5561012d80546001600160a01b0319166001600160a01b0360643516179055808216610c58575b5050610c1a606435612782565b610c2057005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6020817f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b592841660005261013782526040600020600160ff1982541617905560405193600185521692a28180610c0d565b015190508580610ba4565b601f198216956099600052806000209160005b888110610d0357508360019596979810610cea575b505050811b01609955610bba565b015160001960f88460031b161c19169055858080610cdc565b91926020600181928685015181550194019201610cc7565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610d76575b601f0160051c01905b818110610d6a5750610b87565b60008155600101610d5d565b9091508190610d54565b634e487b7160e01b600052604160045260246000fd5b013590508880610b01565b61013260005260206000209160005b601f1985168110610dfc5750918391600193610b4d979695601f19811610610de2575b505050811b0161013255610b18565b0135600019600384901b60f8161c19169055888080610dd3565b90926020600181928686013581550194019101610db0565b6101326000527fc53bdfd4aa1ab65dfdaf681ca6bda958ae4a123d4ed68c4277796592280e7835601f840160051c810160208510610e6f575b601f830160051c82018110610e63575050610ae2565b60008155600101610e4d565b5080610e4d565b013590508980610aa8565b610131600090815293507fbd987ad6ccdb7c7567f7335ea839f95dc944431abcf935b6924f70215963db73915b601f1984168510610ef2576001945083601f19811610610ed8575b505050811b0161013155610abf565b0135600019600384901b60f8161c19169055898080610ec9565b81810135835560209485019460019093019201610eae565b6101316000529091507fbd987ad6ccdb7c7567f7335ea839f95dc944431abcf935b6924f70215963db73601f840160051c810160208510610f71575b90849392915b601f830160051c82018110610f62575050610a91565b60008155859450600101610f4c565b5080610f46565b61ffff19166101011760005589610a61565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610a4b5750600160ff821614610a4b565b50600160ff821610610a44565b346101be5761101836612597565b6001600160a01b039091169033821461108a5733600052609860205260406000208260005260205261105a8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be57604051600090610132805490611107826124e1565b90818452600192838116908160001461118c575060011461114b575b6111478461113381880382612536565b604051918291602083526020830190612557565b0390f35b90935060005260209283600020916000925b8284106111795750505081611147936111339282010193611123565b805485850187015292850192810161115d565b61114796506111339450602092508593915060ff191682840152151560051b82010193611123565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be576111f661272a565b610133805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760403660031901126101be576004356001600160401b0381116101be5761125c9036906004016125c6565b61126461272a565b60ff610133541661128b57602091611283913391339160243591612ce3565b604051908152f35b604051637abbf1c960e01b8152600490fd5b346101be5760003660031901126101be576112b661272a565b603380546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101be5760603660031901126101be576113136124b5565b6024906001600160401b039082358281116101be57611336903690600401612634565b9160449081359081116101be57611351903690600401612634565b6001600160a01b0390921692338414801561152b575b61137090612889565b831561137c8115612b5e565b61138982518551146129b2565b60006040516113978161251b565b526114f3575b60005b8151811015611439576113b3818361285f565b516113be828661285f565b51908060005260fb6020818152604060002054928484106113f757906113f295949392916000525203604060002055612850565b6113a0565b60405162461bcd60e51b8152600481018390526028818d0152600080516020612fae833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b82518110156114ae57806114566114a9928561285f565b51611461828761285f565b519080600052609760209080825260406000208760005282526040600020549261148d85851015612bb6565b6000528152604060002090866000525203604060002055612850565b61143f565b50907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6114e5600094604051918291339583612a0f565b0390a461032f60405161251b565b9260009491945b8451811015611521578061151161151c928661285f565b51610358828861285f565b6114fa565b509293909361139d565b5083600052609860205260406000203360005260205261137060ff604060002054169050611367565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be578160040135906115bf8261261d565b926115cd6040519485612536565b82845260209260248486019160051b830101913683116101be57602401905b828210611701575050506024359081116101be5761160e903690600401612634565b82518151036116aa578251926116238461261d565b936116316040519586612536565b808552611640601f199161261d565b01368486013760005b81518110156116935761168e9061167e6001600160a01b0361166b838661285f565b5116611677838761285f565b51906127cb565b611688828861285f565b52612850565b611649565b5050506111476040519282849384528301906126f6565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115ec565b346101be5760203660031901126101be57600435600052610136602052602060018060a01b0360406000205416604051908152f35b346101be5760203660031901126101be5761176e6124b5565b61177661272a565b6001600160a01b0381161561087a5761012d80546001600160a01b0319166001600160a01b03909216919091179055005b346101be5760203660031901126101be576001600160a01b036117c86124b5565b16600052610137602052602060ff604060002054166040519015158152f35b346101be5760003660031901126101be5761012d546040516001600160a01b039091168152602090f35b346101be5760031960a0368201126101be5761182b6124b5565b906118346124cb565b6044908135926001600160401b03938481116101be57611858903690600401612634565b606480358681116101be57611871903690600401612634565b9460849687359081116101be5761188c9036906004016126d8565b6001600160a01b039489861633148015611bc0575b6118aa90612889565b6118b785518951146129b2565b858716156118c581156128ec565b868b1615611b7d575b611ac8575b60005b855181101561196b57806118ed611966928861285f565b518c6118f9838d61285f565b519180600052609790838c602094848652604060002082821660005286526040600020549161192a84841015612946565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c166000525261037160406000209182546129a5565b6118d6565b50888a989796949789604051887f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb89808d16941692806119ad87339583612a0f565b0390a4873b6119b857005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a487016119ec916126f6565b908487830301908701526119ff916126f6565b918483030190840152611a1191612557565b03921691815a602094600091f160009181611aa8575b50611a805750506001611a38612a9d565b6308c379a014611a49575b6105fb57005b611a51612abb565b80611a5c5750611a43565b60405162461bcd60e51b81526020600482015290819061065d906024830190612557565b6001600160e01b0319161461032f5760405162461bcd60e51b81528061065d60048201612a54565b611ac191925060203d81116106e8576106d98183612536565b9083611a27565b9796949060009993999692965b8551811015611b6d57611ae8818761285f565b51611af3828961285f565b519080600052602060fb815260406000205491838310611b2c57611b279493929160fb916000525203604060002055612850565b611ad5565b508b9067616c537570706c7960c01b8f600080516020612fae8339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b50909496979892989591956118d3565b99969498959392919060005b8a51811015611bb157808b61035882611ba5611bac958f61285f565b519261285f565b611b89565b509091929395989496996118ce565b50858a1660005260986020526040600020336000526020526118aa60ff6040600020541690506118a1565b346101be57611bf9366125f3565b60ff610133939293541661128b57826000526101359060209382855260ff6002604060002001541615611ead576001600160a01b038481169390841561087a576033541633141580611e94575b611e7c578215611e6a5781600052610138808752611c69846040600020546129a5565b91836000528752604060002054808311611e46575082600052865260406000205560405191611c978361251b565b60008352611ca482612b29565b93611cae82612b29565b9360005b888751821015611cf3575080611ccb611cee928861285f565b51611cd6828a61285f565b5160005260fb8b5261037160406000209182546129a5565b611cb2565b955050849087856000526097835260406000208460005283526040600020611d1c8682546129a5565b90558360006040518881528786820152600080516020612f6e83398151915260403392a43b611d4f575b50604051848152f35b600092611d939160405194858094819363f23a6e6160e01b998a84523360048501528460248501528b6044850152606484015260a0608484015260a4830190612557565b03925af160009181611e27575b50611dff5750506001611db1612a9d565b6308c379a014611dca575b6105fb575b82808381611d46565b611dd2612abb565b80611ddd5750611dbc565b8361065d60405192839262461bcd60e51b845260048401526024830190612557565b6001600160e01b03191614611dc15760405162461bcd60e51b81528061065d60048201612a54565b611e3f919250853d87116106e8576106d98183612536565b9085611da0565b836064918460405192630d6f5ed560e11b8452600484015260248301526044820152fd5b60405163d11b25af60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b5033600052610137865260ff6040600020541615611c46565b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760403660031901126101be57600435600090815261012f6020526040902054602435906001600160a01b039081168015611f5957905b6101306020526040600020548015611f4e57925b838102938185041490151715611f3857604092606491845193168352046020820152f35b634e487b7160e01b600052601160045260246000fd5b5061012e5492611f14565b508061012d541690611f00565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611f9a9036906004016125c6565b9190611fa461272a565b836000526101359160209280845260ff60026040600020015416156120c557856000528352600180604060002001918511610d8057611fed85611fe784546124e1565b84612c0e565b6000601f861160011461204e57918580600080516020612f8e8339815191529796959361203e95600093612043575b501b906000198760031b1c19161790555b604051938385948552840191612cc2565b0390a2005b85013592508a61201c565b601f1986169083600052856000209160005b8181106120b05750918796959391600080516020612f8e8339815191529861203e969410612096575b505085811b01905561202d565b840135600019600389901b60f8161c191690558880612089565b86830135845592840192918701918701612060565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576004356001600160401b0381116101be5761210e9036906004016125c6565b906044356001600160a01b03811681036101be5761212a61272a565b60ff610133541661128b5760209261128392339160243591612ce3565b346101be576020806003193601126101be57600435600052610135815260018060406000200190826040518093600090805490612183826124e1565b808552918681169081156122a85750600114612267575b50506121a892500383612536565b8151156121c65750905b611147604051928284938452830190612557565b90506040519060009083609954916121dd836124e1565b9283865285828216918260001461224757505060011461220d575b50505081612207910382612536565b906121b2565b91909250609960005282600020916000925b828410612234575050508201018183856121f8565b805486850186015292840192810161221f565b60ff19168482015293151560051b840190920193508591508690506121f8565b9091506000528260002090846000925b82841061229157505050916121a89282010185928761219a565b805488850187015287945092850192869101612277565b9150506121a894925060ff191682840152151560051b82010185928761219a565b346101be576122d736612597565b906122e061272a565b6001600160a01b031690811561087a5760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261013782526123378160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be57604051600090610131805490612368826124e1565b90818452600192838116908160001461118c5750600114612393576111478461113381880382612536565b90935060005260209283600020916000925b8284106123c15750505081611147936111339282010193611123565b80548585018701529285019281016123a5565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be5760209063d20de18960e01b811490811561247d575b8115612420575b506040519015158152f35b63152a902d60e11b81149150811561243a575b5082612415565b636cdb3d1360e11b81149150811561246c575b811561245b575b5082612433565b6301ffc9a760e01b14905082612454565b6303a24d0760e21b8114915061244d565b631030681960e21b8114915061240e565b346101be5760403660031901126101be5760206112836124ac6124b5565b602435906127cb565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c92168015612511575b60208310146124fb57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124f0565b602081019081106001600160401b03821117610d8057604052565b90601f801991011681019081106001600160401b03821117610d8057604052565b919082519283825260005b848110612583575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612562565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610d805760051b60200190565b81601f820112156101be5780359161264b8361261d565b926126596040519485612536565b808452602092838086019260051b8201019283116101be578301905b828210612683575050505090565b81358152908301908301612675565b9291926001600160401b038211610d8057604051916126bb601f8201601f191660200184612536565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be578160206126f393359101612692565b90565b90815180825260208080930193019160005b828110612716575050505090565b835185529381019392810192600101612708565b6033546001600160a01b0316330361273e57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b03169081156127f857600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b6000198114611f385760010190565b80518210156128735760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b1561289057565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b156128f357565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561294d57565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b91908201809211611f3857565b156129b957565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612a266126f3936040845260408401906126f6565b9160208184039101526126f6565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612aaa57565b905060046000803e60005160e01c90565b600060443d106126f357604051600319913d83016004833e81516001600160401b03918282113d602484011117612b1857818401948551938411612b20573d85010160208487010111612b1857506126f392910160200190612536565b949350505050565b50949350505050565b60405190604082018281106001600160401b03821117610d805760405260018252602082016020368237825115612873575290565b15612b6557565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612bbd57565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c1c57505050565b600091825260208220906020601f850160051c83019410612c58575b601f0160051c01915b828110612c4d57505050565b818155600101612c41565b9092508290612c38565b15612c6957565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9193908415612f5b576001600160a01b0382161561087a5761013494612d098654612850565b8096556040519260608401936001600160401b039481811086821117610d8057604052828152612d3a368588612692565b906020810191825260016040820152886000526101356020526040600020918151835551958651908111610d80578996612d8482612d7b60018701546124e1565b60018701612c0e565b602090601f8311600114612eb55760407f06ec8b3fb63a2a91fc1109b41eed7d76ac33c774d1d49f298836f97561ed07a4999a9484612dfc95612e949895600295600092612eaa575b50508160011b916000199060031b1c19161760018501555b0151151591019060ff801983541691151516179055565b8660005261013660205260406000209760018060a01b03169760018060a01b031990898282541617905561012f60205260406000209060018060a01b0385169082541617905561012e5461013060205260406000205586600080516020612f8e8339815191526040516020815280612e78602082018a87612cc2565b0390a26040519485948552606060208601526060850191612cc2565b6001600160a01b0390911660408301520390a390565b015190503880612dcd565b6001859493929a950160005260206000209060005b601f1984168110612f405750612dfc936001846002947f06ec8b3fb63a2a91fc1109b41eed7d76ac33c774d1d49f298836f97561ed07a49d9e604095612e949b9a98601f19811610612f27575b505050811b016001850155612de5565b015160001960f88460031b161c19169055388080612f17565b818c0151835560209b8c019b8e9b5060019093019201612eca565b604051631dd0e19360e01b8152600490fdfec3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f626bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a264697066735822122077965fa0e0e98965ee2091700b624025a480f5e36e32a78c2f0d090944ea05a164736f6c63430008120033","sourceMap":"975:10373:213:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;7953:12;975:10373;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;;;;929:10:73;764:23:54;;:66;;;;975:10373:213;743:159:54;;;:::i;:::-;11246:18:51;;;11238:66;11246:18;;11238:66;:::i;:::-;11379:21;;;:::i;:::-;11437:25;;;;:::i;:::-;975:10373:213;;;;;;;:::i;:::-;;1658:156:55;;975:10373:213;;1896:3:55;975:10373:213;;1880:14:55;;;;;1932:6;;;;:::i;:::-;975:10373:213;1973:10:55;;;;:::i;:::-;975:10373:213;;;;;2018:12:55;975:10373:213;;;;;;;;2060:16:55;;;;975:10373:213;;;1896:3:55;975:10373:213;;;;;;;;;;;;;1896:3:55;:::i;:::-;1865:13;;975:10373:213;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;975:10373:213;;;;-1:-1:-1;;;975:10373:213;;;;;;;1880:14:55;975:10373:213;1880:14:55;;;975:10373:213;;;11572:9:51;975:10373:213;;;;;;;;;;;;;;;11601:70:51;11609:21;;;;11601:70;:::i;:::-;975:10373:213;;;11572:9:51;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;975:10373:213;929:10:73;11773:54:51;;975:10373:213;;;;:::i;:::-;;1658:156:55;1701:13;;975:10373:213;1732:3:55;975:10373:213;;1716:14:55;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;975:10373:213;1768:6:55;;;;:::i;:::-;975:10373:213;;;1755:12:55;975:10373:213;;1755:34:55;975:10373:213;;;;;;1755:34:55;:::i;:::-;975:10373:213;;1732:3:55;:::i;:::-;1701:13;;1716:14;;;;1658:156;;764:66:54;975:10373:213;;;;3873:18:51;975:10373:213;;;;;929:10:73;975:10373:213;;;;743:159:54;975:10373:213;;;;;;764:66:54;;;;975:10373:213;;;;;;-1:-1:-1;;975:10373:213;;;;;;:::i;:::-;1303:62:41;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;2402:22:41;975:10373:213;;2496:8:41;;;:::i;975:10373:213:-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;;;;929:10:73;4184:20:51;:60;;;;975:10373:213;4163:153:51;;;:::i;:::-;975:10373:213;;;5507:16:51;5499:66;5507:16;;5499:66;:::i;:::-;5640:21;975:10373:213;;5640:21:51;:::i;:::-;5698:25;975:10373:213;;5698:25:51;:::i;:::-;975:10373:213;;;;1662:18:55;1658:156;;975:10373:213;1824:424:55;;975:10373:213;;;;;;;;;5827:9:51;975:10373:213;;;;;;;;;;;;;;;;5856:76:51;975:10373:213;;5864:21:51;;;5856:76;:::i;:::-;975:10373:213;;;;5827:9:51;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;5827:9:51;975:10373:213;;;;;;;;;;;;;;;6028:27:51;975:10373:213;;;;6028:27:51;:::i;:::-;975:10373:213;;;;;;;;;;;;;;;;;;;;;929:10:73;-1:-1:-1;;;;;;;;;;;975:10373:213;929:10:73;6071:46:51;;1713:19:71;;15996:538:51;;975:10373:213;15996:538:51;975:10373:213;;;;;;;;;;;;;;;;;;;16035:83:51;;;;929:10:73;975:10373:213;16035:83:51;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16035:83:51;975:10373:213;;16035:83:51;;975:10373:213;;16035:83:51;;;15996:538;-1:-1:-1;16031:493:51;;;;975:10373:213;16031:493:51;;;:::i;:::-;;;;;;;;;975:10373:213;16031:493:51;975:10373:213;;-1:-1:-1;;;16447:62:51;;975:10373:213;;16447:62:51;;975:10373:213;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;16447:62:51;;;;;16031:493;16341:81;;:::i;:::-;;;;;16031:493;;;16341:81;975:10373:213;;;16257:50:51;;;;;;16393:14;;975:10373:213;16393:14:51;;975:10373:213;;;;;;:::i;16031:493:51:-;-1:-1:-1;;;;;;975:10373:213;16163:163:51;;-1:-1:-1;16031:493:51;16163:163;975:10373:213;;-1:-1:-1;;;16257:50:51;;975:10373:213;16257:50:51;975:10373:213;16257:50:51;;;:::i;16035:83::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1824:424:55;1865:13;;;;;;975:10373:213;1896:3:55;975:10373:213;;1880:14:55;;;;;1932:6;;;;:::i;:::-;975:10373:213;1973:10:55;;;;;:::i;:::-;975:10373:213;;;;2018:12:55;975:10373:213;;;;;;2060:16:55;;;975:10373:213;;1896:3:55;975:10373:213;;;2018:12:55;975:10373:213;;;;;;;1896:3:55;:::i;:::-;1865:13;;975:10373:213;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;975:10373:213;;;;-1:-1:-1;;;975:10373:213;;;;;;;1880:14:55;;;;;;;;;1824:424;;;;1658:156;1701:13;;975:10373:213;1701:13:55;;;;;;1732:3;975:10373:213;;1716:14:55;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;975:10373:213;1768:6:55;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;1658:156;;4184:60:51;975:10373:213;;;;;;3873:18:51;975:10373:213;;;;;929:10:73;975:10373:213;;;;4163:153:51;975:10373:213;;;;;;4184:60:51;;;;975:10373:213;;;;;;-1:-1:-1;;975:10373:213;;;;;;:::i;:::-;;;1303:62:41;;;:::i;:::-;975:10373:213;;;2281:12;975:10373;;;2281:29;975:10373;;;2281:29;975:10373;;2280:30;2276:70;;-1:-1:-1;;;;;975:10373:213;;6628:23;;6624:60;;975:10373;;;;1639:16:228;975:10373:213;;;;;;;-1:-1:-1;;;;;;975:10373:213;;;;;;;6624:60;975:10373;;-1:-1:-1;;;6660:24:213;;975:10373;;6660:24;2276:70;975:10373;;-1:-1:-1;;;2319:27:213;;975:10373;2319:27;;975:10373;;;;;2319:27;975:10373;;;;;;-1:-1:-1;;975:10373:213;;;;;;1224:29;975:10373;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;3873:18:51;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;8127:16;975:10373;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;1033:12:55;975:10373:213;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;2453:24:228;975:10373:213;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3301:14:47;3347:34;;;;;;975:10373:213;3346:108:47;;;;975:10373:213;;;;-1:-1:-1;;975:10373:213;;;;;;;3562:65:47;;975:10373:213;;;;;;2706:22;2702:59;;-1:-1:-1;;;;;975:10373:213;;;;;;;2862:12;975:10373;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2862:12;975:10373;;-1:-1:-1;;;;;975:10373:213;;;;;2884:16;975:10373;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:16;975:10373;;2910:16;975:10373;;;;;;;5366:69:47;975:10373:213;;;;;;5366:69:47;;;:::i;:::-;;:::i;:::-;1195:12:41;929:10:73;1195:12:41;:::i;:::-;975:10373:213;;;:::i;:::-;;5366:69:47;975:10373:213;;;;;;5366:69:47;;;:::i;:::-;975:10373:213;;-1:-1:-1;;;;;975:10373:213;;;;;8623:13:51;975:10373:213;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:51;975:10373:213;;5366:69:47;975:10373:213;;;;;;5366:69:47;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;3278:2:213;2197:38:228;975:10373:213;1492:34:228;975:10373:213;;-1:-1:-1;;;;;;975:10373:213;-1:-1:-1;;;;;975:10373:213;;;;;;;;;3338:252;;975:10373;;;3718:8;975:10373;;3718:8;:::i;:::-;3647:99:47;;975:10373:213;3647:99:47;975:10373:213;;;;;;;3721:14:47;975:10373:213;;;;;;3721:14:47;975:10373:213;3338:252;975:10373;;3536:43;975:10373;;;;;3479:15;975:10373;;;;;;;;;;;;;;;;;;;;;3536:43;;3338:252;;;;975:10373;;;;-1:-1:-1;975:10373:213;;;;;;;;;;8623:13:51;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:51;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:51;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;2884:16;975:10373;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:16;975:10373;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:16;975:10373;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;;;-1:-1:-1;975:10373:213;;;;;2862:12;975:10373;;;;;-1:-1:-1;975:10373:213;;;-1:-1:-1;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;2862:12;975:10373;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2862:12;975:10373;;;;-1:-1:-1;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;-1:-1:-1;975:10373:213;;;3562:65:47;-1:-1:-1;;975:10373:213;;;;;3562:65:47;;;975:10373:213;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;3346:108:47;3426:4;;1713:19:71;:23;3387:66:47;;3346:108;3387:66;975:10373:213;;;;;3436:17:47;3346:108;;3347:34;975:10373:213;;;;;3365:16:47;3347:34;;975:10373:213;;;;;;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;;;929:10:73;13309:17:51;;975:10373:213;;929:10:73;975:10373:213;;13382:18:51;975:10373:213;;;;;;;;;;13382:46:51;975:10373:213;;;;;;;;;;;;;;;;;;;13382:46:51;975:10373:213;;;;;;;13443:41:51;975:10373:213;929:10:73;13443:41:51;;975:10373:213;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;1189:29;;975:10373;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;1513:6:41;975:10373:213;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;1303:62:41;;:::i;:::-;7396:15:213;975:10373;;-1:-1:-1;;975:10373:213;7407:4;975:10373;;;7443:10;7426:28;-1:-1:-1;;7426:28:213;975:10373;;;;;;;-1:-1:-1;;975:10373:213;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;:::i;:::-;1303:62:41;;:::i;:::-;975:10373:213;1970:8;975:10373;;1966:41;;975:10373;4290:10;4254:59;4290:10;;;;975:10373;;;4254:59;;:::i;:::-;975:10373;;;;;;1966:41;975:10373;;-1:-1:-1;;;1987:20:213;;975:10373;;1987:20;975:10373;;;;;;-1:-1:-1;;975:10373:213;;;;1303:62:41;;:::i;:::-;2758:6;975:10373:213;;-1:-1:-1;;;;;;975:10373:213;;;;;;;-1:-1:-1;;;;;975:10373:213;2806:40:41;975:10373:213;;2806:40:41;975:10373:213;;;;;;;-1:-1:-1;;975:10373:213;;;;;;:::i;:::-;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;;;929:10:73;1080:23:54;;:66;;;;975:10373:213;1059:159:54;;;:::i;:::-;12266:18:51;;12258:66;12266:18;;12258:66;:::i;:::-;12334:81;975:10373:213;;;;12342:28:51;12334:81;:::i;:::-;975:10373:213;;;;;;:::i;:::-;;1658:156:55;;975:10373:213;;1896:3:55;975:10373:213;;1880:14:55;;;;;1932:6;;;;:::i;:::-;975:10373:213;1973:10:55;;;;:::i;:::-;975:10373:213;;;;;2018:12:55;975:10373:213;;;;;;;;2060:16:55;;;;975:10373:213;;;1896:3:55;975:10373:213;;;;;;;;;;;;;1896:3:55;:::i;:::-;1865:13;;975:10373:213;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;975:10373:213;;;;-1:-1:-1;;;975:10373:213;;;;;;;1880:14:55;;;;975:10373:213;12581:3:51;975:10373:213;;12565:14:51;;;;;12613:6;;12581:3;12613:6;;;:::i;:::-;975:10373:213;12650:10:51;;;;:::i;:::-;975:10373:213;;;;;12697:9:51;975:10373:213;;;;;;;;;;;;;;;;;12738:21:51;12730:70;12738:21;;;;12730:70;:::i;:::-;975:10373:213;;;;;;;;;;;;;;;;;12581:3:51;:::i;:::-;12550:13;;12565:14;;;12924:55;;975:10373:213;12565:14:51;975:10373:213;;929:10:73;;;;12924:55:51;;;:::i;:::-;;;;975:10373:213;;;;:::i;1658:156:55:-;1701:13;975:10373:213;1701:13:55;;;1732:3;975:10373:213;;1716:14:55;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;975:10373:213;1768:6:55;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;1658:156;;1080:66:54;975:10373:213;;;;3873:18:51;975:10373:213;;;;;929:10:73;975:10373:213;;;;1059:159:54;975:10373:213;;;;;;1080:66:54;;;;975:10373:213;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;1033:12:55;975:10373:213;;;;;;;1229:44:55;;975:10373:213;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;3146:29:51;975:10373:213;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3347:3:51;975:10373:213;;3326:19:51;;;;;3347:3;;3385:30;-1:-1:-1;;;;;3395:11:51;975:10373:213;3395:11:51;;:::i;:::-;975:10373:213;;3408:6:51;;;;:::i;:::-;975:10373:213;3385:30:51;;:::i;:::-;3366:49;;;;:::i;:::-;975:10373:213;3347:3:51;:::i;:::-;3311:13;;3326:19;;;;975:10373:213;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;7628:13;975:10373;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;:::i;:::-;1303:62:41;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;6198:23;6194:60;;1492:34:228;975:10373:213;;-1:-1:-1;;;;;;975:10373:213;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;-1:-1:-1;;;;;975:10373:213;;:::i;:::-;;;;7788:15;975:10373;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;2332:22:228;975:10373:213;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;;;929:10:73;4675:20:51;:60;;;;975:10373:213;4654:153:51;;;:::i;:::-;6817:81;975:10373:213;;;;6825:28:51;6817:81;:::i;:::-;975:10373:213;;;6916:16:51;6908:66;6916:16;;6908:66;:::i;:::-;975:10373:213;;;1662:18:55;1658:156;;975:10373:213;1824:424:55;;975:10373:213;;7134:3:51;975:10373:213;;7118:14:51;;;;;7166:6;;7134:3;7166:6;;;:::i;:::-;975:10373:213;7203:10:51;;;;;:::i;:::-;975:10373:213;;;;;7250:9:51;975:10373:213;;;;;;;;;;;;;;;;;;;;;;7291:21:51;7283:76;7291:21;;;;7283:76;:::i;:::-;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7471:27:51;975:10373:213;;;;;;7471:27:51;:::i;7134:3::-;7103:13;;7118:14;;;;;;;;;975:10373:213;;;;7524:47:51;975:10373:213;;;;;;929:10:73;;7524:47:51;929:10:73;;7524:47:51;;;:::i;:::-;;;;1713:19:71;;16774:580:51;;975:10373:213;16774:580:51;975:10373:213;;;;;;;;;;;16813:90:51;;;;929:10:73;975:10373:213;16813:90:51;;975:10373:213;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;16813:90:51;975:10373:213;;16813:90:51;;;975:10373:213;16813:90:51;975:10373:213;16813:90:51;;975:10373:213;;16813:90:51;;;16774:580;-1:-1:-1;16809:535:51;;;;975:10373:213;16809:535:51;;:::i;:::-;;;;;;;;975:10373:213;16809:535:51;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;975:10373:213;;-1:-1:-1;;;17213:14:51;;975:10373:213;;17213:14:51;;975:10373:213;;;;;;;;;;;:::i;16809:535:51:-;-1:-1:-1;;;;;;975:10373:213;16978:168:51;16809:535;16978:168;975:10373:213;;-1:-1:-1;;;17077:50:51;;975:10373:213;17077:50:51;975:10373:213;17077:50:51;;;:::i;16813:90::-;;;;;975:10373:213;16813:90:51;;;;;;;;;:::i;:::-;;;;;1824:424:55;1865:13;;;;975:10373:213;1865:13:55;;;;;;1896:3;975:10373:213;;1880:14:55;;;;;1932:6;;;;:::i;:::-;975:10373:213;1973:10:55;;;;:::i;:::-;975:10373:213;;;;;;2018:12:55;975:10373:213;;;;;;2060:16:55;;;;975:10373:213;;1896:3:55;975:10373:213;;;;2018:12:55;975:10373:213;;;;;;;;;1896:3:55;:::i;:::-;1865:13;;975:10373:213;;;;-1:-1:-1;;;975:10373:213;-1:-1:-1;;;;;;;;;;;975:10373:213;;;16257:50:51;;;;975:10373:213;;;;;;;;;;;;;;;;;;1880:14:55;;;;;;;;;;;;1824:424;;1658:156;1701:13;;;;;;;;;975:10373:213;1732:3:55;975:10373:213;;1716:14:55;;;;;1779:10;;1768:6;1779:10;;1732:3;1779:10;;;:::i;:::-;975:10373:213;1768:6:55;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;;1658:156;;4675:60:51;975:10373:213;;;;;;3873:18:51;975:10373:213;;;;;929:10:73;975:10373:213;;;;4654:153:51;975:10373:213;;;;;;4675:60:51;;;;975:10373:213;;;;;;;:::i;:::-;;1970:8;975:10373;;;;;1966:41;;975:10373;;;2281:12;975:10373;;;;;;;2281:29;975:10373;;;2281:29;975:10373;;2280:30;2276:70;;-1:-1:-1;;;;;975:10373:213;;;;;4650:23;;4646:60;;1513:6:41;975:10373:213;;4720:10;:21;;:53;;;975:10373;4716:94;;4824:12;;4820:45;;975:10373;;;4986:16;975:10373;;;4986:36;975:10373;;;;;4986:36;:::i;:::-;975:10373;;;;;;;;;;5098:32;;;5094:105;;975:10373;;;;;;;;;;;;;;;;:::i;:::-;;;;9254:21:51;;;:::i;:::-;9312:25;;;;:::i;:::-;1701:13:55;975:10373:213;1732:3:55;975:10373:213;;;1716:14:55;;;;;1779:10;;;1732:3;1779:10;;;:::i;:::-;975:10373:213;1768:6:55;;;;:::i;:::-;975:10373:213;;;1755:12:55;975:10373:213;;1755:34:55;975:10373:213;;;;;;1755:34:55;:::i;1732:3::-;1701:13;;1716:14;;;;;;;975:10373:213;;;9425:9:51;975:10373:213;;;;;;;;;;;;;9425:27:51;975:10373:213;;;9425:27:51;:::i;:::-;975:10373:213;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;975:10373:213;4720:10;9467:52:51;;1713:19:71;15996:538:51;;1696:108:55;-1:-1:-1;975:10373:213;;;;;;15996:538:51;975:10373:213;;;;;;;;;;;;;;;16035:83:51;;;;4720:10:213;975:10373;16035:83:51;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16035:83:51;;;;975:10373:213;;16035:83:51;;;15996:538;-1:-1:-1;16031:493:51;;;;975:10373:213;16031:493:51;;:::i;:::-;;;;;;;;;15996:538;;;;;;16031:493;16341:81;;:::i;:::-;;;;16031:493;;;16341:81;;975:10373:213;;;16257:50:51;;;;;;16393:14;;975:10373:213;16393:14:51;;975:10373:213;;;;;;:::i;16031:493:51:-;-1:-1:-1;;;;;;975:10373:213;16163:163:51;16031:493;16163:163;975:10373:213;;-1:-1:-1;;;16257:50:51;;975:10373:213;16257:50:51;975:10373:213;16257:50:51;;;:::i;16035:83::-;;;;;;;;;;;;;;;:::i;:::-;;;;;5094:105:213;975:10373;;;;;;5139:60;;;;;;975:10373;5139:60;;975:10373;;;;;;;;;5139:60;4820:45;975:10373;;-1:-1:-1;;;4845:20:213;;975:10373;;4845:20;4716:94;975:10373;;-1:-1:-1;;;4782:28:213;;4720:10;975:10373;4782:28;;975:10373;;;4782:28;4720:53;:10;;975:10373;;4746:15;975:10373;;;;;;;;4745:28;4720:53;;2276:70;975:10373;;;;2319:27;;;;;;975:10373;2319:27;;975:10373;2319:27;975:10373;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;;1049:16:228;975:10373:213;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;1049:40:228;;975:10373:213;;1049:118:228;;1238:18;975:10373:213;;;;;;1238:33:228;;;;:131;;975:10373:213;;;;;;;;;;;;;;;;1401:3:228;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;1238:131:228;975:10373:213;1345:24:228;975:10373:213;1238:131:228;;;1049:118;975:10373:213;;1145:22:228;975:10373:213;;1049:118:228;;;975:10373:213;;;;;;-1:-1:-1;;975:10373:213;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;:::i;:::-;1303:62:41;;;;:::i;:::-;975:10373:213;;;2281:12;975:10373;;;;;;;2281:29;975:10373;;;2281:29;975:10373;;2280:30;2276:70;;975:10373;;;;;;;;;;7055:31;975:10373;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7182:24;;;975:10373;;;;;;-1:-1:-1;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2276:70;975:10373;;-1:-1:-1;;;2319:27:213;;975:10373;2319:27;;975:10373;;;;;2319:27;975:10373;;;;;;-1:-1:-1;;975:10373:213;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;975:10373:213;;;;;;1303:62:41;;:::i;:::-;975:10373:213;1970:8;975:10373;;1966:41;;975:10373;4007:10;3971:65;4007:10;;975:10373;;;3971:65;;:::i;975:10373::-;;;;;;;;;;;;;;;;;8344:12;975:10373;;;;;;;8344:31;975:10373;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8392:26;:59;;;;;975:10373;;;;;;;;;;;;;:::i;8392:59::-;975:10373;;;;;;;;2440:4:51;975:10373:213;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8392:59;;;975:10373;;;;;2440:4:51;975:10373:213;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;-1:-1:-1;975:10373:213;;-1:-1:-1;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1303:62:41;;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;5763:21;;5759:58;;975:10373;5954:41;975:10373;;;;5903:15;975:10373;;5903:36;975:10373;;;;;;;;;;;;;;;;;;;5903:36;975:10373;;;;;;;5954:41;975:10373;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;1156:27;;975:10373;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8688:46:213;;;:97;;;;975:10373;8688:150;;;;975:10373;;;;;;;;;;8688:150;-1:-1:-1;;;2013:41:228;;;-1:-1:-1;2013:93:228;;;;8688:150:213;;;;;2013:93:228;-1:-1:-1;;;1759:52:51;;;-1:-1:-1;1759:131:51;;;;2013:93:228;1759:183:51;;;;2013:93:228;;;;;1759:183:51;-1:-1:-1;;;1168:51:77;;-1:-1:-1;1759:183:51;;;:131;-1:-1:-1;;;1827:63:51;;;-1:-1:-1;1759:131:51;;8688:97:213;-1:-1:-1;;;8738:47:213;;;-1:-1:-1;8688:97:213;;975:10373;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;-1:-1:-1;;;;;975:10373:213;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;975:10373:213;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;975:10373:213;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;1599:130:41;1513:6;975:10373:213;-1:-1:-1;;;;;975:10373:213;929:10:73;1662:23:41;975:10373:213;;1599:130:41:o;975:10373:213:-;;;;16257:50:51;;;975:10373:213;;;;;;;;;;;;;;;;;;2666:187:41;2758:6;975:10373:213;;-1:-1:-1;;;;;975:10373:213;;;-1:-1:-1;;;;;;975:10373:213;;;;;;;;;;2806:40:41;-1:-1:-1;;2806:40:41;2666:187::o;2593:227:51:-;-1:-1:-1;;;;;975:10373:213;;2706:21:51;;975:10373:213;;2725:1:51;975:10373:213;2791:9:51;975:10373:213;;;2725:1:51;975:10373:213;;2725:1:51;975:10373:213;;;;2725:1:51;975:10373:213;;2593:227:51;:::o;975:10373:213:-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;;975:10373:213;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;975:10373:213;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;:::o;17366:193:51:-;975:10373:213;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;17499:1:51;975:10373:213;;;;;;;;;;;;;;;17366:193:51;:::o;975:10373:213:-;;;;:::o;:::-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;975:10373:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;;;;:::o;:::-;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;-1:-1:-1;;;975:10373:213;;;;;;;;;;;;;;;;;;;;-1:-1:-1;975:10373:213;;;;;;;;-1:-1:-1;;975:10373:213;;;;:::o;9220:1126::-;;;;9484:15;;9480:51;;-1:-1:-1;;;;;975:10373:213;;9545:30;9541:67;;9698:16;975:10373;9698:16;975:10373;;9698:16;:::i;:::-;975:10373;;;;;;;;;;-1:-1:-1;;;;;975:10373:213;;;;;;;;;;;;;;;;;;;;:::i;:::-;9890:40;;;;975:10373;;;;;9890:40;;975:10373;;9498:1;975:10373;9866:12;9890:40;975:10373;;9498:1;975:10373;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;9890:40;975:10373;;;;;;;;;10242:72;975:10373;;;;;;;;;;;9498:1;975:10373;;;;;;;;;;;;;;;;;;;;;;;;9890:40;975:10373;;;;;;;;;;;;;;;;;;;;;;9498:1;975:10373;9940:13;9890:40;975:10373;;9498:1;975:10373;;;;;;;;;;;;;;;;;;;;;;;;1639:16:228;9890:40:213;975:10373;;9498:1;975:10373;;;;;;;;;;;;;;;;2453:24:228;975:10373:213;1794:18:228;9890:40:213;975:10373;;9498:1;975:10373;;;-1:-1:-1;;;;;;;;;;;975:10373:213;;9890:40;975:10373;;;;9890:40;975:10373;;;;;:::i;:::-;10204:23;;;975:10373;;;;;;;;9890:40;975:10373;;;;;;;;:::i;:::-;-1:-1:-1;;;;;975:10373:213;;;;;;;10242:72;;;9220:1126;:::o;975:10373::-;;;;-1:-1:-1;975:10373:213;;;;;;;;;;;;;9498:1;975:10373;9890:40;9498:1;975:10373;;9498:1;975:10373;-1:-1:-1;;975:10373:213;;;;;;;;;;;;;10242:72;975:10373;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9890:40;975:10373;;;;;;-1:-1:-1;975:10373:213;;;;;;;;9480:51;975:10373;;-1:-1:-1;;;9508:23:213;;;;","linkReferences":{}},"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","burn(address,uint256,uint256)":"f5298aca","burnBatch(address,uint256[],uint256[])":"6b20c454","createToken(string,uint256)":"72b3b620","createToken(string,uint256,address)":"1542bb95","disableContract()":"894ba833","disabled()":"ee070805","exists(uint256)":"4f558e79","getDefaultRoyaltyPercentage()":"ab69607a","getDefaultRoyaltyReceiver()":"3403c4e9","init(string,string,string,address,address)":"a7eae21c","isApprovedForAll(address,address)":"e985e9c5","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","royaltyInfo(uint256,uint256)":"2a55205a","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","setRoyaltyReceiverForToken(address,uint256)":"efc32cd4","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","totalSupply(uint256)":"bd85b039","transferOwnership(address)":"f2fde38b","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"royaltyReceiver\",\"type\":\"address\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"burnBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_royaltyReceiver\",\"type\":\"address\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultRoyaltyPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultRoyaltyReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"setRoyaltyReceiverForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Clone-safe upgradeable-style implementation used behind minimal proxies. Token ids start at 1.\",\"errors\":{\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}]},\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,uint256,string,address)\":{\"params\":{\"creator\":\"RARE creator recorded for the token id.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"royaltyReceiver\":\"ERC2981 royalty receiver configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"createToken(string,uint256)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"createToken(string,uint256,address)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_royaltyReceiver\":\"Address that receives ERC2981 royalties for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"exists(uint256)\":{\"details\":\"Indicates whether any token exist with a given id, or not.\"},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and default royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"The minted token id.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"royaltyInfo(uint256,uint256)\":{\"params\":{\"_salePrice\":\"- the sale price of the NFT asset specified by _tokenId\",\"_tokenId\":\"- the NFT asset queried for royalty information\"},\"returns\":{\"receiver\":\"- address of who should be sent the royalty payment\",\"royaltyAmount\":\"- the royalty payment amount for _salePrice\"}},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"setDefaultRoyaltyReceiver(address)\":{\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"setRoyaltyReceiverForToken(address,uint256)\":{\"params\":{\"_receiver\":\"New royalty receiver for the token id.\",\"_tokenId\":\"Token id whose royalty receiver is updated.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"Interface id to inspect.\"},\"returns\":{\"_0\":\"True when the interface id is supported.\"}},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"totalSupply(uint256)\":{\"details\":\"Total amount of tokens in with a given id.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"stateVariables\":{\"disabled\":{\"return\":\"True when disabled.\",\"returns\":{\"_0\":\"True when disabled.\"}},\"name\":{\"return\":\"Collection name.\",\"returns\":{\"_0\":\"Collection name.\"}},\"symbol\":{\"return\":\"Collection symbol.\",\"returns\":{\"_0\":\"Collection symbol.\"}}},\"title\":\"RareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,uint256,string,address)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"createToken(string,uint256)\":{\"notice\":\"Creates a new token type using the caller as the royalty receiver.\"},\"createToken(string,uint256,address)\":{\"notice\":\"Creates a new token type with a token-specific URI, max supply, and royalty receiver.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints an existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the fallback royalty receiver for tokens that rely on default royalties.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes minter approval for an address.\"},\"setRoyaltyReceiverForToken(address,uint256)\":{\"notice\":\"Updates the royalty receiver for a specific token id.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Returns whether this contract supports an interface id.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Basic RARE Protocol ERC1155 collection with creator and royalty support.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/RareERC1155.sol\":\"RareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7\",\"dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol\":{\"keccak256\":\"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98\",\"dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8\",\"dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/SafeMathUpgradeable.sol\":{\"keccak256\":\"0xb1561a6950b1aaa504c8f81b7d46bccfa77ccd10de3eb865cf34b1acd5ad505e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a56cb91629dacd161be24908fbf94315f3f45dd6fee8dad82b27af853cbc4ee\",\"dweb:/ipfs/QmNfEzdf4NTpxyhzWKAmeDwwSpJ6ZjNizK3GXw3TEuTTgn\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x9dc23a2064e31818e89092b5935ab96079a99b29e1aa1456565ee698d3fd23a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5aaa41dbed645e29ec41a7159bee7a10519ebaa71fb86187bd109aba732db40\",\"dweb:/ipfs/Qma3yM1SZuHAxo6HS16uFMX1yVVqikkXX9v6n5op5Tss1V\"]},\"src/token/ERC1155/RareERC1155.sol\":{\"keccak256\":\"0x894e428a8afbd1d06d8f988574d1f73de6eb679327ae9a3d91183e993f105cae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1afeff73784717afd6f5c83f4546aaa155cfaad67aaf99399b31590e4d7f259\",\"dweb:/ipfs/QmRs8jAGq33XapRmDCEJ2Pi89HqcrDhVUgAQeWLB3koAtT\"]},\"src/token/extensions/ERC2981Upgradeable.sol\":{\"keccak256\":\"0x62c64c84a127c5a388397fa20c990b8c0dbd22a1fa1b7176f55c8aae3238383d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e540b90c23c363b1d5fb122286c7c583a44c8b907f2764ddf0f2c0e7793b5465\",\"dweb:/ipfs/QmPn163efSqFyhWHC4qFmeJXgMMbEmoENa6gRZjM4wedhA\"]},\"src/token/extensions/IERC2981.sol\":{\"keccak256\":\"0x2435b55e1011401b85ed792513721df4fe905013926fa7385f502aa3e97cdffd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056bca27c266998358654b0a64b4286a9b66c1b4db464f70a679d44de0f3fa4b\",\"dweb:/ipfs/QmW7zACzmmzoHKdrRQVRKh6eNiGuMjKZrZbvndNW819Z1w\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false},{"internalType":"address","name":"royaltyReceiver","type":"address","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"values","type":"uint256[]","indexed":false}],"type":"event","name":"TransferBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"TransferSingle","anonymous":false},{"inputs":[{"internalType":"string","name":"value","type":"string","indexed":false},{"internalType":"uint256","name":"id","type":"uint256","indexed":true}],"type":"event","name":"URI","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"burnBatch"},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"address","name":"_royaltyReceiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getDefaultRoyaltyPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getDefaultRoyaltyReceiver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyReceiverForToken"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."},"createToken(string,uint256)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"createToken(string,uint256,address)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_royaltyReceiver":"Address that receives ERC2981 royalties for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"exists(uint256)":{"details":"Indicates whether any token exist with a given id, or not."},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and default royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedForAll(address,address)":{"details":"See {IERC1155-isApprovedForAll}."},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"The minted token id."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"royaltyInfo(uint256,uint256)":{"params":{"_salePrice":"- the sale price of the NFT asset specified by _tokenId","_tokenId":"- the NFT asset queried for royalty information"},"returns":{"receiver":"- address of who should be sent the royalty payment","royaltyAmount":"- the royalty payment amount for _salePrice"}},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"See {IERC1155-safeBatchTransferFrom}."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"See {IERC1155-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC1155-setApprovalForAll}."},"setDefaultRoyaltyReceiver(address)":{"params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"setRoyaltyReceiverForToken(address,uint256)":{"params":{"_receiver":"New royalty receiver for the token id.","_tokenId":"Token id whose royalty receiver is updated."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"Interface id to inspect."},"returns":{"_0":"True when the interface id is supported."}},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"totalSupply(uint256)":{"details":"Total amount of tokens in with a given id."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"createToken(string,uint256)":{"notice":"Creates a new token type using the caller as the royalty receiver."},"createToken(string,uint256,address)":{"notice":"Creates a new token type with a token-specific URI, max supply, and royalty receiver."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintTo(address,uint256,uint256)":{"notice":"Mints an existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the fallback royalty receiver for tokens that rely on default royalties."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes minter approval for an address."},"setRoyaltyReceiverForToken(address,uint256)":{"notice":"Updates the royalty receiver for a specific token id."},"supportsInterface(bytes4)":{"notice":"Returns whether this contract supports an interface id."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/RareERC1155.sol":"RareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol":{"keccak256":"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856","urls":["bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7","dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"keccak256":"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b","urls":["bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce","dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol":{"keccak256":"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8","urls":["bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83","dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol":{"keccak256":"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7","urls":["bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98","dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"keccak256":"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e","urls":["bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8","dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"keccak256":"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448","urls":["bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9","dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a","urls":["bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7","dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/SafeMathUpgradeable.sol":{"keccak256":"0xb1561a6950b1aaa504c8f81b7d46bccfa77ccd10de3eb865cf34b1acd5ad505e","urls":["bzz-raw://9a56cb91629dacd161be24908fbf94315f3f45dd6fee8dad82b27af853cbc4ee","dweb:/ipfs/QmNfEzdf4NTpxyhzWKAmeDwwSpJ6ZjNizK3GXw3TEuTTgn"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x9dc23a2064e31818e89092b5935ab96079a99b29e1aa1456565ee698d3fd23a6","urls":["bzz-raw://d5aaa41dbed645e29ec41a7159bee7a10519ebaa71fb86187bd109aba732db40","dweb:/ipfs/Qma3yM1SZuHAxo6HS16uFMX1yVVqikkXX9v6n5op5Tss1V"],"license":"MIT"},"src/token/ERC1155/RareERC1155.sol":{"keccak256":"0x894e428a8afbd1d06d8f988574d1f73de6eb679327ae9a3d91183e993f105cae","urls":["bzz-raw://e1afeff73784717afd6f5c83f4546aaa155cfaad67aaf99399b31590e4d7f259","dweb:/ipfs/QmRs8jAGq33XapRmDCEJ2Pi89HqcrDhVUgAQeWLB3koAtT"],"license":"MIT"},"src/token/extensions/ERC2981Upgradeable.sol":{"keccak256":"0x62c64c84a127c5a388397fa20c990b8c0dbd22a1fa1b7176f55c8aae3238383d","urls":["bzz-raw://e540b90c23c363b1d5fb122286c7c583a44c8b907f2764ddf0f2c0e7793b5465","dweb:/ipfs/QmPn163efSqFyhWHC4qFmeJXgMMbEmoENa6gRZjM4wedhA"],"license":"MIT"},"src/token/extensions/IERC2981.sol":{"keccak256":"0x2435b55e1011401b85ed792513721df4fe905013926fa7385f502aa3e97cdffd","urls":["bzz-raw://056bca27c266998358654b0a64b4286a9b66c1b4db464f70a679d44de0f3fa4b","dweb:/ipfs/QmW7zACzmmzoHKdrRQVRKh6eNiGuMjKZrZbvndNW819Z1w"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":213} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBatch","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnBatch","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"exists","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintBatchTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyPercentage","inputs":[{"name":"_percentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"_interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"TransferBatch","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"values","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"TransferSingle","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"URI","inputs":[{"name":"value","type":"string","indexed":false,"internalType":"string"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"BatchLengthMismatch","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"RoyaltyPercentageTooHigh","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x608080604052346100c2576000549060ff8260081c16610070575060ff80821603610035575b6040516132d49081620000c88239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a138610025565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e146123d757806301ffc9a71461231d57806306fdde031461228b5780630de54ba0146122075780630e89341c1461208557806318e97fd114611f025780632a55205a14611e3e5780632baf2acb14611dcd5780632eb2c2d614611a055780633512639c146119855780633a3d146f146119455780633ebc82c51461190c57806340c1a064146118d75780634e1273f4146117395780634f558e791461170b5780636b20c454146114c3578063715018a61461146657806372b3b620146111f6578063894ba833146111a75780638da5cb5b1461117e57806395d89b41146110ab578063a22cb46514610fd4578063a7eae21c14610917578063bd85b039146108eb578063c33ae88f146108be578063cfdbf254146108a2578063e27a41bf14610852578063e985e9c5146107fc578063ee070805146107d8578063f242432a14610442578063f2fde38b146103b5578063f5298aca146101b85763ffd25aa41461018657600080fd5b346101b35760203660031901126101b3576004356000526101636020526020604060002054604051908152f35b600080fd5b346101b3576101c636612557565b6001600160a01b039092169190338314801561038c575b6101e690612835565b8215926101f38415612b4f565b6101fc82612b2a565b9161020684612b2a565b9460006040516102158161247f565b52610338575b60005b83518110156102b9576102318185612821565b5161023c8288612821565b51908060005260fb6020818152604060002054928484106102755790610270959493929160005252036040600020556127ef565b61021e565b60405162461bcd60e51b8152600481018390526028602482015260008051602061327f833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102e282821015612ba7565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a461033660405161247f565b005b929060005b8351811015610384578061035461037f9288612821565b5161035f8287612821565b5160005260fb6020526103786040600020918254612951565b90556127ef565b61033d565b50909261021b565b508260005260986020526040600020336000526020526101e660ff6040600020541690506101dd565b346101b35760203660031901126101b3576103ce6123fe565b6103d66126c9565b6001600160a01b038116156103ee5761033690612721565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101b35760a03660031901126101b35761045b6123fe565b610463612414565b90608480356001600160401b0381116101b35761048490369060040161264a565b6001600160a01b039190838316331480156107ad575b6104a390612835565b828516156104b18115612898565b6104bc604435612b2a565b6104c7606435612b2a565b918587161561076d575b6106bf575b505060443560005260209460978652604060002084861660005286526040600020546105066064358210156128f2565b60443560005260978752604060002085871660005287526064359003604060002055604435600052609786526040600020848216600052865260406000206105516064358254612951565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b61059857005b60a060006105e2958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a48301906124bb565b0393165af160009181610690575b50610666575050600190610602612a49565b6308c379a014610631575b5061061457005b60405162461bcd60e51b81528061062d60048201612ad5565b0390fd5b610639612a67565b9081610645575061060d565b61062d60405192839262461bcd60e51b8452600484015260248301906124bb565b6001600160e01b0319161490506103365760405162461bcd60e51b81528061062d60048201612a00565b6106b1919250843d86116106b8575b6106a9818361249a565b8101906129e0565b90846105f0565b503d61069f565b92959194909360005b845181101561075e576106db8186612821565b51906106e78188612821565b518260005260fb60205260406000205481811061071b576107169360005260fb602052036040600020556127ef565b6106c8565b60405162461bcd60e51b8152602060048201526028602482015260008051602061327f833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104d6565b959260009794919592975b865181101561079f578061078f61079a928b612821565b5161035f828a612821565b610778565b5092959691949093966104d1565b5082841660005260986020526040600020336000526020526104a360ff60406000205416905061049a565b346101b35760003660031901126101b357602060ff61016154166040519015158152f35b346101b35760403660031901126101b3576108156123fe565b61081d612414565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101b35760203660031901126101b35761086b6126c9565b60ff6101615416610890576101675461033690600435906001600160a01b0316613120565b604051637abbf1c960e01b8152600490fd5b346101b35760003660031901126101b357602060405160648152f35b346101b35760203660031901126101b3576004356000526101666020526020604060002054604051908152f35b346101b35760203660031901126101b35760043560005260fb6020526020604060002054604051908152f35b346101b35760a03660031901126101b3576004356001600160401b0381116101b35761094790369060040161252a565b906024356001600160401b0381116101b35761096790369060040161252a565b6044356001600160401b0381116101b35761098690369060040161252a565b90929091906064356001600160a01b03811690036101b357608435956001600160a01b03871687036101b3576000549560ff8760081c161596878098610fc7575b8015610fb0575b15610f545760ff19811660011760005587610f42575b506064356001600160a01b031615610f30576001600160401b038211610d38578190610a1261015f5461242a565b601f8111610ec2575b50600090601f8311600114610e3957600092610e2e575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610d3857610a636101605461242a565b601f8111610dcc575b50600090601f8311600114610d5957610ad79493929160009183610d4e575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ac760ff60005460081c16610ac281612c53565b612c53565b610ad033612721565b3691612604565b91610aed60ff60005460081c16610ac281612c53565b82516001600160401b038111610d3857610b0860995461242a565b601f8111610cd3575b506020601f8211600114610c6c5781929394600092610c61575b50508160011b916000199060031b1c1916176099555b610b5f60ff60005460081c16610b5681612c53565b610ac281612c53565b61016780546001600160a01b0319166064356001600160a01b0316179055600a610168556040516103e890602090610b9681612464565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610c09575b50610bcb606435612721565b610bd157005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101656020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610bbf565b015190508480610b2b565b601f198216906099600052806000209160005b818110610cbb57509583600195969710610ca2575b505050811b01609955610b41565b015160001960f88460031b161c19169055848080610c94565b9192602060018192868b015181550194019201610c7f565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610d2e575b601f0160051c01905b818110610d225750610b11565b60008155600101610d15565b9091508190610d0c565b634e487b7160e01b600052604160045260246000fd5b013590508780610a8b565b61016060005260206000209160005b601f1985168110610db45750918391600193610ad7979695601f19811610610d9a575b505050811b0161016055610aa2565b0135600019600384901b60f8161c19169055878080610d8b565b90926020600181928686013581550194019101610d68565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610e27575b601f830160051c82018110610e1b575050610a6c565b60008155600101610e05565b5080610e05565b013590508880610a32565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610eaa576001945083601f19811610610e90575b505050811b0161015f55610a49565b0135600019600384901b60f8161c19169055888080610e81565b81810135835560209485019460019093019201610e66565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510610f29575b90849392915b601f830160051c82018110610f1a575050610a1b565b60008155859450600101610f04565b5080610efe565b604051637827912560e01b8152600490fd5b61ffff191661010117600055886109e4565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156109ce5750600160ff8216146109ce565b50600160ff8216106109c7565b346101b357610fe2366124fb565b6001600160a01b0390911690338214611054573360005260986020526040600020826000526020526110248160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101b35760003660031901126101b3576040516000906101608054906110d18261242a565b9081845260019283811690816000146111565750600114611115575b611111846110fd8188038261249a565b6040519182916020835260208301906124bb565b0390f35b90935060005260209283600020916000925b8284106111435750505081611111936110fd92820101936110ed565b8054858501870152928501928101611127565b61111196506110fd9450602092508593915060ff191682840152151560051b820101936110ed565b346101b35760003660031901126101b3576033546040516001600160a01b039091168152602090f35b346101b35760003660031901126101b3576111c06126c9565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101b35760403660031901126101b3576001600160401b036004358181116101b35761122790369060040161252a565b61122f6126c9565b60ff61016154166108905760243515611454576101629161125083546127ef565b809355604051906060820182811086821117610d38576040526024358252611279368483612604565b6020830190815260016040840152846000526101636020526040600020908351825551928351968711610d38578686946112c56020996112bc600187015461242a565b60018701612bff565b8890601f83116001146113b55760407f7775d6ac27837184534d17b6cdcdcc82f564fa44d02ec9e6a2efa2aee69fe58196948461133b9561139f98956002956000926113aa575b50508160011b916000199060031b1c19161760018501555b0151151591019060ff801983541691151516179055565b6000848152610164885260409081902080546001600160a01b0319163317905551878152849060008051602061325f833981519152908061137f818c018a876130ff565b0390a26040519182916024358352604089840152339660408401916130ff565b0390a3604051908152f35b015190508e8061130c565b9060018501600052896000209160005b601f198516811061143a57507f7775d6ac27837184534d17b6cdcdcc82f564fa44d02ec9e6a2efa2aee69fe581969460018561139f989560029560409561133b99601f19811610611421575b505050811b016001850155611324565b015160001960f88460031b161c191690558e8080611411565b8183015184558a9850600190930192918b01918b016113c5565b604051631dd0e19360e01b8152600490fd5b346101b35760003660031901126101b35761147f6126c9565b603380546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101b35760603660031901126101b3576114dc6123fe565b6024906001600160401b039082358281116101b3576114ff9036906004016125e6565b9160449081359081116101b35761151a9036906004016125e6565b6001600160a01b039092169233841480156116e2575b61153990612835565b83156115458115612b4f565b611552825185511461295e565b60006040516115608161247f565b526116aa575b60005b81518110156116025761157c8183612821565b516115878286612821565b51908060005260fb6020818152604060002054928484106115c057906115bb959493929160005252036040600020556127ef565b611569565b60405162461bcd60e51b8152600481018390526028818d015260008051602061327f833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b8251811015611677578061161f6116729285612821565b5161162a8287612821565b519080600052609760209080825260406000208760005282526040600020549261165685851015612ba7565b60005281526040600020908660005252036040600020556127ef565b611608565b509060008051602061323f83398151915261169c6000946040519182913395836129bb565b0390a461033660405161247f565b9260009491945b84518110156116d857806116c86116d39286612821565b5161035f8288612821565b6116b1565b5092939093611566565b5083600052609860205260406000203360005260205261153960ff604060002054169050611530565b346101b35760203660031901126101b35760043560005260fb60205260206040600020541515604051908152f35b346101b35760403660031901126101b3576004356001600160401b038082116101b357366023830112156101b35781600401359061177682612581565b92611784604051948561249a565b82845260209260248486019160051b830101913683116101b357602401905b8282106118b8575050506024359081116101b3576117c59036906004016125e6565b8251815103611861578251926117da84612581565b936117e8604051958661249a565b8085526117f7601f1991612581565b01368486013760005b815181101561184a57611845906118356001600160a01b036118228386612821565b511661182e8387612821565b519061276a565b61183f8288612821565b526127ef565b611800565b505050611111604051928284938452830190612695565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101b35781529084019084016117a3565b346101b35760203660031901126101b357600435600052610164602052602060018060a01b0360406000205416604051908152f35b346101b35760203660031901126101b3576119256123fe565b61192d6126c9565b60ff6101615416610890576101685461033691613120565b346101b35760203660031901126101b3576001600160a01b036119666123fe565b16600052610165602052602060ff604060002054166040519015158152f35b346101b35760603660031901126101b35761199e6123fe565b6001600160401b03906024358281116101b3576119bf903690600401612665565b926044359081116101b3576119d8903690600401612665565b919060ff6101615416610890576119f76119ff92610336963691612598565b923691612598565b91612cb3565b346101b35760031960a0368201126101b357611a1f6123fe565b90611a28612414565b6044908135926001600160401b03938481116101b357611a4c9036906004016125e6565b606480358681116101b357611a659036906004016125e6565b9460849687359081116101b357611a8090369060040161264a565b6001600160a01b039489861633148015611da2575b611a9e90612835565b611aab855189511461295e565b85871615611ab98115612898565b868b1615611d5f575b611caa575b60005b8551811015611b5f5780611ae1611b5a9288612821565b518c611aed838d612821565b519180600052609790838c6020948486526040600020828216600052865260406000205491611b1e848410156128f2565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c16600052526103786040600020918254612951565b611aca565b50888a9897969497896040518860008051602061323f83398151915289808d1694169280611b8f873395836129bb565b0390a4873b611b9a57005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a48701611bce91612695565b90848783030190870152611be191612695565b918483030190840152611bf3916124bb565b03921691815a602094600091f160009181611c8a575b50611c625750506001611c1a612a49565b6308c379a014611c2b575b61061457005b611c33612a67565b80611c3e5750611c25565b60405162461bcd60e51b81526020600482015290819061062d9060248301906124bb565b6001600160e01b031916146103365760405162461bcd60e51b81528061062d60048201612a00565b611ca391925060203d81116106b8576106a9818361249a565b9083611c09565b9796949060009993999692965b8551811015611d4f57611cca8187612821565b51611cd58289612821565b519080600052602060fb815260406000205491838310611d0e57611d099493929160fb9160005252036040600020556127ef565b611cb7565b508b9067616c537570706c7960c01b8f60008051602061327f8339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b5090949697989298959195611ac7565b99969498959392919060005b8a51811015611d9357808b61035f82611d87611d8e958f612821565b5192612821565b611d6b565b50909192939598949699611ac2565b50858a166000526098602052604060002033600052602052611a9e60ff604060002054169050611a95565b346101b357611ddb36612557565b9160ff610161541661089057602092611e369160405190611dfb82612464565b6001825285368184013760405192611e1284612464565b6001845286368186013785611e26846127fe565b52611e30846127fe565b52612cb3565b604051908152f35b346101b35760403660031901126101b35760243560043560005261012e60205260406000209060405191611e7183612464565b546001600160a01b0380821680855260a09290921c6020850152929015611edf575b6001600160601b0360208201511691828102928184041490151715611ec957604092612710915116918351928352046020820152f35b634e487b7160e01b600052601160045260246000fd5b50604051611eec81612464565b61012d54838116825260a01c6020820152611e93565b346101b35760403660031901126101b3576004356001600160401b036024358181116101b357611f3690369060040161252a565b9190611f406126c9565b60ff610161541661089057836000526101639160209280845260ff600260406000200154161561206c57856000528352600180604060002001918511610d3857611f9485611f8e845461242a565b84612bff565b6000601f8611600114611ff55791858060008051602061325f83398151915297969593611fe595600093611fea575b501b906000198760031b1c19161790555b6040519383859485528401916130ff565b0390a2005b85013592508a611fc3565b601f1986169083600052856000209160005b818110612057575091879695939160008051602061325f83398151915298611fe596941061203d575b505085811b019055611fd4565b840135600019600389901b60f8161c191690558880612030565b86830135845592840192918701918701612007565b60405163c927e5bf60e01b815260048101879052602490fd5b346101b3576020806003193601126101b3576004356000526101638152600180604060002001908260405180936000908054906120c18261242a565b808552918681169081156121e657506001146121a5575b50506120e69250038361249a565b8151156121045750905b6111116040519282849384528301906124bb565b905060405190600090836099549161211b8361242a565b9283865285828216918260001461218557505060011461214b575b5050508161214591038261249a565b906120f0565b91909250609960005282600020916000925b82841061217257505050820101818385612136565b805486850186015292840192810161215d565b60ff19168482015293151560051b84019092019350859150869050612136565b9091506000528260002090846000925b8284106121cf57505050916120e6928201018592876120d8565b8054888501870152879450928501928691016121b5565b9150506120e694925060ff191682840152151560051b8201018592876120d8565b346101b357612215366124fb565b9061221e6126c9565b60ff6101615416610890576001600160a01b0316908115610f305760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261016582526122808160406000209060ff801983541691151516179055565b6040519015158152a2005b346101b35760003660031901126101b35760405160009061015f8054906122b18261242a565b90818452600192838116908160001461115657506001146122dc57611111846110fd8188038261249a565b90935060005260209283600020916000925b82841061230a5750505081611111936110fd92820101936110ed565b80548585018701529285019281016122ee565b346101b35760203660031901126101b35760043563ffffffff60e01b81168091036101b3576020906306380de360e31b81149081156123c6575b8115612369575b506040519015158152f35b63152a902d60e11b811491508115612383575b508261235e565b636cdb3d1360e11b8114915081156123b5575b81156123a4575b508261237c565b6301ffc9a760e01b1490508261239d565b6303a24d0760e21b81149150612396565b631030681960e21b81149150612357565b346101b35760403660031901126101b3576020611e366123f56123fe565b6024359061276a565b600435906001600160a01b03821682036101b357565b602435906001600160a01b03821682036101b357565b90600182811c9216801561245a575b602083101461244457565b634e487b7160e01b600052602260045260246000fd5b91607f1691612439565b604081019081106001600160401b03821117610d3857604052565b602081019081106001600160401b03821117610d3857604052565b90601f801991011681019081106001600160401b03821117610d3857604052565b919082519283825260005b8481106124e7575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016124c6565b60409060031901126101b3576004356001600160a01b03811681036101b3579060243580151581036101b35790565b9181601f840112156101b3578235916001600160401b0383116101b357602083818601950101116101b357565b60609060031901126101b3576004356001600160a01b03811681036101b357906024359060443590565b6001600160401b038111610d385760051b60200190565b92916125a382612581565b916125b1604051938461249a565b829481845260208094019160051b81019283116101b357905b8282106125d75750505050565b813581529083019083016125ca565b9080601f830112156101b35781602061260193359101612598565b90565b9291926001600160401b038211610d38576040519161262d601f8201601f19166020018461249a565b8294818452818301116101b3578281602093846000960137010152565b9080601f830112156101b35781602061260193359101612604565b9181601f840112156101b3578235916001600160401b0383116101b3576020808501948460051b0101116101b357565b90815180825260208080930193019160005b8281106126b5575050505090565b8351855293810193928101926001016126a7565b6033546001600160a01b031633036126dd57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561279757600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b6000198114611ec95760010190565b80511561280b5760200190565b634e487b7160e01b600052603260045260246000fd5b805182101561280b5760209160051b010190565b1561283c57565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561289f57565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b156128f957565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b91908201809211611ec957565b1561296557565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b90916129d261260193604084526040840190612695565b916020818403910152612695565b908160209103126101b357516001600160e01b0319811681036101b35790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612a5657565b905060046000803e60005160e01c90565b600060443d1061260157604051600319913d83016004833e81516001600160401b03918282113d602484011117612ac457818401948551938411612acc573d85010160208487010111612ac457506126019291016020019061249a565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612b3782612464565b6001825260203681840137612b4b826127fe565b5290565b15612b5657565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612bae57565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c0d57505050565b600091825260208220906020601f850160051c83019410612c49575b601f0160051c01915b828110612c3e57505050565b818155600101612c32565b9092508290612c29565b15612c5a57565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b038083169291908315610f305760335416331415806130e5575b6130cd578351156130bb5783518151036130a95783519260649384811161308b575060015b8551811015612d7157612d0e8187612821565b516000198201828111612d5c57612d259088612821565b511015612d3a57612d35906127ef565b612cfb565b612d4660249187612821565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612e6357612d8f8684612821565b519586600052610163602081815260409060ff60028360002001541615612e4b57612dba8489612821565b5115612e3a578960005261016690818152612de48360002054612ddd878c612821565b5190612951565b938b60005281528260002054808511612e185750612e0e95969798999a60005252600020556127ef565b9493929190612d7c565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612e798761247f565b60008752612e8a865185511461295e565b60005b8651811015612ecc5780612ea4612ec79287612821565b51612eaf828a612821565b5160005260fb60205261037888600020918254612951565b612e8d565b5090919560005b8651811015612f1d5780612eea612f189287612821565b51612ef5828a612821565b5160005260206097815288600020908c6000525261037888600020918254612951565b612ed3565b509196909395816000885160008051602061323f833981519152339180612f458a8d836129bb565b0390a43b612f56575b505050505050565b612fa96000602094612fb8895197889687958694612f9663bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a4880190612695565b9060031994858884030190880152612695565b918483030160848501526124bb565b03925af16000918161306b575b5061303f5750506001612fd6612a49565b6308c379a014613009575b612ff257505b388080808080612f4e565b5162461bcd60e51b81528061062d60048201612ad5565b613011612a67565b8061301c5750612fe1565b825162461bcd60e51b81526020600482015290819061062d9060248301906124bb565b6001600160e01b031916036130545750612fe7565b5162461bcd60e51b81528061062d60048201612a00565b61308491925060203d81116106b8576106a9818361249a565b9038612fc5565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016560205260ff6040600020541615612cd6565b908060209392818452848401376000828201840152601f01601f1916010190565b6001600160a01b0390811691908215610f30576064821161321e5760018060a01b03199261016781858254161790558261016855606483029280840460641490151715611ec9576001600160601b0383169061271082116131c6576131b491602060405161318d81612464565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a26469706673582212204ca4ff283ff7cda1cad3d691ee2843143f55cef369b79a0c13172ba44fe5a53564736f6c63430008120033","sourceMap":"1123:12716:83:-:0;;;;;;;6007:13:23;1123:12716:83;;;;;;;;;;;;;;6078:31:23;6074:139;;-1:-1:-1;1123:12716:83;;;;;;;;;6074:139:23;1123:12716:83;;;;;;6007:13:23;1123:12716:83;6174:28:23;1123:12716:83;;;;;;6174:28:23;6074:139;;;1123:12716:83;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c8062fdd58e146123d757806301ffc9a71461231d57806306fdde031461228b5780630de54ba0146122075780630e89341c1461208557806318e97fd114611f025780632a55205a14611e3e5780632baf2acb14611dcd5780632eb2c2d614611a055780633512639c146119855780633a3d146f146119455780633ebc82c51461190c57806340c1a064146118d75780634e1273f4146117395780634f558e791461170b5780636b20c454146114c3578063715018a61461146657806372b3b620146111f6578063894ba833146111a75780638da5cb5b1461117e57806395d89b41146110ab578063a22cb46514610fd4578063a7eae21c14610917578063bd85b039146108eb578063c33ae88f146108be578063cfdbf254146108a2578063e27a41bf14610852578063e985e9c5146107fc578063ee070805146107d8578063f242432a14610442578063f2fde38b146103b5578063f5298aca146101b85763ffd25aa41461018657600080fd5b346101b35760203660031901126101b3576004356000526101636020526020604060002054604051908152f35b600080fd5b346101b3576101c636612557565b6001600160a01b039092169190338314801561038c575b6101e690612835565b8215926101f38415612b4f565b6101fc82612b2a565b9161020684612b2a565b9460006040516102158161247f565b52610338575b60005b83518110156102b9576102318185612821565b5161023c8288612821565b51908060005260fb6020818152604060002054928484106102755790610270959493929160005252036040600020556127ef565b61021e565b60405162461bcd60e51b8152600481018390526028602482015260008051602061327f833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102e282821015612ba7565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a461033660405161247f565b005b929060005b8351811015610384578061035461037f9288612821565b5161035f8287612821565b5160005260fb6020526103786040600020918254612951565b90556127ef565b61033d565b50909261021b565b508260005260986020526040600020336000526020526101e660ff6040600020541690506101dd565b346101b35760203660031901126101b3576103ce6123fe565b6103d66126c9565b6001600160a01b038116156103ee5761033690612721565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101b35760a03660031901126101b35761045b6123fe565b610463612414565b90608480356001600160401b0381116101b35761048490369060040161264a565b6001600160a01b039190838316331480156107ad575b6104a390612835565b828516156104b18115612898565b6104bc604435612b2a565b6104c7606435612b2a565b918587161561076d575b6106bf575b505060443560005260209460978652604060002084861660005286526040600020546105066064358210156128f2565b60443560005260978752604060002085871660005287526064359003604060002055604435600052609786526040600020848216600052865260406000206105516064358254612951565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b61059857005b60a060006105e2958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a48301906124bb565b0393165af160009181610690575b50610666575050600190610602612a49565b6308c379a014610631575b5061061457005b60405162461bcd60e51b81528061062d60048201612ad5565b0390fd5b610639612a67565b9081610645575061060d565b61062d60405192839262461bcd60e51b8452600484015260248301906124bb565b6001600160e01b0319161490506103365760405162461bcd60e51b81528061062d60048201612a00565b6106b1919250843d86116106b8575b6106a9818361249a565b8101906129e0565b90846105f0565b503d61069f565b92959194909360005b845181101561075e576106db8186612821565b51906106e78188612821565b518260005260fb60205260406000205481811061071b576107169360005260fb602052036040600020556127ef565b6106c8565b60405162461bcd60e51b8152602060048201526028602482015260008051602061327f833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104d6565b959260009794919592975b865181101561079f578061078f61079a928b612821565b5161035f828a612821565b610778565b5092959691949093966104d1565b5082841660005260986020526040600020336000526020526104a360ff60406000205416905061049a565b346101b35760003660031901126101b357602060ff61016154166040519015158152f35b346101b35760403660031901126101b3576108156123fe565b61081d612414565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101b35760203660031901126101b35761086b6126c9565b60ff6101615416610890576101675461033690600435906001600160a01b0316613120565b604051637abbf1c960e01b8152600490fd5b346101b35760003660031901126101b357602060405160648152f35b346101b35760203660031901126101b3576004356000526101666020526020604060002054604051908152f35b346101b35760203660031901126101b35760043560005260fb6020526020604060002054604051908152f35b346101b35760a03660031901126101b3576004356001600160401b0381116101b35761094790369060040161252a565b906024356001600160401b0381116101b35761096790369060040161252a565b6044356001600160401b0381116101b35761098690369060040161252a565b90929091906064356001600160a01b03811690036101b357608435956001600160a01b03871687036101b3576000549560ff8760081c161596878098610fc7575b8015610fb0575b15610f545760ff19811660011760005587610f42575b506064356001600160a01b031615610f30576001600160401b038211610d38578190610a1261015f5461242a565b601f8111610ec2575b50600090601f8311600114610e3957600092610e2e575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610d3857610a636101605461242a565b601f8111610dcc575b50600090601f8311600114610d5957610ad79493929160009183610d4e575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ac760ff60005460081c16610ac281612c53565b612c53565b610ad033612721565b3691612604565b91610aed60ff60005460081c16610ac281612c53565b82516001600160401b038111610d3857610b0860995461242a565b601f8111610cd3575b506020601f8211600114610c6c5781929394600092610c61575b50508160011b916000199060031b1c1916176099555b610b5f60ff60005460081c16610b5681612c53565b610ac281612c53565b61016780546001600160a01b0319166064356001600160a01b0316179055600a610168556040516103e890602090610b9681612464565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610c09575b50610bcb606435612721565b610bd157005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101656020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610bbf565b015190508480610b2b565b601f198216906099600052806000209160005b818110610cbb57509583600195969710610ca2575b505050811b01609955610b41565b015160001960f88460031b161c19169055848080610c94565b9192602060018192868b015181550194019201610c7f565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610d2e575b601f0160051c01905b818110610d225750610b11565b60008155600101610d15565b9091508190610d0c565b634e487b7160e01b600052604160045260246000fd5b013590508780610a8b565b61016060005260206000209160005b601f1985168110610db45750918391600193610ad7979695601f19811610610d9a575b505050811b0161016055610aa2565b0135600019600384901b60f8161c19169055878080610d8b565b90926020600181928686013581550194019101610d68565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610e27575b601f830160051c82018110610e1b575050610a6c565b60008155600101610e05565b5080610e05565b013590508880610a32565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610eaa576001945083601f19811610610e90575b505050811b0161015f55610a49565b0135600019600384901b60f8161c19169055888080610e81565b81810135835560209485019460019093019201610e66565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510610f29575b90849392915b601f830160051c82018110610f1a575050610a1b565b60008155859450600101610f04565b5080610efe565b604051637827912560e01b8152600490fd5b61ffff191661010117600055886109e4565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156109ce5750600160ff8216146109ce565b50600160ff8216106109c7565b346101b357610fe2366124fb565b6001600160a01b0390911690338214611054573360005260986020526040600020826000526020526110248160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101b35760003660031901126101b3576040516000906101608054906110d18261242a565b9081845260019283811690816000146111565750600114611115575b611111846110fd8188038261249a565b6040519182916020835260208301906124bb565b0390f35b90935060005260209283600020916000925b8284106111435750505081611111936110fd92820101936110ed565b8054858501870152928501928101611127565b61111196506110fd9450602092508593915060ff191682840152151560051b820101936110ed565b346101b35760003660031901126101b3576033546040516001600160a01b039091168152602090f35b346101b35760003660031901126101b3576111c06126c9565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101b35760403660031901126101b3576001600160401b036004358181116101b35761122790369060040161252a565b61122f6126c9565b60ff61016154166108905760243515611454576101629161125083546127ef565b809355604051906060820182811086821117610d38576040526024358252611279368483612604565b6020830190815260016040840152846000526101636020526040600020908351825551928351968711610d38578686946112c56020996112bc600187015461242a565b60018701612bff565b8890601f83116001146113b55760407f7775d6ac27837184534d17b6cdcdcc82f564fa44d02ec9e6a2efa2aee69fe58196948461133b9561139f98956002956000926113aa575b50508160011b916000199060031b1c19161760018501555b0151151591019060ff801983541691151516179055565b6000848152610164885260409081902080546001600160a01b0319163317905551878152849060008051602061325f833981519152908061137f818c018a876130ff565b0390a26040519182916024358352604089840152339660408401916130ff565b0390a3604051908152f35b015190508e8061130c565b9060018501600052896000209160005b601f198516811061143a57507f7775d6ac27837184534d17b6cdcdcc82f564fa44d02ec9e6a2efa2aee69fe581969460018561139f989560029560409561133b99601f19811610611421575b505050811b016001850155611324565b015160001960f88460031b161c191690558e8080611411565b8183015184558a9850600190930192918b01918b016113c5565b604051631dd0e19360e01b8152600490fd5b346101b35760003660031901126101b35761147f6126c9565b603380546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101b35760603660031901126101b3576114dc6123fe565b6024906001600160401b039082358281116101b3576114ff9036906004016125e6565b9160449081359081116101b35761151a9036906004016125e6565b6001600160a01b039092169233841480156116e2575b61153990612835565b83156115458115612b4f565b611552825185511461295e565b60006040516115608161247f565b526116aa575b60005b81518110156116025761157c8183612821565b516115878286612821565b51908060005260fb6020818152604060002054928484106115c057906115bb959493929160005252036040600020556127ef565b611569565b60405162461bcd60e51b8152600481018390526028818d015260008051602061327f833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b8251811015611677578061161f6116729285612821565b5161162a8287612821565b519080600052609760209080825260406000208760005282526040600020549261165685851015612ba7565b60005281526040600020908660005252036040600020556127ef565b611608565b509060008051602061323f83398151915261169c6000946040519182913395836129bb565b0390a461033660405161247f565b9260009491945b84518110156116d857806116c86116d39286612821565b5161035f8288612821565b6116b1565b5092939093611566565b5083600052609860205260406000203360005260205261153960ff604060002054169050611530565b346101b35760203660031901126101b35760043560005260fb60205260206040600020541515604051908152f35b346101b35760403660031901126101b3576004356001600160401b038082116101b357366023830112156101b35781600401359061177682612581565b92611784604051948561249a565b82845260209260248486019160051b830101913683116101b357602401905b8282106118b8575050506024359081116101b3576117c59036906004016125e6565b8251815103611861578251926117da84612581565b936117e8604051958661249a565b8085526117f7601f1991612581565b01368486013760005b815181101561184a57611845906118356001600160a01b036118228386612821565b511661182e8387612821565b519061276a565b61183f8288612821565b526127ef565b611800565b505050611111604051928284938452830190612695565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101b35781529084019084016117a3565b346101b35760203660031901126101b357600435600052610164602052602060018060a01b0360406000205416604051908152f35b346101b35760203660031901126101b3576119256123fe565b61192d6126c9565b60ff6101615416610890576101685461033691613120565b346101b35760203660031901126101b3576001600160a01b036119666123fe565b16600052610165602052602060ff604060002054166040519015158152f35b346101b35760603660031901126101b35761199e6123fe565b6001600160401b03906024358281116101b3576119bf903690600401612665565b926044359081116101b3576119d8903690600401612665565b919060ff6101615416610890576119f76119ff92610336963691612598565b923691612598565b91612cb3565b346101b35760031960a0368201126101b357611a1f6123fe565b90611a28612414565b6044908135926001600160401b03938481116101b357611a4c9036906004016125e6565b606480358681116101b357611a659036906004016125e6565b9460849687359081116101b357611a8090369060040161264a565b6001600160a01b039489861633148015611da2575b611a9e90612835565b611aab855189511461295e565b85871615611ab98115612898565b868b1615611d5f575b611caa575b60005b8551811015611b5f5780611ae1611b5a9288612821565b518c611aed838d612821565b519180600052609790838c6020948486526040600020828216600052865260406000205491611b1e848410156128f2565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c16600052526103786040600020918254612951565b611aca565b50888a9897969497896040518860008051602061323f83398151915289808d1694169280611b8f873395836129bb565b0390a4873b611b9a57005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a48701611bce91612695565b90848783030190870152611be191612695565b918483030190840152611bf3916124bb565b03921691815a602094600091f160009181611c8a575b50611c625750506001611c1a612a49565b6308c379a014611c2b575b61061457005b611c33612a67565b80611c3e5750611c25565b60405162461bcd60e51b81526020600482015290819061062d9060248301906124bb565b6001600160e01b031916146103365760405162461bcd60e51b81528061062d60048201612a00565b611ca391925060203d81116106b8576106a9818361249a565b9083611c09565b9796949060009993999692965b8551811015611d4f57611cca8187612821565b51611cd58289612821565b519080600052602060fb815260406000205491838310611d0e57611d099493929160fb9160005252036040600020556127ef565b611cb7565b508b9067616c537570706c7960c01b8f60008051602061327f8339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b5090949697989298959195611ac7565b99969498959392919060005b8a51811015611d9357808b61035f82611d87611d8e958f612821565b5192612821565b611d6b565b50909192939598949699611ac2565b50858a166000526098602052604060002033600052602052611a9e60ff604060002054169050611a95565b346101b357611ddb36612557565b9160ff610161541661089057602092611e369160405190611dfb82612464565b6001825285368184013760405192611e1284612464565b6001845286368186013785611e26846127fe565b52611e30846127fe565b52612cb3565b604051908152f35b346101b35760403660031901126101b35760243560043560005261012e60205260406000209060405191611e7183612464565b546001600160a01b0380821680855260a09290921c6020850152929015611edf575b6001600160601b0360208201511691828102928184041490151715611ec957604092612710915116918351928352046020820152f35b634e487b7160e01b600052601160045260246000fd5b50604051611eec81612464565b61012d54838116825260a01c6020820152611e93565b346101b35760403660031901126101b3576004356001600160401b036024358181116101b357611f3690369060040161252a565b9190611f406126c9565b60ff610161541661089057836000526101639160209280845260ff600260406000200154161561206c57856000528352600180604060002001918511610d3857611f9485611f8e845461242a565b84612bff565b6000601f8611600114611ff55791858060008051602061325f83398151915297969593611fe595600093611fea575b501b906000198760031b1c19161790555b6040519383859485528401916130ff565b0390a2005b85013592508a611fc3565b601f1986169083600052856000209160005b818110612057575091879695939160008051602061325f83398151915298611fe596941061203d575b505085811b019055611fd4565b840135600019600389901b60f8161c191690558880612030565b86830135845592840192918701918701612007565b60405163c927e5bf60e01b815260048101879052602490fd5b346101b3576020806003193601126101b3576004356000526101638152600180604060002001908260405180936000908054906120c18261242a565b808552918681169081156121e657506001146121a5575b50506120e69250038361249a565b8151156121045750905b6111116040519282849384528301906124bb565b905060405190600090836099549161211b8361242a565b9283865285828216918260001461218557505060011461214b575b5050508161214591038261249a565b906120f0565b91909250609960005282600020916000925b82841061217257505050820101818385612136565b805486850186015292840192810161215d565b60ff19168482015293151560051b84019092019350859150869050612136565b9091506000528260002090846000925b8284106121cf57505050916120e6928201018592876120d8565b8054888501870152879450928501928691016121b5565b9150506120e694925060ff191682840152151560051b8201018592876120d8565b346101b357612215366124fb565b9061221e6126c9565b60ff6101615416610890576001600160a01b0316908115610f305760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261016582526122808160406000209060ff801983541691151516179055565b6040519015158152a2005b346101b35760003660031901126101b35760405160009061015f8054906122b18261242a565b90818452600192838116908160001461115657506001146122dc57611111846110fd8188038261249a565b90935060005260209283600020916000925b82841061230a5750505081611111936110fd92820101936110ed565b80548585018701529285019281016122ee565b346101b35760203660031901126101b35760043563ffffffff60e01b81168091036101b3576020906306380de360e31b81149081156123c6575b8115612369575b506040519015158152f35b63152a902d60e11b811491508115612383575b508261235e565b636cdb3d1360e11b8114915081156123b5575b81156123a4575b508261237c565b6301ffc9a760e01b1490508261239d565b6303a24d0760e21b81149150612396565b631030681960e21b81149150612357565b346101b35760403660031901126101b3576020611e366123f56123fe565b6024359061276a565b600435906001600160a01b03821682036101b357565b602435906001600160a01b03821682036101b357565b90600182811c9216801561245a575b602083101461244457565b634e487b7160e01b600052602260045260246000fd5b91607f1691612439565b604081019081106001600160401b03821117610d3857604052565b602081019081106001600160401b03821117610d3857604052565b90601f801991011681019081106001600160401b03821117610d3857604052565b919082519283825260005b8481106124e7575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016124c6565b60409060031901126101b3576004356001600160a01b03811681036101b3579060243580151581036101b35790565b9181601f840112156101b3578235916001600160401b0383116101b357602083818601950101116101b357565b60609060031901126101b3576004356001600160a01b03811681036101b357906024359060443590565b6001600160401b038111610d385760051b60200190565b92916125a382612581565b916125b1604051938461249a565b829481845260208094019160051b81019283116101b357905b8282106125d75750505050565b813581529083019083016125ca565b9080601f830112156101b35781602061260193359101612598565b90565b9291926001600160401b038211610d38576040519161262d601f8201601f19166020018461249a565b8294818452818301116101b3578281602093846000960137010152565b9080601f830112156101b35781602061260193359101612604565b9181601f840112156101b3578235916001600160401b0383116101b3576020808501948460051b0101116101b357565b90815180825260208080930193019160005b8281106126b5575050505090565b8351855293810193928101926001016126a7565b6033546001600160a01b031633036126dd57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561279757600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b6000198114611ec95760010190565b80511561280b5760200190565b634e487b7160e01b600052603260045260246000fd5b805182101561280b5760209160051b010190565b1561283c57565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561289f57565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b156128f957565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b91908201809211611ec957565b1561296557565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b90916129d261260193604084526040840190612695565b916020818403910152612695565b908160209103126101b357516001600160e01b0319811681036101b35790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612a5657565b905060046000803e60005160e01c90565b600060443d1061260157604051600319913d83016004833e81516001600160401b03918282113d602484011117612ac457818401948551938411612acc573d85010160208487010111612ac457506126019291016020019061249a565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612b3782612464565b6001825260203681840137612b4b826127fe565b5290565b15612b5657565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612bae57565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c0d57505050565b600091825260208220906020601f850160051c83019410612c49575b601f0160051c01915b828110612c3e57505050565b818155600101612c32565b9092508290612c29565b15612c5a57565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b038083169291908315610f305760335416331415806130e5575b6130cd578351156130bb5783518151036130a95783519260649384811161308b575060015b8551811015612d7157612d0e8187612821565b516000198201828111612d5c57612d259088612821565b511015612d3a57612d35906127ef565b612cfb565b612d4660249187612821565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612e6357612d8f8684612821565b519586600052610163602081815260409060ff60028360002001541615612e4b57612dba8489612821565b5115612e3a578960005261016690818152612de48360002054612ddd878c612821565b5190612951565b938b60005281528260002054808511612e185750612e0e95969798999a60005252600020556127ef565b9493929190612d7c565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612e798761247f565b60008752612e8a865185511461295e565b60005b8651811015612ecc5780612ea4612ec79287612821565b51612eaf828a612821565b5160005260fb60205261037888600020918254612951565b612e8d565b5090919560005b8651811015612f1d5780612eea612f189287612821565b51612ef5828a612821565b5160005260206097815288600020908c6000525261037888600020918254612951565b612ed3565b509196909395816000885160008051602061323f833981519152339180612f458a8d836129bb565b0390a43b612f56575b505050505050565b612fa96000602094612fb8895197889687958694612f9663bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a4880190612695565b9060031994858884030190880152612695565b918483030160848501526124bb565b03925af16000918161306b575b5061303f5750506001612fd6612a49565b6308c379a014613009575b612ff257505b388080808080612f4e565b5162461bcd60e51b81528061062d60048201612ad5565b613011612a67565b8061301c5750612fe1565b825162461bcd60e51b81526020600482015290819061062d9060248301906124bb565b6001600160e01b031916036130545750612fe7565b5162461bcd60e51b81528061062d60048201612a00565b61308491925060203d81116106b8576106a9818361249a565b9038612fc5565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016560205260ff6040600020541615612cd6565b908060209392818452848401376000828201840152601f01601f1916010190565b6001600160a01b0390811691908215610f30576064821161321e5760018060a01b03199261016781858254161790558261016855606483029280840460641490151715611ec9576001600160601b0383169061271082116131c6576131b491602060405161318d81612464565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a26469706673582212204ca4ff283ff7cda1cad3d691ee2843143f55cef369b79a0c13172ba44fe5a53564736f6c63430008120033","sourceMap":"1123:12716:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;9435:12;1123:12716;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:12716:83;;;;;929:10:34;764:23:29;;:66;;;;1123:12716:83;743:159:29;;;:::i;:::-;11246:18:26;;;11238:66;11246:18;;11238:66;:::i;:::-;11379:21;;;:::i;:::-;11437:25;;;;:::i;:::-;1123:12716:83;;;;;;;:::i;:::-;;1658:156:30;;1123:12716:83;;1896:3:30;1123:12716:83;;1880:14:30;;;;;1932:6;;;;:::i;:::-;1123:12716:83;1973:10:30;;;;:::i;:::-;1123:12716:83;;;;;2018:12:30;1123:12716:83;;;;;;;;2060:16:30;;;;1123:12716:83;;;1896:3:30;1123:12716:83;;;;;;;;;;;;;1896:3:30;:::i;:::-;1865:13;;1123:12716:83;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:12716:83;;;;-1:-1:-1;;;1123:12716:83;;;;;;;1880:14:30;1123:12716:83;1880:14:30;;;1123:12716:83;;;11572:9:26;1123:12716:83;;;;;;;;;;;;;;;11601:70:26;11609:21;;;;11601:70;:::i;:::-;1123:12716:83;;;11572:9:26;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;11773:54:26;1123:12716:83;929:10:34;11773:54:26;;1123:12716:83;;;;:::i;:::-;;1658:156:30;1701:13;;1123:12716:83;1732:3:30;1123:12716:83;;1716:14:30;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:12716:83;1768:6:30;;;;:::i;:::-;1123:12716:83;;;1755:12:30;1123:12716:83;;1755:34:30;1123:12716:83;;;;;;1755:34:30;:::i;:::-;1123:12716:83;;1732:3:30;:::i;:::-;1701:13;;1716:14;;;;1658:156;;764:66:29;1123:12716:83;;;;3873:18:26;1123:12716:83;;;;;929:10:34;1123:12716:83;;;;743:159:29;1123:12716:83;;;;;;764:66:29;;;;1123:12716:83;;;;;;-1:-1:-1;;1123:12716:83;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;-1:-1:-1;;;;;1123:12716:83;;2402:22:17;1123:12716:83;;2496:8:17;;;:::i;1123:12716:83:-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:12716:83;;;;;929:10:34;4184:20:26;:60;;;;1123:12716:83;4163:153:26;;;:::i;:::-;1123:12716:83;;;5507:16:26;5499:66;5507:16;;5499:66;:::i;:::-;5640:21;1123:12716:83;;5640:21:26;:::i;:::-;5698:25;1123:12716:83;;5698:25:26;:::i;:::-;1123:12716:83;;;;1662:18:30;1658:156;;1123:12716:83;1824:424:30;;1123:12716:83;;;;;;;;;5827:9:26;1123:12716:83;;;;;;;;;;;;;;;;5856:76:26;1123:12716:83;;5864:21:26;;;5856:76;:::i;:::-;1123:12716:83;;;;5827:9:26;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;5827:9:26;1123:12716:83;;;;;;;;;;;;;;;6028:27:26;1123:12716:83;;;;6028:27:26;:::i;:::-;1123:12716:83;;;;;;;;;;;;;;;;;;;;;929:10:34;6071:46:26;1123:12716:83;929:10:34;6071:46:26;;1713:19:33;;15996:538:26;;1123:12716:83;15996:538:26;1123:12716:83;;;;;;;;;;;;;;;;;;;16035:83:26;;;;929:10:34;1123:12716:83;16035:83:26;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16035:83:26;1123:12716:83;;16035:83:26;;1123:12716:83;;16035:83:26;;;15996:538;-1:-1:-1;16031:493:26;;;;1123:12716:83;16031:493:26;;;:::i;:::-;;;;;;;;;1123:12716:83;16031:493:26;1123:12716:83;;-1:-1:-1;;;16447:62:26;;1123:12716:83;16447:62:26;1123:12716:83;16447:62:26;;;:::i;:::-;;;;16031:493;16341:81;;:::i;:::-;;;;;16031:493;;;16341:81;1123:12716:83;;;;;;;;;16393:14:26;;1123:12716:83;16393:14:26;;1123:12716:83;;;;;;:::i;16031:493:26:-;-1:-1:-1;;;;;;1123:12716:83;16163:163:26;;-1:-1:-1;16031:493:26;16163:163;1123:12716:83;;-1:-1:-1;;;16257:50:26;;1123:12716:83;16257:50:26;1123:12716:83;16257:50:26;;;:::i;16035:83::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1824:424:30;1865:13;;;;;;1123:12716:83;1896:3:30;1123:12716:83;;1880:14:30;;;;;1932:6;;;;:::i;:::-;1123:12716:83;1973:10:30;;;;;:::i;:::-;1123:12716:83;;;;2018:12:30;1123:12716:83;;;;;;2060:16:30;;;1123:12716:83;;1896:3:30;1123:12716:83;;;2018:12:30;1123:12716:83;;;;;;;1896:3:30;:::i;:::-;1865:13;;1123:12716:83;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:12716:83;;;;-1:-1:-1;;;1123:12716:83;;;;;;;1880:14:30;;;;;;;;;1824:424;;;;1658:156;1701:13;;1123:12716:83;1701:13:30;;;;;;1732:3;1123:12716:83;;1716:14:30;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:12716:83;1768:6:30;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;1658:156;;4184:60:26;1123:12716:83;;;;;;3873:18:26;1123:12716:83;;;;;929:10:34;1123:12716:83;;;;4163:153:26;1123:12716:83;;;;;;4184:60:26;;;;1123:12716:83;;;;;;-1:-1:-1;;1123:12716:83;;;;;;1372:29;1123:12716;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;3873:18:26;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;1303:62:17;;:::i;:::-;1123:12716:83;2838:8;1123:12716;;2834:41;;8220:22;1123:12716;8244:11;;1123:12716;;;-1:-1:-1;;;;;1123:12716:83;8244:11;:::i;2834:41::-;1123:12716;;-1:-1:-1;;;2855:20:83;;1123:12716;;2855:20;1123:12716;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;1558:3;1123:12716;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;9609:16;1123:12716;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;1033:12:30;1123:12716:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;3301:14:23;3347:34;;;;;;1123:12716:83;3346:108:23;;;;1123:12716:83;;;;-1:-1:-1;;1123:12716:83;;;;;;;3562:65:23;;1123:12716:83;-1:-1:-1;1123:12716:83;;-1:-1:-1;;;;;1123:12716:83;3665:22;3661:59;;-1:-1:-1;;;;;1123:12716:83;;;;;;;3821:12;1123:12716;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3821:12;1123:12716;;-1:-1:-1;;;;;1123:12716:83;;;;;3843:16;1123:12716;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3843:16;1123:12716;;3869:16;1123:12716;;;;;;;5366:69:23;1123:12716:83;;;;;;5366:69:23;;;:::i;:::-;;:::i;:::-;1195:12:17;929:10:34;1195:12:17;:::i;:::-;1123:12716:83;;;:::i;:::-;;5366:69:23;1123:12716:83;;;;;;5366:69:23;;;:::i;:::-;1123:12716:83;;-1:-1:-1;;;;;1123:12716:83;;;;;8623:13:26;1123:12716:83;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:26;1123:12716:83;;5366:69:23;1123:12716:83;;;;;;5366:69:23;;;:::i;:::-;;;;:::i;:::-;11951:34:83;1123:12716;;-1:-1:-1;;;;;;1123:12716:83;;;-1:-1:-1;;;;;1123:12716:83;;;;1694:2;11995:38;1123:12716;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:12716:83;;;;;;;3314:35:32;;;;1123:12716:83;;;;-1:-1:-1;;;1123:12716:83;3292:57:32;1123:12716:83;;;4287:252;;1123:12716;;4667:8;1123:12716;;4667:8;:::i;:::-;3647:99:23;;1123:12716:83;3647:99:23;1123:12716:83;;;;;;;3721:14:23;1123:12716:83;;;;;;3721:14:23;1123:12716:83;4287:252;-1:-1:-1;;;;;1123:12716:83;;;;;4428:15;1123:12716;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;;;;4485:43;;;4287:252;;;1123:12716;;;;-1:-1:-1;1123:12716:83;;;;;;;;;;8623:13:26;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:26;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:26;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;3843:16;1123:12716;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3843:16;1123:12716;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3843:16;1123:12716;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;-1:-1:-1;1123:12716:83;;;;;3821:12;1123:12716;;;;;-1:-1:-1;1123:12716:83;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;3821:12;1123:12716;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3821:12;1123:12716;;;;-1:-1:-1;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;-1:-1:-1;1123:12716:83;;;3661:59;1123:12716;;-1:-1:-1;;;3696:24:83;;1123:12716;;3696:24;3562:65:23;-1:-1:-1;;1123:12716:83;;;;;3562:65:23;;;1123:12716:83;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;3346:108:23;3426:4;;1713:19:33;:23;3387:66:23;;3346:108;3387:66;1123:12716:83;;;;;3436:17:23;3346:108;;3347:34;1123:12716:83;;;;;3365:16:23;3347:34;;1123:12716:83;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:12716:83;;;;929:10:34;13309:17:26;;1123:12716:83;;929:10:34;1123:12716:83;;13382:18:26;1123:12716:83;;;;;;;;;;13382:46:26;1123:12716:83;;;;;;;;;;;;;;;;;;;13382:46:26;1123:12716:83;;;;;;;13443:41:26;1123:12716:83;929:10:34;13443:41:26;;1123:12716:83;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;1337:29;;1123:12716;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;1513:6:17;1123:12716:83;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;1303:62:17;;:::i;:::-;8878:15:83;1123:12716;;-1:-1:-1;;1123:12716:83;8889:4;1123:12716;;;8925:10;8908:28;-1:-1:-1;;8908:28:83;1123:12716;;;;;;;-1:-1:-1;;1123:12716:83;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;1123:12716:83;2838:8;1123:12716;;2834:41;;1123:12716;;10816:15;10812:51;;10953:16;1123:12716;10953:16;1123:12716;;10953:16;:::i;:::-;1123:12716;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11118:40;;1123:12716;;;;;11118:40;;1123:12716;;;;11094:12;1123:12716;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;11343:54;1123:12716;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11118:40;1123:12716;;;;;;;;;;;;;;;;;;;;;;;;;11168:13;1123:12716;;;;;;;;;-1:-1:-1;;;;;;1123:12716:83;4930:10;1123:12716;;;;;;;;;-1:-1:-1;;;;;;;;;;;11305:23:83;1123:12716;;;;;;;;:::i;:::-;11305:23;;;1123:12716;;;;;;;;;;;;;;4930:10;1123:12716;;;;;;:::i;:::-;11343:54;;;1123:12716;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;11343:54;1123:12716;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;;;;;;10812:51;1123:12716;;-1:-1:-1;;;10840:23:83;;1123:12716;;10840:23;1123:12716;;;;;;-1:-1:-1;;1123:12716:83;;;;1303:62:17;;:::i;:::-;2758:6;1123:12716:83;;-1:-1:-1;;;;;;1123:12716:83;;;;;;;-1:-1:-1;;;;;1123:12716:83;2806:40:17;1123:12716:83;;2806:40:17;1123:12716:83;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:12716:83;;;;929:10:34;1080:23:29;;:66;;;;1123:12716:83;1059:159:29;;;:::i;:::-;12266:18:26;;12258:66;12266:18;;12258:66;:::i;:::-;12334:81;1123:12716:83;;;;12342:28:26;12334:81;:::i;:::-;1123:12716:83;;;;;;:::i;:::-;;1658:156:30;;1123:12716:83;;1896:3:30;1123:12716:83;;1880:14:30;;;;;1932:6;;;;:::i;:::-;1123:12716:83;1973:10:30;;;;:::i;:::-;1123:12716:83;;;;;2018:12:30;1123:12716:83;;;;;;;;2060:16:30;;;;1123:12716:83;;;1896:3:30;1123:12716:83;;;;;;;;;;;;;1896:3:30;:::i;:::-;1865:13;;1123:12716:83;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:12716:83;;;;-1:-1:-1;;;1123:12716:83;;;;;;;1880:14:30;;;;1123:12716:83;12581:3:26;1123:12716:83;;12565:14:26;;;;;12613:6;;12581:3;12613:6;;;:::i;:::-;1123:12716:83;12650:10:26;;;;:::i;:::-;1123:12716:83;;;;;12697:9:26;1123:12716:83;;;;;;;;;;;;;;;;;12738:21:26;12730:70;12738:21;;;;12730:70;:::i;:::-;1123:12716:83;;;;;;;;;;;;;;;;;12581:3:26;:::i;:::-;12550:13;;12565:14;;;-1:-1:-1;;;;;;;;;;;12924:55:26;1123:12716:83;12565:14:26;1123:12716:83;;929:10:34;;;;12924:55:26;;;:::i;:::-;;;;1123:12716:83;;;;:::i;1658:156:30:-;1701:13;1123:12716:83;1701:13:30;;;1732:3;1123:12716:83;;1716:14:30;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:12716:83;1768:6:30;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;1658:156;;1080:66:29;1123:12716:83;;;;3873:18:26;1123:12716:83;;;;;929:10:34;1123:12716:83;;;;1059:159:29;1123:12716:83;;;;;;1080:66:29;;;;1123:12716:83;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;1033:12:30;1123:12716:83;;;;;;;1229:44:30;;1123:12716:83;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;3146:29:26;1123:12716:83;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3347:3:26;1123:12716:83;;3326:19:26;;;;;3347:3;;3385:30;-1:-1:-1;;;;;3395:11:26;1123:12716:83;3395:11:26;;:::i;:::-;1123:12716:83;;3408:6:26;;;;:::i;:::-;1123:12716:83;3385:30:26;;:::i;:::-;3366:49;;;;:::i;:::-;1123:12716:83;3347:3:26;:::i;:::-;3311:13;;3326:19;;;;1123:12716:83;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;9110:13;1123:12716;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;1123:12716:83;2838:8;1123:12716;;2834:41;;8023:24;1123:12716;8023:24;;;:::i;1123:12716::-;;;;;;-1:-1:-1;;1123:12716:83;;;;-1:-1:-1;;;;;1123:12716:83;;:::i;:::-;;;;9270:15;1123:12716;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;2838:8;1123:12716;;2834:41;;1123:12716;;;5543:44;1123:12716;;;;:::i;:::-;;;;;:::i;:::-;5543:44;;:::i;1123:12716::-;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:12716:83;;;;929:10:34;4675:20:26;:60;;;;1123:12716:83;4654:153:26;;;:::i;:::-;6817:81;1123:12716:83;;;;6825:28:26;6817:81;:::i;:::-;1123:12716:83;;;6916:16:26;6908:66;6916:16;;6908:66;:::i;:::-;1123:12716:83;;;1662:18:30;1658:156;;1123:12716:83;1824:424:30;;1123:12716:83;;7134:3:26;1123:12716:83;;7118:14:26;;;;;7166:6;;7134:3;7166:6;;;:::i;:::-;1123:12716:83;7203:10:26;;;;;:::i;:::-;1123:12716:83;;;;;7250:9:26;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;7291:21:26;7283:76;7291:21;;;;7283:76;:::i;:::-;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7471:27:26;1123:12716:83;;;;;;7471:27:26;:::i;7134:3::-;7103:13;;7118:14;;;;;;;;;1123:12716:83;;;;-1:-1:-1;;;;;;;;;;;1123:12716:83;;;;;;929:10:34;;7524:47:26;929:10:34;;7524:47:26;;;:::i;:::-;;;;1713:19:33;;16774:580:26;;1123:12716:83;16774:580:26;1123:12716:83;;;;;;;;;;;16813:90:26;;;;929:10:34;1123:12716:83;16813:90:26;;1123:12716:83;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;16813:90:26;1123:12716:83;;16813:90:26;;;1123:12716:83;16813:90:26;1123:12716:83;16813:90:26;;1123:12716:83;;16813:90:26;;;16774:580;-1:-1:-1;16809:535:26;;;;1123:12716:83;16809:535:26;;:::i;:::-;;;;;;;;1123:12716:83;16809:535:26;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;1123:12716:83;;-1:-1:-1;;;17213:14:26;;1123:12716:83;;17213:14:26;;1123:12716:83;;;;;;;;;;;:::i;16809:535:26:-;-1:-1:-1;;;;;;1123:12716:83;16978:168:26;16809:535;16978:168;1123:12716:83;;-1:-1:-1;;;17077:50:26;;1123:12716:83;17077:50:26;1123:12716:83;17077:50:26;;;:::i;16813:90::-;;;;;1123:12716:83;16813:90:26;;;;;;;;;:::i;:::-;;;;;1824:424:30;1865:13;;;;1123:12716:83;1865:13:30;;;;;;1896:3;1123:12716:83;;1880:14:30;;;;;1932:6;;;;:::i;:::-;1123:12716:83;1973:10:30;;;;:::i;:::-;1123:12716:83;;;;;;2018:12:30;1123:12716:83;;;;;;2060:16:30;;;;1123:12716:83;;1896:3:30;1123:12716:83;;;;2018:12:30;1123:12716:83;;;;;;;;;1896:3:30;:::i;:::-;1865:13;;1123:12716:83;;;;-1:-1:-1;;;1123:12716:83;-1:-1:-1;;;;;;;;;;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;1880:14:30;;;;;;;;;;;;1824:424;;1658:156;1701:13;;;;;;;;;1123:12716:83;1732:3:30;1123:12716:83;;1716:14:30;;;;;1779:10;;1768:6;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:12716:83;1768:6:30;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;;1658:156;;4675:60:26;1123:12716:83;;;;;;3873:18:26;1123:12716:83;;;;;929:10:34;1123:12716:83;;;;4654:153:26;1123:12716:83;;;;;;4675:60:26;;;;1123:12716:83;;;;;;;:::i;:::-;;;2838:8;1123:12716;;2834:41;;1123:12716;;5312:7;1123:12716;;;;;;;:::i;:::-;5150:1;1123:12716;;;;;;;;;;;;;;:::i;:::-;5150:1;1123:12716;;;;;;;;5215:22;;;;:::i;:::-;1123:12716;5247:20;;;:::i;:::-;1123:12716;5312:7;:::i;:::-;1123:12716;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;2122:17:32;1123:12716:83;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;;;2163:30:32;2159:90;;1123:12716:83;-1:-1:-1;;;;;1123:12716:83;2296:23:32;;1123:12716:83;;;;;;;;;;;;;;;;;;;2756:5:32;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;2159:90:32;1123:12716:83;;;;;;:::i;:::-;2219:19:32;1123:12716:83;;;;;;;;;;;;2159:90:32;;1123:12716:83;;;;;;-1:-1:-1;;1123:12716:83;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;:::i;:::-;1303:62:17;;;;:::i;:::-;1123:12716:83;2838:8;1123:12716;;2834:41;;1123:12716;;;3128:12;1123:12716;;;;;;;3128:29;1123:12716;;;3128:29;1123:12716;;3127:30;3123:70;;1123:12716;;;;;;;;;;8537:31;1123:12716;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8664:24;;;1123:12716;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3123:70;1123:12716;;-1:-1:-1;;;3166:27:83;;1123:12716;3166:27;;1123:12716;;;;;3166:27;1123:12716;;;;;;;;;;;;;;;;;9826:12;1123:12716;;;;;;;9826:31;1123:12716;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;9874:26;:59;;;;;1123:12716;;;;;;;;;;;;;:::i;9874:59::-;1123:12716;;;;;;;;2440:4:26;1123:12716:83;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9874:59;;;1123:12716;;;;;2440:4:26;1123:12716:83;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;-1:-1:-1;1123:12716:83;;-1:-1:-1;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1303:62:17;;;:::i;:::-;1123:12716:83;2838:8;1123:12716;;2834:41;;-1:-1:-1;;;;;1123:12716:83;;7596:21;;7592:58;;1123:12716;7803:41;1123:12716;;;;7752:15;1123:12716;;7752:36;1123:12716;;;;;;;;;;;;;;;;;;;7752:36;1123:12716;;;;;;;7803:41;1123:12716;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;1304:27;;1123:12716;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10182:46:83;;;:97;;;;1123:12716;10182:150;;;;1123:12716;;;;;;;;;;10182:150;-1:-1:-1;;;1810:52:32;;;-1:-1:-1;1810:92:32;;;;10182:150:83;;;;;1810:92:32;-1:-1:-1;;;1759:52:26;;;-1:-1:-1;1759:131:26;;;;1810:92:32;1759:183:26;;;;1810:92:32;;;;;1759:183:26;-1:-1:-1;;;1168:51:36;;-1:-1:-1;1759:183:26;;;:131;-1:-1:-1;;;1827:63:26;;;-1:-1:-1;1759:131:26;;10182:97:83;-1:-1:-1;;;10232:47:83;;;-1:-1:-1;10182:97:83;;1123:12716;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;1599:130:17;1513:6;1123:12716:83;-1:-1:-1;;;;;1123:12716:83;929:10:34;1662:23:17;1123:12716:83;;1599:130:17:o;1123:12716:83:-;;;;;;;;;;;;;;;;;;;;;;;;;2666:187:17;2758:6;1123:12716:83;;-1:-1:-1;;;;;1123:12716:83;;;-1:-1:-1;;;;;;1123:12716:83;;;;;;;;;;2806:40:17;-1:-1:-1;;2806:40:17;2666:187::o;2593:227:26:-;-1:-1:-1;;;;;1123:12716:83;;2706:21:26;;1123:12716:83;;2725:1:26;1123:12716:83;2791:9:26;1123:12716:83;;;2725:1:26;1123:12716:83;;2725:1:26;1123:12716:83;;;;2725:1:26;1123:12716:83;;2593:227:26;:::o;1123:12716:83:-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;;1123:12716:83;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;:::o;17366:193:26:-;1123:12716:83;;;;;;:::i;:::-;17499:1:26;1123:12716:83;;;;;;;;17511:18:26;;;:::i;:::-;1123:12716:83;17366:193:26;:::o;1123:12716:83:-;;;;:::o;:::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;5866:1493;;;-1:-1:-1;;;;;1123:12716:83;;;;5866:1493;;6214:23;;6210:60;;1513:6:17;1123:12716:83;;6284:10;:21;;:53;;;5866:1493;6280:94;;1123:12716;;12433:21;12429:46;;1123:12716;;;;12489:35;12485:69;;1123:12716;;1558:3;;12568:33;;;;12564:97;;12677:13;1123:12716;12714:3;1123:12716;;12692:20;;;;;12737:12;;;;:::i;:::-;1123:12716;-1:-1:-1;;1123:12716:83;;;;;;;12753:16;;;;:::i;:::-;1123:12716;-1:-1:-1;12737:32:83;12733:87;;12714:3;;;:::i;:::-;12677:13;;12733:87;12807:12;1123:12716;12807:12;;;:::i;:::-;1123:12716;;;12778:42;;;;;;;;;1123:12716;12778:42;1123:12716;;;;;;;;;;;;12692:20;;;;;;;;1123:12716;6434:761;6476:3;1123:12716;;6454:20;;;;;6513:12;;;;:::i;:::-;1123:12716;;;;;6544:12;1123:12716;;;;;;;6544:28;1123:12716;;;6544:28;1123:12716;;6543:29;6539:68;;6625:11;;;;:::i;:::-;1123:12716;6625:16;6621:49;;1123:12716;;;6799:16;1123:12716;;;;6799:39;1123:12716;;;;6827:11;;;;:::i;:::-;1123:12716;6799:39;;:::i;:::-;1123:12716;;;;;;;;;;6921:32;;;6917:104;;1123:12716;6476:3;1123:12716;;;;;;;;;;;;6476:3;:::i;:::-;6439:13;;;;;;;6917:104;1123:12716;;;;;;6962:59;;;;;;;;;1123:12716;;;;;;;;;6962:59;6621:49;1123:12716;;-1:-1:-1;;;6650:20:83;;;;;6539:68;1123:12716;;-1:-1:-1;;;6581:26:83;;;;;1123:12716;;;;;6581:26;6454:20;;;;;;;;1123:12716;;;;;;;;:::i;:::-;;;;10313:81:26;1123:12716:83;;;;10321:28:26;10313:81;:::i;:::-;1123:12716:83;1732:3:30;1123:12716:83;;1716:14:30;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:12716:83;1768:6:30;;;;:::i;:::-;1123:12716:83;;;1755:12:30;1123:12716:83;;1755:34:30;1123:12716:83;;;;;;1755:34:30;:::i;1732:3::-;1701:13;;1716:14;;;;;1123:12716:83;10560:3:26;1123:12716:83;;10544:14:26;;;;;10604:10;;10560:3;10604:10;;;:::i;:::-;1123:12716:83;10589:6:26;;;;:::i;:::-;1123:12716:83;;;;10579:9:26;1123:12716:83;;;;;;;;;;10579:35:26;1123:12716:83;;;;;;10579:35:26;:::i;10560:3::-;10529:13;;10544:14;;;;;;;1123:12716:83;;;;-1:-1:-1;;;;;;;;;;;6284:10:83;10640:53:26;;;;;;;:::i;:::-;;;;1713:19:33;16774:580:26;;10524:101;5866:1493:83;;;;;;:::o;16774:580:26:-;1123:12716:83;;;;;;;;;;;;;;;;;;16813:90:26;;;;6284:10:83;16813:90:26;;;1123:12716:83;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;16813:90:26;;;;1123:12716:83;;16813:90:26;;;16774:580;-1:-1:-1;16809:535:26;;;;1123:12716:83;16809:535:26;;:::i;:::-;;;;;;;;;;16774:580;;;;;;;;16809:535;1123:12716:83;-1:-1:-1;;;17267:62:26;;1123:12716:83;17267:62:26;16813:90;17267:62;;;:::i;16809:535::-;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;1123:12716:83;;-1:-1:-1;;;17213:14:26;;1123:12716:83;16813:90:26;17213:14;;1123:12716:83;;;;;;;;;;;:::i;16809:535:26:-;-1:-1:-1;;;;;;1123:12716:83;16982:71:26;16978:168;;16809:535;;;16978:168;1123:12716:83;-1:-1:-1;;;17077:50:26;;1123:12716:83;17077:50:26;16813:90;17077:50;;;:::i;16813:90::-;;;;;1123:12716:83;16813:90:26;;;;;;;;;:::i;:::-;;;;;12564:97:83;1123:12716;;;;;12610:51;;;;;;;;;1123:12716;;;;;12610:51;12485:69;1123:12716;;-1:-1:-1;;;12533:21:83;;;;;12429:46;1123:12716;;-1:-1:-1;;;12463:12:83;;;;;6280:94;1123:12716;;-1:-1:-1;;;6346:28:83;;6284:10;6346:28;;;1123:12716;;;6346:28;6284:53;:10;;6235:1;1123:12716;6310:15;1123:12716;;;;6235:1;1123:12716;;;6309:28;6284:53;;1123:12716;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;-1:-1:-1;;1123:12716:83;;;;:::o;11643:484::-;-1:-1:-1;;;;;1123:12716:83;;;;11643:484;11740:23;;11736:60;;1558:3;11810:36;;11806:135;;1123:12716;;;;;;11951:34;;1123:12716;;;;;;;;;11995:38;1123:12716;1558:3;1123:12716;;;;;;1558:3;1123:12716;;;;;;;-1:-1:-1;;;;;1123:12716:83;;3131:33:32;2756:5;3131:33;;1123:12716:83;;;;3314:35:32;1123:12716:83;;;;;:::i;:::-;;;;3314:35:32;1123:12716:83;3292:57:32;1123:12716:83;;-1:-1:-1;;;;;;1123:12716:83;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;3292:57:32;1123:12716:83;;;;;;;;;;;;11643:484::o;1123:12716::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1558:3:83;1123:12716;;;;;;11806:135;1123:12716;;-1:-1:-1;;;11869:61:83;;;;;1123:12716;;;1558:3;1123:12716;;;;;;11869:61","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","burn(address,uint256,uint256)":"f5298aca","burnBatch(address,uint256[],uint256[])":"6b20c454","createToken(string,uint256)":"72b3b620","disableContract()":"894ba833","disabled()":"ee070805","exists(uint256)":"4f558e79","init(string,string,string,address,address)":"a7eae21c","isApprovedForAll(address,address)":"e985e9c5","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintBatchTo(address,uint256[],uint256[])":"3512639c","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","royaltyInfo(uint256,uint256)":"2a55205a","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","setDefaultRoyaltyPercentage(uint256)":"e27a41bf","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","totalSupply(uint256)":"bd85b039","transferOwnership(address)":"f2fde38b","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RoyaltyPercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"burnBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBatchTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_percentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRoyaltyPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Clone-safe upgradeable-style implementation used behind minimal proxies. Token ids start at 1.\",\"errors\":{\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported percentage.\",\"supplied\":\"Percentage supplied by the caller.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"params\":{\"tokenId\":\"Token id that is not greater than the previous token id.\"}}]},\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,uint256,string)\":{\"params\":{\"creator\":\"RARE creator recorded for the token id.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createToken(string,uint256)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"exists(uint256)\":{\"details\":\"Indicates whether any token exist with a given id, or not.\"},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and ERC2981 royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintBatchTo(address,uint256[],uint256[])\":{\"details\":\"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.\",\"params\":{\"_amounts\":\"Quantities to mint for each token id.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenIds\":\"Existing token ids to mint.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"Minted token id.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"params\":{\"_percentage\":\"New royalty percentage, expressed as whole percentage points.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"details\":\"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.\",\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"totalSupply(uint256)\":{\"details\":\"Total amount of tokens in with a given id.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"stateVariables\":{\"MAX_BATCH_SIZE\":{\"return\":\"Maximum supported batch item count.\",\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"disabled\":{\"return\":\"True when disabled.\",\"returns\":{\"_0\":\"True when disabled.\"}},\"name\":{\"return\":\"Collection name.\",\"returns\":{\"_0\":\"Collection name.\"}},\"symbol\":{\"return\":\"Collection symbol.\",\"returns\":{\"_0\":\"Collection symbol.\"}}},\"title\":\"RareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"BatchLengthMismatch()\":[{\"notice\":\"Reverted when parallel batch arrays have different lengths.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"notice\":\"Reverted when the default royalty percentage is above 100%.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,uint256,string)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch mint operations.\"},\"createToken(string,uint256)\":{\"notice\":\"Creates a new token type.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintBatchTo(address,uint256[],uint256[])\":{\"notice\":\"Mints existing token ids to a receiver.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints one existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"notice\":\"Updates the collection-wide ERC2981 royalty percentage.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the collection-wide ERC2981 royalty receiver.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes collection-wide minter approval for an address.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Basic RARE Protocol ERC1155 collection with creator and royalty support.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/RareERC1155.sol\":\"RareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7\",\"dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol\":{\"keccak256\":\"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98\",\"dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8\",\"dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol\":{\"keccak256\":\"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9\",\"dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x423f16f31739668c0162422d91b2f9eea3769de9389d876d876928369b298976\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b942a7152ad01624065e302e75505c551348ddeca2bbb80d2ce556a0d15b0b2a\",\"dweb:/ipfs/QmQrtDpdLvntxFnh9tqFVUiRQPHQpf5BZjGp9PhM558gvJ\"]},\"src/token/ERC1155/RareERC1155.sol\":{\"keccak256\":\"0x55f6a6dfa9cca9ead5dca8c3a87dbca9ddf939c90f52df5ff2f5665337c6aea0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb631d06f6a0d9f23238b9b44a776e905eb0c3408ecf2fe8709378af57560f6f\",\"dweb:/ipfs/Qma1SKR78c6zh2VQMAGFaKKhmhqn9HvyCqXq3ruWjYqDqq\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[],"type":"error","name":"BatchLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"RoyaltyPercentageTooHigh"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"values","type":"uint256[]","indexed":false}],"type":"event","name":"TransferBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"TransferSingle","anonymous":false},{"inputs":[{"internalType":"string","name":"value","type":"string","indexed":false},{"internalType":"uint256","name":"id","type":"uint256","indexed":true}],"type":"event","name":"URI","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"burnBatch"},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"mintBatchTo"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyPercentage"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"createToken(string,uint256)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"exists(uint256)":{"details":"Indicates whether any token exist with a given id, or not."},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and ERC2981 royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedForAll(address,address)":{"details":"See {IERC1155-isApprovedForAll}."},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintBatchTo(address,uint256[],uint256[])":{"details":"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.","params":{"_amounts":"Quantities to mint for each token id.","_receiver":"Address that receives the minted tokens.","_tokenIds":"Existing token ids to mint."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"Minted token id."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"See {IERC1155-safeBatchTransferFrom}."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"See {IERC1155-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC1155-setApprovalForAll}."},"setDefaultRoyaltyPercentage(uint256)":{"params":{"_percentage":"New royalty percentage, expressed as whole percentage points."}},"setDefaultRoyaltyReceiver(address)":{"params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"details":"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.","params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"totalSupply(uint256)":{"details":"Total amount of tokens in with a given id."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch mint operations."},"createToken(string,uint256)":{"notice":"Creates a new token type."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintBatchTo(address,uint256[],uint256[])":{"notice":"Mints existing token ids to a receiver."},"mintTo(address,uint256,uint256)":{"notice":"Mints one existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"setDefaultRoyaltyPercentage(uint256)":{"notice":"Updates the collection-wide ERC2981 royalty percentage."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the collection-wide ERC2981 royalty receiver."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes collection-wide minter approval for an address."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/RareERC1155.sol":"RareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol":{"keccak256":"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856","urls":["bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7","dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"keccak256":"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b","urls":["bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce","dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol":{"keccak256":"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8","urls":["bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83","dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol":{"keccak256":"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7","urls":["bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98","dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"keccak256":"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e","urls":["bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8","dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"keccak256":"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448","urls":["bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9","dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol":{"keccak256":"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f","urls":["bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9","dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a","urls":["bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7","dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x423f16f31739668c0162422d91b2f9eea3769de9389d876d876928369b298976","urls":["bzz-raw://b942a7152ad01624065e302e75505c551348ddeca2bbb80d2ce556a0d15b0b2a","dweb:/ipfs/QmQrtDpdLvntxFnh9tqFVUiRQPHQpf5BZjGp9PhM558gvJ"],"license":"MIT"},"src/token/ERC1155/RareERC1155.sol":{"keccak256":"0x55f6a6dfa9cca9ead5dca8c3a87dbca9ddf939c90f52df5ff2f5665337c6aea0","urls":["bzz-raw://bb631d06f6a0d9f23238b9b44a776e905eb0c3408ecf2fe8709378af57560f6f","dweb:/ipfs/Qma1SKR78c6zh2VQMAGFaKKhmhqn9HvyCqXq3ruWjYqDqq"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":83} \ No newline at end of file diff --git a/abis/RareERC1155Listings.json b/abis/RareERC1155Listings.json new file mode 100644 index 0000000..249631b --- /dev/null +++ b/abis/RareERC1155Listings.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"cancelSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getDirectSaleConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Listings.DirectSaleConfig","components":[{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getERC1155ApprovalManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getMarketConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct MarketConfigV2.Config","components":[{"name":"networkBeneficiary","type":"address","internalType":"address"},{"name":"marketplaceSettings","type":"address","internalType":"contract IMarketplaceSettings"},{"name":"spaceOperatorRegistry","type":"address","internalType":"contract ISpaceOperatorRegistry"},{"name":"royaltyEngine","type":"address","internalType":"contract IRoyaltyEngineV1"},{"name":"payments","type":"address","internalType":"contract IPayments"},{"name":"approvedTokenRegistry","type":"address","internalType":"contract IApprovedTokenRegistry"},{"name":"stakingSettings","type":"address","internalType":"contract IStakingSettings"},{"name":"stakingRegistry","type":"address","internalType":"contract IRareStakingRegistry"},{"name":"erc20ApprovalManager","type":"address","internalType":"contract IERC20ApprovalManager"},{"name":"erc721ApprovalManager","type":"address","internalType":"contract IERC721ApprovalManager"}]}],"stateMutability":"view"},{"type":"function","name":"getSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Listings.SalePrice","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenAllowListConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Listings.AllowListConfig","components":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenMintsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"},{"name":"_marketplaceSettings","type":"address","internalType":"address"},{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"},{"name":"_royaltyEngine","type":"address","internalType":"address"},{"name":"_payments","type":"address","internalType":"address"},{"name":"_approvedTokenRegistry","type":"address","internalType":"address"},{"name":"_stakingSettings","type":"address","internalType":"address"},{"name":"_stakingRegistry","type":"address","internalType":"address"},{"name":"_erc20ApprovalManager","type":"address","internalType":"address"},{"name":"_erc721ApprovalManager","type":"address","internalType":"address"},{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"prepareMintDirectSales","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.DirectSaleRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovedTokenRegistry","inputs":[{"name":"_approvedTokenRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setContractPaused","inputs":[{"name":"_isPaused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC1155ApprovalManager","inputs":[{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20ApprovalManager","inputs":[{"name":"_erc20ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC721ApprovalManager","inputs":[{"name":"_erc721ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketplaceSettings","inputs":[{"name":"_marketplaceSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkBeneficiary","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPayments","inputs":[{"name":"_payments","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyEngine","inputs":[{"name":"_royaltyEngine","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.SalePriceRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpaceOperatorRegistry","inputs":[{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingRegistry","inputs":[{"name":"_stakingRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingSettings","inputs":[{"name":"_stakingSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenAllowListConfigs","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.AllowListConfigRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenMintLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenTxLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeTo","inputs":[{"name":"newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60a08060405234620000e157306080526000549060ff8260081c166200008f575060ff8082160362000053575b604051616b939081620000e782396080518181816111220152818161172901526134920152f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a1386200002c565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80630a6ce31314610277578063176ab4401461027257806321ede0321461026d57806328fbba03146102685780632c740844146102635780632f79f3351461025e5780633492e5a8146102595780633659cfe614610254578063369679a41461024f578063373a94121461024a5780634f1ef2861461024557806352d1902d14610240578063552f791d1461023b5780635a501f8f14610236578063614bd944146102315780636442950e1461022c5780636e2f4d8b14610227578063715018a61461022257806376902b831461021d5780637777e6d7146102185780637f358230146102135780638760251a1461020e578063882796f1146102095780638da5cb5b14610204578063af231a58146101ff578063b187bd26146101fa578063be542141146101f5578063bf3d90f8146101f0578063c7c83d17146101eb578063c7ec1b98146101e6578063cfdbf254146101e1578063d7a9fb7c146101dc578063d80b23e3146101d7578063e4e87e3b146101d2578063f1035744146101cd578063f2fde38b146101c8578063ff3a52d4146101c35763ff5c83a4146101be57600080fd5b61301f565b612d26565b612c95565b612bc2565b612ae8565b612a0e565b612935565b612919565b61284a565b612814565b6127a4565b6125d6565b61250a565b61243f565b612416565b6123a7565b612378565b61229e565b611e60565b611dba565b611d5c565b611c7b565b611b1b565b6118f9565b611814565b6117d6565b611716565b611690565b6113c1565b61130d565b6110fb565b611025565b610e9f565b610d9c565b610d53565b610c56565b610b7f565b6102c2565b6001600160a01b0381160361028d57565b600080fd5b9181601f8401121561028d578235916001600160401b03831161028d576020808501946060850201011161028d57565b608036600319011261028d576102d960043561027c565b6102e460243561027c565b6102ef60443561027c565b6064356001600160401b03811161028d5761030e903690600401610292565b61031661423c565b60ff600080516020616b1e8339815191525416610b6d576103378183615e17565b6001600160a01b039133602435841614610b4b576103566044356155bc565b610361600435615678565b600080516020616a5e833981519152546103af90602090610392906001600160a01b03165b6001600160a01b031690565b6040518093819263e985e9c560e01b835260243560048401613c29565b038187600435165afa90811561074857600091610b1c575b5015610afc576103d6826142c7565b926103e0836142c7565b6103f16103ec85613ef4565b6142c7565b6103fd6103ec86613ef4565b9561040786614622565b9660008061042c610386600080516020616b3e8339815191525460018060a01b031690565b89831061089857506104419150604435615f35565b8660005b878282106107f35750506040516313849cfd60e21b815293905060008480610471858560048401614711565b038189600435165afa938415610748576000946107d8575b5060005b8881106107665750600080516020616a5e833981519152546104b7906001600160a01b0316610386565b91823b1561028d5760006040518094637ee7f69b60e01b82528183816104e88c8b3360243560043560048701614767565b03925af19182156107485761051b9360009361074d575b506040516313849cfd60e21b8152938492839260048401614711565b038188600435165afa90811561074857600091610727575b5060005b87811061064257505050505060005b838110610559576105576001606555565b005b806105bb610569600193886143bc565b51516020610577848a6143bc565b510151906040610587858b6143bc565b510151906060610597868c6143bc565b5101519160806105a7878d6143bc565b510151936024359260443590600435615265565b6105c581876143bc565b515160206105d4838888614455565b013560406105e3848989614455565b604080519485526044356001600160a01b031660208601528401929092520135606082015260043584169033906024358616907f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d78869490608090a401610546565b61064b81613ef4565b61065581846143bc565b5161067561066383886143bc565b5161066e858a6143bc565b5190614681565b14908115916106e9575b5061068c57600101610537565b6106a28161069b8793866143bc565b51926143bc565b51604051638791019960e01b81526001600160a01b036004803582169083015260248083019490945292359092166044830152336064830152608482015260a490fd5b0390fd5b905061071f61070d610700610706610700856143d0565b876143bc565b51936143d0565b5161071884896143bc565b51906143de565b14153861067f565b610742913d8091833e61073a81836115ff565b8101906146ec565b38610533565b613230565b8061075a61076092611544565b8061170b565b386104ff565b61076f81613ef4565b61077981876143bc565b5161078483896143bc565b5111610793575060010161048d565b6106e56107b888926107b1856107aa8b978b6143bc565b51956143bc565b51946143bc565b51604051938493636906ef1760e11b85526004356024356004870161448a565b6107ec91943d8091833e61073a81836115ff565b9238610489565b6108596002604061084d8560019761084761080f600435613d65565b6108306024359161082186868d614455565b35600052602052604060002090565b9060018060a01b0316600052602052604060002090565b96614455565b01359201918254614681565b8091551561086a575b018790610445565b61089361088e896108308c61082186610884600435613d65565b9260243595614455565b614575565b610862565b906108b56108a7848c8c614455565b604435602435600435615b8b565b6108bf848d6143bc565b526108ca838c6143bc565b506108d6838b8b614455565b356108e184876143bc565b5260406108ef848c8c614455565b01356108fb84896143bc565b5261093c602061090b85886143bc565b51604051627eeac760e11b8152602480356001600160a01b0316600483015281019190915291829081906044820190565b03818c600435165afa90811561074857600091610add575b5061095f84896143bc565b518110610aa35750610999602080610977868f6143bc565b510151604051809381926361fe24a960e11b8352600483019190602083019252565b0381865afa91821561074857600192858e6109f494600093610a69575b506040916109c3916143bc565b5101526109ee8d60406109e58860206109dc82866143bc565b510151936143bc565b510151906143de565b906143de565b926109fe81613ef4565b610a1d602435610a0e838b6143bc565b6001600160a01b039091169052565b610a3333610a0e610a2d846143d0565b8b6143bc565b610a3d82886143bc565b51610a4882886143bc565b52610a60610700610a59848a6143bc565b51926143d0565b5201919061042c565b6109c391935091610a9360409360203d602011610a9c575b610a8b81836115ff565b810190613221565b939150916109b6565b503d610a81565b876106e5610abc86610ab5818b6143bc565b51936143bc565b5192604051938493636906ef1760e11b85526004356024356004870161448a565b610af6915060203d602011610a9c57610a8b81836115ff565b38610954565b60405163d65b0d6960e01b8152806106e560043560243560048401613c29565b610b3e915060203d602011610b44575b610b3681836115ff565b810190614475565b386103c7565b503d610b2c565b60405163aac1ae8b60e01b8152602480356001600160a01b0316600483015290fd5b60405163ab35696f60e01b8152600490fd5b3461028d57602036600319011261028d57600435610b9c8161027c565b610ba4613090565b610bad816165de565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d5760405163ed56be5b60e01b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857610c43575b50734d41524b4554504c4143455f53455454494e475360601b600080516020616a7e833981519152600080a3005b8061075a610c5092611544565b38610c15565b3461028d57602036600319011261028d57600435610c738161027c565b610c7b613090565b610c848161661d565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d5760405163143df10960e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857610d14575b506d524f59414c54595f454e47494e4560901b600080516020616a7e833981519152600080a3005b8061075a610d2192611544565b38610cec565b606090600319011261028d57600435610d3f8161027c565b9060243590604435610d508161027c565b90565b3461028d576020610d93610d71610d6936610d27565b929091613d9e565b90600052835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b3461028d57602036600319011261028d57600435610db98161027c565b610dc1613090565b610dca81616656565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d5760405163632c2a3160e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857610e5c575b506f5354414b494e475f524547495354525960801b600080516020616a7e833981519152600080a3005b8061075a610e6992611544565b38610e32565b9181601f8401121561028d578235916001600160401b03831161028d576020808501948460051b01011161028d57565b3461028d5760408060031936011261028d576004908135610ebf8161027c565b6024356001600160401b03811161028d57610edd9036908501610e6f565b929093610ee861423c565b610ef184615ef3565b60015b848110610fa0575050506001600160a01b03811660005b838110610f1c576105576001606555565b80610f2b610f95928688614565565b356002610f4e3361083084610f3f8a613d65565b90600052602052604060002090565b015415610f9a57610f6961088e3361083084610f3f8a613d65565b83337f46227bd805037a939224e05cd991a64cb464f4b5c5317858af210838e59ce390600080a4613c59565b610f0b565b50613c59565b610fab818688614565565b6000198201903582821161102057610fc482888a614565565b351015610fda5750610fd590613c59565b610ef4565b9286610ff78388610ff06106e596988286614565565b3593614565565b915163f48f718f60e01b8152938401948552602085015235604084015290918291606090910190565b613c43565b3461028d57602036600319011261028d576004356110428161027c565b61104a613090565b61105381616691565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d5760405163148282a760e21b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af48015610748576110e8575b50724e4554574f524b5f42454e454649434941525960681b600080516020616a7e833981519152600080a3005b8061075a6110f592611544565b386110bb565b3461028d57602036600319011261028d576004356111188161027c565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691906111513084141561315f565b61116e6000805160206169fe8339815191529382855416146131c0565b611176613090565b60405190611183826115c9565b600082527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156111bd57505061055791506132e9565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181611214575b506112015760405162461bcd60e51b8152806106e56004820161329a565b6105579361120f911461323c565b613379565b61122d91925060203d8111610a9c57610a8b81836115ff565b90386111e3565b90815180825260208080930193019160005b828110611254575050505090565b83516001600160a01b031685529381019392810192600101611246565b90815180825260208080930193019160005b828110611291575050505090565b835160ff1685529381019392810192600101611283565b90610d50916020815260018060a01b03825116602082015260208201516040820152604082015160608201526060820151608082015260a06112f8608084015160c08385015260e0840190611234565b9201519060c0601f1982850301910152611271565b3461028d576113bd61135861133561132436610d27565b92909161132f6142f9565b50613d65565b9060005260205260406000209060018060a01b0316600052602052604060002090565b6113ac60056040519261136a8461155c565b80546001600160a01b031684526001810154602085015260028101546040850152600381015460608501526113a1600482016147bd565b608085015201614815565b60a0820152604051918291826112a8565b0390f35b3461028d5760408060031936011261028d576004356113df8161027c565b6024356001600160401b03811161028d576113fe903690600401610292565b91909261140961423c565b61141a611416338461692e565b1590565b61150d57916114298185615e17565b6001600160a01b0382169060005b818110611448576105576001606555565b80611457611508928489614455565b3561146281876157c1565b847fa3f36b03a37e1948b5a4d52ddc1d9f62ab7d4e887e3a0a03e0c68d40f6075f3f89896114ee86898c6114db866114ca8b610f3f6020958a6114b48a8a8a6114ac83838c614455565b013598614455565b01356114be611620565b95865287860152613dd7565b906020600191805184550151910155565b6114e6838388614455565b013594614455565b8b519283520135602082015280604081015b0390a3613c59565b611437565b51600162bed83560e01b03198152915081906106e590339060048401613c29565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161155757604052565b61152e565b60c081019081106001600160401b0382111761155757604052565b61014081019081106001600160401b0382111761155757604052565b60e081019081106001600160401b0382111761155757604052565b604081019081106001600160401b0382111761155757604052565b602081019081106001600160401b0382111761155757604052565b606081019081106001600160401b0382111761155757604052565b90601f801991011681019081106001600160401b0382111761155757604052565b6040519061162d826115ae565b565b6040519061162d82611577565b6040519061162d82611593565b6040519061162d8261155c565b6040519060a082018281106001600160401b0382111761155757604052565b6001600160401b03811161155757601f01601f191660200190565b604036600319011261028d576004356116a88161027c565b602435906001600160401b03821161028d573660238301121561028d578160040135906116d482611675565b916116e260405193846115ff565b808352366024828601011161028d57602081600092602461055797018387013784010152613488565b600091031261028d57565b3461028d57600036600319011261028d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003611770576040516000805160206169fe8339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b3461028d57604036600319011261028d576117fb6004356117f68161027c565b613e10565b6024356000526020526020604060002054604051908152f35b3461028d576020610d93610d7161182a36610d27565b929091613e49565b81516001600160a01b031681526101408101929161162d91906020818101516001600160a01b0316908301526040818101516001600160a01b0316908301526060818101516001600160a01b0316908301526080818101516001600160a01b03169083015260a0818101516001600160a01b03169083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120908101516001600160a01b0316910152565b3461028d57600080600319360112611ac0576113bd90611ab460405161191e81611577565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015261010092808483015261012080920152611a8361196661162f565b6000805160206169de833981519152546001600160a01b0316815293600080516020616b3e833981519152546119b0906001600160a01b03165b6001600160a01b03166020870152565b600080516020616ade833981519152546001600160a01b03166040860152600080516020616afe833981519152546001600160a01b03166060860152600080516020616a1e833981519152546001600160a01b03166080860152600080516020616a9e833981519152546001600160a01b031660a0860152600080516020616abe833981519152546001600160a01b031660c08601526000805160206169be833981519152546001600160a01b031660e0860152600080516020616a3e833981519152546001600160a01b031690850152565b7f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1309546001600160a01b031690830152565b60405191829182611832565b80fd5b604060031982011261028d57600435611adb8161027c565b916024356001600160401b039283821161028d578060238301121561028d57816004013593841161028d5760248460061b8301011161028d576024019190565b3461028d57611b2936611ac3565b611b3492919261423c565b611b41611416338461692e565b611bea57611b4f8184615e85565b60005b818110611b63576105576001606555565b80611b72611be5928487614465565b35611b7d81866157c1565b602080611b8b84878a614465565b0135611b9a83610f3f89613e10565b55611ba6838689614465565b60405191013581526001600160a01b038616907f2f2a73977f9734e3b74f4efe888b44cdcca6903d8ab2b5be49c3969cc6cb1b62908060208101611500565b611b52565b604051600162bed83560e01b03198152806106e5338560048401613c29565b90610d50916020815260018060a01b0380835116602083015260208301511660408201526040820151606082015260608201516080820152608082015160a082015260c0611c6660a084015160e083850152610100840190611234565b9201519060e0601f1982850301910152611271565b3461028d5760408060031936011261028d57806113bd91600435611c9e8161027c565b611cda825191611cad83611593565b606060c0600094858152856020820152858782015285838201528560808201528260a08201520152613e82565b60243582526020522090611d4d6006825193611cf585611593565b80546001600160a01b031685526001810154611d19906001600160a01b03166119a0565b6002810154848601526003810154606086015260048101546080860152611d42600582016147bd565b60a086015201614815565b60c08301525191829182611c09565b3461028d57600080600319360112611ac057611d76613090565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b3461028d5761016036600319011261028d57610557600435611ddb8161027c565b602435611de78161027c565b604435611df38161027c565b606435611dff8161027c565b608435611e0b8161027c565b60a435611e178161027c565b60c43591611e248361027c565b60e43593611e318561027c565b6101043595611e3f8761027c565b6101243597611e4d8961027c565b6101443599611e5b8b61027c565b613698565b606036600319011261028d576004611e78813561027c565b611e8360243561027c565b6044356001600160401b03811161028d57611ea19036908301610e6f565b91611eaa61423c565b60ff600080516020616b1e833981519152541661228f57611ecb8383615da9565b611ed66024356155bc565b611edf836142c7565b611ee8846142c7565b611ef18561432d565b916000805b87811061214c5750611f0a90602435615f35565b60005b8681106120b6575083356001600160a01b03163b1561028d57604051630d4498e760e21b81529160009183918291611f4991903389850161441f565b03818387356001600160a01b03165af18015610748576120a3575b5060005b848110611f79576105576001606555565b806020611f88600193856143bc565b510151612044575b611f9a81846143bc565b5151611fba6060611fab84876143bc565b5101516001600160a01b031690565b906040611fc8848a8a61437d565b01357f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c61203b6020611ffb878d8d61437d565b013560405191829133978a8060a01b038d351696602435918590606092959493608083019660018060a01b03809316845260208401521660408201520152565b0390a401611f68565b61209e602061205383866143bc565b510151604061206284876143bc565b5101516120746060611fab86896143bc565b608061208086896143bc565b5101519160a0612090878a6143bc565b510151936024358a35614f78565b611f90565b8061075a6120b092611544565b38611f64565b806120c4600192898961437d565b356120d381610f3f8935613ebb565b54612119575b6120e781610f3f8935613e10565b546120f4575b5001611f0d565b612107906108303391610f3f8a35613e49565b61211181546143d0565b9055386120ed565b6040612126838b8b61437d565b013561214561213d3361083085610f3f8d35613d9e565b9182546143de565b90556120d9565b61216561215a828a8a61437d565b336024358935615881565b61216f82876143bc565b5261217a81866143bc565b5060208061218883886143bc565b5101516121cb575b508061219e600192876143bc565b51516121aa82866143bc565b5260406121b8828b8b61437d565b01356121c482876143bc565b5201611ef6565b600080516020616b3e83398151915254919290916121f1906001600160a01b0316610386565b906122268380612201878b6143bc565b5101516040948b86518095819482936361fe24a960e11b845283019190602083019252565b03915afa9283156107485760019461226b946109ee93600091612272575b5082612250898d6143bc565b51015261225d878b6143bc565b510151906109e5878b6143bc565b9190612190565b6122899150823d8411610a9c57610a8b81836115ff565b38612244565b60405163ab35696f60e01b8152fd5b3461028d57602036600319011261028d576004356122bb8161027c565b6122c3613090565b6122cc816166cf565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d576040516362cd1f1560e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857612365575b507653504143455f4f50455241544f525f524547495354525960481b600080516020616a7e833981519152600080a3005b8061075a61237292611544565b38612334565b3461028d57604036600319011261028d576117fb6004356123988161027c565b613ebb565b8015150361028d57565b3461028d57602036600319011261028d577fae6fb668d2dacbb6cc6e620b898a7166d67d7838c94ddeff2dbdf55995e9b19260206004356123e78161239d565b6123ef613090565b1515600080516020616b1e83398151915260ff1981541660ff8316179055604051908152a1005b3461028d57600036600319011261028d576033546040516001600160a01b039091168152602090f35b3461028d57602036600319011261028d5760043561245c8161027c565b612464613090565b61246d81616711565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d57604051631d1d389760e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af48015610748576124f7575b50675041594d454e545360c01b600080516020616a7e833981519152600080a3005b8061075a61250492611544565b386124d5565b3461028d57600036600319011261028d57602060ff600080516020616b1e83398151915254166040519015158152f35b9060a060031983011261028d576004356125538161027c565b916024356125608161027c565b91604435916001600160401b039081841161028d578060238501121561028d5783600401359382851161028d578160248660071b8301011161028d57602401939260643583811161028d57826125b891600401610e6f565b9390939260843591821161028d576125d291600401610e6f565b9091565b3461028d576125e43661253a565b6125f597969197959492939561423c565b60ff600080516020616b1e8339815191525416610b6d57612619611416338961692e565b612785576126278386615d10565b612630826155bc565b61263c8189868961612c565b60005b838110612650576105576001606555565b878787838787878f8c612664868689613c7e565b3597612670898b6157c1565b8660208061267f838a8d613c7e565b0135888b60409b8c9261269192613c7e565b0135898c60609586926126a392613c7e565b0135906126ae61163c565b338152926001600160a01b038b1684860152838d01528483015260808201526126d8368686613caa565b60a08201528b8d6126ea368a8a613d0d565b60c08401526126f890613e82565b6000918252602052604090209061270e916140ad565b6127198d898c613c7e565b0135988c89612729828b85613c7e565b01359861273592613c7e565b01359651968796339b600160a01b600190031699612753978961417f565b037f4c048dfd080dcfa2cccc41ef603e5f0ed6602ca215a41581d653aadf841a560b91a461278090613c59565b61263f565b604051600162bed83560e01b03198152806106e5338a60048401613c29565b3461028d5760408060031936011261028d576127de6004356127c58161027c565b6000602084516127d4816115ae565b8281520152613dd7565b6024356000526020528060002081516127f6816115ae565b60206001835493848452015491019081528251918252516020820152f35b3461028d57600036600319011261028d57600080516020616a5e833981519152546040516001600160a01b039091168152602090f35b3461028d5761285836611ac3565b61286392919261423c565b612870611416338461692e565b611bea5761287e8184615e85565b60005b818110612892576105576001606555565b806128a1612914928487614465565b356128ac81866157c1565b6020806128ba84878a614465565b01356128c983610f3f89613ebb565b556128d5838689614465565b60405191013581526001600160a01b038616907feead0384c6f48c02c0099b2433359d43617492f06d8e3a59cbe786b9970f7e61908060208101611500565b612881565b3461028d57600036600319011261028d57602060405160648152f35b3461028d57602036600319011261028d576004356129528161027c565b61295a613090565b612963816167c1565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d576040516328b80cf560e21b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af48015610748576129fb575b507522a92199182fa0a8282927ab20a62fa6a0a720a3a2a960511b600080516020616a7e833981519152600080a3005b8061075a612a0892611544565b386129cb565b3461028d57602036600319011261028d57600435612a2b8161027c565b612a33613090565b612a3c816167c1565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d57604051631f1afd0d60e01b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857612ad5575b507622a9219b9918afa0a8282927ab20a62fa6a0a720a3a2a960491b600080516020616a7e833981519152600080a3005b8061075a612ae292611544565b38612aa4565b3461028d57602036600319011261028d57600435612b058161027c565b612b0d613090565b612b1681616744565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d57604051632867932b60e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857612baf575b5076415050524f5645445f544f4b454e5f524547495354525960481b600080516020616a7e833981519152600080a3005b8061075a612bbc92611544565b38612b7e565b3461028d57602036600319011261028d57600435612bdf8161027c565b612be7613090565b612bf081616786565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d57604051632d8b49e160e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857612c82575b506f5354414b494e475f53455454494e475360801b600080516020616a7e833981519152600080a3005b8061075a612c8f92611544565b38612c58565b3461028d57602036600319011261028d57600435612cb28161027c565b612cba613090565b6001600160a01b03811615612cd25761055790613116565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461028d57612d343661253a565b90612d449792969395949761423c565b60ff600080516020616b1e8339815191525416610b6d57612d658886615d10565b612d6e846155bc565b612d7a8282898961612c565b612d8383615678565b600080516020616a5e83398151915254612dc790602090612dac906001600160a01b0316610386565b6040518093819263e985e9c560e01b83523360048401613c29565b03816001600160a01b0388165afa90811561074857600091613000575b5015612fe45760005b888110612dfe576105576001606555565b612e09818a88613c7e565b35868a6060612e37856040612e2e82866020612e2683838c613c7e565b013598613c7e565b0135938c613c7e565b01358215612fd2578115612fc05780151580612fb6575b612f9657604051627eeac760e11b8152336004820152602481018590526020816044816001600160a01b038d165afa90811561074857600091612f77575b50828110612f5657507fe4cf997ce4def583f8220b51e6c89b5dbf6eeded5de4d1d78884a25d2bf46d5d839289612f498f8f8c918f97918d92612f328a612f519f9e9d8e612f2d91612eee612edf611649565b6001600160a01b039095168552565b60208401528b6040840152846060840152612f0a368888613caa565b6080840152612f1a368a8a613d0d565b60a08401526108303391610f3f8d613d65565b6144bc565b60405197889760018060a01b03169b339b8961417f565b0390a4613c59565b612ded565b604051636906ef1760e11b81529081906106e59085888d336004870161448a565b612f90915060203d602011610a9c57610a8b81836115ff565b38612e8c565b6040516346a836ff60e11b81526004810191909152426024820152604490fd5b5042811115612e4e565b60405163c6b949a960e01b8152600490fd5b6040516331cc996d60e11b8152600490fd5b60405163d65b0d6960e01b8152806106e5853360048401613c29565b613019915060203d602011610b4457610b3681836115ff565b38612de4565b3461028d57602036600319011261028d5760043561303c8161027c565b613044613090565b61304d816167c1565b6001600160a01b031661305f816130e8565b7722a92198989a9aafa0a8282927ab20a62fa6a0a720a3a2a960411b600080516020616a7e833981519152600080a3005b6033546001600160a01b031633036130a457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600080516020616a5e83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b1561316657565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b156131c757565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b9081602091031261028d575190565b6040513d6000823e3d90fd5b1561324357565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b60809060208152602e60208201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960408201526d6f6e206973206e6f74205555505360901b60608201520190565b803b1561331e576000805160206169fe83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b90613383826132e9565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a280511580159061342d575b6133c5575050565b61342a91600080604051936133d9856115e4565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020860152660819985a5b195960ca1b6040860152602081519101845af4613424613593565b916135c3565b50565b5060006133bd565b9061343f826132e9565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613480576133c5575050565b5060016133bd565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692906134c13085141561315f565b6134de6000805160206169fe8339815191529482865416146131c0565b6134e6613090565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561351c57505061162d91506132e9565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181613573575b506135605760405162461bcd60e51b8152806106e56004820161329a565b61162d9361356e911461323c565b613435565b61358c91925060203d8111610a9c57610a8b81836115ff565b9038613542565b3d156135be573d906135a482611675565b916135b260405193846115ff565b82523d6000602084013e565b606090565b9192901561362557508151156135d7575090565b3b156135e05790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156136385750805190602001fd5b60405162461bcd60e51b8152602060048201529081906106e59060248301905b919082519283825260005b848110613684575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201613663565b989694929099979593916000549a60ff8c60081c1615809c819d6137be575b811561379e575b5015613742576136e49a8c6136db600160ff196000541617600055565b61372957613a16565b6136ea57565b6136fa61ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b61373d61010061ff00196000541617600055565b613a16565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b159150816137b0575b50386136be565b6001915060ff1614386137a9565b600160ff82161091506136b7565b519061162d8261027c565b908161014091031261028d576137eb61162f565b906137f5816137cc565b8252613803602082016137cc565b6020830152613814604082016137cc565b6040830152613825606082016137cc565b6060830152613836608082016137cc565b608083015261384760a082016137cc565b60a083015261385860c082016137cc565b60c083015261386960e082016137cc565b60e083015261010061387c8183016137cc565b9083015261388e6101208092016137cc565b9082015290565b80516000805160206169de83398151915280546001600160a01b03199081166001600160a01b03938416179091556020830151600080516020616b3e833981519152805483169184169190911790556040830151600080516020616ade833981519152805483169184169190911790556060830151600080516020616afe833981519152805483169184169190911790556080830151600080516020616a1e8339815191528054831691841691909117905560a0830151600080516020616a9e8339815191528054831691841691909117905560c0830151600080516020616abe8339815191528054831691841691909117905560e08301516000805160206169be83398151915280548316918416919091179055610100830151600080516020616a3e83398151915280549092169083161790556101209091015161162d91167f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130980546001600160a01b0319166001600160a01b03909216919091179055565b95613af1979293959a98949996613a2c81616691565b613a35836165de565b613a3e856166cf565b613a478761661d565b613a508b616711565b613a598c616744565b613a6282616786565b613a6b84616656565b613a74866167c1565b613a7d886167c1565b613a868a6167c1565b60405163ef8c824960e01b81526001600160a01b039182166004820152928116602484015293841660448301529483166064820152978216608489015297811660a488015291821660c487015295811660e48601529485166101048501528416610124840152919291565b61014080846101448173__$c98ca6a62396e5a7a1471db151198a1f31$__5af4801561074857613b3494613b2e92600092613b4c575b5050613895565b166130e8565b613b3c613bd9565b613b44613c0d565b61162d613bfc565b613b6b9250803d10613b72575b613b6381836115ff565b8101906137d7565b3880613b27565b503d613b59565b15613b8057565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b613bf360ff60005460081c16613bee81613b79565b613b79565b61162d33613116565b61162d60ff60005460081c16613b79565b613c2260ff60005460081c16613bee81613b79565b6001606555565b6001600160a01b0391821681529116602082015260400190565b634e487b7160e01b600052601160045260246000fd5b60001981146110205760010190565b634e487b7160e01b600052603260045260246000fd5b9190811015613c8e5760071b0190565b613c68565b6001600160401b0381116115575760051b60200190565b9291613cb582613c93565b91613cc360405193846115ff565b829481845260208094019160051b810192831161028d57905b828210613ce95750505050565b8380918335613cf78161027c565b815201910190613cdc565b60ff81160361028d57565b9291613d1882613c93565b91613d2660405193846115ff565b829481845260208094019160051b810192831161028d57905b828210613d4c5750505050565b8380918335613d5a81613d02565b815201910190613d3f565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e13116020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130e6020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130c6020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130f6020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e13106020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130b6020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130d6020526040902090565b908160011b918083046002149015171561102057565b8181029291811591840414171561102057565b818110613f28575050565b60008155600101613f1d565b90600160401b811161155757815490808355818110613f5257505050565b61162d9260005260206000209182019101613f1d565b90600160401b8111611557578154818355808210613f8557505050565b61162d92600052601f6020600020918180850160051c8401941680613fb1575b500160051c0190613f1d565b600019908186019182549160200360031b1c16905538613fa5565b9080516001600160401b03811161155757613fe78184613f68565b613ffb602080930193600052602060002090565b908060051c9260005b8481106140775750601f1982169091039081614022575b5050505050565b9390600094855b82811061404057505050500155388080808061401b565b909192958261406c600192846140578b5160ff1690565b919060ff809160031b9316831b921b19161790565b970193929101614029565b6000805b83811061408f575084820155600101614004565b9690836140a46001928a614057865160ff1690565b9201970161407b565b815181546001600160a01b0319166001600160a01b03918216178255909190602082810151600185810180549285166001600160a01b03166001600160a01b03199093169290921790915591604084015160028601556060840151600386015560808401516004860155600585019060a0850151928351936001600160401b03851161155757819061413f8686613f34565b0192600052806000209160005b85811061416c575050505050505090600660c061162d9301519101613fcc565b845182168482015593820193860161414c565b93928692979896919360c086019160018060a01b0380961687526020998a8801526040870152606086015260c060808601525260e08301939060005b81811061420c575050505080820360a0909101528181528201929160005b8281106141e7575050505090565b90919293828060019260ff88356141fd81613d02565b168152019501939291016141d9565b909193929897969485806001928c88356142258161027c565b1681520195019101989293949697989190916141bb565b60026065541461424d576002606555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b6040519061429f826115ae565b6001825260203681840137565b604051906142b9826115e4565b600282526040366020840137565b906142d182613c93565b6142de60405191826115ff565b82815280926142ef601f1991613c93565b0190602036910137565b604051906143068261155c565b606060a0836000815260006020820152600060408201526000838201528260808201520152565b9061433782613c93565b61434460405191826115ff565b8281528092614355601f1991613c93565b019060005b82811061436657505050565b6020906143716142f9565b8282850101520161435a565b9190811015613c8e5760051b81013590607e198136030182121561028d570190565b805115613c8e5760200190565b805160011015613c8e5760400190565b8051821015613c8e5760209160051b010190565b906001820180921161102057565b9190820180921161102057565b90815180825260208080930193019160005b82811061440b575050505090565b8351855293810193928101926001016143fd565b6001600160a01b039091168152606060208201819052610d50939192614447918401906143eb565b9160408184039101526143eb565b9190811015613c8e576060020190565b9190811015613c8e5760061b0190565b9081602091031261028d5751610d508161239d565b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b815181546001600160a01b0319166001600160a01b039182161782559091906020808301519160019283860155604084015160028601556060840151600386015560048501906080850151928351936001600160401b0385116115575781906145258686613f34565b0192600052806000209160005b858110614552575050505050505090600560a061162d9301519101613fcc565b8451821684820155938201938601614532565b9190811015613c8e5760051b0190565b6005600091828155826001820155826002820155826003820155600481018054848255806145cb575b50500190815490808355816145b257505050565b60208161162d94601f935220910160051c810190613f1d565b6145de9185526020852090810190613f1d565b388061459e565b6040519060a082018281106001600160401b0382111761155757604052606060808360008152600060208201526000604082015282808201520152565b9061462c82613c93565b61463960405191826115ff565b828152809261464a601f1991613c93565b019060005b82811061465b57505050565b6020906146666145e5565b8282850101520161464f565b60001981019190821161102057565b9190820391821161102057565b81601f8201121561028d578051916146a583613c93565b926146b360405194856115ff565b808452602092838086019260051b82010192831161028d578301905b8282106146dd575050505090565b815181529083019083016146cf565b9060208282031261028d5781516001600160401b03811161028d57610d50920161468e565b9092916040820191604081528451809352606081019260208096019060005b81811061474a57505050610d5093948184039101526143eb565b82516001600160a01b031686529487019491870191600101614730565b93602095926147ac9461479e9360018060a01b0392838092168952168888015216604086015260c0606086015260c08501906143eb565b9083820360808501526143eb565b9060a0818303910152600081520190565b9060405191828154918282526020928383019160005283600020936000905b8282106147f25750505061162d925003836115ff565b85546001600160a01b0316845260019586019588955093810193909101906147dc565b9060408051809380549261483c614830858560209181520190565b92600052602060002090565b9360005b81601f820110614c585761162d955492828210614c42575b828210614c28575b828210614c0e575b828210614bf4575b828210614bda575b828210614bc0575b828210614ba6575b828210614b8c575b828210614b75575b50818110614b5d575b818110614b45575b818110614b2d575b818110614b15575b818110614afd575b818110614ae5575b818110614acd575b818110614ab5575b818110614a9d575b818110614a85575b818110614a6d575b818110614a55575b818110614a3d575b818110614a25575b818110614a0d575b8181106149f5575b8181106149dd575b8181106149c5575b8181106149ad575b818110614995575b81811061497d575b818110614965575b10614957575b5003836115ff565b60f81c81526020013861494f565b60f083901c60ff168452926001906020019301614949565b60e883901c60ff168452926001906020019301614941565b60e083901c60ff168452926001906020019301614939565b60d883901c60ff168452926001906020019301614931565b60d083901c60ff168452926001906020019301614929565b60c883901c60ff168452926001906020019301614921565b60c083901c60ff168452926001906020019301614919565b60b883901c60ff168452926001906020019301614911565b60b083901c60ff168452926001906020019301614909565b60a883901c60ff168452926001906020019301614901565b60a083901c60ff1684529260019060200193016148f9565b609883901c60ff1684529260019060200193016148f1565b609083901c60ff1684529260019060200193016148e9565b608883901c60ff1684529260019060200193016148e1565b608083901c60ff1684529260019060200193016148d9565b607883901c60ff1684529260019060200193016148d1565b607083901c60ff1684529260019060200193016148c9565b606883901c60ff1684529260019060200193016148c1565b606083901c60ff1684529260019060200193016148b9565b605883901c60ff1684529260019060200193016148b1565b605083901c60ff1684529260019060200193016148a9565b604883901c60ff1684529260019060200193016148a1565b83901c60ff16845292600190602001930138614898565b603884901c60ff1685529093600190602001940190614890565b603084901c60ff1685529093600190602001940190614888565b602884901c60ff1685529093600190602001940190614880565b602084811c60ff1686529194909160019101940190614878565b601884901c60ff1685529093600190602001940190614870565b601084901c60ff1685529093600190602001940190614868565b600884901c60ff1685529093600190602001940190614860565b60ff841685529093600190602001940190614858565b919350916001610400602092614ef68854614eeb60ff614c7c8582851660ff169052565b614ec4614d29614e748d614e2489614dd48e614ca18184018a8d60081c1660ff169052565b614cb48584018a8d60101c1660ff169052565b888b610200606095614ccf878201858560181c1660ff169052565b614ce46080958585888501921c1660ff169052565b614d8a60a097614cfd898401878760281c1660ff169052565b614d3a60c09b614d168d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b614d4f6101208401878760481c1660ff169052565b614d646101408401878760501c1660ff169052565b614d796101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b614d9f6101a08201858560681c1660ff169052565b614db46101c08201858560701c1660ff169052565b614dc96101e08201858560781c1660ff169052565b01921c1660ff169052565b614de96102208c01888b60881c1660ff169052565b614dfe6102408c01888b60901c1660ff169052565b614e136102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b614e396102a08a01868960a81c1660ff169052565b614e4e6102c08a01868960b01c1660ff169052565b614e636102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b614e896103208801848760c81c1660ff169052565b614e9e6103408801848760d01c1660ff169052565b614eb36103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b614ed96103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b0195019101918693919492614840565b90604051614f1381611593565b60c0614f5e6006839560018060a01b038082541686526001820154166020860152600281015460408601526003810154606086015260048101546080860152611d42600582016147bd565b910152565b9081602091031261028d5751610d5081613d02565b96959493909196614f8c8289958a866153b7565b600080516020616ade83398151915254614fae906001600160a01b0316610386565b604051635dc22eff60e01b81526001600160a01b03841660048201526020928382602481865afa918215610748576000926151a7575b5060009115615116575050604051632260494f60e01b81526001600160a01b039390931660048401529091908290829060249082905afa9081156107485760ff926000926150e9575b50505b1695606487116150c95761505261504b61162d979883613f0a565b6064900490565b9081615060575b5050616274565b816150c292945061507091614681565b92615079614292565b6000805160206169de833981519152546150a89061509f906001600160a01b0316610386565b610a0e8361439f565b6150b0614292565b91806150bb8461439f565b5284616353565b3880615059565b60405163d6849ff160e01b81526004810188905260646024820152604490fd5b6151089250803d1061510f575b61510081836115ff565b810190614f63565b388061502d565b503d6150f6565b600080516020616b3e8339815191525491945061516f92508391615142906001600160a01b0316610386565b60405163b28a7bad60e01b81526001600160a01b0390921660048301529092839190829081906024820190565b03915afa9182156107485760ff939261518a575b5050615030565b6151a09250803d1061510f5761510081836115ff565b3880615183565b6151bf919250843d8611610b4457610b3681836115ff565b9038614fe4565b91909160408184031261028d578051926001600160401b039384811161028d5782019381601f8601121561028d5784516151ff81613c93565b9061520d60405192836115ff565b808252602096878084019260051b8201019185831161028d5788809201905b83821061524c57505050509483015190811161028d57610d50920161468e565b828091835161525a8161027c565b81520191019061522c565b9692959197939061527a87968793888c6153b7565b600080516020616afe8339815191525461529c906001600160a01b0316610386565b604051637a99dc0160e11b81526001600160a01b039990991660048a01526024890191909152604488019690965260009586908890606490829084905af19788156107485786978799615378575b50865b89518810156153135761530761530d916107188a8d6143bc565b97613c59565b966152ed565b929598919497909396508883116153585761162d979883615338575b50505050616274565b8361534f94965061534891614681565b9484616353565b3880808061532f565b6040516344783bd360e11b815260048101849052602481018a9052604490fd5b9098506153989197503d8088833e61539081836115ff565b8101906151c6565b96909697386152ea565b9081602091031261028d5751610d508161027c565b600080516020616abe8339815191525461540694929391906153e1906001600160a01b0316610386565b93604051809563470d6ed960e11b825281806020998a95600483019190602083019252565b03915afa9384156107485760009461559d575b5081841161557d57811561401b5761542f6142ac565b926154b2866154556103866000805160206169de8339815191525460018060a01b031690565b9261546384610a0e8961439f565b6000805160206169be83398151915254615485906001600160a01b0316610386565b60405163e286ef3360e01b81526001600160a01b0390921660048301529092839190829081906024820190565b03915afa9081156107485761162d97600092615550575b506001600160a01b03916154e391508216610a0e876143ac565b6154fc6154ef866143ac565b516001600160a01b031690565b1661553b5761550f905b610a0e856143ac565b6155176142ac565b936155228184614681565b61552b8661439f565b52615535856143ac565b52616353565b5061550f61554b6154ef856143ac565b615506565b61556f9250803d10615576575b61556781836115ff565b8101906153a2565b38806154c9565b503d61555d565b604051639bdfbb5160e01b81526004810183905260248101859052604490fd5b6155b5919450853d8711610a9c57610a8b81836115ff565b9238615419565b6001600160a01b0381161515806155f8575b6155d55750565b60405163cd5f748960e01b81526001600160a01b03919091166004820152602490fd5b50600080516020616a9e8339815191525461561b906001600160a01b0316610386565b604051632d5ad3d560e01b81526001600160a01b038316600482015290602090829060249082905afa9081156107485760009161565a575b50156155ce565b615672915060203d8111610b4457610b3681836115ff565b38615653565b803b1580156156ab575b6156895750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b8083526024820152602481526156d4816115e4565b519084617530fa6000513d82615728575b508161571e575b508061570e575b806156ff575b15615682565b5061570981615791565b6156f9565b5061571881615734565b156156f3565b90501515386156ec565b602011159150386156e5565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b602482015260248152615764816115e4565b5191617530fa6000513d82615785575b508161577e575090565b9050151590565b60201115915038615774565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152615764816115e4565b6040516001620b695760e21b03198152600481018390526020816024816001600160a01b0386165afa9081156107485760009161582e575b5015615803575050565b604051632be7c7f360e01b81526001600160a01b039190911660048201526024810191909152604490fd5b615846915060203d8111610a9c57610a8b81836115ff565b386157f9565b903590601e198136030182121561028d57018035906001600160401b03821161028d57602001918160051b3603831361028d57565b9061588a6142f9565b5083359360409384820135916158ab6158a688610f3f88613e82565b614f06565b805190956001600160a01b03939091841615615b645786516158da90611416906001600160a01b03168461692e565b615b39576158f76158ee606085018561584c565b90838c866167e3565b8415615b285761590a89610f3f84613ebb565b5461591c826108308c610f3f87613d9e565b5481151580615b16575b615acd57505061593989610f3f84613e10565b549061594c816108308c610f3f87613e49565b549082151580615abc575b615a835750505050608085015180151580615a7a575b615a5a57506060850151428111615a415750602001359285850151808503615a21575060208501516001600160a01b03169180821690831603615a065750506159f9916159b991613f0a565b82519093906000906001600160a01b03169160c060a0860151950151956159de611649565b97885260208801528601526001600160a01b03166060850152565b608083015260a082015290565b6106e58651928392632e834cbf60e11b845260048401613c29565b8651631d6bbb8d60e11b8152600481018690526024810191909152604490fd5b865163456afd0b60e01b81526004810191909152602490fd5b8651635bdd08f560e01b8152600481018590526024810191909152604490fd5b5080841161596d565b895163ae3586c560e01b81526001600160a01b039485166004820152602481018c9052931660448401526064830152608482015260a490fd5b5082615ac7836143d0565b11615957565b8951636d03a2e560e01b81526001600160a01b039485166004820152602481018c905292909316604483015260648201869052608482019290925260a481019190915260c49150fd5b5081615b2288836143de565b11615926565b875163c6b949a960e01b8152600490fd5b86518851600162bed83560e01b031981529081906106e5906001600160a01b03168560048401613c29565b8751634ed1072f60e11b81526001600160a01b0383166004820152602481018a9052604490fd5b9192615b956145e5565b5080359360409283830135918215615cff57615bb88261083089610f3f8a613d65565b956002870154928315615cd05760038801549081151580615cc6575b615c9257505086546001600160a01b0390811692915081168203615a065750506020600186015493013592838103615c725750818110615c545750600592615c22615c4c9593600093613f0a565b615c2a611656565b9687526020870152850152615c41600482016147bd565b606085015201614815565b608082015290565b83516364b7fccd60e11b815260048101929092526024820152604490fd5b8451631d6bbb8d60e11b8152600481018590526024810191909152604490fd5b8751635493bdef60e11b81526001600160a01b039384166004820152602481018b9052921660448301526064820152608490fd5b5042821115615bd4565b8651630bac95f560e21b81526001600160a01b039283166004820152602481018a905291166044820152606490fd5b845163c6b949a960e01b8152600490fd5b90615d1a81615ef3565b60015b818110615d2957505050565b615d34818385613c7e565b6000198201903582821161102057615d4d828587613c7e565b351015615d635750615d5e90613c59565b615d1d565b8183615d77615d7e936106e5959688613c7e565b3595613c7e565b3560405193849363f48f718f60e01b8552600485016040919493926060820195825260208201520152565b90615db381615ef3565b60015b818110615dc257505050565b615dcd81838561437d565b6000198201903582821161102057615de682858761437d565b351015615dfc5750615df790613c59565b615db6565b8183615e10615d7e936106e595968861437d565b359561437d565b90615e2181615ef3565b60015b818110615e3057505050565b615e3b818385614455565b6000198201903582821161102057615e54828587614455565b351015615e6a5750615e6590613c59565b615e24565b8183615e7e615d7e936106e5959688614455565b3595614455565b90615e8f81615ef3565b60015b818110615e9e57505050565b615ea9818385614465565b6000198201903582821161102057615ec2828587614465565b351015615ed85750615ed390613c59565b615e92565b8183615eec615d7e936106e5959688614465565b3595614465565b8015615f235760648111615f045750565b6044906040519063f80a484560e01b8252600482015260646024820152fd5b60405163c2e5347d60e01b8152600490fd5b908015615f455761162d91615f60565b505034615f4e57565b60405163429465b160e01b8152600490fd5b6001600160a01b03811680156160ec57346160da576040516370a0823160e01b808252306004830152602092908383602481855afa928315610748576000936160bb575b50600080516020616a3e83398151915254615fc7906001600160a01b0316610386565b90813b1561028d57604051630aed65f560e11b81526001600160a01b038716600482015233602482015230604482015260648101889052916000908390608490829084905af19182156107485785926160a8575b5060405190815230600482015291829060249082905afa9081156107485761604c9360009261608b575b5050614681565b82810361605857505050565b604051636ff596f360e01b81526001600160a01b0392909216600483015260248201929092526044810191909152606490fd5b6160a19250803d10610a9c57610a8b81836115ff565b3880616045565b8061075a6160b592611544565b3861601b565b6160d3919350843d8611610a9c57610a8b81836115ff565b9138615fa4565b60405163d9efa38960e01b8152600490fd5b50508034036160f85750565b6040516305e4640960e21b81526004810191909152346024820152604490fd5b35610d508161027c565b35610d5081613d02565b9192909283156162625760058411616242578184036162205792919060009384935b828510616186575050505050606481036161655750565b6040516357623e5560e01b8152600481019190915260646024820152604490fd5b90919293946161a161038661619c888589614565565b616118565b15616207576161c26161bc6161b7888787614565565b616122565b60ff1690565b156161ee576161df6161e5916109ee6161bc6161b78a8989614565565b95613c59565b9392919061614e565b60405163d4c1893560e01b815260048101879052602490fd5b6040516306f5730d60e41b815260048101879052602490fd5b50604051632db4fb2960e01b8152600481018490526024810191909152604490fd5b6040516366a4d05560e01b81526004810185905260056024820152604490fd5b60405163d218e6a560e01b8152600490fd5b91929390835185519081810361632057505061629084516142c7565b92819260005b865180821015616311576162aa8991614672565b82036162cb575080856162c06162c693896143bc565b52613c59565b616296565b81956162f661504b6162f06161bc6162e96162c69761630b976143bc565b5160ff1690565b88613f0a565b616300888a6143bc565b5261066e87896143bc565b94613c59565b5050955061162d949250616353565b604051632db4fb2960e01b815260048101919091526024810191909152604490fd5b906020610d50928181520190613658565b9192939083518551908181036164a1575050600092835b865185101561638a5761630b61638491610718878a6143bc565b9361636a565b90929491935083810361648057506001600160a01b039182169283156163f1575060005b81518110156163e957806163df6163cb6154ef6163e494866143bc565b856163d6848b6143bc565b519116876164c3565b613c59565b6163ae565b505050509050565b60009495925084935061644061644e616421610386600080516020616a1e8339815191525460018060a01b031690565b94604051928391602083019663c176e63960e01b885260248401614711565b03601f1981018352826115ff565b51925af161645a613593565b90156164635750565b604051634c0fe4a160e11b81529081906106e59060048301616342565b604051633bc6f52760e21b8152600481018590526024810191909152604490fd5b6040516345e8c29760e11b815260048101919091526024810191909152604490fd5b60405163a9059cbb60e01b60208083019182526001600160a01b0394909416602483015260448083019590955293815291926165569291600090819061650a6064866115ff565b60018060a01b03169260405194616520866115ae565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af1613424613593565b8051908282159283156165c6575b5050501561656f5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b6165d69350820181019101614475565b388281616564565b6001600160a01b0316156165ee57565b60405163602d6df560e01b8152734d41524b4554504c4143455f53455454494e475360601b6004820152602490fd5b6001600160a01b03161561662d57565b60405163602d6df560e01b81526d524f59414c54595f454e47494e4560901b6004820152602490fd5b6001600160a01b03161561666657565b60405163602d6df560e01b81526f5354414b494e475f524547495354525960801b6004820152602490fd5b6001600160a01b0316156166a157565b60405163602d6df560e01b8152724e4554574f524b5f42454e454649434941525960681b6004820152602490fd5b6001600160a01b0316156166df57565b60405163602d6df560e01b81527653504143455f4f50455241544f525f524547495354525960481b6004820152602490fd5b6001600160a01b03161561672157565b60405163602d6df560e01b8152675041594d454e545360c01b6004820152602490fd5b6001600160a01b03161561675457565b60405163602d6df560e01b815276415050524f5645445f544f4b454e5f524547495354525960481b6004820152602490fd5b6001600160a01b03161561679657565b60405163602d6df560e01b81526f5354414b494e475f53455454494e475360801b6004820152602490fd5b6001600160a01b0316156167d157565b60405163c49074af60e01b8152600490fd5b6167ef90949294613dd7565b9060005260205260406000209060405191616809836115ae565b600181549182855201549081602085015215908115616898575b50616892576168689261141692604051602081019061685d816164408a856014916bffffffffffffffffffffffff199060601b1681520190565b5190209051906168a3565b61686f5750565b60405163e2cf60cb60e01b81526001600160a01b03919091166004820152602490fd5b50505050565b905042101538616823565b92909291600080925b8084106168bb57505050501490565b909192936168fe906168ce868487614565565b35808211616906576040805160208101938452908101919091526168f58160608101616440565b51902094613c59565b9291906168ac565b604080516020810192835290810192909252906169268160608101616440565b51902061630b565b6000806040516020810190638da5cb5b60e01b825260048152616950816115ae565b5190845afa9061695e613593565b911580156169b2575b61699057508060208061697f935183010191016153a2565b6001600160a01b0390811691161490565b60405163915b8f1d60e01b81526001600160a01b039091166004820152602490fd5b50602082511061696756fe094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1307094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1304094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1308094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130a376c367a1420063e9671cc85404673694901b9db2c20dc84b5acbf060f7ee37a094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1305094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1306094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1302094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1303094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1312094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1301a26469706673582212204ff4f871ea35358802f3010be34de8b577d27e1796c1b5b1eae1c9afa02cf06c64736f6c63430008120033","sourceMap":"1370:67832:73:-:0;;;;;;;1332:4:24;1324:13;;6007::23;1370:67832:73;;;;;;;;;;;;;;6078:31:23;6074:139;;-1:-1:-1;1370:67832:73;;;;;;;;1324:13:24;1370:67832:73;;;;;;;;;;;;;;;;6074:139:23;1370:67832:73;;;;;;6007:13:23;1370:67832:73;6174:28:23;1370:67832:73;;;;;;6174:28:23;6074:139;;;1370:67832:73;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;","linkReferences":{"src/v2/utils/MarketConfigV2.sol":{"MarketConfigV2":[{"start":3222,"length":20},{"start":3437,"length":20},{"start":3763,"length":20},{"start":4412,"length":20},{"start":9141,"length":20},{"start":9558,"length":20},{"start":10828,"length":20},{"start":11045,"length":20},{"start":11263,"length":20},{"start":11481,"length":20},{"start":15331,"length":20}]}}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c80630a6ce31314610277578063176ab4401461027257806321ede0321461026d57806328fbba03146102685780632c740844146102635780632f79f3351461025e5780633492e5a8146102595780633659cfe614610254578063369679a41461024f578063373a94121461024a5780634f1ef2861461024557806352d1902d14610240578063552f791d1461023b5780635a501f8f14610236578063614bd944146102315780636442950e1461022c5780636e2f4d8b14610227578063715018a61461022257806376902b831461021d5780637777e6d7146102185780637f358230146102135780638760251a1461020e578063882796f1146102095780638da5cb5b14610204578063af231a58146101ff578063b187bd26146101fa578063be542141146101f5578063bf3d90f8146101f0578063c7c83d17146101eb578063c7ec1b98146101e6578063cfdbf254146101e1578063d7a9fb7c146101dc578063d80b23e3146101d7578063e4e87e3b146101d2578063f1035744146101cd578063f2fde38b146101c8578063ff3a52d4146101c35763ff5c83a4146101be57600080fd5b61301f565b612d26565b612c95565b612bc2565b612ae8565b612a0e565b612935565b612919565b61284a565b612814565b6127a4565b6125d6565b61250a565b61243f565b612416565b6123a7565b612378565b61229e565b611e60565b611dba565b611d5c565b611c7b565b611b1b565b6118f9565b611814565b6117d6565b611716565b611690565b6113c1565b61130d565b6110fb565b611025565b610e9f565b610d9c565b610d53565b610c56565b610b7f565b6102c2565b6001600160a01b0381160361028d57565b600080fd5b9181601f8401121561028d578235916001600160401b03831161028d576020808501946060850201011161028d57565b608036600319011261028d576102d960043561027c565b6102e460243561027c565b6102ef60443561027c565b6064356001600160401b03811161028d5761030e903690600401610292565b61031661423c565b60ff600080516020616b1e8339815191525416610b6d576103378183615e17565b6001600160a01b039133602435841614610b4b576103566044356155bc565b610361600435615678565b600080516020616a5e833981519152546103af90602090610392906001600160a01b03165b6001600160a01b031690565b6040518093819263e985e9c560e01b835260243560048401613c29565b038187600435165afa90811561074857600091610b1c575b5015610afc576103d6826142c7565b926103e0836142c7565b6103f16103ec85613ef4565b6142c7565b6103fd6103ec86613ef4565b9561040786614622565b9660008061042c610386600080516020616b3e8339815191525460018060a01b031690565b89831061089857506104419150604435615f35565b8660005b878282106107f35750506040516313849cfd60e21b815293905060008480610471858560048401614711565b038189600435165afa938415610748576000946107d8575b5060005b8881106107665750600080516020616a5e833981519152546104b7906001600160a01b0316610386565b91823b1561028d5760006040518094637ee7f69b60e01b82528183816104e88c8b3360243560043560048701614767565b03925af19182156107485761051b9360009361074d575b506040516313849cfd60e21b8152938492839260048401614711565b038188600435165afa90811561074857600091610727575b5060005b87811061064257505050505060005b838110610559576105576001606555565b005b806105bb610569600193886143bc565b51516020610577848a6143bc565b510151906040610587858b6143bc565b510151906060610597868c6143bc565b5101519160806105a7878d6143bc565b510151936024359260443590600435615265565b6105c581876143bc565b515160206105d4838888614455565b013560406105e3848989614455565b604080519485526044356001600160a01b031660208601528401929092520135606082015260043584169033906024358616907f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d78869490608090a401610546565b61064b81613ef4565b61065581846143bc565b5161067561066383886143bc565b5161066e858a6143bc565b5190614681565b14908115916106e9575b5061068c57600101610537565b6106a28161069b8793866143bc565b51926143bc565b51604051638791019960e01b81526001600160a01b036004803582169083015260248083019490945292359092166044830152336064830152608482015260a490fd5b0390fd5b905061071f61070d610700610706610700856143d0565b876143bc565b51936143d0565b5161071884896143bc565b51906143de565b14153861067f565b610742913d8091833e61073a81836115ff565b8101906146ec565b38610533565b613230565b8061075a61076092611544565b8061170b565b386104ff565b61076f81613ef4565b61077981876143bc565b5161078483896143bc565b5111610793575060010161048d565b6106e56107b888926107b1856107aa8b978b6143bc565b51956143bc565b51946143bc565b51604051938493636906ef1760e11b85526004356024356004870161448a565b6107ec91943d8091833e61073a81836115ff565b9238610489565b6108596002604061084d8560019761084761080f600435613d65565b6108306024359161082186868d614455565b35600052602052604060002090565b9060018060a01b0316600052602052604060002090565b96614455565b01359201918254614681565b8091551561086a575b018790610445565b61089361088e896108308c61082186610884600435613d65565b9260243595614455565b614575565b610862565b906108b56108a7848c8c614455565b604435602435600435615b8b565b6108bf848d6143bc565b526108ca838c6143bc565b506108d6838b8b614455565b356108e184876143bc565b5260406108ef848c8c614455565b01356108fb84896143bc565b5261093c602061090b85886143bc565b51604051627eeac760e11b8152602480356001600160a01b0316600483015281019190915291829081906044820190565b03818c600435165afa90811561074857600091610add575b5061095f84896143bc565b518110610aa35750610999602080610977868f6143bc565b510151604051809381926361fe24a960e11b8352600483019190602083019252565b0381865afa91821561074857600192858e6109f494600093610a69575b506040916109c3916143bc565b5101526109ee8d60406109e58860206109dc82866143bc565b510151936143bc565b510151906143de565b906143de565b926109fe81613ef4565b610a1d602435610a0e838b6143bc565b6001600160a01b039091169052565b610a3333610a0e610a2d846143d0565b8b6143bc565b610a3d82886143bc565b51610a4882886143bc565b52610a60610700610a59848a6143bc565b51926143d0565b5201919061042c565b6109c391935091610a9360409360203d602011610a9c575b610a8b81836115ff565b810190613221565b939150916109b6565b503d610a81565b876106e5610abc86610ab5818b6143bc565b51936143bc565b5192604051938493636906ef1760e11b85526004356024356004870161448a565b610af6915060203d602011610a9c57610a8b81836115ff565b38610954565b60405163d65b0d6960e01b8152806106e560043560243560048401613c29565b610b3e915060203d602011610b44575b610b3681836115ff565b810190614475565b386103c7565b503d610b2c565b60405163aac1ae8b60e01b8152602480356001600160a01b0316600483015290fd5b60405163ab35696f60e01b8152600490fd5b3461028d57602036600319011261028d57600435610b9c8161027c565b610ba4613090565b610bad816165de565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d5760405163ed56be5b60e01b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857610c43575b50734d41524b4554504c4143455f53455454494e475360601b600080516020616a7e833981519152600080a3005b8061075a610c5092611544565b38610c15565b3461028d57602036600319011261028d57600435610c738161027c565b610c7b613090565b610c848161661d565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d5760405163143df10960e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857610d14575b506d524f59414c54595f454e47494e4560901b600080516020616a7e833981519152600080a3005b8061075a610d2192611544565b38610cec565b606090600319011261028d57600435610d3f8161027c565b9060243590604435610d508161027c565b90565b3461028d576020610d93610d71610d6936610d27565b929091613d9e565b90600052835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b3461028d57602036600319011261028d57600435610db98161027c565b610dc1613090565b610dca81616656565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d5760405163632c2a3160e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857610e5c575b506f5354414b494e475f524547495354525960801b600080516020616a7e833981519152600080a3005b8061075a610e6992611544565b38610e32565b9181601f8401121561028d578235916001600160401b03831161028d576020808501948460051b01011161028d57565b3461028d5760408060031936011261028d576004908135610ebf8161027c565b6024356001600160401b03811161028d57610edd9036908501610e6f565b929093610ee861423c565b610ef184615ef3565b60015b848110610fa0575050506001600160a01b03811660005b838110610f1c576105576001606555565b80610f2b610f95928688614565565b356002610f4e3361083084610f3f8a613d65565b90600052602052604060002090565b015415610f9a57610f6961088e3361083084610f3f8a613d65565b83337f46227bd805037a939224e05cd991a64cb464f4b5c5317858af210838e59ce390600080a4613c59565b610f0b565b50613c59565b610fab818688614565565b6000198201903582821161102057610fc482888a614565565b351015610fda5750610fd590613c59565b610ef4565b9286610ff78388610ff06106e596988286614565565b3593614565565b915163f48f718f60e01b8152938401948552602085015235604084015290918291606090910190565b613c43565b3461028d57602036600319011261028d576004356110428161027c565b61104a613090565b61105381616691565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d5760405163148282a760e21b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af48015610748576110e8575b50724e4554574f524b5f42454e454649434941525960681b600080516020616a7e833981519152600080a3005b8061075a6110f592611544565b386110bb565b3461028d57602036600319011261028d576004356111188161027c565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691906111513084141561315f565b61116e6000805160206169fe8339815191529382855416146131c0565b611176613090565b60405190611183826115c9565b600082527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156111bd57505061055791506132e9565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181611214575b506112015760405162461bcd60e51b8152806106e56004820161329a565b6105579361120f911461323c565b613379565b61122d91925060203d8111610a9c57610a8b81836115ff565b90386111e3565b90815180825260208080930193019160005b828110611254575050505090565b83516001600160a01b031685529381019392810192600101611246565b90815180825260208080930193019160005b828110611291575050505090565b835160ff1685529381019392810192600101611283565b90610d50916020815260018060a01b03825116602082015260208201516040820152604082015160608201526060820151608082015260a06112f8608084015160c08385015260e0840190611234565b9201519060c0601f1982850301910152611271565b3461028d576113bd61135861133561132436610d27565b92909161132f6142f9565b50613d65565b9060005260205260406000209060018060a01b0316600052602052604060002090565b6113ac60056040519261136a8461155c565b80546001600160a01b031684526001810154602085015260028101546040850152600381015460608501526113a1600482016147bd565b608085015201614815565b60a0820152604051918291826112a8565b0390f35b3461028d5760408060031936011261028d576004356113df8161027c565b6024356001600160401b03811161028d576113fe903690600401610292565b91909261140961423c565b61141a611416338461692e565b1590565b61150d57916114298185615e17565b6001600160a01b0382169060005b818110611448576105576001606555565b80611457611508928489614455565b3561146281876157c1565b847fa3f36b03a37e1948b5a4d52ddc1d9f62ab7d4e887e3a0a03e0c68d40f6075f3f89896114ee86898c6114db866114ca8b610f3f6020958a6114b48a8a8a6114ac83838c614455565b013598614455565b01356114be611620565b95865287860152613dd7565b906020600191805184550151910155565b6114e6838388614455565b013594614455565b8b519283520135602082015280604081015b0390a3613c59565b611437565b51600162bed83560e01b03198152915081906106e590339060048401613c29565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161155757604052565b61152e565b60c081019081106001600160401b0382111761155757604052565b61014081019081106001600160401b0382111761155757604052565b60e081019081106001600160401b0382111761155757604052565b604081019081106001600160401b0382111761155757604052565b602081019081106001600160401b0382111761155757604052565b606081019081106001600160401b0382111761155757604052565b90601f801991011681019081106001600160401b0382111761155757604052565b6040519061162d826115ae565b565b6040519061162d82611577565b6040519061162d82611593565b6040519061162d8261155c565b6040519060a082018281106001600160401b0382111761155757604052565b6001600160401b03811161155757601f01601f191660200190565b604036600319011261028d576004356116a88161027c565b602435906001600160401b03821161028d573660238301121561028d578160040135906116d482611675565b916116e260405193846115ff565b808352366024828601011161028d57602081600092602461055797018387013784010152613488565b600091031261028d57565b3461028d57600036600319011261028d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003611770576040516000805160206169fe8339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b3461028d57604036600319011261028d576117fb6004356117f68161027c565b613e10565b6024356000526020526020604060002054604051908152f35b3461028d576020610d93610d7161182a36610d27565b929091613e49565b81516001600160a01b031681526101408101929161162d91906020818101516001600160a01b0316908301526040818101516001600160a01b0316908301526060818101516001600160a01b0316908301526080818101516001600160a01b03169083015260a0818101516001600160a01b03169083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120908101516001600160a01b0316910152565b3461028d57600080600319360112611ac0576113bd90611ab460405161191e81611577565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015261010092808483015261012080920152611a8361196661162f565b6000805160206169de833981519152546001600160a01b0316815293600080516020616b3e833981519152546119b0906001600160a01b03165b6001600160a01b03166020870152565b600080516020616ade833981519152546001600160a01b03166040860152600080516020616afe833981519152546001600160a01b03166060860152600080516020616a1e833981519152546001600160a01b03166080860152600080516020616a9e833981519152546001600160a01b031660a0860152600080516020616abe833981519152546001600160a01b031660c08601526000805160206169be833981519152546001600160a01b031660e0860152600080516020616a3e833981519152546001600160a01b031690850152565b7f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1309546001600160a01b031690830152565b60405191829182611832565b80fd5b604060031982011261028d57600435611adb8161027c565b916024356001600160401b039283821161028d578060238301121561028d57816004013593841161028d5760248460061b8301011161028d576024019190565b3461028d57611b2936611ac3565b611b3492919261423c565b611b41611416338461692e565b611bea57611b4f8184615e85565b60005b818110611b63576105576001606555565b80611b72611be5928487614465565b35611b7d81866157c1565b602080611b8b84878a614465565b0135611b9a83610f3f89613e10565b55611ba6838689614465565b60405191013581526001600160a01b038616907f2f2a73977f9734e3b74f4efe888b44cdcca6903d8ab2b5be49c3969cc6cb1b62908060208101611500565b611b52565b604051600162bed83560e01b03198152806106e5338560048401613c29565b90610d50916020815260018060a01b0380835116602083015260208301511660408201526040820151606082015260608201516080820152608082015160a082015260c0611c6660a084015160e083850152610100840190611234565b9201519060e0601f1982850301910152611271565b3461028d5760408060031936011261028d57806113bd91600435611c9e8161027c565b611cda825191611cad83611593565b606060c0600094858152856020820152858782015285838201528560808201528260a08201520152613e82565b60243582526020522090611d4d6006825193611cf585611593565b80546001600160a01b031685526001810154611d19906001600160a01b03166119a0565b6002810154848601526003810154606086015260048101546080860152611d42600582016147bd565b60a086015201614815565b60c08301525191829182611c09565b3461028d57600080600319360112611ac057611d76613090565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b3461028d5761016036600319011261028d57610557600435611ddb8161027c565b602435611de78161027c565b604435611df38161027c565b606435611dff8161027c565b608435611e0b8161027c565b60a435611e178161027c565b60c43591611e248361027c565b60e43593611e318561027c565b6101043595611e3f8761027c565b6101243597611e4d8961027c565b6101443599611e5b8b61027c565b613698565b606036600319011261028d576004611e78813561027c565b611e8360243561027c565b6044356001600160401b03811161028d57611ea19036908301610e6f565b91611eaa61423c565b60ff600080516020616b1e833981519152541661228f57611ecb8383615da9565b611ed66024356155bc565b611edf836142c7565b611ee8846142c7565b611ef18561432d565b916000805b87811061214c5750611f0a90602435615f35565b60005b8681106120b6575083356001600160a01b03163b1561028d57604051630d4498e760e21b81529160009183918291611f4991903389850161441f565b03818387356001600160a01b03165af18015610748576120a3575b5060005b848110611f79576105576001606555565b806020611f88600193856143bc565b510151612044575b611f9a81846143bc565b5151611fba6060611fab84876143bc565b5101516001600160a01b031690565b906040611fc8848a8a61437d565b01357f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c61203b6020611ffb878d8d61437d565b013560405191829133978a8060a01b038d351696602435918590606092959493608083019660018060a01b03809316845260208401521660408201520152565b0390a401611f68565b61209e602061205383866143bc565b510151604061206284876143bc565b5101516120746060611fab86896143bc565b608061208086896143bc565b5101519160a0612090878a6143bc565b510151936024358a35614f78565b611f90565b8061075a6120b092611544565b38611f64565b806120c4600192898961437d565b356120d381610f3f8935613ebb565b54612119575b6120e781610f3f8935613e10565b546120f4575b5001611f0d565b612107906108303391610f3f8a35613e49565b61211181546143d0565b9055386120ed565b6040612126838b8b61437d565b013561214561213d3361083085610f3f8d35613d9e565b9182546143de565b90556120d9565b61216561215a828a8a61437d565b336024358935615881565b61216f82876143bc565b5261217a81866143bc565b5060208061218883886143bc565b5101516121cb575b508061219e600192876143bc565b51516121aa82866143bc565b5260406121b8828b8b61437d565b01356121c482876143bc565b5201611ef6565b600080516020616b3e83398151915254919290916121f1906001600160a01b0316610386565b906122268380612201878b6143bc565b5101516040948b86518095819482936361fe24a960e11b845283019190602083019252565b03915afa9283156107485760019461226b946109ee93600091612272575b5082612250898d6143bc565b51015261225d878b6143bc565b510151906109e5878b6143bc565b9190612190565b6122899150823d8411610a9c57610a8b81836115ff565b38612244565b60405163ab35696f60e01b8152fd5b3461028d57602036600319011261028d576004356122bb8161027c565b6122c3613090565b6122cc816166cf565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d576040516362cd1f1560e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857612365575b507653504143455f4f50455241544f525f524547495354525960481b600080516020616a7e833981519152600080a3005b8061075a61237292611544565b38612334565b3461028d57604036600319011261028d576117fb6004356123988161027c565b613ebb565b8015150361028d57565b3461028d57602036600319011261028d577fae6fb668d2dacbb6cc6e620b898a7166d67d7838c94ddeff2dbdf55995e9b19260206004356123e78161239d565b6123ef613090565b1515600080516020616b1e83398151915260ff1981541660ff8316179055604051908152a1005b3461028d57600036600319011261028d576033546040516001600160a01b039091168152602090f35b3461028d57602036600319011261028d5760043561245c8161027c565b612464613090565b61246d81616711565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d57604051631d1d389760e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af48015610748576124f7575b50675041594d454e545360c01b600080516020616a7e833981519152600080a3005b8061075a61250492611544565b386124d5565b3461028d57600036600319011261028d57602060ff600080516020616b1e83398151915254166040519015158152f35b9060a060031983011261028d576004356125538161027c565b916024356125608161027c565b91604435916001600160401b039081841161028d578060238501121561028d5783600401359382851161028d578160248660071b8301011161028d57602401939260643583811161028d57826125b891600401610e6f565b9390939260843591821161028d576125d291600401610e6f565b9091565b3461028d576125e43661253a565b6125f597969197959492939561423c565b60ff600080516020616b1e8339815191525416610b6d57612619611416338961692e565b612785576126278386615d10565b612630826155bc565b61263c8189868961612c565b60005b838110612650576105576001606555565b878787838787878f8c612664868689613c7e565b3597612670898b6157c1565b8660208061267f838a8d613c7e565b0135888b60409b8c9261269192613c7e565b0135898c60609586926126a392613c7e565b0135906126ae61163c565b338152926001600160a01b038b1684860152838d01528483015260808201526126d8368686613caa565b60a08201528b8d6126ea368a8a613d0d565b60c08401526126f890613e82565b6000918252602052604090209061270e916140ad565b6127198d898c613c7e565b0135988c89612729828b85613c7e565b01359861273592613c7e565b01359651968796339b600160a01b600190031699612753978961417f565b037f4c048dfd080dcfa2cccc41ef603e5f0ed6602ca215a41581d653aadf841a560b91a461278090613c59565b61263f565b604051600162bed83560e01b03198152806106e5338a60048401613c29565b3461028d5760408060031936011261028d576127de6004356127c58161027c565b6000602084516127d4816115ae565b8281520152613dd7565b6024356000526020528060002081516127f6816115ae565b60206001835493848452015491019081528251918252516020820152f35b3461028d57600036600319011261028d57600080516020616a5e833981519152546040516001600160a01b039091168152602090f35b3461028d5761285836611ac3565b61286392919261423c565b612870611416338461692e565b611bea5761287e8184615e85565b60005b818110612892576105576001606555565b806128a1612914928487614465565b356128ac81866157c1565b6020806128ba84878a614465565b01356128c983610f3f89613ebb565b556128d5838689614465565b60405191013581526001600160a01b038616907feead0384c6f48c02c0099b2433359d43617492f06d8e3a59cbe786b9970f7e61908060208101611500565b612881565b3461028d57600036600319011261028d57602060405160648152f35b3461028d57602036600319011261028d576004356129528161027c565b61295a613090565b612963816167c1565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d576040516328b80cf560e21b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af48015610748576129fb575b507522a92199182fa0a8282927ab20a62fa6a0a720a3a2a960511b600080516020616a7e833981519152600080a3005b8061075a612a0892611544565b386129cb565b3461028d57602036600319011261028d57600435612a2b8161027c565b612a33613090565b612a3c816167c1565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d57604051631f1afd0d60e01b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857612ad5575b507622a9219b9918afa0a8282927ab20a62fa6a0a720a3a2a960491b600080516020616a7e833981519152600080a3005b8061075a612ae292611544565b38612aa4565b3461028d57602036600319011261028d57600435612b058161027c565b612b0d613090565b612b1681616744565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d57604051632867932b60e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857612baf575b5076415050524f5645445f544f4b454e5f524547495354525960481b600080516020616a7e833981519152600080a3005b8061075a612bbc92611544565b38612b7e565b3461028d57602036600319011261028d57600435612bdf8161027c565b612be7613090565b612bf081616786565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d57604051632d8b49e160e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857612c82575b506f5354414b494e475f53455454494e475360801b600080516020616a7e833981519152600080a3005b8061075a612c8f92611544565b38612c58565b3461028d57602036600319011261028d57600435612cb28161027c565b612cba613090565b6001600160a01b03811615612cd25761055790613116565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461028d57612d343661253a565b90612d449792969395949761423c565b60ff600080516020616b1e8339815191525416610b6d57612d658886615d10565b612d6e846155bc565b612d7a8282898961612c565b612d8383615678565b600080516020616a5e83398151915254612dc790602090612dac906001600160a01b0316610386565b6040518093819263e985e9c560e01b83523360048401613c29565b03816001600160a01b0388165afa90811561074857600091613000575b5015612fe45760005b888110612dfe576105576001606555565b612e09818a88613c7e565b35868a6060612e37856040612e2e82866020612e2683838c613c7e565b013598613c7e565b0135938c613c7e565b01358215612fd2578115612fc05780151580612fb6575b612f9657604051627eeac760e11b8152336004820152602481018590526020816044816001600160a01b038d165afa90811561074857600091612f77575b50828110612f5657507fe4cf997ce4def583f8220b51e6c89b5dbf6eeded5de4d1d78884a25d2bf46d5d839289612f498f8f8c918f97918d92612f328a612f519f9e9d8e612f2d91612eee612edf611649565b6001600160a01b039095168552565b60208401528b6040840152846060840152612f0a368888613caa565b6080840152612f1a368a8a613d0d565b60a08401526108303391610f3f8d613d65565b6144bc565b60405197889760018060a01b03169b339b8961417f565b0390a4613c59565b612ded565b604051636906ef1760e11b81529081906106e59085888d336004870161448a565b612f90915060203d602011610a9c57610a8b81836115ff565b38612e8c565b6040516346a836ff60e11b81526004810191909152426024820152604490fd5b5042811115612e4e565b60405163c6b949a960e01b8152600490fd5b6040516331cc996d60e11b8152600490fd5b60405163d65b0d6960e01b8152806106e5853360048401613c29565b613019915060203d602011610b4457610b3681836115ff565b38612de4565b3461028d57602036600319011261028d5760043561303c8161027c565b613044613090565b61304d816167c1565b6001600160a01b031661305f816130e8565b7722a92198989a9aafa0a8282927ab20a62fa6a0a720a3a2a960411b600080516020616a7e833981519152600080a3005b6033546001600160a01b031633036130a457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600080516020616a5e83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b1561316657565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b156131c757565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b9081602091031261028d575190565b6040513d6000823e3d90fd5b1561324357565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b60809060208152602e60208201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960408201526d6f6e206973206e6f74205555505360901b60608201520190565b803b1561331e576000805160206169fe83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b90613383826132e9565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a280511580159061342d575b6133c5575050565b61342a91600080604051936133d9856115e4565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020860152660819985a5b195960ca1b6040860152602081519101845af4613424613593565b916135c3565b50565b5060006133bd565b9061343f826132e9565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613480576133c5575050565b5060016133bd565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692906134c13085141561315f565b6134de6000805160206169fe8339815191529482865416146131c0565b6134e6613090565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561351c57505061162d91506132e9565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181613573575b506135605760405162461bcd60e51b8152806106e56004820161329a565b61162d9361356e911461323c565b613435565b61358c91925060203d8111610a9c57610a8b81836115ff565b9038613542565b3d156135be573d906135a482611675565b916135b260405193846115ff565b82523d6000602084013e565b606090565b9192901561362557508151156135d7575090565b3b156135e05790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156136385750805190602001fd5b60405162461bcd60e51b8152602060048201529081906106e59060248301905b919082519283825260005b848110613684575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201613663565b989694929099979593916000549a60ff8c60081c1615809c819d6137be575b811561379e575b5015613742576136e49a8c6136db600160ff196000541617600055565b61372957613a16565b6136ea57565b6136fa61ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b61373d61010061ff00196000541617600055565b613a16565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b159150816137b0575b50386136be565b6001915060ff1614386137a9565b600160ff82161091506136b7565b519061162d8261027c565b908161014091031261028d576137eb61162f565b906137f5816137cc565b8252613803602082016137cc565b6020830152613814604082016137cc565b6040830152613825606082016137cc565b6060830152613836608082016137cc565b608083015261384760a082016137cc565b60a083015261385860c082016137cc565b60c083015261386960e082016137cc565b60e083015261010061387c8183016137cc565b9083015261388e6101208092016137cc565b9082015290565b80516000805160206169de83398151915280546001600160a01b03199081166001600160a01b03938416179091556020830151600080516020616b3e833981519152805483169184169190911790556040830151600080516020616ade833981519152805483169184169190911790556060830151600080516020616afe833981519152805483169184169190911790556080830151600080516020616a1e8339815191528054831691841691909117905560a0830151600080516020616a9e8339815191528054831691841691909117905560c0830151600080516020616abe8339815191528054831691841691909117905560e08301516000805160206169be83398151915280548316918416919091179055610100830151600080516020616a3e83398151915280549092169083161790556101209091015161162d91167f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130980546001600160a01b0319166001600160a01b03909216919091179055565b95613af1979293959a98949996613a2c81616691565b613a35836165de565b613a3e856166cf565b613a478761661d565b613a508b616711565b613a598c616744565b613a6282616786565b613a6b84616656565b613a74866167c1565b613a7d886167c1565b613a868a6167c1565b60405163ef8c824960e01b81526001600160a01b039182166004820152928116602484015293841660448301529483166064820152978216608489015297811660a488015291821660c487015295811660e48601529485166101048501528416610124840152919291565b61014080846101448173__$c98ca6a62396e5a7a1471db151198a1f31$__5af4801561074857613b3494613b2e92600092613b4c575b5050613895565b166130e8565b613b3c613bd9565b613b44613c0d565b61162d613bfc565b613b6b9250803d10613b72575b613b6381836115ff565b8101906137d7565b3880613b27565b503d613b59565b15613b8057565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b613bf360ff60005460081c16613bee81613b79565b613b79565b61162d33613116565b61162d60ff60005460081c16613b79565b613c2260ff60005460081c16613bee81613b79565b6001606555565b6001600160a01b0391821681529116602082015260400190565b634e487b7160e01b600052601160045260246000fd5b60001981146110205760010190565b634e487b7160e01b600052603260045260246000fd5b9190811015613c8e5760071b0190565b613c68565b6001600160401b0381116115575760051b60200190565b9291613cb582613c93565b91613cc360405193846115ff565b829481845260208094019160051b810192831161028d57905b828210613ce95750505050565b8380918335613cf78161027c565b815201910190613cdc565b60ff81160361028d57565b9291613d1882613c93565b91613d2660405193846115ff565b829481845260208094019160051b810192831161028d57905b828210613d4c5750505050565b8380918335613d5a81613d02565b815201910190613d3f565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e13116020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130e6020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130c6020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130f6020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e13106020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130b6020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130d6020526040902090565b908160011b918083046002149015171561102057565b8181029291811591840414171561102057565b818110613f28575050565b60008155600101613f1d565b90600160401b811161155757815490808355818110613f5257505050565b61162d9260005260206000209182019101613f1d565b90600160401b8111611557578154818355808210613f8557505050565b61162d92600052601f6020600020918180850160051c8401941680613fb1575b500160051c0190613f1d565b600019908186019182549160200360031b1c16905538613fa5565b9080516001600160401b03811161155757613fe78184613f68565b613ffb602080930193600052602060002090565b908060051c9260005b8481106140775750601f1982169091039081614022575b5050505050565b9390600094855b82811061404057505050500155388080808061401b565b909192958261406c600192846140578b5160ff1690565b919060ff809160031b9316831b921b19161790565b970193929101614029565b6000805b83811061408f575084820155600101614004565b9690836140a46001928a614057865160ff1690565b9201970161407b565b815181546001600160a01b0319166001600160a01b03918216178255909190602082810151600185810180549285166001600160a01b03166001600160a01b03199093169290921790915591604084015160028601556060840151600386015560808401516004860155600585019060a0850151928351936001600160401b03851161155757819061413f8686613f34565b0192600052806000209160005b85811061416c575050505050505090600660c061162d9301519101613fcc565b845182168482015593820193860161414c565b93928692979896919360c086019160018060a01b0380961687526020998a8801526040870152606086015260c060808601525260e08301939060005b81811061420c575050505080820360a0909101528181528201929160005b8281106141e7575050505090565b90919293828060019260ff88356141fd81613d02565b168152019501939291016141d9565b909193929897969485806001928c88356142258161027c565b1681520195019101989293949697989190916141bb565b60026065541461424d576002606555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b6040519061429f826115ae565b6001825260203681840137565b604051906142b9826115e4565b600282526040366020840137565b906142d182613c93565b6142de60405191826115ff565b82815280926142ef601f1991613c93565b0190602036910137565b604051906143068261155c565b606060a0836000815260006020820152600060408201526000838201528260808201520152565b9061433782613c93565b61434460405191826115ff565b8281528092614355601f1991613c93565b019060005b82811061436657505050565b6020906143716142f9565b8282850101520161435a565b9190811015613c8e5760051b81013590607e198136030182121561028d570190565b805115613c8e5760200190565b805160011015613c8e5760400190565b8051821015613c8e5760209160051b010190565b906001820180921161102057565b9190820180921161102057565b90815180825260208080930193019160005b82811061440b575050505090565b8351855293810193928101926001016143fd565b6001600160a01b039091168152606060208201819052610d50939192614447918401906143eb565b9160408184039101526143eb565b9190811015613c8e576060020190565b9190811015613c8e5760061b0190565b9081602091031261028d5751610d508161239d565b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b815181546001600160a01b0319166001600160a01b039182161782559091906020808301519160019283860155604084015160028601556060840151600386015560048501906080850151928351936001600160401b0385116115575781906145258686613f34565b0192600052806000209160005b858110614552575050505050505090600560a061162d9301519101613fcc565b8451821684820155938201938601614532565b9190811015613c8e5760051b0190565b6005600091828155826001820155826002820155826003820155600481018054848255806145cb575b50500190815490808355816145b257505050565b60208161162d94601f935220910160051c810190613f1d565b6145de9185526020852090810190613f1d565b388061459e565b6040519060a082018281106001600160401b0382111761155757604052606060808360008152600060208201526000604082015282808201520152565b9061462c82613c93565b61463960405191826115ff565b828152809261464a601f1991613c93565b019060005b82811061465b57505050565b6020906146666145e5565b8282850101520161464f565b60001981019190821161102057565b9190820391821161102057565b81601f8201121561028d578051916146a583613c93565b926146b360405194856115ff565b808452602092838086019260051b82010192831161028d578301905b8282106146dd575050505090565b815181529083019083016146cf565b9060208282031261028d5781516001600160401b03811161028d57610d50920161468e565b9092916040820191604081528451809352606081019260208096019060005b81811061474a57505050610d5093948184039101526143eb565b82516001600160a01b031686529487019491870191600101614730565b93602095926147ac9461479e9360018060a01b0392838092168952168888015216604086015260c0606086015260c08501906143eb565b9083820360808501526143eb565b9060a0818303910152600081520190565b9060405191828154918282526020928383019160005283600020936000905b8282106147f25750505061162d925003836115ff565b85546001600160a01b0316845260019586019588955093810193909101906147dc565b9060408051809380549261483c614830858560209181520190565b92600052602060002090565b9360005b81601f820110614c585761162d955492828210614c42575b828210614c28575b828210614c0e575b828210614bf4575b828210614bda575b828210614bc0575b828210614ba6575b828210614b8c575b828210614b75575b50818110614b5d575b818110614b45575b818110614b2d575b818110614b15575b818110614afd575b818110614ae5575b818110614acd575b818110614ab5575b818110614a9d575b818110614a85575b818110614a6d575b818110614a55575b818110614a3d575b818110614a25575b818110614a0d575b8181106149f5575b8181106149dd575b8181106149c5575b8181106149ad575b818110614995575b81811061497d575b818110614965575b10614957575b5003836115ff565b60f81c81526020013861494f565b60f083901c60ff168452926001906020019301614949565b60e883901c60ff168452926001906020019301614941565b60e083901c60ff168452926001906020019301614939565b60d883901c60ff168452926001906020019301614931565b60d083901c60ff168452926001906020019301614929565b60c883901c60ff168452926001906020019301614921565b60c083901c60ff168452926001906020019301614919565b60b883901c60ff168452926001906020019301614911565b60b083901c60ff168452926001906020019301614909565b60a883901c60ff168452926001906020019301614901565b60a083901c60ff1684529260019060200193016148f9565b609883901c60ff1684529260019060200193016148f1565b609083901c60ff1684529260019060200193016148e9565b608883901c60ff1684529260019060200193016148e1565b608083901c60ff1684529260019060200193016148d9565b607883901c60ff1684529260019060200193016148d1565b607083901c60ff1684529260019060200193016148c9565b606883901c60ff1684529260019060200193016148c1565b606083901c60ff1684529260019060200193016148b9565b605883901c60ff1684529260019060200193016148b1565b605083901c60ff1684529260019060200193016148a9565b604883901c60ff1684529260019060200193016148a1565b83901c60ff16845292600190602001930138614898565b603884901c60ff1685529093600190602001940190614890565b603084901c60ff1685529093600190602001940190614888565b602884901c60ff1685529093600190602001940190614880565b602084811c60ff1686529194909160019101940190614878565b601884901c60ff1685529093600190602001940190614870565b601084901c60ff1685529093600190602001940190614868565b600884901c60ff1685529093600190602001940190614860565b60ff841685529093600190602001940190614858565b919350916001610400602092614ef68854614eeb60ff614c7c8582851660ff169052565b614ec4614d29614e748d614e2489614dd48e614ca18184018a8d60081c1660ff169052565b614cb48584018a8d60101c1660ff169052565b888b610200606095614ccf878201858560181c1660ff169052565b614ce46080958585888501921c1660ff169052565b614d8a60a097614cfd898401878760281c1660ff169052565b614d3a60c09b614d168d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b614d4f6101208401878760481c1660ff169052565b614d646101408401878760501c1660ff169052565b614d796101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b614d9f6101a08201858560681c1660ff169052565b614db46101c08201858560701c1660ff169052565b614dc96101e08201858560781c1660ff169052565b01921c1660ff169052565b614de96102208c01888b60881c1660ff169052565b614dfe6102408c01888b60901c1660ff169052565b614e136102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b614e396102a08a01868960a81c1660ff169052565b614e4e6102c08a01868960b01c1660ff169052565b614e636102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b614e896103208801848760c81c1660ff169052565b614e9e6103408801848760d01c1660ff169052565b614eb36103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b614ed96103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b0195019101918693919492614840565b90604051614f1381611593565b60c0614f5e6006839560018060a01b038082541686526001820154166020860152600281015460408601526003810154606086015260048101546080860152611d42600582016147bd565b910152565b9081602091031261028d5751610d5081613d02565b96959493909196614f8c8289958a866153b7565b600080516020616ade83398151915254614fae906001600160a01b0316610386565b604051635dc22eff60e01b81526001600160a01b03841660048201526020928382602481865afa918215610748576000926151a7575b5060009115615116575050604051632260494f60e01b81526001600160a01b039390931660048401529091908290829060249082905afa9081156107485760ff926000926150e9575b50505b1695606487116150c95761505261504b61162d979883613f0a565b6064900490565b9081615060575b5050616274565b816150c292945061507091614681565b92615079614292565b6000805160206169de833981519152546150a89061509f906001600160a01b0316610386565b610a0e8361439f565b6150b0614292565b91806150bb8461439f565b5284616353565b3880615059565b60405163d6849ff160e01b81526004810188905260646024820152604490fd5b6151089250803d1061510f575b61510081836115ff565b810190614f63565b388061502d565b503d6150f6565b600080516020616b3e8339815191525491945061516f92508391615142906001600160a01b0316610386565b60405163b28a7bad60e01b81526001600160a01b0390921660048301529092839190829081906024820190565b03915afa9182156107485760ff939261518a575b5050615030565b6151a09250803d1061510f5761510081836115ff565b3880615183565b6151bf919250843d8611610b4457610b3681836115ff565b9038614fe4565b91909160408184031261028d578051926001600160401b039384811161028d5782019381601f8601121561028d5784516151ff81613c93565b9061520d60405192836115ff565b808252602096878084019260051b8201019185831161028d5788809201905b83821061524c57505050509483015190811161028d57610d50920161468e565b828091835161525a8161027c565b81520191019061522c565b9692959197939061527a87968793888c6153b7565b600080516020616afe8339815191525461529c906001600160a01b0316610386565b604051637a99dc0160e11b81526001600160a01b039990991660048a01526024890191909152604488019690965260009586908890606490829084905af19788156107485786978799615378575b50865b89518810156153135761530761530d916107188a8d6143bc565b97613c59565b966152ed565b929598919497909396508883116153585761162d979883615338575b50505050616274565b8361534f94965061534891614681565b9484616353565b3880808061532f565b6040516344783bd360e11b815260048101849052602481018a9052604490fd5b9098506153989197503d8088833e61539081836115ff565b8101906151c6565b96909697386152ea565b9081602091031261028d5751610d508161027c565b600080516020616abe8339815191525461540694929391906153e1906001600160a01b0316610386565b93604051809563470d6ed960e11b825281806020998a95600483019190602083019252565b03915afa9384156107485760009461559d575b5081841161557d57811561401b5761542f6142ac565b926154b2866154556103866000805160206169de8339815191525460018060a01b031690565b9261546384610a0e8961439f565b6000805160206169be83398151915254615485906001600160a01b0316610386565b60405163e286ef3360e01b81526001600160a01b0390921660048301529092839190829081906024820190565b03915afa9081156107485761162d97600092615550575b506001600160a01b03916154e391508216610a0e876143ac565b6154fc6154ef866143ac565b516001600160a01b031690565b1661553b5761550f905b610a0e856143ac565b6155176142ac565b936155228184614681565b61552b8661439f565b52615535856143ac565b52616353565b5061550f61554b6154ef856143ac565b615506565b61556f9250803d10615576575b61556781836115ff565b8101906153a2565b38806154c9565b503d61555d565b604051639bdfbb5160e01b81526004810183905260248101859052604490fd5b6155b5919450853d8711610a9c57610a8b81836115ff565b9238615419565b6001600160a01b0381161515806155f8575b6155d55750565b60405163cd5f748960e01b81526001600160a01b03919091166004820152602490fd5b50600080516020616a9e8339815191525461561b906001600160a01b0316610386565b604051632d5ad3d560e01b81526001600160a01b038316600482015290602090829060249082905afa9081156107485760009161565a575b50156155ce565b615672915060203d8111610b4457610b3681836115ff565b38615653565b803b1580156156ab575b6156895750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b8083526024820152602481526156d4816115e4565b519084617530fa6000513d82615728575b508161571e575b508061570e575b806156ff575b15615682565b5061570981615791565b6156f9565b5061571881615734565b156156f3565b90501515386156ec565b602011159150386156e5565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b602482015260248152615764816115e4565b5191617530fa6000513d82615785575b508161577e575090565b9050151590565b60201115915038615774565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152615764816115e4565b6040516001620b695760e21b03198152600481018390526020816024816001600160a01b0386165afa9081156107485760009161582e575b5015615803575050565b604051632be7c7f360e01b81526001600160a01b039190911660048201526024810191909152604490fd5b615846915060203d8111610a9c57610a8b81836115ff565b386157f9565b903590601e198136030182121561028d57018035906001600160401b03821161028d57602001918160051b3603831361028d57565b9061588a6142f9565b5083359360409384820135916158ab6158a688610f3f88613e82565b614f06565b805190956001600160a01b03939091841615615b645786516158da90611416906001600160a01b03168461692e565b615b39576158f76158ee606085018561584c565b90838c866167e3565b8415615b285761590a89610f3f84613ebb565b5461591c826108308c610f3f87613d9e565b5481151580615b16575b615acd57505061593989610f3f84613e10565b549061594c816108308c610f3f87613e49565b549082151580615abc575b615a835750505050608085015180151580615a7a575b615a5a57506060850151428111615a415750602001359285850151808503615a21575060208501516001600160a01b03169180821690831603615a065750506159f9916159b991613f0a565b82519093906000906001600160a01b03169160c060a0860151950151956159de611649565b97885260208801528601526001600160a01b03166060850152565b608083015260a082015290565b6106e58651928392632e834cbf60e11b845260048401613c29565b8651631d6bbb8d60e11b8152600481018690526024810191909152604490fd5b865163456afd0b60e01b81526004810191909152602490fd5b8651635bdd08f560e01b8152600481018590526024810191909152604490fd5b5080841161596d565b895163ae3586c560e01b81526001600160a01b039485166004820152602481018c9052931660448401526064830152608482015260a490fd5b5082615ac7836143d0565b11615957565b8951636d03a2e560e01b81526001600160a01b039485166004820152602481018c905292909316604483015260648201869052608482019290925260a481019190915260c49150fd5b5081615b2288836143de565b11615926565b875163c6b949a960e01b8152600490fd5b86518851600162bed83560e01b031981529081906106e5906001600160a01b03168560048401613c29565b8751634ed1072f60e11b81526001600160a01b0383166004820152602481018a9052604490fd5b9192615b956145e5565b5080359360409283830135918215615cff57615bb88261083089610f3f8a613d65565b956002870154928315615cd05760038801549081151580615cc6575b615c9257505086546001600160a01b0390811692915081168203615a065750506020600186015493013592838103615c725750818110615c545750600592615c22615c4c9593600093613f0a565b615c2a611656565b9687526020870152850152615c41600482016147bd565b606085015201614815565b608082015290565b83516364b7fccd60e11b815260048101929092526024820152604490fd5b8451631d6bbb8d60e11b8152600481018590526024810191909152604490fd5b8751635493bdef60e11b81526001600160a01b039384166004820152602481018b9052921660448301526064820152608490fd5b5042821115615bd4565b8651630bac95f560e21b81526001600160a01b039283166004820152602481018a905291166044820152606490fd5b845163c6b949a960e01b8152600490fd5b90615d1a81615ef3565b60015b818110615d2957505050565b615d34818385613c7e565b6000198201903582821161102057615d4d828587613c7e565b351015615d635750615d5e90613c59565b615d1d565b8183615d77615d7e936106e5959688613c7e565b3595613c7e565b3560405193849363f48f718f60e01b8552600485016040919493926060820195825260208201520152565b90615db381615ef3565b60015b818110615dc257505050565b615dcd81838561437d565b6000198201903582821161102057615de682858761437d565b351015615dfc5750615df790613c59565b615db6565b8183615e10615d7e936106e595968861437d565b359561437d565b90615e2181615ef3565b60015b818110615e3057505050565b615e3b818385614455565b6000198201903582821161102057615e54828587614455565b351015615e6a5750615e6590613c59565b615e24565b8183615e7e615d7e936106e5959688614455565b3595614455565b90615e8f81615ef3565b60015b818110615e9e57505050565b615ea9818385614465565b6000198201903582821161102057615ec2828587614465565b351015615ed85750615ed390613c59565b615e92565b8183615eec615d7e936106e5959688614465565b3595614465565b8015615f235760648111615f045750565b6044906040519063f80a484560e01b8252600482015260646024820152fd5b60405163c2e5347d60e01b8152600490fd5b908015615f455761162d91615f60565b505034615f4e57565b60405163429465b160e01b8152600490fd5b6001600160a01b03811680156160ec57346160da576040516370a0823160e01b808252306004830152602092908383602481855afa928315610748576000936160bb575b50600080516020616a3e83398151915254615fc7906001600160a01b0316610386565b90813b1561028d57604051630aed65f560e11b81526001600160a01b038716600482015233602482015230604482015260648101889052916000908390608490829084905af19182156107485785926160a8575b5060405190815230600482015291829060249082905afa9081156107485761604c9360009261608b575b5050614681565b82810361605857505050565b604051636ff596f360e01b81526001600160a01b0392909216600483015260248201929092526044810191909152606490fd5b6160a19250803d10610a9c57610a8b81836115ff565b3880616045565b8061075a6160b592611544565b3861601b565b6160d3919350843d8611610a9c57610a8b81836115ff565b9138615fa4565b60405163d9efa38960e01b8152600490fd5b50508034036160f85750565b6040516305e4640960e21b81526004810191909152346024820152604490fd5b35610d508161027c565b35610d5081613d02565b9192909283156162625760058411616242578184036162205792919060009384935b828510616186575050505050606481036161655750565b6040516357623e5560e01b8152600481019190915260646024820152604490fd5b90919293946161a161038661619c888589614565565b616118565b15616207576161c26161bc6161b7888787614565565b616122565b60ff1690565b156161ee576161df6161e5916109ee6161bc6161b78a8989614565565b95613c59565b9392919061614e565b60405163d4c1893560e01b815260048101879052602490fd5b6040516306f5730d60e41b815260048101879052602490fd5b50604051632db4fb2960e01b8152600481018490526024810191909152604490fd5b6040516366a4d05560e01b81526004810185905260056024820152604490fd5b60405163d218e6a560e01b8152600490fd5b91929390835185519081810361632057505061629084516142c7565b92819260005b865180821015616311576162aa8991614672565b82036162cb575080856162c06162c693896143bc565b52613c59565b616296565b81956162f661504b6162f06161bc6162e96162c69761630b976143bc565b5160ff1690565b88613f0a565b616300888a6143bc565b5261066e87896143bc565b94613c59565b5050955061162d949250616353565b604051632db4fb2960e01b815260048101919091526024810191909152604490fd5b906020610d50928181520190613658565b9192939083518551908181036164a1575050600092835b865185101561638a5761630b61638491610718878a6143bc565b9361636a565b90929491935083810361648057506001600160a01b039182169283156163f1575060005b81518110156163e957806163df6163cb6154ef6163e494866143bc565b856163d6848b6143bc565b519116876164c3565b613c59565b6163ae565b505050509050565b60009495925084935061644061644e616421610386600080516020616a1e8339815191525460018060a01b031690565b94604051928391602083019663c176e63960e01b885260248401614711565b03601f1981018352826115ff565b51925af161645a613593565b90156164635750565b604051634c0fe4a160e11b81529081906106e59060048301616342565b604051633bc6f52760e21b8152600481018590526024810191909152604490fd5b6040516345e8c29760e11b815260048101919091526024810191909152604490fd5b60405163a9059cbb60e01b60208083019182526001600160a01b0394909416602483015260448083019590955293815291926165569291600090819061650a6064866115ff565b60018060a01b03169260405194616520866115ae565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af1613424613593565b8051908282159283156165c6575b5050501561656f5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b6165d69350820181019101614475565b388281616564565b6001600160a01b0316156165ee57565b60405163602d6df560e01b8152734d41524b4554504c4143455f53455454494e475360601b6004820152602490fd5b6001600160a01b03161561662d57565b60405163602d6df560e01b81526d524f59414c54595f454e47494e4560901b6004820152602490fd5b6001600160a01b03161561666657565b60405163602d6df560e01b81526f5354414b494e475f524547495354525960801b6004820152602490fd5b6001600160a01b0316156166a157565b60405163602d6df560e01b8152724e4554574f524b5f42454e454649434941525960681b6004820152602490fd5b6001600160a01b0316156166df57565b60405163602d6df560e01b81527653504143455f4f50455241544f525f524547495354525960481b6004820152602490fd5b6001600160a01b03161561672157565b60405163602d6df560e01b8152675041594d454e545360c01b6004820152602490fd5b6001600160a01b03161561675457565b60405163602d6df560e01b815276415050524f5645445f544f4b454e5f524547495354525960481b6004820152602490fd5b6001600160a01b03161561679657565b60405163602d6df560e01b81526f5354414b494e475f53455454494e475360801b6004820152602490fd5b6001600160a01b0316156167d157565b60405163c49074af60e01b8152600490fd5b6167ef90949294613dd7565b9060005260205260406000209060405191616809836115ae565b600181549182855201549081602085015215908115616898575b50616892576168689261141692604051602081019061685d816164408a856014916bffffffffffffffffffffffff199060601b1681520190565b5190209051906168a3565b61686f5750565b60405163e2cf60cb60e01b81526001600160a01b03919091166004820152602490fd5b50505050565b905042101538616823565b92909291600080925b8084106168bb57505050501490565b909192936168fe906168ce868487614565565b35808211616906576040805160208101938452908101919091526168f58160608101616440565b51902094613c59565b9291906168ac565b604080516020810192835290810192909252906169268160608101616440565b51902061630b565b6000806040516020810190638da5cb5b60e01b825260048152616950816115ae565b5190845afa9061695e613593565b911580156169b2575b61699057508060208061697f935183010191016153a2565b6001600160a01b0390811691161490565b60405163915b8f1d60e01b81526001600160a01b039091166004820152602490fd5b50602082511061696756fe094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1307094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1304094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1308094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130a376c367a1420063e9671cc85404673694901b9db2c20dc84b5acbf060f7ee37a094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1305094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1306094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1302094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1303094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1312094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1301a26469706673582212204ff4f871ea35358802f3010be34de8b577d27e1796c1b5b1eae1c9afa02cf06c64736f6c63430008120033","sourceMap":"1370:67832:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;1370:67832:73;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;:::i;:::-;2471:103:25;;:::i;:::-;1370:67832:73;-1:-1:-1;;;;;;;;;;;971:66:21;1370:67832:73;7028:54;;22629:9;;;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;22653:10;1370:67832;;;;22653:21;22649:66;;22847:16;1370:67832;;22847:16;:::i;:::-;22899;1370:67832;;22899:16;:::i;:::-;-1:-1:-1;;;;;;;;;;;1370:67832:73;23140:68;;1370:67832;;23174:33;;-1:-1:-1;;;;;1370:67832:73;;-1:-1:-1;;;;;1370:67832:73;;;23174:33;1370:67832;;971:66:21;;;;;;;23140:68:73;;1370:67832;;;23140:68;;;:::i;:::-;;1370:67832;;;;;23140:68;;;;;;;-1:-1:-1;23140:68:73;;;1370:67832;23139:69;;23135:156;;23378:27;;;:::i;:::-;23442;;;;:::i;:::-;23514:31;23528:16;;;:::i;:::-;23514:31;:::i;:::-;23590;23604:16;;;:::i;23590:31::-;23680:42;;;;:::i;:::-;23732:22;-1:-1:-1;23770:13:73;24342:58;1370:67832;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;24342:58;23785:16;;;;;1370:67832;25034:10;1370:67832;;;;25034:10;:::i;:::-;25061:13;-1:-1:-1;25076:16:73;;;;;;;-1:-1:-1;;1370:67832:73;;-1:-1:-1;;;25754:56:73;;1370:67832;971:66:21;-1:-1:-1;;1370:67832:73;;25754:56;;971:66:21;1370:67832:73;25754:56;;;:::i;:::-;;1370:67832;;;;;25754:56;;;;;;;-1:-1:-1;25754:56:73;;;25056:646;25825:13;-1:-1:-1;25840:16:73;;;;;;-1:-1:-1;;;;;;;;;;;;1370:67832:73;26349:46;;-1:-1:-1;;;;;1370:67832:73;;;26349:46;:108;;;;;;-1:-1:-1;1370:67832:73;;971:66:21;;;;;26349:108:73;;22653:10;;;26349:108;22653:10;;;1370:67832;;;;;26349:108;;;:::i;:::-;;;;;;;;;;26509:56;26349:108;-1:-1:-1;26349:108:73;;;25820:430;-1:-1:-1;1370:67832:73;;-1:-1:-1;;;26509:56:73;;1370:67832;;;;;;26509:56;;;:::i;:::-;;1370:67832;;;;;26509:56;;;;;;;-1:-1:-1;26509:56:73;;;25820:430;26580:13;-1:-1:-1;26595:16:73;;;;;;27125:13;;;;;-1:-1:-1;27140:16:73;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;2536:1;1370:67832:73;27125:13;27336:17;27586:29;27336:17;1370:67832;27336:17;;;:::i;:::-;;1370:67832;;27413:17;;;;:::i;:::-;;:29;1370:67832;27460:17;1370:67832;27460:17;;;;:::i;:::-;;:32;1370:67832;27535:17;1370:67832;27535:17;;;;:::i;:::-;;:33;;27586:17;1370:67832;27586:17;;;;:::i;:::-;;:29;;1370:67832;;;;;;;;;27586:29;:::i;:::-;27758:17;;;;:::i;:::-;;1370:67832;;27835:12;;;;;:::i;:::-;:18;1370:67832;;27871:12;;;;;:::i;:::-;1370:67832;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;27871:21;1370:67832;;;;;;;;;;22653:10;;1370:67832;;;;;27649:257;;1370:67832;;27649:257;1370:67832;27125:13;;26580;26651:5;;;:::i;:::-;26691:35;;;;:::i;:::-;1370:67832;26730:49;:36;;;;:::i;:::-;1370:67832;26769:10;;;;:::i;:::-;1370:67832;26730:49;;:::i;:::-;26691:88;;;;:208;;;26580:13;26670:370;;;1370:67832;;26580:13;;26670:370;27014:10;26980:11;;;;;;:::i;:::-;1370:67832;27014:10;;:::i;:::-;1370:67832;;;-1:-1:-1;;;26939:86:73;;-1:-1:-1;;;;;1370:67832:73;;;;;26939:86;;;1370:67832;;;;;;;;;;;;;;;;;;22653:10;1370:67832;;;;;;;;;;26939:86;;;;;26691:208;26825:16;;26846:53;:40;26869:16;26803:39;26825:16;;;:::i;:::-;26803:39;;:::i;:::-;1370:67832;26869:16;;:::i;26846:40::-;1370:67832;26889:10;;;;:::i;:::-;1370:67832;26846:53;;:::i;:::-;26803:96;;26691:208;;;26509:56;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;26349:108::-;;;;;;:::i;:::-;;;:::i;:::-;;;;25825:13;25902:5;;;:::i;:::-;25925:42;;;;:::i;:::-;1370:67832;25970:10;;;;:::i;:::-;1370:67832;-1:-1:-1;25921:259:73;;1370:67832;;;25825:13;;25921:259;26007:158;26105:42;26080:11;;26093:10;26080:11;;;;;;:::i;:::-;1370:67832;26093:10;;:::i;:::-;1370:67832;26105:42;;:::i;:::-;1370:67832;;;24171:91;;;;;;26007:158;;1370:67832;;;;;26007:158;;;:::i;25754:56::-;;;;;;;;;;;;;:::i;:::-;;;;;25061:13;25350:43;23543:1;1370:67832;25372:12;1370:67832;;;25176:61;:30;1370:67832;;25176:30;:::i;:::-;:52;1370:67832;;25207:12;;;;;;:::i;:::-;1370:67832;;;;;;;;;;25176:52;1370:67832;;;;;;;;;;;;;;;;25176:61;25372:12;;:::i;:::-;:21;1370:67832;25350:18;;1370:67832;;;25350:43;:::i;:::-;1787:1:25;;;25411:23:73;25407:225;;25061:13;1370:67832;25061:13;;;;25407:225;25549:68;25556:61;1370:67832;25556:52;1370:67832;25587:12;1370:67832;25556:30;1370:67832;;25556:30;:::i;:::-;1370:67832;;;25587:12;;:::i;25556:61::-;25549:68;:::i;:::-;25407:225;;23770:13;23912:12;23838:87;23912:12;;;;;:::i;:::-;1370:67832;;;;;;23838:87;:::i;:::-;23818:107;;;;:::i;:::-;;;;;;:::i;:::-;;23954:12;;;;;:::i;:::-;1370:67832;23940:34;;;;:::i;:::-;1370:67832;;24001:12;;;;;:::i;:::-;:21;1370:67832;23988:34;;;;:::i;:::-;1370:67832;24061:39;1370:67832;24088:11;;;;:::i;:::-;1370:67832;;;-1:-1:-1;;;24061:39:73;;1370:67832;;;-1:-1:-1;;;;;1370:67832:73;;24061:39;;1370:67832;;;;;;;;;;;;;;;;;24061:39;;1370:67832;;;;;24061:39;;;;;;;-1:-1:-1;24061:39:73;;;23770:13;24134:10;;;;;:::i;:::-;1370:67832;24118:26;;24114:163;;24401:17;24342:89;1370:67832;24401:17;;;;;:::i;:::-;;:29;1370:67832;;;971:66:21;;;;;;;24342:89:73;;1370:67832;24342:89;;1370:67832;;;;;;;;24342:89;;;;;;;;;;;1370:67832;24342:89;;;24445:78;24342:89;-1:-1:-1;24342:89:73;;;23770:13;24291:17;1370:67832;24291:17;;;;:::i;:::-;;:32;1370:67832;24459:64;:17;1370:67832;24491:17;24459;1370:67832;24459:17;;;;:::i;:::-;;:29;1370:67832;24491:17;;:::i;:::-;;:32;1370:67832;24459:64;;:::i;:::-;24445:78;;:::i;:::-;24561:5;;;;:::i;:::-;24580:39;1370:67832;;24580:39;;;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;;24580:39;24633:46;22653:10;24633:46;24649:16;;;:::i;:::-;24633:46;;:::i;:::-;24725:11;;;;:::i;:::-;1370:67832;24693:43;;;;:::i;:::-;1370:67832;24750:47;24766:16;24786:11;;;;:::i;:::-;1370:67832;24766:16;;:::i;24750:47::-;1370:67832;;;23770:13;;;24342:89;24291:17;24342:89;;;;;1370:67832;24342:89;1370:67832;24342:89;1370:67832;24342:89;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;24114:163;24223:11;24171:91;24236:10;24223:11;;;;;:::i;:::-;1370:67832;24236:10;;:::i;:::-;1370:67832;;;;24171:91;;;;;;;;1370:67832;;;;;24171:91;;;:::i;24061:39::-;;;;1370:67832;24061:39;1370:67832;24061:39;;;;;;;:::i;:::-;;;;23135:156;1370:67832;;23231:49;;;;;1370:67832;23231:49;1370:67832;;;;;23231:49;;;:::i;23140:68::-;;;;1370:67832;23140:68;1370:67832;23140:68;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;22649:66;1370:67832;;-1:-1:-1;;;22683:32:73;;1370:67832;;;-1:-1:-1;;;;;1370:67832:73;;22683:32;;1370:67832;;26939:86;7028:54;1370:67832;;-1:-1:-1;;;7066:16:73;;1370:67832;;7066:16;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;33294:26:73;;;:::i;:::-;33417:57;:79;;;;;;1370:67832;;-1:-1:-1;;;33417:79:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;33417:79;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;33417:79;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;33512:78:73;1370:67832;33417:79;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;34619:20:73;;;:::i;:::-;34736:51;:67;;;;;;1370:67832;;-1:-1:-1;;;34736:67:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;34736:67;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;34736:67;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;34819:66:73;1370:67832;34736:67;;;;;;:::i;:::-;;;;1370:67832;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;29862:77;:57;1370:67832;;;:::i;:::-;29862:57;;;;:::i;:::-;1370:67832;-1:-1:-1;1370:67832:73;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;29862:77;1370:67832;;;;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;37115:22:73;;;:::i;:::-;37234:53;:71;;;;;;1370:67832;;-1:-1:-1;;;37234:71:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;37234:71;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;37234:71;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;37321:70:73;1370:67832;37234:71;;;;;;:::i;:::-;;;;1370:67832;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;54194:16:73;;;:::i;:::-;54238:1;54241:20;;;;;;-1:-1:-1;;;;;;;;1370:67832:73;;;21815:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;21837:3:73;21874:12;;21837:3;21874:12;;;;:::i;:::-;1370:67832;21964:60;:51;22004:10;21964:39;:30;;;;:::i;:::-;1370:67832;;;;;;;;;;21964:51;:60;1370:67832;21964:65;21960:112;;22180:58;22187:51;22004:10;22187:39;:30;;;;:::i;22180:58::-;22004:10;;22258:57;1370:67832;22258:57;;21837:3;:::i;:::-;21800:13;;21960:112;22049:8;21837:3;:::i;54263:::-;54286:12;;;;;:::i;:::-;-1:-1:-1;;1370:67832:73;;;;;;;;;54302:16;;;;;:::i;:::-;1370:67832;-1:-1:-1;54286:32:73;54282:141;;54263:3;;;;:::i;:::-;54226:13;;54282:141;54377:16;;54395:12;54377:16;;;54345:63;54377:16;;;;;:::i;:::-;1370:67832;54395:12;;:::i;:::-;1370:67832;;-1:-1:-1;;;54345:63:73;;;;;1370:67832;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;32614:25:73;;;:::i;:::-;32736:56;:77;;;;;;1370:67832;;-1:-1:-1;;;32736:77:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;32736:77;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;32736:77;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;32829:76:73;1370:67832;32736:77;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1898:6:24;1370:67832:73;;;;1873:80:24;1889:4;1881:23;;;1873:80;:::i;:::-;1963:87;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;1971:30:24;1963:87;:::i;:::-;1303:62:17;;:::i;:::-;1370:67832:73;;;;;;:::i;:::-;-1:-1:-1;1370:67832:73;;971:66:21;;1370:67832:73;;971:66:21;;;3330:17;;;;;;:::i;3232:526::-;1370:67832:73;;;;;;;;971:66:21;;;;;;;3383:63;;1370:67832:73;;3383:63:21;;-1:-1:-1;;3383:63:21;;;3232:526;-1:-1:-1;3379:302:21;;1370:67832:73;;-1:-1:-1;;;3610:56:21;;1370:67832:73;3610:56:21;1370:67832:73;3610:56:21;;;:::i;3379:302::-;3737:9;3496:28;3488:82;3496:28;;3488:82;:::i;:::-;3737:9;:::i;3383:63::-;;;;;1370:67832:73;3383:63:21;;;;;;;;;:::i;:::-;;;;;1370:67832:73;;;;;;;;;;;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;31444:66;:47;1370:67832;;;:::i;:::-;;;;;;:::i;:::-;;31444:47;:::i;:::-;1370:67832;-1:-1:-1;1370:67832:73;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;31444:66;1370:67832;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;16506:47:73;16507:46;16542:10;16507:46;;:::i;:::-;16506:47;;1370:67832;16506:47;16502:106;;16651:9;;;;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;;-1:-1:-1;16692:20:73;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;16714:3:73;16751:12;;16714:3;16751:12;;;;:::i;:::-;1370:67832;16826:7;;;;:::i;:::-;1370:67832;17114:96;1370:67832;;17184:12;1370:67832;;;;;16929:65;1370:67832;16929:56;1370:67832;17050:12;;17069;17050;;;;;;;;:::i;:::-;:17;1370:67832;17069:12;;:::i;:::-;:25;1370:67832;;;:::i;:::-;;;;17013:82;;;1370:67832;16929:56;:::i;:65::-;1370:67832;;;;;;1787:1:25;;1370:67832:73;;;;1787:1:25;1370:67832:73;;17165:12;;;;;:::i;:::-;:17;1370:67832;17184:12;;:::i;:::-;1370:67832;;;;;17184:25;1370:67832;;;;;;;;;17114:96;;;;16714:3;:::i;:::-;16677:13;;16502:106;1370:67832;-1:-1:-1;;;;;;16562:46:73;;1370:67832;-1:-1:-1;1370:67832:73;;16562:46;;16542:10;;1370:67832;16562:46;;;:::i;1370:67832::-;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;:::o;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;;-1:-1:-1;;1370:67832:73;;;;:::o;:::-;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;1370:67832:73;;3901:220:24;1370:67832:73;;;;;;;;;;3901:220:24;:::i;1370:67832:73:-;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1370:67832:73;;;;2333:6:24;-1:-1:-1;;;;;1370:67832:73;2324:4:24;2316:23;1370:67832:73;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;30306:49;1370:67832;;;;;:::i;:::-;30306:49;:::i;:::-;1370:67832;;-1:-1:-1;1370:67832:73;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;30863:75;:55;1370:67832;;;:::i;:::-;30863:55;;;;:::i;1370:67832::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;-1:-1:-1;;;;;1370:67832:73;;-1:-1:-1;;;;;1370:67832:73;;;;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;18438:47:73;18439:46;18474:10;18439:46;;:::i;18438:47::-;18434:106;;18578:9;;;;:::i;:::-;18616:1;18619:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;18641:3:73;18678:12;;18641:3;18678:12;;;;:::i;:::-;1370:67832;18753:7;;;;:::i;:::-;18921:18;:12;;;;;;:::i;:::-;:18;1370:67832;18860:58;:49;;;;:::i;:58::-;1787:1:25;19001:12:73;;;;;:::i;:::-;1370:67832;;19001:18;;1370:67832;;;-1:-1:-1;;;;;1370:67832:73;;;18958:62;;1370:67832;;;;18958:62;1370:67832;18641:3;18604:13;;18434:106;1370:67832;;-1:-1:-1;;;;;;18494:46:73;;1370:67832;18494:46;18474:10;1370:67832;;18494:46;;;:::i;1370:67832::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28404:54;1370:67832;;;;;;:::i;:::-;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28404:54;:::i;:::-;1370:67832;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1303:62:17;;:::i;:::-;2758:6;1370:67832:73;;-1:-1:-1;;;;;;1370:67832:73;;;;;;;-1:-1:-1;;;;;1370:67832:73;2806:40:17;1370:67832:73;;2806:40:17;1370:67832:73;;;;;;;;-1:-1:-1;;1370:67832:73;;;;8218:2213;1370:67832;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;8218:2213;:::i;1370:67832::-;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;:::i;:::-;2471:103:25;;;:::i;:::-;1370:67832:73;-1:-1:-1;;;;;;;;;;;971:66:21;1370:67832:73;7028:54;;13034:9;;;;:::i;:::-;13081:16;1370:67832;;13081:16;:::i;:::-;13242:27;;;:::i;:::-;13306;;;:::i;:::-;13390:40;;;:::i;:::-;13440:22;-1:-1:-1;13478:13:73;13493:16;;;;;;1370:67832;14302:10;1370:67832;;;14302:10;:::i;:::-;-1:-1:-1;14344:16:73;;;;;;-1:-1:-1;1370:67832:73;;-1:-1:-1;;;;;1370:67832:73;15128:73;;;;1370:67832;;-1:-1:-1;;;15128:73:73;;1370:67832;-1:-1:-1;;1370:67832:73;;;;15128:73;;1370:67832;13629:10;15128:73;;;;:::i;:::-;;1370:67832;;;;-1:-1:-1;;;;;1370:67832:73;15128:73;;;;;;;;14324:710;15217:13;-1:-1:-1;15232:16:73;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;15217:13:73;15363:17;1370:67832;15363:17;1370:67832;15363:17;;;:::i;:::-;;:29;1370:67832;15359:438;;15217:13;15882:17;;;;:::i;:::-;;1370:67832;15953:24;1370:67832;15953:17;;;;:::i;:::-;;:24;2779:18;-1:-1:-1;;;;;1370:67832:73;;2779:18;15953:24;15995:12;1370:67832;15995:12;;;;;:::i;:::-;:21;1370:67832;15816:284;;1370:67832;16068:12;;;;;:::i;:::-;:18;1370:67832;;;13629:10;;;;1370:67832;;;;;;;;;;;;15816:284;;1370:67832;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15816:284;;;;1370:67832;15217:13;;15359:438;15735:29;1370:67832;15529:17;;;;:::i;:::-;;:29;1370:67832;;15580:17;;;;:::i;:::-;;:32;1370:67832;15634:24;1370:67832;15634:17;;;;:::i;:24::-;15680:33;:17;;;;:::i;:::-;;:33;;15735:17;1370:67832;15735:17;;;;:::i;:::-;;:29;;1370:67832;;;;;15735:29;:::i;:::-;15359:438;;15128:73;;;;;;:::i;:::-;;;;14329:13;14395:12;;1370:67832;14395:12;;;;:::i;:::-;1370:67832;14434:43;1370:67832;14434:34;1370:67832;;14434:34;:::i;:43::-;1370:67832;14430:269;;14329:13;14717:41;1370:67832;14717:32;1370:67832;;14717:32;:::i;:41::-;1370:67832;14713:251;;14329:13;1370:67832;;14329:13;;14713:251;14885:59;13629:10;14885:47;13629:10;1370:67832;14885:38;1370:67832;;14885:38;:::i;:59::-;:64;1370:67832;;14885:64;:::i;:::-;1787:1:25;;14713:251:73;;;14430:269;1370:67832;14663:12;;;;;:::i;:::-;:21;1370:67832;14598:86;:61;13629:10;14598:49;1370:67832;14598:40;1370:67832;;14598:40;:::i;:61::-;1370:67832;;;14598:86;:::i;:::-;1787:1:25;;14430:269:73;;13478:13;13562:92;13641:12;;;;;:::i;:::-;13629:10;1370:67832;;;;13562:92;:::i;:::-;13526:128;;;;:::i;:::-;;;;;;:::i;:::-;;1370:67832;13672:17;;;;;:::i;:::-;;:29;1370:67832;13668:313;;13478:13;14009:17;;;1370:67832;14009:17;;;:::i;:::-;;1370:67832;13995:39;;;;:::i;:::-;1370:67832;;14061:12;;;;;:::i;:::-;:21;1370:67832;14048:34;;;;:::i;:::-;1370:67832;;13478:13;;13668:313;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;13781:58;;-1:-1:-1;;;;;1370:67832:73;;;13781:58;13840:17;13781:89;13840:17;;;;;;:::i;:::-;;:29;1370:67832;;;;;;971:66:21;;;;;;;;;13781:89:73;;;;1370:67832;;;;;;;;13781:89;;;;;;;;;;1370:67832;13781:89;13888:78;13781:89;13902:64;13781:89;-1:-1:-1;13781:89:73;;;13668:313;13726:17;;;;;;:::i;:::-;;:32;1370:67832;13902:17;;;;:::i;:::-;;:29;1370:67832;13934:17;;;;;:::i;13888:78::-;13668:313;;;;13781:89;;;;;;;;;;;;;;:::i;:::-;;;;7028:54;1370:67832;;-1:-1:-1;;;7066:16:73;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;33978:29:73;;;:::i;:::-;34104:59;:83;;;;;;1370:67832;;-1:-1:-1;;;34104:83:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;34104:83;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;34104:83;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;34203:83:73;1370:67832;34104:83;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;29327:51;1370:67832;;;;;:::i;:::-;29327:51;:::i;1370:67832::-;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1370:67832:73;;;;39743:32;1370:67832;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;1370:67832:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;;;;;;39743:32;1370:67832;;;;;;;-1:-1:-1;;1370:67832:73;;;;1513:6:17;1370:67832:73;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;35217:14:73;;;:::i;:::-;35328:46;:57;;;;;;1370:67832;;-1:-1:-1;;;35328:57:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;35328:57;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;35328:57;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;35401:55:73;1370:67832;35328:57;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;-1:-1:-1;;;;;;;;;;;971:66:21;1370:67832:73;;;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;2471:103:25;;;;;;;;;;;:::i;:::-;1370:67832:73;-1:-1:-1;;;;;;;;;;;971:66:21;1370:67832:73;7028:54;;11332:47;11333:46;11368:10;11333:46;;:::i;11332:47::-;11328:131;;11619:9;;;;:::i;:::-;11666:16;;;:::i;:::-;11724:12;;;;;;:::i;:::-;-1:-1:-1;11768:20:73;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;11790:3:73;11827:12;;;;;;;;;;;;;;:::i;:::-;1370:67832;11902:7;;;;;:::i;:::-;12202:18;;:12;;;;;;:::i;:::-;:18;1370:67832;12238:22;;;:12;;;;;;:::i;:::-;:22;1370:67832;12278:21;;;:12;;;;;;:::i;:::-;:21;1370:67832;;;;:::i;:::-;11368:10;1370:67832;;11368:10;-1:-1:-1;;;;;1370:67832:73;;12085:292;;;1370:67832;12085:292;;;1370:67832;12085:292;;;1370:67832;12085:292;;;1370:67832;;;;;;:::i;:::-;12085:292;;;1370:67832;;;;;;;;:::i;:::-;12085:292;;;1370:67832;12019:54;;;:::i;:::-;1370:67832;;;;;;;;;;;;;:::i;:::-;12557:12;;;;;:::i;:::-;:18;1370:67832;12593:12;;;;;;;;:::i;:::-;:22;1370:67832;12633:12;;;;:::i;:::-;:21;1370:67832;;;11368:10;;;;1370:67832;;;;;;;;12397:335;;;;;:::i;:::-;;;;;11790:3;;;:::i;:::-;11753:13;;11328:131;1370:67832;;-1:-1:-1;;;;;;11402:46:73;;1370:67832;11402:46;11368:10;1370:67832;;11402:46;;;:::i;1370:67832::-;;;;;;;;;;;;;28888:56;1370:67832;;;;;:::i;:::-;-1:-1:-1;1370:67832:73;;;;;;:::i;:::-;;;;;;28888:56;:::i;:::-;1370:67832;;-1:-1:-1;1370:67832:73;;;;-1:-1:-1;1370:67832:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;17530:47:73;17531:46;17566:10;17531:46;;:::i;17530:47::-;17526:106;;17670:9;;;;:::i;:::-;17708:1;17711:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;17733:3:73;17770:12;;17733:3;17770:12;;;;:::i;:::-;1370:67832;17845:7;;;;:::i;:::-;18012:18;:12;;;;;;:::i;:::-;:18;1370:67832;17949:60;:51;;;;:::i;:60::-;1787:1:25;18094:12:73;;;;;:::i;:::-;1370:67832;;18094:18;;1370:67832;;;-1:-1:-1;;;;;1370:67832:73;;;18049:64;;1370:67832;;;;18049:64;1370:67832;17733:3;17696:13;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;3383:3;1370:67832;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;37738:21:73;;;:::i;:::-;37856:58;:81;;;;;;1370:67832;;-1:-1:-1;;;37856:81:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;37856:81;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;37856:81;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;37953:81:73;1370:67832;37856:81;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;38434:22:73;;;:::i;:::-;38553:59;:83;;;;;;1370:67832;;-1:-1:-1;;;38553:83:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;38553:83;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;38553:83;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;38652:83:73;1370:67832;38553:83;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;35837:29:73;;;:::i;:::-;35963:59;:83;;;;;;1370:67832;;-1:-1:-1;;;35963:83:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;35963:83;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;35963:83;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;36062:83:73;1370:67832;35963:83;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;36488:22:73;;;:::i;:::-;36607:53;:71;;;;;;1370:67832;;-1:-1:-1;;;36607:71:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;36607:71;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;36607:71;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;36694:70:73;1370:67832;36607:71;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;2402:22:17;1370:67832:73;;2496:8:17;;;:::i;1370:67832:73:-;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;;;;;;:::i;:::-;1370:67832:73;-1:-1:-1;;;;;;;;;;;971:66:21;1370:67832:73;7028:54;;19539:9;;;;:::i;:::-;19586:16;;;:::i;:::-;19644:12;;;;;;:::i;:::-;19692:16;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1370:67832:73;19883:88;;;;19920:50;;-1:-1:-1;;;;;1370:67832:73;;;19920:50;1370:67832;;971:66:21;;;;;;;19883:88:73;;19908:10;1370:67832;19883:88;;;:::i;:::-;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;19883:88;;;;;;;-1:-1:-1;19883:88:73;;;1370:67832;19882:89;;19878:179;;-1:-1:-1;20087:20:73;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;20109:3:73;20146:12;;;;;:::i;:::-;1370:67832;20196:12;;20307:27;:12;20196;1370:67832;20247:12;20196;;19883:88;20196:12;;;;;:::i;:::-;:18;1370:67832;20247:12;;:::i;:::-;:21;1370:67832;20307:12;;;:::i;:::-;:27;1370:67832;20353:10;;20349:46;;20413:13;;20409:48;;20475:19;;;:56;;;20109:3;20471:161;;1370:67832;;-1:-1:-1;;;20737:38:73;;19908:10;1370:67832;20737:38;;1370:67832;;;;;;;19883:88;1370:67832;;;-1:-1:-1;;;;;1370:67832:73;;20737:38;;;;;;;-1:-1:-1;20737:38:73;;;20109:3;20793:24;;;;20789:158;;1370:67832;21286:292;1370:67832;;;21286:292;1370:67832;;;;;;;;;;;20109:3;1370:67832;;;;21052:68;1370:67832;21123:143;1370:67832;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;;21123:143;19883:88;21123:143;;1370:67832;21123:143;1370:67832;21123:143;;1370:67832;21123:143;20307:27;21123:143;;1370:67832;;;;;;:::i;:::-;21123:143;;;1370:67832;;;;;;:::i;:::-;;21123:143;;1370:67832;21052:56;19908:10;21052:47;;;;:::i;:68::-;1370:67832;:::i;:::-;;;;;;;;;;;;19908:10;;21286:292;;;:::i;:::-;;;;20109:3;:::i;:::-;20072:13;;20789:158;1370:67832;;-1:-1:-1;;;20844:88:73;;1370:67832;;;20844:88;;1370:67832;;;19908:10;1370:67832;20844:88;;;:::i;20737:38::-;;;;19883:88;20737:38;19883:88;20737:38;;;;;;;:::i;:::-;;;;20471:161;1370:67832;;-1:-1:-1;;;20558:59:73;;1370:67832;20558:59;;1370:67832;;;;20601:15;1370:67832;;;;;;26939:86;20475:56;20516:15;;20498:33;;;20475:56;;20409:48;1370:67832;;-1:-1:-1;;;20435:22:73;;1370:67832;;20435:22;20349:46;1370:67832;;-1:-1:-1;;;20372:23:73;;1370:67832;;20372:23;19878:179;1370:67832;;-1:-1:-1;;;19994:52:73;;1370:67832;19994:52;1370:67832;19908:10;1370:67832;19994:52;;;:::i;19883:88::-;;;;;;;;;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;39104:23:73;;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;39230:92;1370:67832;39230:92;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;39338:85:73;1370:67832;1599:130:17;1513:6;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;929:10:34;1662:23:17;1370:67832:73;;1599:130:17:o;1370:67832:73:-;;;;3610:56:21;;;1370:67832:73;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;-1:-1:-1;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;:::o;2666:187:17:-;2758:6;1370:67832:73;;-1:-1:-1;;;;;1370:67832:73;;;-1:-1:-1;;;;;;1370:67832:73;;;;;;;;;;2806:40:17;-1:-1:-1;;2806:40:17;2666:187::o;1370:67832:73:-;;;;:::o;:::-;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;971:66:21;;;;;;;;;;;:::o;:::-;1370:67832:73;;971:66:21;;;;;;;;;;;:::o;:::-;1370:67832:73;;-1:-1:-1;;;971:66:21;;;;;;;;;;;1370:67832:73;971:66:21;1370:67832:73;;;971:66:21;-1:-1:-1;;;971:66:21;;;;;;;;;;;;;;;;;1370:67832:73;971:66:21;1370:67832:73;;;971:66:21;-1:-1:-1;;;971:66:21;;;;;;:::o;1699:281::-;1713:19:33;;:23;1370:67832:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;-1:-1:-1;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;1699:281:21:o;1370:67832:73:-;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;2372:276:21;;2171:17;;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;2204:27:21;-1:-1:-1;;2204:27:21;1370:67832:73;;2523:15:21;;;:28;;;2372:276;2519:123;;2372:276;;:::o;2519:123::-;7318:69:33;1370:67832:73;-1:-1:-1;1370:67832:73;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;7276:25:33;;;;;;;;;:::i;:::-;7318:69;;:::i;:::-;;2372:276:21:o;2523:28::-;;-1:-1:-1;2523:28:21;;2372:276;;2171:17;;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;2204:27:21;;;;1370:67832:73;;2523:15:21;;;:28;;;2519:123;;2372:276;;:::o;2523:28::-;;1370:67832:73;2523:28:21;;1842:226:24;-1:-1:-1;;;;;1898:6:24;1370:67832:73;;;;1873:80:24;1889:4;1881:23;;;1873:80;:::i;:::-;1963:87;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;1971:30:24;1963:87;:::i;:::-;1303:62:17;;:::i;:::-;971:66:21;;1370:67832:73;;971:66:21;;;3330:17;;;;;;:::i;3232:526::-;3383:63;;1370:67832:73;;;;;;971:66:21;;;;;;;3383:63;;1370:67832:73;;3383:63:21;;;;;;;3232:526;-1:-1:-1;3379:302:21;;1370:67832:73;;-1:-1:-1;;;3610:56:21;;1370:67832:73;3610:56:21;3383:63;3610:56;;;:::i;3379:302::-;3737:9;3496:28;3488:82;3496:28;;3488:82;:::i;:::-;3737:9;:::i;3383:63::-;;;;;;;;;;;;;;;:::i;:::-;;;;;1370:67832:73;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1370:67832:73;;;;:::o;:::-;;;:::o;7682:628:33:-;;;;7886:418;;;1370:67832:73;;;7917:22:33;7913:286;;8212:17;;:::o;7913:286::-;1713:19;:23;1370:67832:73;;8212:17:33;:::o;1370:67832:73:-;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;7886:418:33;1370:67832:73;;;;-1:-1:-1;8991:21:33;:17;;9163:142;;;;;;;8987:379;1370:67832:73;;-1:-1:-1;;;9335:20:33;;1370:67832:73;9335:20:33;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;3246:506:23;;;;;;;;;;;3302:13;1370:67832:73;;;;;;;3301:14:23;3347:34;;;;;;3246:506;3346:108;;;;3246:506;1370:67832:73;;;;3636:1:23;3536:16;;;1370:67832:73;;;3302:13:23;1370:67832:73;;;3302:13:23;1370:67832:73;;3536:16:23;3562:65;;3636:1;:::i;:::-;3647:99;;3246:506::o;3647:99::-;3681:21;1370:67832:73;;3302:13:23;1370:67832:73;;3302:13:23;1370:67832:73;;3681:21:23;1370:67832:73;;3551:1:23;1370:67832:73;;3721:14:23;;1370:67832:73;;3721:14:23;3246:506::o;3562:65::-;3596:20;1370:67832:73;;;3302:13:23;1370:67832:73;;;3302:13:23;1370:67832:73;;3596:20:23;3636:1;:::i;1370:67832:73:-;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;3346:108:23;3426:4;1713:19:33;:23;;-1:-1:-1;1713:23:33;3387:66:23;;3346:108;;;;;3387:66;3452:1;1370:67832:73;;;;3436:17:23;3387:66;;;3347:34;3380:1;1370:67832:73;;;3365:16:23;;-1:-1:-1;3347:34:23;;2779:18:73;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;-1:-1:-1;;;;;;1370:67832:73;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;2779:18;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;;;2779:18;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;;;2779:18;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;;;2779:18;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;;;2779:18;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;;;2779:18;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;;;2779:18;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;;;2779:18;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;2779:18;;;;;;;1370:67832;2779:18;1370:67832;;-1:-1:-1;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;8218:2213;;2779:18;8218:2213;;;;;;;;;8823:25;;;:::i;:::-;8910:26;;;:::i;:::-;9000:29;;;:::i;:::-;9085:20;;;:::i;:::-;9156:14;;;:::i;:::-;9234:29;;;:::i;:::-;9321:22;;;:::i;:::-;9401;;;:::i;:::-;9459:21;;;:::i;:::-;9516:22;;;:::i;:::-;9574:23;;;:::i;:::-;1370:67832;;-1:-1:-1;;;9780:366:73;;-1:-1:-1;;;;;1370:67832:73;;;9780:366;;;1370:67832;;;;2779:18;;;1370:67832;;;;2779:18;;;1370:67832;;;;2779:18;;;1370:67832;;;;2779:18;;;1370:67832;;;;2779:18;;;1370:67832;;;;2779:18;;;1370:67832;;;;2779:18;;;1370:67832;;;;2779:18;;;1370:67832;;;2779:18;;;1370:67832;;;;;2779:18;9780:366;:14;;2779:18;9780:14;;:366;;;;;;10156:75;9780:366;2779:18;9780:366;-1:-1:-1;9780:366:73;;;8218:2213;2779:18;;;:::i;:::-;1370:67832;10156:75;:::i;:::-;1003:95:17;;:::i;:::-;1868:111:25;;:::i;:::-;1042:67:24;;:::i;9780:366:73:-;;;;;;-1:-1:-1;9780:366:73;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1370:67832;;;;:::o;:::-;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;5328:125:23;5366:69;1370:67832:73;5374:13:23;1370:67832:73;;;;5366:69:23;;;:::i;:::-;;:::i;:::-;1195:12:17;929:10:34;1195:12:17;:::i;5328:125:23:-;5366:69;1370:67832:73;5374:13:23;1370:67832:73;;;;5366:69:23;:::i;5328:125::-;5366:69;1370:67832:73;5374:13:23;1370:67832:73;;;;5366:69:23;;;:::i;:::-;1787:1:25;2065:22;1787:1;5328:125:23:o;1370:67832:73:-;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;25176:12;1370:67832;;;;;;:::o;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;29862:39;1370:67832;;;;;;:::o;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;16929:38;1370:67832;;;;;;:::o;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;30306:31;1370:67832;;;;;;:::o;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;30863:37;1370:67832;;;;;;:::o;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;28404:36;1370:67832;;;;;;:::o;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;14434:16;1370:67832;;;;;;:::o;:::-;;;;;;;;;23543:1;1370:67832;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;;;;;;:::i;:::-;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1370:67832:73;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2779:18;;1370:67832;;-1:-1:-1;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;2779:18;1370:67832;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;-1:-1:-1;;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;1787:1:25;1370:67832:73;;;;;;;1787:1:25;1370:67832:73;;;;;;;1787:1:25;1370:67832:73;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2580:287:25;1830:1;2712:7;1370:67832:73;2712:19:25;1830:1;;;2712:7;1787:1;2580:287::o;1830:1::-;1370:67832:73;;-1:-1:-1;;;1830:1:25;;;;;;;;;;;1370:67832:73;1830:1:25;1370:67832:73;;;1830:1:25;;;;1370:67832:73;;;;;;;:::i;:::-;42089:1;1370:67832;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;46412:1;1370:67832;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;;;-1:-1:-1;1370:67832:73;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1370:67832:73;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;46503:1;1370:67832;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;24342:34;1370:67832;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;2779:18;;1370:67832;;-1:-1:-1;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;1787:1:25;1370:67832:73;;;;;;;1787:1:25;1370:67832:73;;;;;;;1787:1:25;1370:67832:73;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1370:67832:73;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;:::i;40410:2256::-;;;;;;;;41065:7;40850:33;;41065:7;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1370:67832:73;41220:60;;-1:-1:-1;;;;;1370:67832:73;;;41220:60;1370:67832;;-1:-1:-1;;;41220:69:73;;-1:-1:-1;;;;;1370:67832:73;;41220:69;;;1370:67832;41220:69;;;1370:67832;;;41220:69;;;;;;;;:14;:69;;;40410:2256;-1:-1:-1;41220:14:73;;:260;;;-1:-1:-1;;1370:67832:73;;-1:-1:-1;;;41304:67:73;;-1:-1:-1;;;;;1370:67832:73;;;;41220:69;41304:67;;1370:67832;;;;;;;;;;;;41304:67;;;;;;;1370:67832;41304:67;41220:14;41304:67;;;41220:260;;;;1370:67832;41494:24;41515:3;41494:24;;41490:113;;41712:36;41713:28;42646:12;41713:28;;;;:::i;:::-;41515:3;1370:67832;;;;41712:36;41762:15;;41758:720;;41220:260;42646:12;;;:::i;41758:720::-;41888:30;42451:15;41888:30;;;;;;:::i;:::-;42067:24;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1370:67832:73;42105:66;;42129:42;;-1:-1:-1;;;;;1370:67832:73;;;42129:42;42105:66;;;:::i;:::-;42220:16;;:::i;:::-;42250:32;;;;;:::i;:::-;1370:67832;42451:15;;:::i;:::-;41758:720;;;;41490:113;1370:67832;;-1:-1:-1;;;41541:51:73;;41220:69;41541:51;;1370:67832;;;41515:3;1370:67832;;;;;;26939:86;41304:67;;;;;;-1:-1:-1;41304:67:73;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;41220:260;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;-1:-1:-1;41386:94:73;;-1:-1:-1;1370:67832:73;;41386:76;;-1:-1:-1;;;;;1370:67832:73;;;41386:76;1370:67832;;-1:-1:-1;;;41386:94:73;;-1:-1:-1;;;;;1370:67832:73;;;41220:69;41386:94;;1370:67832;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;41386:94;;;;;;;;;;1370:67832;41386:94;;;;41220:260;;;;;41386:94;;;;;;-1:-1:-1;41386:94:73;;;;;;:::i;:::-;;;;;41220:69;;;;;;;;;;;;;;;:::i;:::-;;;;;1370:67832;;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;43342:1845;;;;;;;;43951:7;43342:1845;;43736:33;43951:7;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1370:67832:73;44132:56;;-1:-1:-1;;;;;1370:67832:73;;;44132:56;1370:67832;;-1:-1:-1;;;44132:93:73;;-1:-1:-1;;;;;1370:67832:73;;;;44132:93;;;1370:67832;;;;;;;;;;;;;;;-1:-1:-1;;;;1370:67832:73;;;;;;-1:-1:-1;;44132:93:73;;;;;;;;:31;;:93;;;43342:1845;44315:26;;44393:3;1370:67832;;44371:20;;;;;44412:30;44393:3;44430:12;;;;;:::i;44412:30::-;44393:3;;:::i;:::-;44356:13;;;44371:20;;;;;;;;;;;44546:32;;;44542:103;;45167:12;44660:18;;;44656:343;;44351:102;45167:12;;;;;:::i;44656:343::-;44791:33;44978:9;44791:33;;;;;;:::i;:::-;44978:9;;;:::i;:::-;44656:343;;;;;;44542:103;1370:67832;;-1:-1:-1;;;44587:58:73;;44132:93;44587:58;;1370:67832;;;;;;;;;;;26939:86;44132:93;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;1370:67832;;;;;;;;;2779:18;;;;:::i;45622:1484::-;-1:-1:-1;;;;;;;;;;;1370:67832:73;45961:59;;45622:1484;;;;45961:50;;-1:-1:-1;;;;;1370:67832:73;;;45961:50;1370:67832;;;971:66:21;;;;;45961:59:73;;;;;;;;;;;1370:67832;;;;;;;;45961:59;;;;;;;;;;:14;:59;;;45622:1484;46034:28;;;;46030:126;;46170:20;;46166:57;;46390:24;;:::i;:::-;1370:67832;46516:74;1370:67832;46440:42;1370:67832;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;46440:42;46424:58;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1370:67832:73;46516:65;;-1:-1:-1;;;;;1370:67832:73;;;46516:65;1370:67832;;-1:-1:-1;;;46516:74:73;;-1:-1:-1;;;;;1370:67832:73;;;45961:59;46516:74;;1370:67832;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;46516:74;;;;;;;;;;47091:7;46516:74;45961:14;46516:74;;;45622:1484;-1:-1:-1;;;;;;1370:67832:73;46492:99;;-1:-1:-1;1370:67832:73;;46492:99;;;:::i;:::-;46617:13;;;;:::i;:::-;2779:18;-1:-1:-1;;;;;1370:67832:73;;2779:18;46617:13;1370:67832;46617:88;;46601:104;46617:88;;46601:104;;;:::i;:::-;46850:16;;:::i;:::-;46889:28;;;;;:::i;:::-;46876:41;;;:::i;:::-;1370:67832;46927:23;;;:::i;:::-;1370:67832;47091:7;:::i;46617:88::-;46692:13;46601:104;46692:13;;;;:::i;:::-;46617:88;;46516:74;;;;;;-1:-1:-1;46516:74:73;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;46030:126;1370:67832;;-1:-1:-1;;;46085:60:73;;45961:59;46085:60;;1370:67832;;;;;;;;;;;26939:86;45961:59;;;;;;;;;;;;;;;:::i;:::-;;;;;47265:412;-1:-1:-1;;;;;1370:67832:73;;47453:30;;;:138;;47265:412;47436:235;;47265:412;:::o;47436:235::-;1370:67832;;-1:-1:-1;;;47623:37:73;;-1:-1:-1;;;;;1370:67832:73;;;;47623:37;;;1370:67832;;;26939:86;47453:138;-1:-1:-1;;;;;;;;;;;;1370:67832:73;47504:69;;-1:-1:-1;;;;;1370:67832:73;;;47504:69;1370:67832;;-1:-1:-1;;;47504:87:73;;-1:-1:-1;;;;;1370:67832:73;;47504:87;;;1370:67832;;47504:87;;1370:67832;;;;;;47504:87;;;;;;;47481:1;47504:87;;;47453:138;47503:88;;47453:138;;47504:87;;;;;;;;;;;;;;:::i;:::-;;;;47829:321;47930:28;;:33;:131;;;;47829:321;47913:231;;47829:321;:::o;47913:231::-;1370:67832;;-1:-1:-1;;;48093:40:73;;-1:-1:-1;;;;;1370:67832:73;;;48093:40;;;1370:67832;;;48093:40;47930:131;1370:67832;4592:71:65;-1:-1:-1;1370:67832:73;;4592:71:65;;;1017:25;;;;4592:71;;;;;;1370:67832:73;4592:71:65;;;;;;:::i;:::-;4784:212;;;;;-1:-1:-1;4784:212:65;;5013:29;;;47930:131:73;5013:48:65;;;;47930:131:73;975:149:65;;;;47930:131:73;1543:81:65;;;47930:131:73;47983:78;47930:131;;1543:81:65;1570:54;;;;:::i;:::-;1543:81;;975:149;1060:64;;;;:::i;:::-;1059:65;975:149;;5013:48;5046:15;;;;5013:48;;;:29;4592:71;-1:-1:-1;5024:18:65;;-1:-1:-1;5013:29:65;;;4421:647;-1:-1:-1;4592:71:65;4421:647;1370:67832:73;;4592:71:65;;;1017:25;;;;4592:71;;1370:67832:73;;;4592:71:65;;;1370:67832:73;4592:71:65;;;;;;:::i;:::-;4784:212;;;;-1:-1:-1;4784:212:65;;5013:29;;;4421:647;5013:48;;;;5006:55;4421:647;:::o;5013:48::-;5046:15;;;;4421:647;:::o;5013:29::-;4592:71;-1:-1:-1;5024:18:65;;-1:-1:-1;5013:29:65;;;4421:647;-1:-1:-1;4592:71:65;4421:647;1370:67832:73;;4592:71:65;;;1017:25;;;;4592:71;;48034:26:73;;;4592:71:65;;;1370:67832:73;4592:71:65;;;;;;:::i;48342:351:73:-;1370:67832;;-1:-1:-1;;;;;;48549:58:73;;;;;1370:67832;;;48549:58;1370:67832;;;-1:-1:-1;;;;;1370:67832:73;;48549:58;;;;;;;-1:-1:-1;48549:58:73;;;48342:351;48549:63;;48545:142;;48342:351;;:::o;48545:142::-;1370:67832;;-1:-1:-1;;;48635:41:73;;-1:-1:-1;;;;;1370:67832:73;;;;48549:58;48635:41;;1370:67832;;;;;;;;;;26939:86;48549:58;;;;;;;;;;;;;;:::i;:::-;;;;1370:67832;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;:::o;49082:2891::-;;1370:67832;;:::i;:::-;;;;49475:17;;;;;;1370:67832;49566:37;1370:67832;49566:46;:37;;;;:::i;:46::-;1370:67832;:::i;:::-;2779:18;;;;-1:-1:-1;;;;;1370:67832:73;;;;;49747:37;49743:100;;2779:18;;49857:60;;49858:59;;-1:-1:-1;;;;;1370:67832:73;49858:59;;:::i;49857:60::-;49853:157;;50077:14;;;;;;;:::i;:::-;;;;;;:::i;:::-;50106:13;;50102:48;;50288:43;:34;;;;:::i;:43::-;1370:67832;50364:57;:40;:49;:40;;;;:::i;:57::-;1370:67832;50435:14;;;:53;;;49082:2891;50431:178;;50748:32;;:41;:32;;;;:::i;:41::-;1370:67832;50820:38;:55;:38;:47;:38;;;;:::i;:55::-;1370:67832;50889:12;;;;:40;;;49082:2891;50885:158;;51162:25;;;;;;;1370:67832;51162:30;;;:70;;;49082:2891;51158:160;;51331:26;50077:14;51331:26;;1370:67832;51360:15;51331:44;;51327:99;;51440:14;;;1370:67832;51458:22;;;;1370:67832;51440:40;;;51436:106;;-1:-1:-1;51440:14:73;51556:32;;2779:18;-1:-1:-1;;;;;1370:67832:73;;;;;;;;51556:52;51552:158;;51791:25;;51736:230;51791:25;;;;:::i;:::-;2779:18;;;;;-1:-1:-1;;;;;;;1370:67832:73;51882:32;51928:28;1370:67832;51882:32;;;51928:28;;;1370:67832;;;:::i;:::-;;;;51440:14;51736:230;;1370:67832;51736:230;;1370:67832;-1:-1:-1;;;;;1370:67832:73;50077:14;51736:230;;1370:67832;;51736:230;51162:25;51736:230;;1370:67832;;51736:230;;1370:67832;49082:2891;:::o;51552:158::-;51631:68;1370:67832;;51631:68;;;;;;;;;;;;:::i;51436:106::-;1370:67832;;-1:-1:-1;;;51489:53:73;;;;;1370:67832;;;;;;;;;;;;26939:86;51327:99;1370:67832;;-1:-1:-1;;;51384:42:73;;;;;1370:67832;;;;;;26939:86;51158:160;1370:67832;;-1:-1:-1;;;51255:52:73;;;;;1370:67832;;;;;;;;;;;;26939:86;51162:70;51196:36;;;;51162:70;;50885:158;1370:67832;;-1:-1:-1;;;50952:80:73;;-1:-1:-1;;;;;1370:67832:73;;;50952:80;;;1370:67832;;;;;;;;;;;;;;;;;;;;;;;26939:86;50889:40;50905:14;;;;;:::i;:::-;:24;50889:40;;50431:178;1370:67832;;-1:-1:-1;;;50511:87:73;;-1:-1:-1;;;;;1370:67832:73;;;50511:87;;;1370:67832;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26939:86:73;50435:53;50453:23;;;;;;:::i;:::-;:35;50435:53;;50102:48;1370:67832;;-1:-1:-1;;;50128:22:73;;;;;49853:157;2779:18;;1370:67832;;-1:-1:-1;;;;;;49940:59:73;;1370:67832;;;49940:59;;-1:-1:-1;;;;;1370:67832:73;2779:18;49940:59;;;;:::i;49743:100::-;1370:67832;;-1:-1:-1;;;49793:50:73;;-1:-1:-1;;;;;1370:67832:73;;49793:50;;;1370:67832;;;;;;;;;26939:86;52389:1573;;;1370:67832;;:::i;:::-;;;;52726:17;;;;;;1370:67832;52757:13;;;52753:48;;52971:65;:47;:56;:47;;;;:::i;:65::-;53136:18;;;;1370:67832;53136:23;;;53132:93;;53239:24;;;1370:67832;53239:29;;;;:76;;;52389:1573;53235:192;;-1:-1:-1;;1370:67832:73;;-1:-1:-1;;;;;1370:67832:73;;;;;-1:-1:-1;1370:67832:73;;53440:45;;53436:144;;53593:15;;53612:14;1370:67832;53593:15;;1370:67832;53612:14;;1370:67832;53593:33;;;;53589:92;;53695:29;;;;53691:104;;53867:25;53924:21;53867:25;;1370:67832;53867:25;;52681:16;53867:25;;:::i;:::-;1370:67832;;:::i;:::-;;;;53612:14;53822:133;;1370:67832;53822:133;;1370:67832;;53897:25;;;1370:67832;:::i;:::-;53822:133;;;1370:67832;53924:21;1370:67832;:::i;:::-;53822:133;;;1370:67832;52389:1573;:::o;53691:104::-;1370:67832;;-1:-1:-1;;;53733:62:73;;;;;1370:67832;;;;;;;;;;26939:86;53589:92;1370:67832;;-1:-1:-1;;;53635:46:73;;;;;1370:67832;;;;;;;;;;;;26939:86;53235:192;1370:67832;;-1:-1:-1;;;53338:78:73;;-1:-1:-1;;;;;1370:67832:73;;;53338:78;;;1370:67832;;;;;;;;;;;;;;;;;;;26939:86;53239:76;53300:15;;53272:43;;;53239:76;;53132:93;1370:67832;;-1:-1:-1;;;53168:57:73;;-1:-1:-1;;;;;1370:67832:73;;;53168:57;;;1370:67832;;;;;;;;;;;;;;;26939:86;52753:48;1370:67832;;-1:-1:-1;;;52779:22:73;;;;;54583:418;;54724:16;;;:::i;:::-;54768:1;54771:20;;;;;;54583:418;;;:::o;54793:3::-;54816:12;;;;;:::i;:::-;-1:-1:-1;;1370:67832:73;;;;;;;;;54840:16;;;;;:::i;:::-;1370:67832;-1:-1:-1;54816:48:73;54812:173;;54793:3;;;;:::i;:::-;54756:13;;54812:173;54923:16;;;54949:12;54923:16;54891:79;54923:16;;;;:::i;:::-;1370:67832;54949:12;;:::i;:::-;1370:67832;;;54345:63;;;;;;54891:79;;;;;1370:67832;;;;;;;;;;;;;;;;;;55138:406;;55267:16;;;:::i;:::-;55311:1;55314:20;;;;;;55138:406;;;:::o;55336:3::-;55359:12;;;;;:::i;:::-;-1:-1:-1;;1370:67832:73;;;;;;;;;55383:16;;;;;:::i;:::-;1370:67832;-1:-1:-1;55359:48:73;55355:173;;55336:3;;;;:::i;:::-;55299:13;;55355:173;55466:16;;;55492:12;55466:16;55434:79;55466:16;;;;:::i;:::-;1370:67832;55492:12;;:::i;55685:448::-;;55856:16;;;:::i;:::-;55900:1;55903:20;;;;;;55685:448;;;:::o;55925:3::-;55948:12;;;;;:::i;:::-;-1:-1:-1;;1370:67832:73;;;;;;;;;55972:16;;;;;:::i;:::-;1370:67832;-1:-1:-1;55948:48:73;55944:173;;55925:3;;;;:::i;:::-;55888:13;;55944:173;56055:16;;;56081:12;56055:16;56023:79;56055:16;;;;:::i;:::-;1370:67832;56081:12;;:::i;56269:418::-;;56410:16;;;:::i;:::-;56454:1;56457:20;;;;;;56269:418;;;:::o;56479:3::-;56502:12;;;;;:::i;:::-;-1:-1:-1;;1370:67832:73;;;;;;;;;56526:16;;;;;:::i;:::-;1370:67832;-1:-1:-1;56502:48:73;56498:173;;56479:3;;;;:::i;:::-;56442:13;;56498:173;56609:16;;;56635:12;56609:16;56577:79;56609:16;;;;:::i;:::-;1370:67832;56635:12;;:::i;57919:202::-;57992:12;;57988:37;;3383:3;58039:24;;58035:79;;57919:202;:::o;58035:79::-;1370:67832;;;;58072:42;;;;;;;;;1370:67832;3383:3;1370:67832;;;;58072:42;57988:37;1370:67832;;-1:-1:-1;;;58013:12:73;;;;;58385:365;;58479:12;;58475:208;;58735:7;;;:::i;58475:208::-;58609:9;;;58605:47;;58666:7::o;58605:47::-;1370:67832;;-1:-1:-1;;;58632:20:73;;;;;59131:1253;-1:-1:-1;;;;;1370:67832:73;;59230:30;;59226:246;;59555:9;59551:56;;1370:67832;;-1:-1:-1;;;59790:30:73;;;59814:4;59790:30;;;1370:67832;59790:30;;;;1370:67832;;;59790:30;;;;;;;;59258:1;59790:30;;;59131:1253;-1:-1:-1;;;;;;;;;;;;1370:67832:73;59932:78;;-1:-1:-1;;;;;1370:67832:73;;;59932:78;:132;;;;;;1370:67832;;-1:-1:-1;;;59932:132:73;;-1:-1:-1;;;;;1370:67832:73;;59790:30;59932:132;;1370:67832;60029:10;1370:67832;;;;59814:4;1370:67832;;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;-1:-1:-1;;59932:132:73;;;;;;;;;;;59131:1253;-1:-1:-1;1370:67832:73;;60187:30;;;59814:4;59790:30;60187;;1370:67832;;;;;;;;60187:30;;;;;;;:46;:30;59258:1;60187:30;;;59131:1253;60187:46;;;:::i;:::-;60247:25;;;60243:135;;59131:1253;;;:::o;60243:135::-;1370:67832;;-1:-1:-1;;;60295:72:73;;-1:-1:-1;;;;;1370:67832:73;;;;59790:30;60295:72;;1370:67832;;;;;;;;;;;;;;;;;26939:86;60187:30;;;;;;-1:-1:-1;60187:30:73;;;;;;:::i;:::-;;;;;59932:132;;;;;;:::i;:::-;;;;59790:30;;;;;;;;;;;;;;;:::i;:::-;;;;;59551:56;1370:67832;;-1:-1:-1;;;59578:29:73;;;;;59226:246;59374:9;;;;:20;59370:71;;59455:7;:::o;59370:71::-;1370:67832;;-1:-1:-1;;;59403:38:73;;;;;1370:67832;;;;59374:9;1370:67832;;;;;;26939:86;1370:67832;;;;;:::i;:::-;;;;;:::i;60601:1000::-;;;;;60816:28;;60812:66;;60918:1;60892:27;;60888:94;;60996:46;;;60992:149;;61223:22;;;60843:1;61260:13;;61255:265;61275:23;;;;;;61534:17;;;;;61548:3;61534:17;;61530:64;;60601:1000;:::o;61530:64::-;1370:67832;;-1:-1:-1;;;61560:34:73;;;;;1370:67832;;;;41515:3;1370:67832;;;;;;26939:86;61300:3;61323:19;;;;;:33;:19;;;;;;:::i;:::-;;:::i;:33::-;;61319:75;;61412:20;:15;;;;;;:::i;:::-;;:::i;:::-;1370:67832;;;;61412:20;;61408:58;;61480:29;61300:3;61494:15;61480:29;61494:15;;;;;;:::i;61480:29::-;61300:3;;:::i;:::-;61260:13;;;;;;61408:58;1370:67832;;-1:-1:-1;;;61441:25:73;;;;;1370:67832;;;;;26939:86;61319:75;1370:67832;;-1:-1:-1;;;61365:29:73;;;;;1370:67832;;;;;26939:86;60992:149;-1:-1:-1;1370:67832:73;;-1:-1:-1;;;61065:65:73;;;;;1370:67832;;;;;;;;;;;;26939:86;60888:94;1370:67832;;-1:-1:-1;;;60928:54:73;;;;;1370:67832;;;60918:1;1370:67832;;;;;;26939:86;60812:66;1370:67832;;-1:-1:-1;;;60853:25:73;;;;;61957:1293;;;;;1370:67832;;;;62221:46;;;;62217:149;;1370:67832;;62484:38;1370:67832;;62484:38;:::i;:::-;62532:33;;62581:13;-1:-1:-1;62625:3:73;1370:67832;;62596:27;;;;;;62653;;;;:::i;:::-;62648:32;;1370:67832;;62813:28;;;;62625:3;62813:28;;;:::i;:::-;1370:67832;62625:3;:::i;:::-;62581:13;;62644:439;62999:15;;62988:33;62989:25;;62999:15;;62625:3;62999:15;63039:29;62999:15;;:::i;:::-;1370:67832;;;;;62989:25;;;:::i;62988:33::-;62975:46;;;;:::i;:::-;1370:67832;63058:10;;;;:::i;63039:29::-;62644:439;62625:3;:::i;62596:27::-;;;;;63235:7;62596:27;;;63235:7;:::i;62217:149::-;1370:67832;;-1:-1:-1;;;62290:65:73;;;;;1370:67832;;;;;;;;;;;;;26939:86;1370:67832;;;;;;;;;;;:::i;63666:1631::-;;;;;1370:67832;;;;63957:37;;;;63953:132;;64189:23;;-1:-1:-1;64227:13:73;;64263:3;1370:67832;;64242:19;;;;;64282:26;64263:3;64297:11;;;;;:::i;64263:3::-;64227:13;;;64242:19;;;;;;;64332:22;;;64328:76;;-1:-1:-1;;;;;;1370:67832:73;;;;64419:30;;64415:611;;65090:13;-1:-1:-1;65129:3:73;1370:67832;;65105:22;;;;;65252:14;65233:47;65252:14;;65129:3;65252:14;;;:::i;:::-;65268:11;;;;;:::i;:::-;1370:67832;;;65233:47;;:::i;:::-;65129:3;:::i;:::-;65090:13;;65105:22;;;;;;;63666:1631::o;64415:611::-;-1:-1:-1;1370:67832:73;;;;;;;64748:84;;64679:30;1370:67832;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;64679:30;1370:67832;;;64748:84;;;;;;971:66:21;;;;64748:84:73;;;;;;:::i;:::-;;1370:67832;;64748:84;;;;;;:::i;:::-;64679:167;;;;;;:::i;:::-;64960:8;;64956:39;;65009:7;:::o;64956:39::-;1370:67832;;-1:-1:-1;;;64977:18:73;;1370:67832;;;64977:18;;64687:21;64977:18;;;:::i;64328:76::-;1370:67832;;-1:-1:-1;;;64363:41:73;;;;;1370:67832;;;;;;;;;;;;26939:86;63953:132;1370:67832;;-1:-1:-1;;;64017:57:73;;;;;1370:67832;;;;;;;;;;;;;26939:86;941:175:57;1370:67832:73;;-1:-1:-1;;;1050:58:57;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;1050:58:57;;;1370:67832:73;;;;;;;;;1050:58:57;;;;;5535:69:59;;1370:67832:73;-1:-1:-1;;;;1050:58:57;1370:67832:73;;1050:58:57;:::i;:::-;1370:67832:73;;;;;;;;;;;;;:::i;:::-;;;;;;;;;5487:31:59;;;;;;;;:::i;5535:69::-;1370:67832:73;;5705:22:57;;;;:56;;;;;941:175;1370:67832:73;;;;;;941:175:57;:::o;1370:67832:73:-;;;;;3610:56:21;;;;1370:67832:73;;;;;;;1050:58:57;1370:67832:73;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;5705:56:57;5731:30;;-1:-1:-1;5731:30:57;;;;;;;:::i;:::-;5705:56;;;;;65478:281:73;-1:-1:-1;;;;;1370:67832:73;65682:22;65678:74;;65478:281::o;65678:74::-;1370:67832;;-1:-1:-1;;;65713:39:73;;-1:-1:-1;;;65713:39:73;;;1370:67832;;;65713:39;65478:281;-1:-1:-1;;;;;1370:67832:73;65682:22;65678:74;;65478:281::o;65678:74::-;1370:67832;;-1:-1:-1;;;65713:39:73;;-1:-1:-1;;;65713:39:73;;;1370:67832;;;65713:39;65478:281;-1:-1:-1;;;;;1370:67832:73;65682:22;65678:74;;65478:281::o;65678:74::-;1370:67832;;-1:-1:-1;;;65713:39:73;;-1:-1:-1;;;65713:39:73;;;1370:67832;;;65713:39;65478:281;-1:-1:-1;;;;;1370:67832:73;65682:22;65678:74;;65478:281::o;65678:74::-;1370:67832;;-1:-1:-1;;;65713:39:73;;-1:-1:-1;;;65713:39:73;;;1370:67832;;;65713:39;65478:281;-1:-1:-1;;;;;1370:67832:73;65682:22;65678:74;;65478:281::o;65678:74::-;1370:67832;;-1:-1:-1;;;65713:39:73;;-1:-1:-1;;;65713:39:73;;;1370:67832;;;65713:39;65478:281;-1:-1:-1;;;;;1370:67832:73;65682:22;65678:74;;65478:281::o;65678:74::-;1370:67832;;-1:-1:-1;;;65713:39:73;;-1:-1:-1;;;65713:39:73;;;1370:67832;;;65713:39;65478:281;-1:-1:-1;;;;;1370:67832:73;65682:22;65678:74;;65478:281::o;65678:74::-;1370:67832;;-1:-1:-1;;;65713:39:73;;-1:-1:-1;;;65713:39:73;;;1370:67832;;;65713:39;65478:281;-1:-1:-1;;;;;1370:67832:73;65682:22;65678:74;;65478:281::o;65678:74::-;1370:67832;;-1:-1:-1;;;65713:39:73;;-1:-1:-1;;;65713:39:73;;;1370:67832;;;65713:39;65890:270;-1:-1:-1;;;;;1370:67832:73;66085:30;66081:72;;65890:270::o;66081:72::-;1370:67832;;-1:-1:-1;;;66124:29:73;;;;;66452:791;66774:56;66452:791;;;;66774:56;:::i;:::-;1370:67832;-1:-1:-1;1370:67832:73;;;;-1:-1:-1;1370:67832:73;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;66855:34;:85;;;;;66452:791;66851:122;;;67090:82;1370:67832;67091:81;1370:67832;;;;67114:26;;;;;;;;1370:67832;;;;;;;;;;;;;67114:26;1370:67832;67104:37;;1370:67832;;67091:81;;:::i;67090:82::-;67086:151;;66452:791;:::o;67086:151::-;1370:67832;;-1:-1:-1;;;67195:31:73;;-1:-1:-1;;;;;1370:67832:73;;;;67195:31;;;1370:67832;;;26939:86;66851:122;66956:7;;;;:::o;66855:85::-;66893:15;;;:47;;66855:85;;;67489:499;;;;67730:13;67742:1;67730:13;67725:219;67745:17;;;;;;67961:20;;;;;67489:499;:::o;67764:3::-;67923:9;;;;67764:3;67923:9;;;;;;:::i;:::-;1370:67832;68261:6;;;;;1370:67832;;;68280:22;;;1370:67832;;;;;;;;;;68280:22;1370:67832;;;;68280:22;1370:67832;68280:22;1370:67832;68270:33;;67764:3;;:::i;:::-;67730:13;;;;;68261:78;1370:67832;;;68316:22;;;1370:67832;;;;;;;;;;68316:22;;1370:67832;;;;68316:22;1370:67832;68316:22;1370:67832;68306:33;;68261:78;;68651:549;68933:34;1370:67832;;;68933:34;;;;;;;;;;;;;;;:::i;:::-;68905:63;;;;;;;;:::i;:::-;69064:8;;1370:67832;;69064:28;;68651:549;69060:77;;1370:67832;;68933:34;1370:67832;69154:27;1370:67832;;69154:27;;;;;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;69154:39;;68651:549::o;69060:77::-;1370:67832;;-1:-1:-1;;;69101:36:73;;-1:-1:-1;;;;;1370:67832:73;;;68933:34;69101:36;;1370:67832;68933:34;;69101:36;69064:28;1370:67832;68933:34;1370:67832;;69076:16;69064:28;","linkReferences":{"src/v2/utils/MarketConfigV2.sol":{"MarketConfigV2":[{"start":2991,"length":20},{"start":3206,"length":20},{"start":3532,"length":20},{"start":4181,"length":20},{"start":8910,"length":20},{"start":9327,"length":20},{"start":10597,"length":20},{"start":10814,"length":20},{"start":11032,"length":20},{"start":11250,"length":20},{"start":15100,"length":20}]}},"immutableReferences":{"30045":[{"start":4386,"length":32},{"start":5929,"length":32},{"start":13458,"length":32}]}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","cancelSalePrices(address,uint256[])":"2f79f335","getDirectSaleConfig(address,uint256)":"6e2f4d8b","getERC1155ApprovalManager()":"c7c83d17","getMarketConfig()":"614bd944","getSalePrice(address,uint256,address)":"369679a4","getTokenAllowListConfig(address,uint256)":"bf3d90f8","getTokenMintLimit(address,uint256)":"8760251a","getTokenMintsPerAddress(address,uint256,address)":"28fbba03","getTokenTxLimit(address,uint256)":"552f791d","getTokenTxsPerAddress(address,uint256,address)":"5a501f8f","initialize(address,address,address,address,address,address,address,address,address,address,address)":"76902b83","isPaused()":"b187bd26","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7","owner()":"8da5cb5b","prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"be542141","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","setApprovedTokenRegistry(address)":"e4e87e3b","setContractPaused(bool)":"882796f1","setERC1155ApprovalManager(address)":"ff5c83a4","setERC20ApprovalManager(address)":"d7a9fb7c","setERC721ApprovalManager(address)":"d80b23e3","setMarketplaceSettings(address)":"176ab440","setNetworkBeneficiary(address)":"3492e5a8","setPayments(address)":"af231a58","setRoyaltyEngine(address)":"21ede032","setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"ff3a52d4","setSpaceOperatorRegistry(address)":"7f358230","setStakingRegistry(address)":"2c740844","setStakingSettings(address)":"f1035744","setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":"373a9412","setTokenMintLimits(address,(uint256,uint256)[])":"c7ec1b98","setTokenTxLimits(address,(uint256,uint256)[])":"6442950e","transferOwnership(address)":"f2fde38b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"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\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"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\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"cancelSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDirectSaleConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155Listings.DirectSaleConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC1155ApprovalManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"contract IPayments\",\"name\":\"payments\",\"type\":\"address\"},{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IStakingSettings\",\"name\":\"stakingSettings\",\"type\":\"address\"},{\"internalType\":\"contract IRareStakingRegistry\",\"name\":\"stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IERC20ApprovalManager\",\"name\":\"erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC721ApprovalManager\",\"name\":\"erc721ApprovalManager\",\"type\":\"address\"}],\"internalType\":\"struct MarketConfigV2.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"getSalePrice\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155Listings.SalePrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenAllowListConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.AllowListConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenMintLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getTokenMintsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenTxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getTokenTxsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155Listings.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.DirectSaleRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"prepareMintDirectSales\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"}],\"name\":\"setApprovedTokenRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isPaused\",\"type\":\"bool\"}],\"name\":\"setContractPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC1155ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC20ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC721ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"}],\"name\":\"setMarketplaceSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"}],\"name\":\"setNetworkBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"}],\"name\":\"setPayments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"}],\"name\":\"setRoyaltyEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.SalePriceRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"setSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"}],\"name\":\"setSpaceOperatorRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"}],\"name\":\"setStakingRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"}],\"name\":\"setStakingSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.AllowListConfigRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenAllowListConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenMintLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenTxLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"UUPS-upgradeable marketplace that keeps ERC1155 sale semantics separate from ERC721 marketplace logic.\",\"errors\":{\"AddressNotAllowlisted(address)\":[{\"params\":{\"_account\":\"Buyer account that failed allowlist verification.\"}}],\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"ContractHasNoOwner(address)\":[{\"params\":{\"_contractAddress\":\"Contract that did not expose a valid `owner()`.\"}}],\"CurrencyMismatch(address,address)\":[{\"params\":{\"_configuredCurrency\":\"Currency stored in marketplace configuration.\",\"_suppliedCurrency\":\"Currency supplied by the caller.\"}}],\"CurrencyNotApproved(address)\":[{\"params\":{\"_currencyAddress\":\"Currency that failed approval.\"}}],\"DirectSaleNotConfigured(address,uint256)\":[{\"params\":{\"_contractAddress\":\"Collection address.\",\"_tokenId\":\"Token id missing a primary sale config.\"}}],\"ERC20FeeOnTransferUnsupported(address,uint256,uint256)\":[{\"params\":{\"_currencyAddress\":\"ERC20 token address.\",\"_expectedAmount\":\"Amount expected by the marketplace.\",\"_receivedAmount\":\"Amount actually received by the marketplace.\"}}],\"IncorrectETHAmount(uint256,uint256)\":[{\"params\":{\"_requiredAmount\":\"Amount required by the marketplace.\",\"_suppliedAmount\":\"Amount supplied as `msg.value`.\"}}],\"InsufficientTokenBalance(address,address,uint256,uint256,uint256)\":[{\"params\":{\"_account\":\"Account whose balance was checked.\",\"_availableQuantity\":\"Quantity available at check time.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_requestedQuantity\":\"Quantity required by the operation.\",\"_tokenId\":\"Token id whose balance was checked.\"}}],\"InvalidERC1155Contract(address)\":[{\"params\":{\"_contractAddress\":\"Collection address that failed validation.\"}}],\"InvalidERC1155Transfer(address,uint256,address,address,uint256)\":[{\"params\":{\"_buyer\":\"Buyer whose balance should increase.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_quantity\":\"Quantity that should be transferred.\",\"_seller\":\"Seller whose balance should decrease.\",\"_tokenId\":\"Token id transferred.\"}}],\"MarketConfigAddressCannotBeZero(bytes32)\":[{\"params\":{\"_field\":\"Name of the dependency field that was zero.\"}}],\"MarketplaceNotApproved(address,address)\":[{\"params\":{\"_account\":\"ERC1155 owner that must approve the marketplace.\",\"_contractAddress\":\"ERC1155 collection address.\"}}],\"MaxMintExceeded(uint256,uint256)\":[{\"params\":{\"_maxMints\":\"Configured max quantity per transaction.\",\"_requestedQuantity\":\"Requested mint quantity.\"}}],\"MintLimitExceeded(address,uint256,address,uint256,uint256,uint256)\":[{\"params\":{\"_account\":\"Buyer account.\",\"_contractAddress\":\"Collection address.\",\"_limit\":\"Configured mint limit.\",\"_mintedQuantity\":\"Quantity already minted by the account.\",\"_requestedQuantity\":\"Requested mint quantity.\",\"_tokenId\":\"Token id being minted.\"}}],\"NotContractOwner(address,address)\":[{\"params\":{\"_account\":\"Account that failed the owner check.\",\"_contractAddress\":\"Collection address whose owner was checked.\"}}],\"PayoutFailed(bytes)\":[{\"params\":{\"_revertData\":\"Raw revert data returned by the failed payout call.\"}}],\"PayoutLengthMismatch(uint256,uint256)\":[{\"params\":{\"_amountsLength\":\"Number of payout amounts supplied.\",\"_recipientsLength\":\"Number of payout recipients supplied.\"}}],\"PayoutTotalMismatch(uint256,uint256)\":[{\"params\":{\"_actualAmount\":\"Sum of supplied payout amounts.\",\"_expectedAmount\":\"Amount expected to be paid by the batch.\"}}],\"PlatformCommissionExceeded(uint256,uint256)\":[{\"params\":{\"_maxPlatformCommission\":\"Maximum supported platform commission percentage.\",\"_platformCommission\":\"Supplied primary platform commission percentage.\"}}],\"PriceMismatch(uint256,uint256)\":[{\"params\":{\"_configuredPrice\":\"Price stored in marketplace configuration.\",\"_suppliedPrice\":\"Price supplied by the caller.\"}}],\"QuantityExceedsSalePriceQuantity(uint256,uint256)\":[{\"params\":{\"_availableQuantity\":\"Quantity currently listed.\",\"_requestedQuantity\":\"Quantity requested by the buyer.\"}}],\"RoyaltiesExceedSaleAmount(uint256,uint256)\":[{\"params\":{\"_royalties\":\"Total royalties returned by the royalty engine.\",\"_saleAmount\":\"Gross sale amount before royalty deduction.\"}}],\"SaleNotStarted(uint256)\":[{\"params\":{\"_startTime\":\"Configured sale start timestamp.\"}}],\"SalePriceDoesNotExist(address,uint256,address)\":[{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_seller\":\"Seller whose listing was requested.\",\"_tokenId\":\"Token id requested.\"}}],\"SalePriceExpirationInvalid(uint256,uint256)\":[{\"params\":{\"_currentTime\":\"Current block timestamp.\",\"_expirationTime\":\"Expiration supplied for the listing.\"}}],\"SalePriceExpired(address,uint256,address,uint256)\":[{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_expirationTime\":\"Stored listing expiration timestamp.\",\"_seller\":\"Seller whose listing was requested.\",\"_tokenId\":\"Token id requested.\"}}],\"SelfPurchaseUnsupported(address)\":[{\"params\":{\"_seller\":\"Seller whose listing was targeted.\"}}],\"SplitLengthMismatch(uint256,uint256)\":[{\"params\":{\"_ratiosLength\":\"Supplied ratio count.\",\"_recipientsLength\":\"Supplied recipient count.\"}}],\"SplitRatioCannotBeZero(uint256)\":[{\"params\":{\"_index\":\"Index of the invalid split ratio.\"}}],\"SplitRecipientCannotBeZero(uint256)\":[{\"params\":{\"_index\":\"Index of the invalid split recipient.\"}}],\"SplitRecipientsExceededMax(uint256,uint256)\":[{\"params\":{\"_maxRecipients\":\"Maximum supported recipient count.\",\"_recipientsLength\":\"Supplied recipient count.\"}}],\"SplitTotalInvalid(uint256,uint256)\":[{\"params\":{\"_requiredTotal\":\"Required ratio total.\",\"_totalRatio\":\"Supplied ratio total.\"}}],\"StakingFeeExceedsMarketplaceFee(uint256,uint256)\":[{\"params\":{\"_marketplaceFee\":\"Total marketplace fee collected from the buyer.\",\"_stakingFee\":\"Staking portion requested by staking settings.\"}}],\"TokenIdsNotStrictlyAscending(uint256,uint256,uint256)\":[{\"params\":{\"index\":\"Index of the token id that is not greater than the previous token id.\",\"previousTokenId\":\"Token id at `index - 1`.\",\"tokenId\":\"Token id at `index`.\"}}],\"TokenNotFound(address,uint256)\":[{\"params\":{\"_contractAddress\":\"Collection address.\",\"_tokenId\":\"Missing token id.\"}}],\"TransactionLimitExceeded(address,uint256,address,uint256,uint256)\":[{\"params\":{\"_account\":\"Buyer account.\",\"_contractAddress\":\"Collection address.\",\"_limit\":\"Configured transaction limit.\",\"_tokenId\":\"Token id being minted.\",\"_usedTransactions\":\"Transactions already used by the account.\"}}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"ContractPausedUpdated(bool)\":{\"params\":{\"isPaused\":\"True when marketplace writes are paused.\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MarketplaceDependencyUpdated(bytes32,address)\":{\"params\":{\"dependency\":\"New dependency address.\",\"field\":\"Config field that was updated.\"}},\"MintDirectSale(address,uint256,address,address,uint256,address,uint256)\":{\"params\":{\"buyer\":\"Address that paid for and received the mint.\",\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Sale currency. Zero address indicates ETH.\",\"price\":\"Unit price paid.\",\"quantity\":\"Quantity minted.\",\"seller\":\"Creator/seller that received proceeds.\",\"tokenId\":\"Minted token id.\"}},\"PrepareMintDirectSale(address,uint256,address,address,uint256,uint256,uint256,address[],uint8[])\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Sale currency. Zero address indicates ETH.\",\"maxMints\":\"Max quantity per transaction. Zero means unlimited.\",\"price\":\"Unit price per token.\",\"seller\":\"Creator/seller that receives sale proceeds.\",\"splitRatios\":\"Percentages for `splitRecipients`.\",\"splitRecipients\":\"Recipients that split seller proceeds.\",\"startTime\":\"Timestamp when minting may begin.\",\"tokenId\":\"Token id sold by the primary sale.\"}},\"SalePriceCancelled(address,address,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"seller\":\"Seller that cancelled the listing.\",\"tokenId\":\"Token id whose listing was cancelled.\"}},\"SalePriceSet(address,address,uint256,address,uint256,uint256,uint256,address[],uint8[])\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Listing currency. Zero address indicates ETH.\",\"expirationTime\":\"Timestamp when the listing can no longer be filled. Zero means no expiration.\",\"price\":\"Unit price per token.\",\"quantity\":\"Quantity listed.\",\"seller\":\"Seller that owns the listed ERC1155 balance.\",\"splitRatios\":\"Percentages for `splitRecipients`.\",\"splitRecipients\":\"Recipients that split seller proceeds.\",\"tokenId\":\"Listed token id.\"}},\"SetTokenAllowListConfig(address,uint256,bytes32,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"endTimestamp\":\"Timestamp when allowlist enforcement expires.\",\"root\":\"Merkle root for allowlisted buyers.\",\"tokenId\":\"Token id controlled by the allowlist.\"}},\"Sold(address,address,address,uint256,address,uint256,uint256)\":{\"params\":{\"buyer\":\"Buyer that paid and received the ERC1155 tokens.\",\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Purchase currency. Zero address indicates ETH.\",\"price\":\"Unit price paid.\",\"quantity\":\"Quantity purchased.\",\"seller\":\"Seller that transferred the ERC1155 tokens.\",\"tokenId\":\"Purchased token id.\"}},\"TokenMintLimitSet(address,uint256,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"limit\":\"Max quantity each address may mint while the limit is enabled. Zero disables the limit.\",\"tokenId\":\"Token id controlled by the limit.\"}},\"TokenTxLimitSet(address,uint256,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"limit\":\"Max mint transactions each address may submit while the limit is enabled. Zero disables the limit.\",\"tokenId\":\"Token id controlled by the limit.\"}},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending. A one-token buy is represented by a one-item batch.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Currency expected by the buyer.\",\"_requests\":\"Buy requests to execute.\",\"_seller\":\"Seller whose listing is being filled.\"}},\"cancelSalePrices(address,uint256[])\":{\"details\":\"Token ids must be strictly ascending.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenIds\":\"Listed token ids.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getDirectSaleConfig(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Primary sale config for the token id.\"}},\"getERC1155ApprovalManager()\":{\"returns\":{\"_0\":\"Current ERC1155 approval manager address.\"}},\"getMarketConfig()\":{\"returns\":{\"_0\":\"Current market config struct.\"}},\"getSalePrice(address,uint256,address)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_seller\":\"Seller whose listing is returned.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Secondary fixed-price listing for the seller and token id.\"}},\"getTokenAllowListConfig(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Allowlist config for the token id.\"}},\"getTokenMintLimit(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Mint quantity limit. Zero means unlimited.\"}},\"getTokenMintsPerAddress(address,uint256,address)\":{\"params\":{\"_address\":\"Address whose minted quantity is returned.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Quantity minted by `_address`.\"}},\"getTokenTxLimit(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Transaction limit. Zero means unlimited.\"}},\"getTokenTxsPerAddress(address,uint256,address)\":{\"params\":{\"_address\":\"Address whose transaction count is returned.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Number of mint transactions used by `_address`.\"}},\"initialize(address,address,address,address,address,address,address,address,address,address,address)\":{\"details\":\"Stores the market config dependency bundle and initializes inherited upgradeability modules.\",\"params\":{\"_approvedTokenRegistry\":\"Registry of approved ERC20 currencies.\",\"_erc1155ApprovalManager\":\"ERC1155 transfer manager for seller token approvals.\",\"_erc20ApprovalManager\":\"ERC20 transfer manager for buyer currency approvals.\",\"_erc721ApprovalManager\":\"ERC721 transfer manager kept in shared V2 market config.\",\"_marketplaceSettings\":\"Marketplace settings contract.\",\"_networkBeneficiary\":\"Address receiving network marketplace fees.\",\"_payments\":\"Payments contract used for ETH fan-out.\",\"_royaltyEngine\":\"Royalty engine contract.\",\"_spaceOperatorRegistry\":\"Space operator registry contract.\",\"_stakingRegistry\":\"Staking registry contract.\",\"_stakingSettings\":\"Staking fee settings contract.\"}},\"isPaused()\":{\"returns\":{\"_0\":\"True when paused.\"}},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Request token ids must be strictly ascending. Each token id included in a batch consumes one transaction against that token's tx limit when the token tx limit is enabled.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Currency expected by the buyer.\",\"_requests\":\"Mint requests to execute.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending. A one-token sale is represented by a one-item batch.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Sale currency. Zero address indicates ETH.\",\"_requests\":\"Sale configs to apply.\",\"_splitRatios\":\"Percentages for `splitRecipients`, totaling 100.\",\"_splitRecipients\":\"Recipients that split seller proceeds.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setApprovedTokenRegistry(address)\":{\"params\":{\"_approvedTokenRegistry\":\"New approved token registry contract.\"}},\"setContractPaused(bool)\":{\"params\":{\"_isPaused\":\"New pause state.\"}},\"setERC1155ApprovalManager(address)\":{\"params\":{\"_erc1155ApprovalManager\":\"New ERC1155 approval manager contract.\"}},\"setERC20ApprovalManager(address)\":{\"params\":{\"_erc20ApprovalManager\":\"New ERC20 approval manager contract.\"}},\"setERC721ApprovalManager(address)\":{\"params\":{\"_erc721ApprovalManager\":\"New ERC721 approval manager contract.\"}},\"setMarketplaceSettings(address)\":{\"params\":{\"_marketplaceSettings\":\"New marketplace settings contract.\"}},\"setNetworkBeneficiary(address)\":{\"params\":{\"_networkBeneficiary\":\"New network beneficiary.\"}},\"setPayments(address)\":{\"params\":{\"_payments\":\"New payments contract.\"}},\"setRoyaltyEngine(address)\":{\"params\":{\"_royaltyEngine\":\"New royalty engine contract.\"}},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending. `expirationTime == 0` means no expiration. Listings can be cancelled by the seller with `cancelSalePrices`.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Listing currency. Zero address indicates ETH.\",\"_requests\":\"Listing configs to apply.\",\"_splitRatios\":\"Percentages for `splitRecipients`, totaling 100.\",\"_splitRecipients\":\"Recipients that split seller proceeds.\"}},\"setSpaceOperatorRegistry(address)\":{\"params\":{\"_spaceOperatorRegistry\":\"New space operator registry contract.\"}},\"setStakingRegistry(address)\":{\"params\":{\"_stakingRegistry\":\"New staking registry contract.\"}},\"setStakingSettings(address)\":{\"params\":{\"_stakingSettings\":\"New staking settings contract.\"}},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_requests\":\"Allowlist configs to apply.\"}},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_requests\":\"Mint limits to apply. Zero disables a token id's limit and disabled periods are not counted.\"}},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_requests\":\"Transaction limits to apply. Zero disables a token id's limit and disabled periods are not counted.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"LISTINGS_STORAGE_LOCATION\":{\"details\":\"keccak256(abi.encode(uint256(keccak256(\\\"superrare.storage.RareERC1155Listings\\\")) - 1)) & ~bytes32(uint256(0xff))\"},\"MAX_BATCH_SIZE\":{\"return\":\"Maximum supported batch item count.\",\"returns\":{\"_0\":\"Maximum supported batch item count.\"}}},\"title\":\"RareERC1155Listings\",\"version\":1},\"userdoc\":{\"errors\":{\"AddressNotAllowlisted(address)\":[{\"notice\":\"Reverted when a buyer is not included in an active allowlist.\"}],\"ApprovalManagerCannotBeZero()\":[{\"notice\":\"Reverted when an approval manager address is zero.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"ContractHasNoOwner(address)\":[{\"notice\":\"Reverted when ownership cannot be read from a collection.\"}],\"ContractPaused()\":[{\"notice\":\"Reverted when a write function is called while the marketplace is paused.\"}],\"CurrencyMismatch(address,address)\":[{\"notice\":\"Reverted when a caller-supplied currency does not match the configured currency.\"}],\"CurrencyNotApproved(address)\":[{\"notice\":\"Reverted when a currency is neither ETH nor approved by the token registry.\"}],\"DirectSaleNotConfigured(address,uint256)\":[{\"notice\":\"Reverted when a primary mint is attempted before sale configuration exists.\"}],\"ERC20FeeOnTransferUnsupported(address,uint256,uint256)\":[{\"notice\":\"Reverted when an ERC20 transfer receives less or more than expected.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"IncorrectETHAmount(uint256,uint256)\":[{\"notice\":\"Reverted when an ETH purchase sends the wrong `msg.value`.\"}],\"InsufficientTokenBalance(address,address,uint256,uint256,uint256)\":[{\"notice\":\"Reverted when a seller does not have enough ERC1155 balance for a listing or purchase.\"}],\"InvalidERC1155Contract(address)\":[{\"notice\":\"Reverted when a secondary collection is not a deployed ERC1155 contract.\"}],\"InvalidERC1155Transfer(address,uint256,address,address,uint256)\":[{\"notice\":\"Reverted when an ERC1155 transfer completes without exact seller and buyer balance deltas.\"}],\"MarketConfigAddressCannotBeZero(bytes32)\":[{\"notice\":\"Reverted when a required market config dependency address is zero.\"}],\"MarketplaceNotApproved(address,address)\":[{\"notice\":\"Reverted when the marketplace is not approved to transfer a seller's ERC1155 tokens.\"}],\"MaxMintExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a mint quantity exceeds the sale's per-transaction max.\"}],\"MintLimitExceeded(address,uint256,address,uint256,uint256,uint256)\":[{\"notice\":\"Reverted when a mint would exceed a buyer's per-address mint limit for a token id.\"}],\"MsgValueMustBeZero()\":[{\"notice\":\"Reverted when a free mint includes ETH.\"}],\"MsgValueUnsupportedForERC20()\":[{\"notice\":\"Reverted when ETH is supplied for an ERC20 purchase.\"}],\"NotContractOwner(address,address)\":[{\"notice\":\"Reverted when a caller is not the owner of a collection.\"}],\"PayoutFailed(bytes)\":[{\"notice\":\"Reverted when ETH payout through the Payments contract fails.\"}],\"PayoutLengthMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when payout recipients and amounts have different lengths.\"}],\"PayoutTotalMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when payout amounts do not sum to the expected batch amount.\"}],\"PlatformCommissionExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when primary platform commission exceeds 100%.\"}],\"PriceMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when a caller-supplied price does not match the configured price.\"}],\"QuantityCannotBeZero()\":[{\"notice\":\"Reverted when a quantity argument is zero.\"}],\"QuantityExceedsSalePriceQuantity(uint256,uint256)\":[{\"notice\":\"Reverted when a purchase quantity exceeds listed quantity.\"}],\"RoyaltiesExceedSaleAmount(uint256,uint256)\":[{\"notice\":\"Reverted when royalties returned by the royalty engine exceed sale proceeds.\"}],\"SaleNotStarted(uint256)\":[{\"notice\":\"Reverted when a primary mint is attempted before the start time.\"}],\"SalePriceCannotBeZero()\":[{\"notice\":\"Reverted when a secondary listing price is zero.\"}],\"SalePriceDoesNotExist(address,uint256,address)\":[{\"notice\":\"Reverted when no secondary listing exists for a seller and token id.\"}],\"SalePriceExpirationInvalid(uint256,uint256)\":[{\"notice\":\"Reverted when a secondary listing expiration is nonzero and not in the future.\"}],\"SalePriceExpired(address,uint256,address,uint256)\":[{\"notice\":\"Reverted when a buyer tries to fill an expired secondary listing.\"}],\"SelfPurchaseUnsupported(address)\":[{\"notice\":\"Reverted when a buyer tries to fill their own secondary listing.\"}],\"SplitLengthMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when split recipient and ratio arrays have different lengths.\"}],\"SplitRatioCannotBeZero(uint256)\":[{\"notice\":\"Reverted when a split ratio is zero.\"}],\"SplitRecipientCannotBeZero(uint256)\":[{\"notice\":\"Reverted when a split recipient is the zero address.\"}],\"SplitRecipientsExceededMax(uint256,uint256)\":[{\"notice\":\"Reverted when a sale config has more split recipients than supported.\"}],\"SplitRecipientsRequired()\":[{\"notice\":\"Reverted when a sale config has no split recipients.\"}],\"SplitTotalInvalid(uint256,uint256)\":[{\"notice\":\"Reverted when split ratios do not total 100.\"}],\"StakingFeeExceedsMarketplaceFee(uint256,uint256)\":[{\"notice\":\"Reverted when the staking fee exceeds the buyer-paid marketplace fee.\"}],\"TokenIdsNotStrictlyAscending(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"TokenNotFound(address,uint256)\":[{\"notice\":\"Reverted when a token id has not been created on a collection.\"}],\"TransactionLimitExceeded(address,uint256,address,uint256,uint256)\":[{\"notice\":\"Reverted when a mint would exceed a buyer's per-address transaction limit for a token id.\"}]},\"events\":{\"ContractPausedUpdated(bool)\":{\"notice\":\"Emitted when an owner updates marketplace pause state.\"},\"MarketplaceDependencyUpdated(bytes32,address)\":{\"notice\":\"Emitted when an owner updates a critical marketplace dependency.\"},\"MintDirectSale(address,uint256,address,address,uint256,address,uint256)\":{\"notice\":\"Emitted when a buyer mints through a primary sale.\"},\"PrepareMintDirectSale(address,uint256,address,address,uint256,uint256,uint256,address[],uint8[])\":{\"notice\":\"Emitted when a creator configures a primary mint sale.\"},\"SalePriceCancelled(address,address,uint256)\":{\"notice\":\"Emitted when a seller cancels a secondary listing.\"},\"SalePriceSet(address,address,uint256,address,uint256,uint256,uint256,address[],uint8[])\":{\"notice\":\"Emitted when a seller creates or replaces a secondary fixed-price listing.\"},\"SetTokenAllowListConfig(address,uint256,bytes32,uint256)\":{\"notice\":\"Emitted when a token allowlist config is set.\"},\"Sold(address,address,address,uint256,address,uint256,uint256)\":{\"notice\":\"Emitted when a buyer fills a secondary fixed-price listing.\"},\"TokenMintLimitSet(address,uint256,uint256)\":{\"notice\":\"Emitted when a per-address mint limit is set for a token id.\"},\"TokenTxLimitSet(address,uint256,uint256)\":{\"notice\":\"Emitted when a per-address transaction limit is set for a token id.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch operations.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings.\"},\"cancelSalePrices(address,uint256[])\":{\"notice\":\"Cancels the caller's secondary listings for token ids.\"},\"getDirectSaleConfig(address,uint256)\":{\"notice\":\"Returns the primary mint sale config for a token id.\"},\"getERC1155ApprovalManager()\":{\"notice\":\"Returns the ERC1155 approval manager used for secondary transfers.\"},\"getMarketConfig()\":{\"notice\":\"Returns the marketplace dependency configuration.\"},\"getSalePrice(address,uint256,address)\":{\"notice\":\"Returns a seller's secondary fixed-price listing.\"},\"getTokenAllowListConfig(address,uint256)\":{\"notice\":\"Returns the allowlist config for a token id.\"},\"getTokenMintLimit(address,uint256)\":{\"notice\":\"Returns the per-address mint quantity limit for a token id.\"},\"getTokenMintsPerAddress(address,uint256,address)\":{\"notice\":\"Returns quantity minted by an address for a token id.\"},\"getTokenTxLimit(address,uint256)\":{\"notice\":\"Returns the per-address transaction limit for a token id.\"},\"getTokenTxsPerAddress(address,uint256,address)\":{\"notice\":\"Returns mint transactions used by an address for a token id.\"},\"initialize(address,address,address,address,address,address,address,address,address,address,address)\":{\"notice\":\"Initializes the UUPS marketplace implementation behind a proxy.\"},\"isPaused()\":{\"notice\":\"Returns whether marketplace writes are paused.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Configures or replaces primary mint sales for token ids.\"},\"setApprovedTokenRegistry(address)\":{\"notice\":\"Updates the approved token registry address.\"},\"setContractPaused(bool)\":{\"notice\":\"Pauses or unpauses marketplace write operations.\"},\"setERC1155ApprovalManager(address)\":{\"notice\":\"Updates the ERC1155 approval manager address.\"},\"setERC20ApprovalManager(address)\":{\"notice\":\"Updates the ERC20 approval manager address.\"},\"setERC721ApprovalManager(address)\":{\"notice\":\"Updates the ERC721 approval manager address retained by the shared V2 market config.\"},\"setMarketplaceSettings(address)\":{\"notice\":\"Updates the marketplace settings contract address.\"},\"setNetworkBeneficiary(address)\":{\"notice\":\"Updates the network beneficiary address.\"},\"setPayments(address)\":{\"notice\":\"Updates the Payments contract address used for ETH fan-out.\"},\"setRoyaltyEngine(address)\":{\"notice\":\"Updates the royalty engine address.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Creates or replaces secondary fixed-price listings.\"},\"setSpaceOperatorRegistry(address)\":{\"notice\":\"Updates the space operator registry address.\"},\"setStakingRegistry(address)\":{\"notice\":\"Updates the staking registry address.\"},\"setStakingSettings(address)\":{\"notice\":\"Updates the staking settings address.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"notice\":\"Sets token id allowlist configurations.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets the max quantity each address may mint for token ids while the limit is enabled.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets the max number of mint transactions each address may submit for token ids while the limit is enabled.\"}},\"notice\":\"Primary mint sales for RARE Protocol ERC1155 tokens and fixed-price resale listings for ERC1155 tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155Listings.sol\":\"RareERC1155Listings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol\":{\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0\",\"dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x584ebdf9c1118a7c773f98788e3f3ede01982bdf8932aa06f5acc7d54876e161\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9826c7edf276ff48b99ee217358393097c30448a71d345d287c2f6961bb1f159\",\"dweb:/ipfs/QmYXBTY9wDvffGU47yMRFJ1NFyKwpbj94VHzRzhsm6R7Gz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xb607cb94c27e89750f5ae2ccebcb94e654e926f6125f4fd4c6262c89875118ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33e8f8d863c6943ea046fcf4972b4e815c04ab06bad195dba1d93f8ebeb8420d\",\"dweb:/ipfs/QmTQzxQTuuzPDk3eqVmYy7hv2RCXM1yt1NtubXpRbzYjaj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025\",\"dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685\",\"dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155Listings.sol\":{\"keccak256\":\"0x4772059a1b272c84ea7ea7d463ba92e67aded8ec11219a7d8117e12b47e59f52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45ccce54d9d11c50b7829e31443a39b196e9b17bceae954b59b562bdcc3d1f43\",\"dweb:/ipfs/QmeMQR5XVVmFSYUUmofn2sHC88e63vAv6ENjWjotPYi8Xa\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155Listings.sol\":{\"keccak256\":\"0x82dc3d1eb00b9b81cb24ebbf959173361c5b1e47cfb84736a261c47ad277938b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5c139ef262f13966d94821f7a364f727b5897ed0636ba39902e5b465b64aa36\",\"dweb:/ipfs/QmTrH19KGphkbMsun8QNmpzq2LUAEx2Q3zNTEzte4r94Pd\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x423f16f31739668c0162422d91b2f9eea3769de9389d876d876928369b298976\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b942a7152ad01624065e302e75505c551348ddeca2bbb80d2ce556a0d15b0b2a\",\"dweb:/ipfs/QmQrtDpdLvntxFnh9tqFVUiRQPHQpf5BZjGp9PhM558gvJ\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"cancelSalePrices"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDirectSaleConfig","outputs":[{"internalType":"struct IRareERC1155Listings.DirectSaleConfig","name":"","type":"tuple","components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getERC1155ApprovalManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMarketConfig","outputs":[{"internalType":"struct MarketConfigV2.Config","name":"","type":"tuple","components":[{"internalType":"address","name":"networkBeneficiary","type":"address"},{"internalType":"contract IMarketplaceSettings","name":"marketplaceSettings","type":"address"},{"internalType":"contract ISpaceOperatorRegistry","name":"spaceOperatorRegistry","type":"address"},{"internalType":"contract IRoyaltyEngineV1","name":"royaltyEngine","type":"address"},{"internalType":"contract IPayments","name":"payments","type":"address"},{"internalType":"contract IApprovedTokenRegistry","name":"approvedTokenRegistry","type":"address"},{"internalType":"contract IStakingSettings","name":"stakingSettings","type":"address"},{"internalType":"contract IRareStakingRegistry","name":"stakingRegistry","type":"address"},{"internalType":"contract IERC20ApprovalManager","name":"erc20ApprovalManager","type":"address"},{"internalType":"contract IERC721ApprovalManager","name":"erc721ApprovalManager","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"stateMutability":"view","type":"function","name":"getSalePrice","outputs":[{"internalType":"struct IRareERC1155Listings.SalePrice","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenAllowListConfig","outputs":[{"internalType":"struct IRareERC1155Listings.AllowListConfig","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenTxsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"},{"internalType":"address","name":"_marketplaceSettings","type":"address"},{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"},{"internalType":"address","name":"_royaltyEngine","type":"address"},{"internalType":"address","name":"_payments","type":"address"},{"internalType":"address","name":"_approvedTokenRegistry","type":"address"},{"internalType":"address","name":"_stakingSettings","type":"address"},{"internalType":"address","name":"_stakingRegistry","type":"address"},{"internalType":"address","name":"_erc20ApprovalManager","type":"address"},{"internalType":"address","name":"_erc721ApprovalManager","type":"address"},{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.DirectSaleRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"prepareMintDirectSales"},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"_approvedTokenRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setApprovedTokenRegistry"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setContractPaused"},{"inputs":[{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC1155ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc20ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC20ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc721ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC721ApprovalManager"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketplaceSettings"},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkBeneficiary"},{"inputs":[{"internalType":"address","name":"_payments","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPayments"},{"inputs":[{"internalType":"address","name":"_royaltyEngine","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyEngine"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.SalePriceRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"setSalePrices"},{"inputs":[{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSpaceOperatorRegistry"},{"inputs":[{"internalType":"address","name":"_stakingRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingRegistry"},{"inputs":[{"internalType":"address","name":"_stakingSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingSettings"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.AllowListConfigRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenAllowListConfigs"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenMintLimits"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenTxLimits"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgradeTo"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"}],"devdoc":{"kind":"dev","methods":{"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"details":"Request token ids must be strictly ascending. A one-token buy is represented by a one-item batch.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Currency expected by the buyer.","_requests":"Buy requests to execute.","_seller":"Seller whose listing is being filled."}},"cancelSalePrices(address,uint256[])":{"details":"Token ids must be strictly ascending.","params":{"_contractAddress":"ERC1155 collection address.","_tokenIds":"Listed token ids."}},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"getDirectSaleConfig(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Primary sale config for the token id."}},"getERC1155ApprovalManager()":{"returns":{"_0":"Current ERC1155 approval manager address."}},"getMarketConfig()":{"returns":{"_0":"Current market config struct."}},"getSalePrice(address,uint256,address)":{"params":{"_contractAddress":"ERC1155 collection address.","_seller":"Seller whose listing is returned.","_tokenId":"Token id to inspect."},"returns":{"_0":"Secondary fixed-price listing for the seller and token id."}},"getTokenAllowListConfig(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Allowlist config for the token id."}},"getTokenMintLimit(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Mint quantity limit. Zero means unlimited."}},"getTokenMintsPerAddress(address,uint256,address)":{"params":{"_address":"Address whose minted quantity is returned.","_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Quantity minted by `_address`."}},"getTokenTxLimit(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Transaction limit. Zero means unlimited."}},"getTokenTxsPerAddress(address,uint256,address)":{"params":{"_address":"Address whose transaction count is returned.","_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Number of mint transactions used by `_address`."}},"initialize(address,address,address,address,address,address,address,address,address,address,address)":{"details":"Stores the market config dependency bundle and initializes inherited upgradeability modules.","params":{"_approvedTokenRegistry":"Registry of approved ERC20 currencies.","_erc1155ApprovalManager":"ERC1155 transfer manager for seller token approvals.","_erc20ApprovalManager":"ERC20 transfer manager for buyer currency approvals.","_erc721ApprovalManager":"ERC721 transfer manager kept in shared V2 market config.","_marketplaceSettings":"Marketplace settings contract.","_networkBeneficiary":"Address receiving network marketplace fees.","_payments":"Payments contract used for ETH fan-out.","_royaltyEngine":"Royalty engine contract.","_spaceOperatorRegistry":"Space operator registry contract.","_stakingRegistry":"Staking registry contract.","_stakingSettings":"Staking fee settings contract."}},"isPaused()":{"returns":{"_0":"True when paused."}},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"details":"Request token ids must be strictly ascending. Each token id included in a batch consumes one transaction against that token's tx limit when the token tx limit is enabled.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Currency expected by the buyer.","_requests":"Mint requests to execute."}},"owner()":{"details":"Returns the address of the current owner."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending. A one-token sale is represented by a one-item batch.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Sale currency. Zero address indicates ETH.","_requests":"Sale configs to apply.","_splitRatios":"Percentages for `splitRecipients`, totaling 100.","_splitRecipients":"Recipients that split seller proceeds."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setApprovedTokenRegistry(address)":{"params":{"_approvedTokenRegistry":"New approved token registry contract."}},"setContractPaused(bool)":{"params":{"_isPaused":"New pause state."}},"setERC1155ApprovalManager(address)":{"params":{"_erc1155ApprovalManager":"New ERC1155 approval manager contract."}},"setERC20ApprovalManager(address)":{"params":{"_erc20ApprovalManager":"New ERC20 approval manager contract."}},"setERC721ApprovalManager(address)":{"params":{"_erc721ApprovalManager":"New ERC721 approval manager contract."}},"setMarketplaceSettings(address)":{"params":{"_marketplaceSettings":"New marketplace settings contract."}},"setNetworkBeneficiary(address)":{"params":{"_networkBeneficiary":"New network beneficiary."}},"setPayments(address)":{"params":{"_payments":"New payments contract."}},"setRoyaltyEngine(address)":{"params":{"_royaltyEngine":"New royalty engine contract."}},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending. `expirationTime == 0` means no expiration. Listings can be cancelled by the seller with `cancelSalePrices`.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Listing currency. Zero address indicates ETH.","_requests":"Listing configs to apply.","_splitRatios":"Percentages for `splitRecipients`, totaling 100.","_splitRecipients":"Recipients that split seller proceeds."}},"setSpaceOperatorRegistry(address)":{"params":{"_spaceOperatorRegistry":"New space operator registry contract."}},"setStakingRegistry(address)":{"params":{"_stakingRegistry":"New staking registry contract."}},"setStakingSettings(address)":{"params":{"_stakingSettings":"New staking settings contract."}},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"details":"Request token ids must be strictly ascending.","params":{"_contractAddress":"ERC1155 collection address.","_requests":"Allowlist configs to apply."}},"setTokenMintLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending.","params":{"_contractAddress":"ERC1155 collection address.","_requests":"Mint limits to apply. Zero disables a token id's limit and disabled periods are not counted."}},"setTokenTxLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending.","params":{"_contractAddress":"ERC1155 collection address.","_requests":"Transaction limits to apply. Zero disables a token id's limit and disabled periods are not counted."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch operations."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings."},"cancelSalePrices(address,uint256[])":{"notice":"Cancels the caller's secondary listings for token ids."},"getDirectSaleConfig(address,uint256)":{"notice":"Returns the primary mint sale config for a token id."},"getERC1155ApprovalManager()":{"notice":"Returns the ERC1155 approval manager used for secondary transfers."},"getMarketConfig()":{"notice":"Returns the marketplace dependency configuration."},"getSalePrice(address,uint256,address)":{"notice":"Returns a seller's secondary fixed-price listing."},"getTokenAllowListConfig(address,uint256)":{"notice":"Returns the allowlist config for a token id."},"getTokenMintLimit(address,uint256)":{"notice":"Returns the per-address mint quantity limit for a token id."},"getTokenMintsPerAddress(address,uint256,address)":{"notice":"Returns quantity minted by an address for a token id."},"getTokenTxLimit(address,uint256)":{"notice":"Returns the per-address transaction limit for a token id."},"getTokenTxsPerAddress(address,uint256,address)":{"notice":"Returns mint transactions used by an address for a token id."},"initialize(address,address,address,address,address,address,address,address,address,address,address)":{"notice":"Initializes the UUPS marketplace implementation behind a proxy."},"isPaused()":{"notice":"Returns whether marketplace writes are paused."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Configures or replaces primary mint sales for token ids."},"setApprovedTokenRegistry(address)":{"notice":"Updates the approved token registry address."},"setContractPaused(bool)":{"notice":"Pauses or unpauses marketplace write operations."},"setERC1155ApprovalManager(address)":{"notice":"Updates the ERC1155 approval manager address."},"setERC20ApprovalManager(address)":{"notice":"Updates the ERC20 approval manager address."},"setERC721ApprovalManager(address)":{"notice":"Updates the ERC721 approval manager address retained by the shared V2 market config."},"setMarketplaceSettings(address)":{"notice":"Updates the marketplace settings contract address."},"setNetworkBeneficiary(address)":{"notice":"Updates the network beneficiary address."},"setPayments(address)":{"notice":"Updates the Payments contract address used for ETH fan-out."},"setRoyaltyEngine(address)":{"notice":"Updates the royalty engine address."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Creates or replaces secondary fixed-price listings."},"setSpaceOperatorRegistry(address)":{"notice":"Updates the space operator registry address."},"setStakingRegistry(address)":{"notice":"Updates the staking registry address."},"setStakingSettings(address)":{"notice":"Updates the staking settings address."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"notice":"Sets token id allowlist configurations."},"setTokenMintLimits(address,(uint256,uint256)[])":{"notice":"Sets the max quantity each address may mint for token ids while the limit is enabled."},"setTokenTxLimits(address,(uint256,uint256)[])":{"notice":"Sets the max number of mint transactions each address may submit for token ids while the limit is enabled."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155Listings.sol":"RareERC1155Listings"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol":{"keccak256":"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b","urls":["bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0","dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol":{"keccak256":"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f","urls":["bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053","dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"keccak256":"0x584ebdf9c1118a7c773f98788e3f3ede01982bdf8932aa06f5acc7d54876e161","urls":["bzz-raw://9826c7edf276ff48b99ee217358393097c30448a71d345d287c2f6961bb1f159","dweb:/ipfs/QmYXBTY9wDvffGU47yMRFJ1NFyKwpbj94VHzRzhsm6R7Gz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol":{"keccak256":"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908","urls":["bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1","dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xb607cb94c27e89750f5ae2ccebcb94e654e926f6125f4fd4c6262c89875118ad","urls":["bzz-raw://33e8f8d863c6943ea046fcf4972b4e815c04ab06bad195dba1d93f8ebeb8420d","dweb:/ipfs/QmTQzxQTuuzPDk3eqVmYy7hv2RCXM1yt1NtubXpRbzYjaj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0","urls":["bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025","dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol":{"keccak256":"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908","urls":["bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685","dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155Listings.sol":{"keccak256":"0x4772059a1b272c84ea7ea7d463ba92e67aded8ec11219a7d8117e12b47e59f52","urls":["bzz-raw://45ccce54d9d11c50b7829e31443a39b196e9b17bceae954b59b562bdcc3d1f43","dweb:/ipfs/QmeMQR5XVVmFSYUUmofn2sHC88e63vAv6ENjWjotPYi8Xa"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155Listings.sol":{"keccak256":"0x82dc3d1eb00b9b81cb24ebbf959173361c5b1e47cfb84736a261c47ad277938b","urls":["bzz-raw://a5c139ef262f13966d94821f7a364f727b5897ed0636ba39902e5b465b64aa36","dweb:/ipfs/QmTrH19KGphkbMsun8QNmpzq2LUAEx2Q3zNTEzte4r94Pd"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x423f16f31739668c0162422d91b2f9eea3769de9389d876d876928369b298976","urls":["bzz-raw://b942a7152ad01624065e302e75505c551348ddeca2bbb80d2ce556a0d15b0b2a","dweb:/ipfs/QmQrtDpdLvntxFnh9tqFVUiRQPHQpf5BZjGp9PhM558gvJ"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":73} \ No newline at end of file diff --git a/abis/RareERC1155Marketplace.json b/abis/RareERC1155Marketplace.json deleted file mode 100644 index 116a749..0000000 --- a/abis/RareERC1155Marketplace.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buy","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"cancelSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getDirectSaleConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Marketplace.DirectSaleConfig","components":[{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getERC1155ApprovalManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getMarketConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct MarketConfigV2.Config","components":[{"name":"networkBeneficiary","type":"address","internalType":"address"},{"name":"marketplaceSettings","type":"address","internalType":"contract IMarketplaceSettings"},{"name":"spaceOperatorRegistry","type":"address","internalType":"contract ISpaceOperatorRegistry"},{"name":"royaltyEngine","type":"address","internalType":"contract IRoyaltyEngineV1"},{"name":"payments","type":"address","internalType":"contract IPayments"},{"name":"approvedTokenRegistry","type":"address","internalType":"contract IApprovedTokenRegistry"},{"name":"stakingSettings","type":"address","internalType":"contract IStakingSettings"},{"name":"stakingRegistry","type":"address","internalType":"contract IRareStakingRegistry"},{"name":"erc20ApprovalManager","type":"address","internalType":"contract IERC20ApprovalManager"},{"name":"erc721ApprovalManager","type":"address","internalType":"contract IERC721ApprovalManager"}]}],"stateMutability":"view"},{"type":"function","name":"getSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Marketplace.SalePrice","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenAllowListConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Marketplace.AllowListConfig","components":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenMintsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"},{"name":"_marketplaceSettings","type":"address","internalType":"address"},{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"},{"name":"_royaltyEngine","type":"address","internalType":"address"},{"name":"_payments","type":"address","internalType":"address"},{"name":"_approvedTokenRegistry","type":"address","internalType":"address"},{"name":"_stakingSettings","type":"address","internalType":"address"},{"name":"_stakingRegistry","type":"address","internalType":"address"},{"name":"_erc20ApprovalManager","type":"address","internalType":"address"},{"name":"_erc721ApprovalManager","type":"address","internalType":"address"},{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mintDirectSale","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_proof","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"prepareMintDirectSale","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_startTime","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovedTokenRegistry","inputs":[{"name":"_approvedTokenRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setContractPaused","inputs":[{"name":"_isPaused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC1155ApprovalManager","inputs":[{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20ApprovalManager","inputs":[{"name":"_erc20ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC721ApprovalManager","inputs":[{"name":"_erc721ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketplaceSettings","inputs":[{"name":"_marketplaceSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkBeneficiary","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPayments","inputs":[{"name":"_payments","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyEngine","inputs":[{"name":"_royaltyEngine","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpaceOperatorRegistry","inputs":[{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingRegistry","inputs":[{"name":"_stakingRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingSettings","inputs":[{"name":"_stakingSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenAllowListConfig","inputs":[{"name":"_root","type":"bytes32","internalType":"bytes32"},{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeTo","inputs":[{"name":"newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60a08060405234620000e157306080526000549060ff8260081c166200008f575060ff8082160362000053575b6040516158199081620000e7823960805181818161056201528181610a1d0152612cfe0152f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a1386200002c565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8063176ab4401461026757806321ede0321461026257806328fbba031461025d5780632c740844146102585780633492e5a8146102535780633659cfe61461024e578063369679a4146102495780633f83e9e0146102445780634f1ef2861461023f57806352d1902d1461023a578063552f791d146102355780635a501f8f146102305780635faec4061461022b578063614bd944146102265780636afaf006146102215780636e2f4d8b1461021c578063715018a61461021757806376902b83146102125780637b2db4bb1461020d5780637f358230146102085780638760251a14610203578063882796f1146101fe5780638da5cb5b146101f957806399273b3d146101f4578063af231a58146101ef578063b187bd26146101ea578063b64843b2146101e5578063b8aefc63146101e0578063bf3d90f8146101db578063c7c83d17146101d6578063d5f339a8146101d1578063d7a9fb7c146101cc578063d80b23e3146101c7578063e4e87e3b146101c2578063f1035744146101bd578063f2fde38b146101b85763ff5c83a4146101b357600080fd5b6128da565b612849565b6127bf565b612735565b6126ab565b612621565b61249b565b612471565b6123f4565b61237d565b612294565b612270565b6121e6565b611bc3565b611b9a565b611b5e565b611b08565b611a7e565b6119e5565b61191c565b6118be565b6117cb565b61105f565b610f29565b610b8a565b610b16565b610aca565b610a0a565b610984565b610825565b610759565b61053b565b6104b1565b610427565b6103da565b610324565b610282565b6001600160a01b0381160361027d57565b600080fd5b3461027d5760006020366003190112610321576004356102a18161026c565b6102a961292a565b6102b2816153ef565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d5760405163ed56be5b60e01b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b61031590610864565b80f35b612a9c565b5080fd5b80fd5b3461027d5760006020366003190112610321576004356103438161026c565b61034b61292a565b6103548161542e565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d5760405163143df10960e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b606090600319011261027d576004356103c68161026c565b90602435906044356103d78161026c565b90565b3461027d57602061041e6103ed366103ae565b6001600160a01b03928316600090815261010986526040808220938252928652828120919093168352602052902090565b54604051908152f35b3461027d5760006020366003190112610321576004356104468161026c565b61044e61292a565b61045781615467565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d5760405163632c2a3160e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d5760006020366003190112610321576004356104d08161026c565b6104d861292a565b6104e1816154a2565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d5760405163148282a760e21b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d57602036600319011261027d576004356105588161026c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169190610591308414156129cb565b6105ae6000805160206157c4833981519152938285541614612a2c565b6105b661292a565b604051906105c3826108e9565b600082527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156105ff5750506105fd9150612b55565b005b6020600491604094939451928380926352d1902d60e01b825286165afa6000918161065a575b506106475760405162461bcd60e51b81528061064360048201612b06565b0390fd5b6105fd936106559114612aa8565b612be5565b61067c91925060203d8111610683575b610674818361091f565b810190612a8d565b9038610625565b503d61066a565b90815180825260208080930193019160005b8281106106aa575050505090565b83516001600160a01b03168552938101939281019260010161069c565b90815180825260208080930193019160005b8281106106e7575050505090565b835160ff16855293810193928101926001016106d9565b906103d7916020815260018060a01b03825116602082015260208201516040820152604082015160608201526080610744606084015160a08385015260c084019061068a565b9201519060a0601f19828503019101526106c7565b3461027d5761082160046107d7610812610772366103ae565b604095929594919480958151906107888261087c565b6060608060009384815284602082015284868201528280820152015260018060a01b03809916825261010c602052828220908252602052209060018060a01b0316600052602052604060002090565b8351946107e38661087c565b8154168552600181015460208601526002810154848601526108076003820161386c565b6060860152016138c4565b608083015251918291826106fe565b0390f35b3461027d57604036600319011261027d576105fd6004356108458161026c565b6024359061422f565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161087757604052565b61084e565b60a081019081106001600160401b0382111761087757604052565b61014081019081106001600160401b0382111761087757604052565b60e081019081106001600160401b0382111761087757604052565b604081019081106001600160401b0382111761087757604052565b602081019081106001600160401b0382111761087757604052565b606081019081106001600160401b0382111761087757604052565b90601f801991011681019081106001600160401b0382111761087757604052565b6040519061094d82610897565b565b6040519061094d826108b3565b6040519061094d8261087c565b6001600160401b03811161087757601f01601f191660200190565b604036600319011261027d5760043561099c8161026c565b602435906001600160401b03821161027d573660238301121561027d578160040135906109c882610969565b916109d6604051938461091f565b808352366024828601011161027d5760208160009260246105fd97018387013784010152612cf4565b600091031261027d57565b3461027d57600036600319011261027d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610a64576040516000805160206157c48339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b3461027d57604036600319011261027d57600435610ae78161026c565b60018060a01b031660005261010a60205260406000206024356000526020526020604060002054604051908152f35b3461027d57602061041e610b29366103ae565b6001600160a01b03928316600090815261010b86526040808220938252928652828120919093168352602052902090565b9181601f8401121561027d578235916001600160401b03831161027d576020808501948460051b01011161027d57565b3461027d5760e036600319011261027d576004803590610ba98261026c565b60243590604435610bb98161026c565b6084356064356001600160401b0360a43581811161027d57610bde9036908701610b5a565b9160c43590811161027d57610bf69036908801610b5a565b92909160ff61010d5416610e5157610c0d87614a8a565b610c1984848484614ecf565b610c228a614b3a565b8415610e40578515610e2f5760018060a01b038a1697610c5c6040918251627eeac760e11b81528c818d8180602097889533898401614012565b03915afa90811561031857600091610e12575b50898110610df2575061010554610cb7908390610c9c906001600160a01b03165b6001600160a01b031690565b8d8651808095819463e985e9c560e01b835233898401613420565b03915afa90811561031857600091610dc5575b5015610da7575090610d9689610d918d9e610d7a7fa98b0b2592a02d5bb9ee933ec6786e7ea38ed4539557337ebe429fe35802907e9d9e9f8c610da29c9b9a9998610d25610d1661095c565b6001600160a01b039098168852565b8601528d87860152610d38368a8a613451565b6060860152610d48368c8c6134b4565b6080860152610d6b339360018060a01b031660005261010c602052604060002090565b90600052602052604060002090565b9060018060a01b0316600052602052604060002090565b6140e5565b51968796339a88614184565b0390a4005b825163d65b0d6960e01b8152908190610643908f9033908401613420565b610de59150833d8511610deb575b610ddd818361091f565b8101906140d0565b38610cca565b503d610dd3565b906106438e928b8f8751958695636906ef1760e11b87523390870161409e565b610e299150833d851161068357610674818361091f565b38610c6f565b60405163c6b949a960e01b81528890fd5b6040516331cc996d60e11b81528890fd5b60405163ab35696f60e01b81528890fd5b81516001600160a01b031681526101408101929161094d91906020818101516001600160a01b0316908301526040818101516001600160a01b0316908301526060818101516001600160a01b0316908301526080818101516001600160a01b03169083015260a0818101516001600160a01b03169083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120908101516001600160a01b0316910152565b3461027d576000806003193601126103215761082190611053604051610f4e81610897565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015261010092808483015261012080920152611040610f96610940565b60fb546001600160a01b031681529360fc54610fc6906001600160a01b03165b6001600160a01b03166020870152565b60fd546001600160a01b0316604086015260fe546001600160a01b0316606086015260ff546001600160a01b0316608086015280546001600160a01b031660a0860152610101546001600160a01b031660c0860152610102546001600160a01b031660e0860152610103546001600160a01b031690850152565b610104546001600160a01b031690830152565b60405191829182610e62565b60c036600319011261027d5761107660043561026c565b61108160443561026c565b61108c60643561026c565b611094614048565b60ff61010d54166117475760a43515611735576001600160a01b0333604435821614611712576110c5606435614a8a565b6110d0600435614b3a565b6110fb604435610d7a602435610d6b60043560018060a01b031660005261010c602052604060002090565b600281015480156116db5781546001600160a01b03168360643516848216036116bb575060018201546084358103611699575060a43581106116775750604051627eeac760e11b81526020818061115a60243560443560048401614012565b038186600435165afa90811561031857600091611658575b5060a43581106115595750610105546111b79060209061119a906001600160a01b0316610c90565b6040518093819263e985e9c560e01b835260443560048401613420565b038186600435165afa90811561031857600091611639575b5015611619576111e360843560a435613522565b60fc549091906111fb906001600160a01b0316610c90565b6040516361fe24a960e11b81526004810184905290602090829060249082905afa908115610318576112429161123a916000916115fa575b508461403b565b606435614cff565b61125260a43560028301546142c7565b90816002820155611271600461126a6003840161386c565b92016138c4565b91156115c2575b604051627eeac760e11b81526020818061129a60243560443560048401614012565b038188600435165afa908115610318576000916115a3575b50604051627eeac760e11b815290602082806112d46024353360048401614012565b038189600435165afa91821561031857600092611582575b5060a4358110611559576101055461130c906001600160a01b0316610c90565b803b1561027d5760405163eb46c45b60e01b81526001600160a01b03600480358216908301526044803591909116602480840191909152339183019190915235606482015260a48035608483015260c090820152600060c482018190529091829081838160e4810103925af1801561031857611540575b50604051627eeac760e11b815290602082806113a760243560443560048401614012565b03818a600435165afa9182156103185760009261151b575b506113cd9060a435906142c7565b14908115916114a6575b50611462576113f292604435906064356024356004356146fa565b6040805160243581526001600160a01b036064351660208201526084359181019190915260a43560608201526004358216913391604435909116907f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d7886949080608081015b0390a46105fd6001606555565b604051638791019960e01b81526001600160a01b03600480358216908301526024803590830152604480359091169082015233606482015260a48035608483015290fd5b604051627eeac760e11b81529150602082806114c86024353360048401614012565b038189600435165afa918215610318576000926114f6575b506114ee9060a4359061403b565b1415386113d7565b6114ee9192506115149060203d60201161068357610674818361091f565b91906114e0565b6113cd9192506115399060203d60201161068357610674818361091f565b91906113bf565b8061154d61155392610864565b806109ff565b38611383565b61064390604051918291636906ef1760e11b835260a4356024356004356044356004870161409e565b61159c91925060203d60201161068357610674818361091f565b90386112ec565b6115bc915060203d60201161068357610674818361091f565b386112b2565b6115f56115f0604435610d7a602435610d6b60043560018060a01b031660005261010c602052604060002090565b6141c5565b611278565b611613915060203d60201161068357610674818361091f565b38611233565b60405163d65b0d6960e01b81528061064360043560443560048401613420565b611652915060203d602011610deb57610ddd818361091f565b386111cf565b611671915060203d60201161068357610674818361091f565b38611172565b6040516364b7fccd60e11b815260a43560048201526024810191909152604490fd5b604051631d6bbb8d60e11b815260843560048201526024810191909152604490fd5b604051632e834cbf60e11b81529081906106439060643560048401613420565b604051630bac95f560e21b81526001600160a01b036004803582169083015260248035908301526044803590911690820152606490fd5b60405163aac1ae8b60e01b81526044356001600160a01b03166004820152602490fd5b60405163c6b949a960e01b8152600490fd5b60405163ab35696f60e01b8152600490fd5b906103d7916020815260018060a01b0380835116602083015260208301511660408201526040820151606082015260608201516080820152608082015160a082015260c06117b660a084015160e08385015261010084019061068a565b9201519060e0601f19828503019101526106c7565b3461027d5760408060031936011261027d5761082190600435906117ee8261026c565b6118af60068280516117ff816108b3565b606060c0600092838152836020820152838582015283838201528360808201528260a0820152015260018060a01b038096168152610106602052818120602435825260205220611864845195611854876108b3565b8254166001600160a01b03168652565b600181015461187b906001600160a01b0316610fb6565b60028101548486015260038101546060860152600481015460808601526118a46005820161386c565b60a0860152016138c4565b60c08301525191829182611759565b3461027d57600080600319360112610321576118d861292a565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b3461027d5761016036600319011261027d576105fd60043561193d8161026c565b6024356119498161026c565b6044356119558161026c565b6064356119618161026c565b60843561196d8161026c565b60a4356119798161026c565b60c435916119868361026c565b60e435936119938561026c565b61010435956119a18761026c565b61012435976119af8961026c565b61014435996119bd8b61026c565b612f04565b606090600319011261027d576004356119da8161026c565b906024359060443590565b3461027d576119f3366119c2565b916119fe3382615734565b15611a5c57611a0d8282614c83565b60018060a01b03167f2f2a73977f9734e3b74f4efe888b44cdcca6903d8ab2b5be49c3969cc6cb1b62602060009483865261010a8252604086208587528252806040872055604051908152a380f35b604051600162bed83560e01b0319815290819061064390339060048401613420565b3461027d576000602036600319011261032157600435611a9d8161026c565b611aa561292a565b611aae816154e0565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d576040516362cd1f1560e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d57604036600319011261027d57600435611b258161026c565b60018060a01b031660005261010860205260406000206024356000526020526020604060002054604051908152f35b8015150361027d57565b3461027d57602036600319011261027d57600435611b7b81611b54565b611b8361292a565b61010d9060ff801983541691151516179055600080f35b3461027d57600036600319011261027d576033546040516001600160a01b039091168152602090f35b60c036600319011261027d576004803590611bdd8261026c565b6024359060443592611bee8461026c565b6064359360843560a4356001600160401b03811161027d57611c139036908601610b5a565b96611c1c614048565b60ff61010d54166121d557611c50611c4b88610d6b8860018060a01b0316600052610106602052604060002090565b613fb5565b805190986001600160a01b039390918416156121ba578951611c8390611c7f906001600160a01b031689615734565b1590565b61218f5790611c9491338a896155f4565b821561217e576001600160a01b038516600090815261010860205260409020611cbe908890610d6b565b54611ce433610d7a8a610d6b8a60018060a01b0316600052610109602052604060002090565b548115158061216c575b61211e5750506001600160a01b038516600090815261010a60205260409020611d18908890610d6b565b54611d3e33610d7a8a610d6b8a60018060a01b031660005261010b602052604060002090565b548115158061210d575b6120c65750506080880151801515806120bd575b6120995750606088015142811161207c57506040978881019081518084036120585750611d8886614a8a565b6020818101519097906001600160a01b03168588168682160361203c5750611db08487613522565b90888c855115600014611faa575050909192939434611f9a579088878d8d6000611e669a999897965b6001600160a01b038716600090815261010860205260409020611dfd908490610d6b565b54611f63575b6001600160a01b038716600090815261010a60205260409020611e27908490610d6b565b54611f2d575b86169e8f93519b8c9586948593632baf2acb60e01b855233908501604091949392606082019560018060a01b0316825260208201520152565b03925af1938415610318577f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c9961145597611eb796611f0f575b505051611ee6575b5050516001600160a01b031690565b975193849333998590606092959493608083019660018060a01b03809316845260208401521660408201520152565b8251611f0892906001600160a01b031660a0850151918a60c0870151946143ba565b3880611ea8565b81611f2592903d1061068357610674818361091f565b503880611ea0565b611f5233610d7a85610d6b8b60018060a01b031660005261010b602052604060002090565b611f5c815461402d565b9055611e2d565b611f8833610d7a85610d6b8b60018060a01b0316600052610109602052604060002090565b611f9386825461403b565b9055611e03565b8b5163429465b160e01b81528a90fd5b60fc54611fe7929185918e90611fc8906001600160a01b0316610c90565b91516361fe24a960e11b81529081019283529384928391829160200190565b03915afa8015610318578d8d6000611e669a61201a8f968f908f9761201491869161201f575b508b61403b565b90614cff565b611dd9565b61203691508a3d8c1161068357610674818361091f565b3861200d565b8b51632e834cbf60e11b8152908190610643908a838e01613420565b8a51631d6bbb8d60e11b8152808a0185815260208101929092529081906040010390fd5b60405163456afd0b60e01b81528088019182529081906020010390fd5b60408051635bdd08f560e01b81528089018681526020810193909352918291010390fd5b50808411611d5c565b6040805163ae3586c560e01b81526001600160a01b038916818b01908152602081018c905233928101929092526060820192909252608081019290925290819060a0010390fd5b50816121188261402d565b11611d48565b60408051636d03a2e560e01b81526001600160a01b038916818b01908152602081018c9052339281019290925260608201879052608082019290925260a081019290925290819060c0010390fd5b5081612178868361403b565b11611cee565b60405163c6b949a960e01b81528690fd5b8951604051600162bed83560e01b03198152908190610643906001600160a01b03168a838d01613420565b604051634ed1072f60e11b8152806106438b8a838d01614012565b60405163ab35696f60e01b81528690fd5b3461027d5760006020366003190112610321576004356122058161026c565b61220d61292a565b61221681615522565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d57604051631d1d389760e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d57600036600319011261027d57602060ff61010d54166040519015158152f35b3461027d57608036600319011261027d576004356044356024356122b78261026c565b606435926122c53384615734565b1561235e57907fa3f36b03a37e1948b5a4d52ddc1d9f62ab7d4e887e3a0a03e0c68d40f6075f3f916122f78585614c83565b61234c60405194612307866108ce565b82865283602087015260018060a01b0316948560005261010760205261233b87604060002090600052602052604060002090565b906020600191805184550151910155565b604080519182526020820192909252a3005b604051600162bed83560e01b0319815280610643338660048401613420565b3461027d5761238b366119c2565b916123963382615734565b15611a5c576123a58282614c83565b60018060a01b03167feead0384c6f48c02c0099b2433359d43617492f06d8e3a59cbe786b9970f7e6160206000948386526101088252604086208587528252806040872055604051908152a380f35b3461027d5760408060031936011261027d578060206004356124158161026c565b8251612420816108ce565b600080825292018290526001600160a01b03168152610107602090815282822060243583529052208151612453816108ce565b60206001835493848452015491019081528251918252516020820152f35b3461027d57600036600319011261027d57610105546040516001600160a01b039091168152602090f35b3461027d5761010036600319011261027d576004356124b98161026c565b6024356044356124c88161026c565b6084356064356001600160401b0360a43560c43582811161027d576124f1903690600401610b5a565b909260e43590811161027d5761250b903690600401610b5a565b93909260ff61010d541661174757612526611c7f338c615734565b6126025791610da293917f4c048dfd080dcfa2cccc41ef603e5f0ed6602ca215a41581d653aadf841a560b979695936125e78a6125e28d8f610d6b9061256b85614a8a565b6125778b8b8b8b614ecf565b6125818382614c83565b61259561258c61094f565b33815295610fb6565b8c60408601528d60608601528660808601526125b2368a8a613451565b60a08601526125c2368c8c6134b4565b60c08601526001600160a01b031660009081526101066020526040902090565b6136ca565b604051339c6001600160a01b03169a90988998909189613826565b604051600162bed83560e01b0319815280610643338d60048401613420565b3461027d5760006020366003190112610321576004356126408161026c565b61264861292a565b612651816155d2565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d576040516328b80cf560e21b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d5760006020366003190112610321576004356126ca8161026c565b6126d261292a565b6126db816155d2565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d57604051631f1afd0d60e01b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d5760006020366003190112610321576004356127548161026c565b61275c61292a565b61276581615555565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d57604051632867932b60e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d5760006020366003190112610321576004356127de8161026c565b6127e661292a565b6127ef81615597565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d57604051632d8b49e160e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d57602036600319011261027d576004356128668161026c565b61286e61292a565b6001600160a01b03811615612886576105fd90612982565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461027d57602036600319011261027d576004356128f78161026c565b6128ff61292a565b612908816155d2565b61010580546001600160a01b0319166001600160a01b03909216919091179055005b6033546001600160a01b0316330361293e57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b156129d257565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b15612a3357565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b9081602091031261027d575190565b6040513d6000823e3d90fd5b15612aaf57565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b60809060208152602e60208201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960408201526d6f6e206973206e6f74205555505360901b60608201520190565b803b15612b8a576000805160206157c483398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b90612bef82612b55565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590612c99575b612c31575050565b612c969160008060405193612c4585610904565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020860152660819985a5b195960ca1b6040860152602081519101845af4612c90612dff565b91612e2f565b50565b506000612c29565b90612cab82612b55565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590612cec57612c31575050565b506001612c29565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169290612d2d308514156129cb565b612d4a6000805160206157c4833981519152948286541614612a2c565b612d5261292a565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612d8857505061094d9150612b55565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181612ddf575b50612dcc5760405162461bcd60e51b81528061064360048201612b06565b61094d93612dda9114612aa8565b612ca1565b612df891925060203d811161068357610674818361091f565b9038612dae565b3d15612e2a573d90612e1082610969565b91612e1e604051938461091f565b82523d6000602084013e565b606090565b91929015612e915750815115612e43575090565b3b15612e4c5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015612ea45750805190602001fd5b60405162461bcd60e51b8152602060048201529081906106439060248301905b919082519283825260005b848110612ef0575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612ecf565b989694929099979593916000549a60ff8c60081c1615809c819d61302a575b811561300a575b5015612fae57612f509a8c612f47600160ff196000541617600055565b612f95576131f0565b612f5657565b612f6661ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b612fa961010061ff00196000541617600055565b6131f0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b1591508161301c575b5038612f2a565b6001915060ff161438613015565b600160ff8216109150612f23565b519061094d8261026c565b908161014091031261027d57613057610940565b9061306181613038565b825261306f60208201613038565b602083015261308060408201613038565b604083015261309160608201613038565b60608301526130a260808201613038565b60808301526130b360a08201613038565b60a08301526130c460c08201613038565b60c08301526130d560e08201613038565b60e08301526101006130e8818301613038565b908301526130fa610120809201613038565b9082015290565b805160fb80546001600160a01b03199081166001600160a01b0393841617909155602083015160fc80548316918416919091179055604083015160fd80548316918416919091179055606083015160fe80548316918416919091179055608083015160ff8054831691841691909117905560a08301516101008054831691841691909117815560c08401516101018054841691851691909117905560e08401516101028054841691851691909117905583015161010380549092169083161790556101209091015161094d911661010480546001600160a01b0319166001600160a01b03909216919091179055565b956132cb979293959a98949996613206816154a2565b61320f836153ef565b613218856154e0565b6132218761542e565b61322a8b615522565b6132338c615555565b61323c82615597565b61324584615467565b61324e866155d2565b613257886155d2565b6132608a6155d2565b60405163ef8c824960e01b81526001600160a01b039182166004820152928116602484015293841660448301529483166064820152978216608489015297811660a488015291821660c487015295811660e48601529485166101048501528416610124840152919291565b61014080846101448173__$c98ca6a62396e5a7a1471db151198a1f31$__5af480156103185761332b9461330892600092613343575b5050613101565b6101058054919092166001600160a01b03166001600160a01b0319909116179055565b6133336133d0565b61333b613404565b61094d6133f3565b6133629250803d10613369575b61335a818361091f565b810190613043565b3880613301565b503d613350565b1561337757565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b6133ea60ff60005460081c166133e581613370565b613370565b61094d33612982565b61094d60ff60005460081c16613370565b61341960ff60005460081c166133e581613370565b6001606555565b6001600160a01b0391821681529116602082015260400190565b6001600160401b0381116108775760051b60200190565b929161345c8261343a565b9161346a604051938461091f565b829481845260208094019160051b810192831161027d57905b8282106134905750505050565b838091833561349e8161026c565b815201910190613483565b60ff81160361027d57565b92916134bf8261343a565b916134cd604051938461091f565b829481845260208094019160051b810192831161027d57905b8282106134f35750505050565b8380918335613501816134a9565b8152019101906134e6565b634e487b7160e01b600052601160045260246000fd5b8181029291811591840414171561353557565b61350c565b818110613545575050565b6000815560010161353a565b90600160401b81116108775781549080835581811061356f57505050565b61094d926000526020600020918201910161353a565b90600160401b81116108775781548183558082106135a257505050565b61094d92600052601f6020600020918180850160051c84019416806135ce575b500160051c019061353a565b600019908186019182549160200360031b1c169055386135c2565b9080516001600160401b038111610877576136048184613585565b613618602080930193600052602060002090565b908060051c9260005b8481106136945750601f198216909103908161363f575b5050505050565b9390600094855b82811061365d575050505001553880808080613638565b9091929582613689600192846136748b5160ff1690565b919060ff809160031b9316831b921b19161790565b970193929101613646565b6000805b8381106136ac575084820155600101613621565b9690836136c16001928a613674865160ff1690565b92019701613698565b815181546001600160a01b0319166001600160a01b03918216178255909190602082810151600185810180549285166001600160a01b03166001600160a01b03199093169290921790915591604084015160028601556060840151600386015560808401516004860155600585019060a0850151928351936001600160401b03851161087757819061375c8686613551565b0192600052806000209160005b858110613789575050505050505090600660c061094d93015191016135e9565b8451821684820155938201938601613769565b91908082526020809201929160005b8281106137b9575050505090565b90919293828060019287356137cd8161026c565b848060a01b031681520195019101929190926137ab565b91908082526020809201929160005b828110613801575050505090565b90919293828060019260ff8835613817816134a9565b168152019501939291016137f3565b9694926103d798969261385e959260018060a01b0316895260208901526040880152606087015260c0608087015260c086019161379c565b9260a08185039101526137e4565b9060405191828154918282526020928383019160005283600020936000905b8282106138a15750505061094d9250038361091f565b85546001600160a01b03168452600195860195889550938101939091019061388b565b906040805180938054926138eb6138df858560209181520190565b92600052602060002090565b9360005b81601f820110613d075761094d955492828210613cf1575b828210613cd7575b828210613cbd575b828210613ca3575b828210613c89575b828210613c6f575b828210613c55575b828210613c3b575b828210613c24575b50818110613c0c575b818110613bf4575b818110613bdc575b818110613bc4575b818110613bac575b818110613b94575b818110613b7c575b818110613b64575b818110613b4c575b818110613b34575b818110613b1c575b818110613b04575b818110613aec575b818110613ad4575b818110613abc575b818110613aa4575b818110613a8c575b818110613a74575b818110613a5c575b818110613a44575b818110613a2c575b818110613a14575b10613a06575b50038361091f565b60f81c8152602001386139fe565b60f083901c60ff1684529260019060200193016139f8565b60e883901c60ff1684529260019060200193016139f0565b60e083901c60ff1684529260019060200193016139e8565b60d883901c60ff1684529260019060200193016139e0565b60d083901c60ff1684529260019060200193016139d8565b60c883901c60ff1684529260019060200193016139d0565b60c083901c60ff1684529260019060200193016139c8565b60b883901c60ff1684529260019060200193016139c0565b60b083901c60ff1684529260019060200193016139b8565b60a883901c60ff1684529260019060200193016139b0565b60a083901c60ff1684529260019060200193016139a8565b609883901c60ff1684529260019060200193016139a0565b609083901c60ff168452926001906020019301613998565b608883901c60ff168452926001906020019301613990565b608083901c60ff168452926001906020019301613988565b607883901c60ff168452926001906020019301613980565b607083901c60ff168452926001906020019301613978565b606883901c60ff168452926001906020019301613970565b606083901c60ff168452926001906020019301613968565b605883901c60ff168452926001906020019301613960565b605083901c60ff168452926001906020019301613958565b604883901c60ff168452926001906020019301613950565b83901c60ff16845292600190602001930138613947565b603884901c60ff168552909360019060200194019061393f565b603084901c60ff1685529093600190602001940190613937565b602884901c60ff168552909360019060200194019061392f565b602084811c60ff1686529194909160019101940190613927565b601884901c60ff168552909360019060200194019061391f565b601084901c60ff1685529093600190602001940190613917565b600884901c60ff168552909360019060200194019061390f565b60ff841685529093600190602001940190613907565b919350916001610400602092613fa58854613f9a60ff613d2b8582851660ff169052565b613f73613dd8613f238d613ed389613e838e613d508184018a8d60081c1660ff169052565b613d638584018a8d60101c1660ff169052565b888b610200606095613d7e878201858560181c1660ff169052565b613d936080958585888501921c1660ff169052565b613e3960a097613dac898401878760281c1660ff169052565b613de960c09b613dc58d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b613dfe6101208401878760481c1660ff169052565b613e136101408401878760501c1660ff169052565b613e286101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b613e4e6101a08201858560681c1660ff169052565b613e636101c08201858560701c1660ff169052565b613e786101e08201858560781c1660ff169052565b01921c1660ff169052565b613e986102208c01888b60881c1660ff169052565b613ead6102408c01888b60901c1660ff169052565b613ec26102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b613ee86102a08a01868960a81c1660ff169052565b613efd6102c08a01868960b01c1660ff169052565b613f126102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b613f386103208801848760c81c1660ff169052565b613f4d6103408801848760d01c1660ff169052565b613f626103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b613f886103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b01950191019186939194926138ef565b90604051613fc2816108b3565b60c061400d6006839560018060a01b0380825416865260018201541660208601526002810154604086015260038101546060860152600481015460808601526118a46005820161386c565b910152565b6001600160a01b039091168152602081019190915260400190565b906001820180921161353557565b9190820180921161353557565b600260655414614059576002606555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b9081602091031261027d57516103d781611b54565b815181546001600160a01b0319166001600160a01b0391821617825590919060208083015191600192838601556040840151600286015560038501906060850151928351936001600160401b0385116108775781906141448686613551565b0192600052806000209160005b8581106141715750505050505050906004608061094d93015191016135e9565b8451821684820155938201938601614151565b959391926141b7936103d798969260018060a01b031688526020880152604087015260a0606087015260a086019161379c565b9260808185039101526137e4565b600460009182815582600182015582600282015560038101805484825580614215575b50500190815490808355816141fc57505050565b60208161094d94601f935220910160051c81019061353a565b614228918552602085209081019061353a565b38806141e8565b6001600160a01b0316600081815261010c602081815260408084208685528252808420338552909152822060020154156142b2578282526020908152604080832085845282528083203360009081529252902061428b906141c5565b7f46227bd805037a939224e05cd991a64cb464f4b5c5317858af210838e59ce390339180a4565b50505050565b60001981019190821161353557565b9190820391821161353557565b906040516142e1816108ce565b602060018294805484520154910152565b9081602091031261027d57516103d7816134a9565b60405190614314826108ce565b6001825260203681840137565b6040519061432e82610904565b600282526040366020840137565b634e487b7160e01b600052603260045260246000fd5b80511561435f5760200190565b61433c565b80516001101561435f5760400190565b805182101561435f5760209160051b010190565b906143928261343a565b61439f604051918261091f565b82815280926143b0601f199161343a565b0190602036910137565b919594939286926143cc828985614846565b60fd546143e1906001600160a01b0316610c90565b604051635dc22eff60e01b81526001600160a01b03841660048201526020928382602481865afa918215610318576000926145cf575b506000911561454b575050604051632260494f60e01b81526001600160a01b039390931660048401529091908290829060249082905afa9081156103185760ff9260009261451e575b50505b1695606487116144fe5761448561447e61094d979883613522565b6064900490565b9081614493575b505061501d565b816144f79294506144a3916142c7565b926144ac614307565b60fb546144dd906144c5906001600160a01b0316610c90565b6144ce83614352565b6001600160a01b039091169052565b6144e5614307565b91806144f084614352565b528461517e565b388061448c565b60405163d6849ff160e01b81526004810188905260646024820152604490fd5b61453d9250803d10614544575b614535818361091f565b8101906142f2565b3880614460565b503d61452b565b60fc549194506145979250839161456a906001600160a01b0316610c90565b60405163b28a7bad60e01b81526001600160a01b0390921660048301529092839190829081906024820190565b03915afa9182156103185760ff93926145b2575b5050614463565b6145c89250803d1061454457614535818361091f565b38806145ab565b6145e7919250843d8611610deb57610ddd818361091f565b9038614417565b81601f8201121561027d578051916146058361343a565b92614613604051948561091f565b808452602092838086019260051b82010192831161027d578301905b82821061463d575050505090565b8151815290830190830161462f565b91909160408184031261027d578051926001600160401b039384811161027d5782019381601f8601121561027d5784516146858161343a565b90614693604051928361091f565b808252602096878084019260051b8201019185831161027d5788809201905b8382106146d257505050509483015190811161027d576103d792016145ee565b82809183516146e08161026c565b8152019101906146b2565b60001981146135355760010190565b95919692949093859461470f8692878b614846565b60fe54614724906001600160a01b0316610c90565b604051637a99dc0160e11b81526001600160a01b039990991660048a01526024890191909152604488019690965260009586908890606490829084905af19788156103185786978799614807575b50865b89518810156147a25761479661479c9161478f8a8d614374565b519061403b565b976146eb565b96614775565b929598919497909396508883116147e75761094d9798836147c7575b5050505061501d565b836147de9496506147d7916142c7565b948461517e565b388080806147be565b6040516344783bd360e11b815260048101849052602481018a9052604490fd5b9098506148279197503d8088833e61481f818361091f565b81019061464c565b9690969738614772565b9081602091031261027d57516103d78161026c565b60fc5490929061485e906001600160a01b0316610c90565b6040516361fe24a960e11b81526004810184905260209490918590839060249082905afa918215610318576148ce948691600094614a6b575b50610101546148ae906001600160a01b0316610c90565b604051808098819463470d6ed960e11b8352600483019190602083019252565b03915afa93841561031857600094614a4c575b50818411614a2c578115613638576148f7614321565b9261496186614910610c9060fb5460018060a01b031690565b9261491e846144ce89614352565b61010254614934906001600160a01b0316610c90565b60405163e286ef3360e01b81526001600160a01b0390921660048301529092839190829081906024820190565b03915afa9081156103185761094d976000926149ff575b506001600160a01b0391614992915082166144ce87614364565b6149ab61499e86614364565b516001600160a01b031690565b166149ea576149be905b6144ce85614364565b6149c6614321565b936149d181846142c7565b6149da86614352565b526149e485614364565b5261517e565b506149be6149fa61499e85614364565b6149b5565b614a1e9250803d10614a25575b614a16818361091f565b810190614831565b3880614978565b503d614a0c565b604051639bdfbb5160e01b81526004810183905260248101859052604490fd5b614a64919450853d871161068357610674818361091f565b92386148e1565b614a83919450823d841161068357610674818361091f565b9238614897565b6001600160a01b038116151580614ac6575b614aa35750565b60405163cd5f748960e01b81526001600160a01b03919091166004820152602490fd5b5061010054614add906001600160a01b0316610c90565b604051632d5ad3d560e01b81526001600160a01b038316600482015290602090829060249082905afa90811561031857600091614b1c575b5015614a9c565b614b34915060203d8111610deb57610ddd818361091f565b38614b15565b803b158015614b6d575b614b4b5750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b808352602482015260248152614b9681610904565b519084617530fa6000513d82614bea575b5081614be0575b5080614bd0575b80614bc1575b15614b44565b50614bcb81614c53565b614bbb565b50614bda81614bf6565b15614bb5565b9050151538614bae565b60201115915038614ba7565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b602482015260248152614c2681610904565b5191617530fa6000513d82614c47575b5081614c40575090565b9050151590565b60201115915038614c36565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152614c2681610904565b6040516001620b695760e21b03198152600481018390526020816024816001600160a01b0386165afa90811561031857600091614ce1575b5015614cc5575050565b610643604051928392632be7c7f360e01b845260048401614012565b614cf9915060203d811161068357610674818361091f565b38614cbb565b6001600160a01b0381168015614e7f5734614e6d576040516370a0823160e01b808252306004830152602092908383602481855afa92831561031857600093614e4e575b5061010354614d5a906001600160a01b0316610c90565b90813b1561027d57604051630aed65f560e11b81526001600160a01b038716600482015233602482015230604482015260648101889052916000908390608490829084905af1918215610318578592614e3b575b5060405190815230600482015291829060249082905afa90811561031857614ddf93600092614e1e575b50506142c7565b828103614deb57505050565b604051636ff596f360e01b81526001600160a01b0392909216600483015260248201929092526044810191909152606490fd5b614e349250803d1061068357610674818361091f565b3880614dd8565b8061154d614e4892610864565b38614dae565b614e66919350843d861161068357610674818361091f565b9138614d43565b60405163d9efa38960e01b8152600490fd5b5050803403614e8b5750565b6040516305e4640960e21b81526004810191909152346024820152604490fd5b919081101561435f5760051b0190565b356103d78161026c565b356103d7816134a9565b91929092831561500b5760058411614feb57818403614fc95792919060009384935b828510614f2957505050505060648103614f085750565b6040516357623e5560e01b8152600481019190915260646024820152604490fd5b9091929394614f44610c90614f3f888589614eab565b614ebb565b15614fb057614f65614f5f614f5a888787614eab565b614ec5565b60ff1690565b15614f9757614f88614f8e91614f82614f5f614f5a8a8989614eab565b9061403b565b956146eb565b93929190614ef1565b60405163d4c1893560e01b815260048101879052602490fd5b6040516306f5730d60e41b815260048101879052602490fd5b50604051632db4fb2960e01b8152600481018490526024810191909152604490fd5b6040516366a4d05560e01b81526004810185905260056024820152604490fd5b60405163d218e6a560e01b8152600490fd5b9192939083518551908181036150d05750506150398451614388565b92819260005b8651808210156150c15761505389916142b8565b82036150745750808561506961506f9389614374565b526146eb565b61503f565b819561509f61447e615099614f5f61509261506f976150bb97614374565b5160ff1690565b88613522565b6150a9888a614374565b526150b48789614374565b51906142c7565b946146eb565b5050955061094d94925061517e565b604051632db4fb2960e01b815260048101919091526024810191909152604490fd5b6040810190604081528251809252606081019160208094019060005b818110615150575050508281830391015281808451928381520193019160005b82811061513c575050505090565b83518552938101939281019260010161512e565b82516001600160a01b03168552938501939185019160010161510e565b9060206103d7928181520190612ec4565b9192939083518551908181036152bf575050600092835b86518510156151b5576150bb6151af9161478f878a614374565b93615195565b90929491935083810361529e57506001600160a01b0391821692831561521c575060005b8151811015615214578061520a6151f661499e61520f9486614374565b85615201848b614374565b519116876152e1565b6146eb565b6151d9565b505050509050565b60009495925084935061525e61526c61523f610c9060ff5460018060a01b031690565b94604051928391602083019663c176e63960e01b8852602484016150f2565b03601f19810183528261091f565b51925af1615278612dff565b90156152815750565b604051634c0fe4a160e11b8152908190610643906004830161516d565b604051633bc6f52760e21b8152600481018590526024810191909152604490fd5b6040516345e8c29760e11b815260048101919091526024810191909152604490fd5b615367916000806040519361531b8561530d6020998a83019763a9059cbb60e01b895260248401614012565b03601f19810187528661091f565b60018060a01b03169260405194615331866108ce565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af1612c90612dff565b8051908282159283156153d7575b505050156153805750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b6153e793508201810191016140d0565b388281615375565b6001600160a01b0316156153ff57565b60405163602d6df560e01b8152734d41524b4554504c4143455f53455454494e475360601b6004820152602490fd5b6001600160a01b03161561543e57565b60405163602d6df560e01b81526d524f59414c54595f454e47494e4560901b6004820152602490fd5b6001600160a01b03161561547757565b60405163602d6df560e01b81526f5354414b494e475f524547495354525960801b6004820152602490fd5b6001600160a01b0316156154b257565b60405163602d6df560e01b8152724e4554574f524b5f42454e454649434941525960681b6004820152602490fd5b6001600160a01b0316156154f057565b60405163602d6df560e01b81527653504143455f4f50455241544f525f524547495354525960481b6004820152602490fd5b6001600160a01b03161561553257565b60405163602d6df560e01b8152675041594d454e545360c01b6004820152602490fd5b6001600160a01b03161561556557565b60405163602d6df560e01b815276415050524f5645445f544f4b454e5f524547495354525960481b6004820152602490fd5b6001600160a01b0316156155a757565b60405163602d6df560e01b81526f5354414b494e475f53455454494e475360801b6004820152602490fd5b6001600160a01b0316156155e257565b60405163c49074af60e01b8152600490fd5b6001600160a01b031660009081526101076020908152604080832093835292905220909290615622906142d4565b90815115801561569b575b6142b25761567192611c7f9260405160208101906156668161525e8a856014916bffffffffffffffffffffffff199060601b1681520190565b5190209051906156a9565b6156785750565b60405163e2cf60cb60e01b81526001600160a01b03919091166004820152602490fd5b50602082015142101561562d565b92909291600080925b8084106156c157505050501490565b90919293615704906156d4868487614eab565b3580821161570c576040805160208101938452908101919091526156fb816060810161525e565b519020946146eb565b9291906156b2565b6040805160208101928352908101929092529061572c816060810161525e565b5190206150bb565b6000806040516020810190638da5cb5b60e01b825260048152615756816108ce565b5190845afa90615764612dff565b911580156157b8575b61579657508060208061578593518301019101614831565b6001600160a01b0390811691161490565b60405163915b8f1d60e01b81526001600160a01b039091166004820152602490fd5b50602082511061576d56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212206776b47b7048559706408dd60a0fe4349c5977fdd54c839bc5171d00c2354a2564736f6c63430008120033","sourceMap":"1379:50771:95:-:0;;;;;;;1332:4:27;1324:13;;6007::26;1379:50771:95;;;;;;;;;;;;;;6078:31:26;6074:139;;-1:-1:-1;1379:50771:95;;;;;;;;1324:13:27;1379:50771:95;;;;;;;;;;;;;;;;6074:139:26;1379:50771:95;;;;;;6007:13:26;1379:50771:95;6174:28:26;1379:50771:95;;;;;;6174:28:26;6074:139;;;1379:50771:95;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;","linkReferences":{"src/v2/utils/MarketConfigV2.sol":{"MarketConfigV2":[{"start":924,"length":20},{"start":1086,"length":20},{"start":1345,"length":20},{"start":1483,"length":20},{"start":7064,"length":20},{"start":8960,"length":20},{"start":10043,"length":20},{"start":10181,"length":20},{"start":10319,"length":20},{"start":10457,"length":20},{"start":13245,"length":20}]}}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c8063176ab4401461026757806321ede0321461026257806328fbba031461025d5780632c740844146102585780633492e5a8146102535780633659cfe61461024e578063369679a4146102495780633f83e9e0146102445780634f1ef2861461023f57806352d1902d1461023a578063552f791d146102355780635a501f8f146102305780635faec4061461022b578063614bd944146102265780636afaf006146102215780636e2f4d8b1461021c578063715018a61461021757806376902b83146102125780637b2db4bb1461020d5780637f358230146102085780638760251a14610203578063882796f1146101fe5780638da5cb5b146101f957806399273b3d146101f4578063af231a58146101ef578063b187bd26146101ea578063b64843b2146101e5578063b8aefc63146101e0578063bf3d90f8146101db578063c7c83d17146101d6578063d5f339a8146101d1578063d7a9fb7c146101cc578063d80b23e3146101c7578063e4e87e3b146101c2578063f1035744146101bd578063f2fde38b146101b85763ff5c83a4146101b357600080fd5b6128da565b612849565b6127bf565b612735565b6126ab565b612621565b61249b565b612471565b6123f4565b61237d565b612294565b612270565b6121e6565b611bc3565b611b9a565b611b5e565b611b08565b611a7e565b6119e5565b61191c565b6118be565b6117cb565b61105f565b610f29565b610b8a565b610b16565b610aca565b610a0a565b610984565b610825565b610759565b61053b565b6104b1565b610427565b6103da565b610324565b610282565b6001600160a01b0381160361027d57565b600080fd5b3461027d5760006020366003190112610321576004356102a18161026c565b6102a961292a565b6102b2816153ef565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d5760405163ed56be5b60e01b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b61031590610864565b80f35b612a9c565b5080fd5b80fd5b3461027d5760006020366003190112610321576004356103438161026c565b61034b61292a565b6103548161542e565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d5760405163143df10960e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b606090600319011261027d576004356103c68161026c565b90602435906044356103d78161026c565b90565b3461027d57602061041e6103ed366103ae565b6001600160a01b03928316600090815261010986526040808220938252928652828120919093168352602052902090565b54604051908152f35b3461027d5760006020366003190112610321576004356104468161026c565b61044e61292a565b61045781615467565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d5760405163632c2a3160e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d5760006020366003190112610321576004356104d08161026c565b6104d861292a565b6104e1816154a2565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d5760405163148282a760e21b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d57602036600319011261027d576004356105588161026c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169190610591308414156129cb565b6105ae6000805160206157c4833981519152938285541614612a2c565b6105b661292a565b604051906105c3826108e9565b600082527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156105ff5750506105fd9150612b55565b005b6020600491604094939451928380926352d1902d60e01b825286165afa6000918161065a575b506106475760405162461bcd60e51b81528061064360048201612b06565b0390fd5b6105fd936106559114612aa8565b612be5565b61067c91925060203d8111610683575b610674818361091f565b810190612a8d565b9038610625565b503d61066a565b90815180825260208080930193019160005b8281106106aa575050505090565b83516001600160a01b03168552938101939281019260010161069c565b90815180825260208080930193019160005b8281106106e7575050505090565b835160ff16855293810193928101926001016106d9565b906103d7916020815260018060a01b03825116602082015260208201516040820152604082015160608201526080610744606084015160a08385015260c084019061068a565b9201519060a0601f19828503019101526106c7565b3461027d5761082160046107d7610812610772366103ae565b604095929594919480958151906107888261087c565b6060608060009384815284602082015284868201528280820152015260018060a01b03809916825261010c602052828220908252602052209060018060a01b0316600052602052604060002090565b8351946107e38661087c565b8154168552600181015460208601526002810154848601526108076003820161386c565b6060860152016138c4565b608083015251918291826106fe565b0390f35b3461027d57604036600319011261027d576105fd6004356108458161026c565b6024359061422f565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161087757604052565b61084e565b60a081019081106001600160401b0382111761087757604052565b61014081019081106001600160401b0382111761087757604052565b60e081019081106001600160401b0382111761087757604052565b604081019081106001600160401b0382111761087757604052565b602081019081106001600160401b0382111761087757604052565b606081019081106001600160401b0382111761087757604052565b90601f801991011681019081106001600160401b0382111761087757604052565b6040519061094d82610897565b565b6040519061094d826108b3565b6040519061094d8261087c565b6001600160401b03811161087757601f01601f191660200190565b604036600319011261027d5760043561099c8161026c565b602435906001600160401b03821161027d573660238301121561027d578160040135906109c882610969565b916109d6604051938461091f565b808352366024828601011161027d5760208160009260246105fd97018387013784010152612cf4565b600091031261027d57565b3461027d57600036600319011261027d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610a64576040516000805160206157c48339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b3461027d57604036600319011261027d57600435610ae78161026c565b60018060a01b031660005261010a60205260406000206024356000526020526020604060002054604051908152f35b3461027d57602061041e610b29366103ae565b6001600160a01b03928316600090815261010b86526040808220938252928652828120919093168352602052902090565b9181601f8401121561027d578235916001600160401b03831161027d576020808501948460051b01011161027d57565b3461027d5760e036600319011261027d576004803590610ba98261026c565b60243590604435610bb98161026c565b6084356064356001600160401b0360a43581811161027d57610bde9036908701610b5a565b9160c43590811161027d57610bf69036908801610b5a565b92909160ff61010d5416610e5157610c0d87614a8a565b610c1984848484614ecf565b610c228a614b3a565b8415610e40578515610e2f5760018060a01b038a1697610c5c6040918251627eeac760e11b81528c818d8180602097889533898401614012565b03915afa90811561031857600091610e12575b50898110610df2575061010554610cb7908390610c9c906001600160a01b03165b6001600160a01b031690565b8d8651808095819463e985e9c560e01b835233898401613420565b03915afa90811561031857600091610dc5575b5015610da7575090610d9689610d918d9e610d7a7fa98b0b2592a02d5bb9ee933ec6786e7ea38ed4539557337ebe429fe35802907e9d9e9f8c610da29c9b9a9998610d25610d1661095c565b6001600160a01b039098168852565b8601528d87860152610d38368a8a613451565b6060860152610d48368c8c6134b4565b6080860152610d6b339360018060a01b031660005261010c602052604060002090565b90600052602052604060002090565b9060018060a01b0316600052602052604060002090565b6140e5565b51968796339a88614184565b0390a4005b825163d65b0d6960e01b8152908190610643908f9033908401613420565b610de59150833d8511610deb575b610ddd818361091f565b8101906140d0565b38610cca565b503d610dd3565b906106438e928b8f8751958695636906ef1760e11b87523390870161409e565b610e299150833d851161068357610674818361091f565b38610c6f565b60405163c6b949a960e01b81528890fd5b6040516331cc996d60e11b81528890fd5b60405163ab35696f60e01b81528890fd5b81516001600160a01b031681526101408101929161094d91906020818101516001600160a01b0316908301526040818101516001600160a01b0316908301526060818101516001600160a01b0316908301526080818101516001600160a01b03169083015260a0818101516001600160a01b03169083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120908101516001600160a01b0316910152565b3461027d576000806003193601126103215761082190611053604051610f4e81610897565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015261010092808483015261012080920152611040610f96610940565b60fb546001600160a01b031681529360fc54610fc6906001600160a01b03165b6001600160a01b03166020870152565b60fd546001600160a01b0316604086015260fe546001600160a01b0316606086015260ff546001600160a01b0316608086015280546001600160a01b031660a0860152610101546001600160a01b031660c0860152610102546001600160a01b031660e0860152610103546001600160a01b031690850152565b610104546001600160a01b031690830152565b60405191829182610e62565b60c036600319011261027d5761107660043561026c565b61108160443561026c565b61108c60643561026c565b611094614048565b60ff61010d54166117475760a43515611735576001600160a01b0333604435821614611712576110c5606435614a8a565b6110d0600435614b3a565b6110fb604435610d7a602435610d6b60043560018060a01b031660005261010c602052604060002090565b600281015480156116db5781546001600160a01b03168360643516848216036116bb575060018201546084358103611699575060a43581106116775750604051627eeac760e11b81526020818061115a60243560443560048401614012565b038186600435165afa90811561031857600091611658575b5060a43581106115595750610105546111b79060209061119a906001600160a01b0316610c90565b6040518093819263e985e9c560e01b835260443560048401613420565b038186600435165afa90811561031857600091611639575b5015611619576111e360843560a435613522565b60fc549091906111fb906001600160a01b0316610c90565b6040516361fe24a960e11b81526004810184905290602090829060249082905afa908115610318576112429161123a916000916115fa575b508461403b565b606435614cff565b61125260a43560028301546142c7565b90816002820155611271600461126a6003840161386c565b92016138c4565b91156115c2575b604051627eeac760e11b81526020818061129a60243560443560048401614012565b038188600435165afa908115610318576000916115a3575b50604051627eeac760e11b815290602082806112d46024353360048401614012565b038189600435165afa91821561031857600092611582575b5060a4358110611559576101055461130c906001600160a01b0316610c90565b803b1561027d5760405163eb46c45b60e01b81526001600160a01b03600480358216908301526044803591909116602480840191909152339183019190915235606482015260a48035608483015260c090820152600060c482018190529091829081838160e4810103925af1801561031857611540575b50604051627eeac760e11b815290602082806113a760243560443560048401614012565b03818a600435165afa9182156103185760009261151b575b506113cd9060a435906142c7565b14908115916114a6575b50611462576113f292604435906064356024356004356146fa565b6040805160243581526001600160a01b036064351660208201526084359181019190915260a43560608201526004358216913391604435909116907f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d7886949080608081015b0390a46105fd6001606555565b604051638791019960e01b81526001600160a01b03600480358216908301526024803590830152604480359091169082015233606482015260a48035608483015290fd5b604051627eeac760e11b81529150602082806114c86024353360048401614012565b038189600435165afa918215610318576000926114f6575b506114ee9060a4359061403b565b1415386113d7565b6114ee9192506115149060203d60201161068357610674818361091f565b91906114e0565b6113cd9192506115399060203d60201161068357610674818361091f565b91906113bf565b8061154d61155392610864565b806109ff565b38611383565b61064390604051918291636906ef1760e11b835260a4356024356004356044356004870161409e565b61159c91925060203d60201161068357610674818361091f565b90386112ec565b6115bc915060203d60201161068357610674818361091f565b386112b2565b6115f56115f0604435610d7a602435610d6b60043560018060a01b031660005261010c602052604060002090565b6141c5565b611278565b611613915060203d60201161068357610674818361091f565b38611233565b60405163d65b0d6960e01b81528061064360043560443560048401613420565b611652915060203d602011610deb57610ddd818361091f565b386111cf565b611671915060203d60201161068357610674818361091f565b38611172565b6040516364b7fccd60e11b815260a43560048201526024810191909152604490fd5b604051631d6bbb8d60e11b815260843560048201526024810191909152604490fd5b604051632e834cbf60e11b81529081906106439060643560048401613420565b604051630bac95f560e21b81526001600160a01b036004803582169083015260248035908301526044803590911690820152606490fd5b60405163aac1ae8b60e01b81526044356001600160a01b03166004820152602490fd5b60405163c6b949a960e01b8152600490fd5b60405163ab35696f60e01b8152600490fd5b906103d7916020815260018060a01b0380835116602083015260208301511660408201526040820151606082015260608201516080820152608082015160a082015260c06117b660a084015160e08385015261010084019061068a565b9201519060e0601f19828503019101526106c7565b3461027d5760408060031936011261027d5761082190600435906117ee8261026c565b6118af60068280516117ff816108b3565b606060c0600092838152836020820152838582015283838201528360808201528260a0820152015260018060a01b038096168152610106602052818120602435825260205220611864845195611854876108b3565b8254166001600160a01b03168652565b600181015461187b906001600160a01b0316610fb6565b60028101548486015260038101546060860152600481015460808601526118a46005820161386c565b60a0860152016138c4565b60c08301525191829182611759565b3461027d57600080600319360112610321576118d861292a565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b3461027d5761016036600319011261027d576105fd60043561193d8161026c565b6024356119498161026c565b6044356119558161026c565b6064356119618161026c565b60843561196d8161026c565b60a4356119798161026c565b60c435916119868361026c565b60e435936119938561026c565b61010435956119a18761026c565b61012435976119af8961026c565b61014435996119bd8b61026c565b612f04565b606090600319011261027d576004356119da8161026c565b906024359060443590565b3461027d576119f3366119c2565b916119fe3382615734565b15611a5c57611a0d8282614c83565b60018060a01b03167f2f2a73977f9734e3b74f4efe888b44cdcca6903d8ab2b5be49c3969cc6cb1b62602060009483865261010a8252604086208587528252806040872055604051908152a380f35b604051600162bed83560e01b0319815290819061064390339060048401613420565b3461027d576000602036600319011261032157600435611a9d8161026c565b611aa561292a565b611aae816154e0565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d576040516362cd1f1560e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d57604036600319011261027d57600435611b258161026c565b60018060a01b031660005261010860205260406000206024356000526020526020604060002054604051908152f35b8015150361027d57565b3461027d57602036600319011261027d57600435611b7b81611b54565b611b8361292a565b61010d9060ff801983541691151516179055600080f35b3461027d57600036600319011261027d576033546040516001600160a01b039091168152602090f35b60c036600319011261027d576004803590611bdd8261026c565b6024359060443592611bee8461026c565b6064359360843560a4356001600160401b03811161027d57611c139036908601610b5a565b96611c1c614048565b60ff61010d54166121d557611c50611c4b88610d6b8860018060a01b0316600052610106602052604060002090565b613fb5565b805190986001600160a01b039390918416156121ba578951611c8390611c7f906001600160a01b031689615734565b1590565b61218f5790611c9491338a896155f4565b821561217e576001600160a01b038516600090815261010860205260409020611cbe908890610d6b565b54611ce433610d7a8a610d6b8a60018060a01b0316600052610109602052604060002090565b548115158061216c575b61211e5750506001600160a01b038516600090815261010a60205260409020611d18908890610d6b565b54611d3e33610d7a8a610d6b8a60018060a01b031660005261010b602052604060002090565b548115158061210d575b6120c65750506080880151801515806120bd575b6120995750606088015142811161207c57506040978881019081518084036120585750611d8886614a8a565b6020818101519097906001600160a01b03168588168682160361203c5750611db08487613522565b90888c855115600014611faa575050909192939434611f9a579088878d8d6000611e669a999897965b6001600160a01b038716600090815261010860205260409020611dfd908490610d6b565b54611f63575b6001600160a01b038716600090815261010a60205260409020611e27908490610d6b565b54611f2d575b86169e8f93519b8c9586948593632baf2acb60e01b855233908501604091949392606082019560018060a01b0316825260208201520152565b03925af1938415610318577f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c9961145597611eb796611f0f575b505051611ee6575b5050516001600160a01b031690565b975193849333998590606092959493608083019660018060a01b03809316845260208401521660408201520152565b8251611f0892906001600160a01b031660a0850151918a60c0870151946143ba565b3880611ea8565b81611f2592903d1061068357610674818361091f565b503880611ea0565b611f5233610d7a85610d6b8b60018060a01b031660005261010b602052604060002090565b611f5c815461402d565b9055611e2d565b611f8833610d7a85610d6b8b60018060a01b0316600052610109602052604060002090565b611f9386825461403b565b9055611e03565b8b5163429465b160e01b81528a90fd5b60fc54611fe7929185918e90611fc8906001600160a01b0316610c90565b91516361fe24a960e11b81529081019283529384928391829160200190565b03915afa8015610318578d8d6000611e669a61201a8f968f908f9761201491869161201f575b508b61403b565b90614cff565b611dd9565b61203691508a3d8c1161068357610674818361091f565b3861200d565b8b51632e834cbf60e11b8152908190610643908a838e01613420565b8a51631d6bbb8d60e11b8152808a0185815260208101929092529081906040010390fd5b60405163456afd0b60e01b81528088019182529081906020010390fd5b60408051635bdd08f560e01b81528089018681526020810193909352918291010390fd5b50808411611d5c565b6040805163ae3586c560e01b81526001600160a01b038916818b01908152602081018c905233928101929092526060820192909252608081019290925290819060a0010390fd5b50816121188261402d565b11611d48565b60408051636d03a2e560e01b81526001600160a01b038916818b01908152602081018c9052339281019290925260608201879052608082019290925260a081019290925290819060c0010390fd5b5081612178868361403b565b11611cee565b60405163c6b949a960e01b81528690fd5b8951604051600162bed83560e01b03198152908190610643906001600160a01b03168a838d01613420565b604051634ed1072f60e11b8152806106438b8a838d01614012565b60405163ab35696f60e01b81528690fd5b3461027d5760006020366003190112610321576004356122058161026c565b61220d61292a565b61221681615522565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d57604051631d1d389760e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d57600036600319011261027d57602060ff61010d54166040519015158152f35b3461027d57608036600319011261027d576004356044356024356122b78261026c565b606435926122c53384615734565b1561235e57907fa3f36b03a37e1948b5a4d52ddc1d9f62ab7d4e887e3a0a03e0c68d40f6075f3f916122f78585614c83565b61234c60405194612307866108ce565b82865283602087015260018060a01b0316948560005261010760205261233b87604060002090600052602052604060002090565b906020600191805184550151910155565b604080519182526020820192909252a3005b604051600162bed83560e01b0319815280610643338660048401613420565b3461027d5761238b366119c2565b916123963382615734565b15611a5c576123a58282614c83565b60018060a01b03167feead0384c6f48c02c0099b2433359d43617492f06d8e3a59cbe786b9970f7e6160206000948386526101088252604086208587528252806040872055604051908152a380f35b3461027d5760408060031936011261027d578060206004356124158161026c565b8251612420816108ce565b600080825292018290526001600160a01b03168152610107602090815282822060243583529052208151612453816108ce565b60206001835493848452015491019081528251918252516020820152f35b3461027d57600036600319011261027d57610105546040516001600160a01b039091168152602090f35b3461027d5761010036600319011261027d576004356124b98161026c565b6024356044356124c88161026c565b6084356064356001600160401b0360a43560c43582811161027d576124f1903690600401610b5a565b909260e43590811161027d5761250b903690600401610b5a565b93909260ff61010d541661174757612526611c7f338c615734565b6126025791610da293917f4c048dfd080dcfa2cccc41ef603e5f0ed6602ca215a41581d653aadf841a560b979695936125e78a6125e28d8f610d6b9061256b85614a8a565b6125778b8b8b8b614ecf565b6125818382614c83565b61259561258c61094f565b33815295610fb6565b8c60408601528d60608601528660808601526125b2368a8a613451565b60a08601526125c2368c8c6134b4565b60c08601526001600160a01b031660009081526101066020526040902090565b6136ca565b604051339c6001600160a01b03169a90988998909189613826565b604051600162bed83560e01b0319815280610643338d60048401613420565b3461027d5760006020366003190112610321576004356126408161026c565b61264861292a565b612651816155d2565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d576040516328b80cf560e21b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d5760006020366003190112610321576004356126ca8161026c565b6126d261292a565b6126db816155d2565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d57604051631f1afd0d60e01b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d5760006020366003190112610321576004356127548161026c565b61275c61292a565b61276581615555565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d57604051632867932b60e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d5760006020366003190112610321576004356127de8161026c565b6127e661292a565b6127ef81615597565b8173__$c98ca6a62396e5a7a1471db151198a1f31$__91823b1561031d57604051632d8b49e160e11b815260fb60048201526001600160a01b03909116602482015291829060449082905af480156103185761030c575080f35b3461027d57602036600319011261027d576004356128668161026c565b61286e61292a565b6001600160a01b03811615612886576105fd90612982565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461027d57602036600319011261027d576004356128f78161026c565b6128ff61292a565b612908816155d2565b61010580546001600160a01b0319166001600160a01b03909216919091179055005b6033546001600160a01b0316330361293e57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b156129d257565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b15612a3357565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b9081602091031261027d575190565b6040513d6000823e3d90fd5b15612aaf57565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b60809060208152602e60208201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960408201526d6f6e206973206e6f74205555505360901b60608201520190565b803b15612b8a576000805160206157c483398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b90612bef82612b55565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590612c99575b612c31575050565b612c969160008060405193612c4585610904565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020860152660819985a5b195960ca1b6040860152602081519101845af4612c90612dff565b91612e2f565b50565b506000612c29565b90612cab82612b55565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590612cec57612c31575050565b506001612c29565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169290612d2d308514156129cb565b612d4a6000805160206157c4833981519152948286541614612a2c565b612d5261292a565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612d8857505061094d9150612b55565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181612ddf575b50612dcc5760405162461bcd60e51b81528061064360048201612b06565b61094d93612dda9114612aa8565b612ca1565b612df891925060203d811161068357610674818361091f565b9038612dae565b3d15612e2a573d90612e1082610969565b91612e1e604051938461091f565b82523d6000602084013e565b606090565b91929015612e915750815115612e43575090565b3b15612e4c5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015612ea45750805190602001fd5b60405162461bcd60e51b8152602060048201529081906106439060248301905b919082519283825260005b848110612ef0575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612ecf565b989694929099979593916000549a60ff8c60081c1615809c819d61302a575b811561300a575b5015612fae57612f509a8c612f47600160ff196000541617600055565b612f95576131f0565b612f5657565b612f6661ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b612fa961010061ff00196000541617600055565b6131f0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b1591508161301c575b5038612f2a565b6001915060ff161438613015565b600160ff8216109150612f23565b519061094d8261026c565b908161014091031261027d57613057610940565b9061306181613038565b825261306f60208201613038565b602083015261308060408201613038565b604083015261309160608201613038565b60608301526130a260808201613038565b60808301526130b360a08201613038565b60a08301526130c460c08201613038565b60c08301526130d560e08201613038565b60e08301526101006130e8818301613038565b908301526130fa610120809201613038565b9082015290565b805160fb80546001600160a01b03199081166001600160a01b0393841617909155602083015160fc80548316918416919091179055604083015160fd80548316918416919091179055606083015160fe80548316918416919091179055608083015160ff8054831691841691909117905560a08301516101008054831691841691909117815560c08401516101018054841691851691909117905560e08401516101028054841691851691909117905583015161010380549092169083161790556101209091015161094d911661010480546001600160a01b0319166001600160a01b03909216919091179055565b956132cb979293959a98949996613206816154a2565b61320f836153ef565b613218856154e0565b6132218761542e565b61322a8b615522565b6132338c615555565b61323c82615597565b61324584615467565b61324e866155d2565b613257886155d2565b6132608a6155d2565b60405163ef8c824960e01b81526001600160a01b039182166004820152928116602484015293841660448301529483166064820152978216608489015297811660a488015291821660c487015295811660e48601529485166101048501528416610124840152919291565b61014080846101448173__$c98ca6a62396e5a7a1471db151198a1f31$__5af480156103185761332b9461330892600092613343575b5050613101565b6101058054919092166001600160a01b03166001600160a01b0319909116179055565b6133336133d0565b61333b613404565b61094d6133f3565b6133629250803d10613369575b61335a818361091f565b810190613043565b3880613301565b503d613350565b1561337757565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b6133ea60ff60005460081c166133e581613370565b613370565b61094d33612982565b61094d60ff60005460081c16613370565b61341960ff60005460081c166133e581613370565b6001606555565b6001600160a01b0391821681529116602082015260400190565b6001600160401b0381116108775760051b60200190565b929161345c8261343a565b9161346a604051938461091f565b829481845260208094019160051b810192831161027d57905b8282106134905750505050565b838091833561349e8161026c565b815201910190613483565b60ff81160361027d57565b92916134bf8261343a565b916134cd604051938461091f565b829481845260208094019160051b810192831161027d57905b8282106134f35750505050565b8380918335613501816134a9565b8152019101906134e6565b634e487b7160e01b600052601160045260246000fd5b8181029291811591840414171561353557565b61350c565b818110613545575050565b6000815560010161353a565b90600160401b81116108775781549080835581811061356f57505050565b61094d926000526020600020918201910161353a565b90600160401b81116108775781548183558082106135a257505050565b61094d92600052601f6020600020918180850160051c84019416806135ce575b500160051c019061353a565b600019908186019182549160200360031b1c169055386135c2565b9080516001600160401b038111610877576136048184613585565b613618602080930193600052602060002090565b908060051c9260005b8481106136945750601f198216909103908161363f575b5050505050565b9390600094855b82811061365d575050505001553880808080613638565b9091929582613689600192846136748b5160ff1690565b919060ff809160031b9316831b921b19161790565b970193929101613646565b6000805b8381106136ac575084820155600101613621565b9690836136c16001928a613674865160ff1690565b92019701613698565b815181546001600160a01b0319166001600160a01b03918216178255909190602082810151600185810180549285166001600160a01b03166001600160a01b03199093169290921790915591604084015160028601556060840151600386015560808401516004860155600585019060a0850151928351936001600160401b03851161087757819061375c8686613551565b0192600052806000209160005b858110613789575050505050505090600660c061094d93015191016135e9565b8451821684820155938201938601613769565b91908082526020809201929160005b8281106137b9575050505090565b90919293828060019287356137cd8161026c565b848060a01b031681520195019101929190926137ab565b91908082526020809201929160005b828110613801575050505090565b90919293828060019260ff8835613817816134a9565b168152019501939291016137f3565b9694926103d798969261385e959260018060a01b0316895260208901526040880152606087015260c0608087015260c086019161379c565b9260a08185039101526137e4565b9060405191828154918282526020928383019160005283600020936000905b8282106138a15750505061094d9250038361091f565b85546001600160a01b03168452600195860195889550938101939091019061388b565b906040805180938054926138eb6138df858560209181520190565b92600052602060002090565b9360005b81601f820110613d075761094d955492828210613cf1575b828210613cd7575b828210613cbd575b828210613ca3575b828210613c89575b828210613c6f575b828210613c55575b828210613c3b575b828210613c24575b50818110613c0c575b818110613bf4575b818110613bdc575b818110613bc4575b818110613bac575b818110613b94575b818110613b7c575b818110613b64575b818110613b4c575b818110613b34575b818110613b1c575b818110613b04575b818110613aec575b818110613ad4575b818110613abc575b818110613aa4575b818110613a8c575b818110613a74575b818110613a5c575b818110613a44575b818110613a2c575b818110613a14575b10613a06575b50038361091f565b60f81c8152602001386139fe565b60f083901c60ff1684529260019060200193016139f8565b60e883901c60ff1684529260019060200193016139f0565b60e083901c60ff1684529260019060200193016139e8565b60d883901c60ff1684529260019060200193016139e0565b60d083901c60ff1684529260019060200193016139d8565b60c883901c60ff1684529260019060200193016139d0565b60c083901c60ff1684529260019060200193016139c8565b60b883901c60ff1684529260019060200193016139c0565b60b083901c60ff1684529260019060200193016139b8565b60a883901c60ff1684529260019060200193016139b0565b60a083901c60ff1684529260019060200193016139a8565b609883901c60ff1684529260019060200193016139a0565b609083901c60ff168452926001906020019301613998565b608883901c60ff168452926001906020019301613990565b608083901c60ff168452926001906020019301613988565b607883901c60ff168452926001906020019301613980565b607083901c60ff168452926001906020019301613978565b606883901c60ff168452926001906020019301613970565b606083901c60ff168452926001906020019301613968565b605883901c60ff168452926001906020019301613960565b605083901c60ff168452926001906020019301613958565b604883901c60ff168452926001906020019301613950565b83901c60ff16845292600190602001930138613947565b603884901c60ff168552909360019060200194019061393f565b603084901c60ff1685529093600190602001940190613937565b602884901c60ff168552909360019060200194019061392f565b602084811c60ff1686529194909160019101940190613927565b601884901c60ff168552909360019060200194019061391f565b601084901c60ff1685529093600190602001940190613917565b600884901c60ff168552909360019060200194019061390f565b60ff841685529093600190602001940190613907565b919350916001610400602092613fa58854613f9a60ff613d2b8582851660ff169052565b613f73613dd8613f238d613ed389613e838e613d508184018a8d60081c1660ff169052565b613d638584018a8d60101c1660ff169052565b888b610200606095613d7e878201858560181c1660ff169052565b613d936080958585888501921c1660ff169052565b613e3960a097613dac898401878760281c1660ff169052565b613de960c09b613dc58d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b613dfe6101208401878760481c1660ff169052565b613e136101408401878760501c1660ff169052565b613e286101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b613e4e6101a08201858560681c1660ff169052565b613e636101c08201858560701c1660ff169052565b613e786101e08201858560781c1660ff169052565b01921c1660ff169052565b613e986102208c01888b60881c1660ff169052565b613ead6102408c01888b60901c1660ff169052565b613ec26102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b613ee86102a08a01868960a81c1660ff169052565b613efd6102c08a01868960b01c1660ff169052565b613f126102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b613f386103208801848760c81c1660ff169052565b613f4d6103408801848760d01c1660ff169052565b613f626103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b613f886103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b01950191019186939194926138ef565b90604051613fc2816108b3565b60c061400d6006839560018060a01b0380825416865260018201541660208601526002810154604086015260038101546060860152600481015460808601526118a46005820161386c565b910152565b6001600160a01b039091168152602081019190915260400190565b906001820180921161353557565b9190820180921161353557565b600260655414614059576002606555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b9081602091031261027d57516103d781611b54565b815181546001600160a01b0319166001600160a01b0391821617825590919060208083015191600192838601556040840151600286015560038501906060850151928351936001600160401b0385116108775781906141448686613551565b0192600052806000209160005b8581106141715750505050505050906004608061094d93015191016135e9565b8451821684820155938201938601614151565b959391926141b7936103d798969260018060a01b031688526020880152604087015260a0606087015260a086019161379c565b9260808185039101526137e4565b600460009182815582600182015582600282015560038101805484825580614215575b50500190815490808355816141fc57505050565b60208161094d94601f935220910160051c81019061353a565b614228918552602085209081019061353a565b38806141e8565b6001600160a01b0316600081815261010c602081815260408084208685528252808420338552909152822060020154156142b2578282526020908152604080832085845282528083203360009081529252902061428b906141c5565b7f46227bd805037a939224e05cd991a64cb464f4b5c5317858af210838e59ce390339180a4565b50505050565b60001981019190821161353557565b9190820391821161353557565b906040516142e1816108ce565b602060018294805484520154910152565b9081602091031261027d57516103d7816134a9565b60405190614314826108ce565b6001825260203681840137565b6040519061432e82610904565b600282526040366020840137565b634e487b7160e01b600052603260045260246000fd5b80511561435f5760200190565b61433c565b80516001101561435f5760400190565b805182101561435f5760209160051b010190565b906143928261343a565b61439f604051918261091f565b82815280926143b0601f199161343a565b0190602036910137565b919594939286926143cc828985614846565b60fd546143e1906001600160a01b0316610c90565b604051635dc22eff60e01b81526001600160a01b03841660048201526020928382602481865afa918215610318576000926145cf575b506000911561454b575050604051632260494f60e01b81526001600160a01b039390931660048401529091908290829060249082905afa9081156103185760ff9260009261451e575b50505b1695606487116144fe5761448561447e61094d979883613522565b6064900490565b9081614493575b505061501d565b816144f79294506144a3916142c7565b926144ac614307565b60fb546144dd906144c5906001600160a01b0316610c90565b6144ce83614352565b6001600160a01b039091169052565b6144e5614307565b91806144f084614352565b528461517e565b388061448c565b60405163d6849ff160e01b81526004810188905260646024820152604490fd5b61453d9250803d10614544575b614535818361091f565b8101906142f2565b3880614460565b503d61452b565b60fc549194506145979250839161456a906001600160a01b0316610c90565b60405163b28a7bad60e01b81526001600160a01b0390921660048301529092839190829081906024820190565b03915afa9182156103185760ff93926145b2575b5050614463565b6145c89250803d1061454457614535818361091f565b38806145ab565b6145e7919250843d8611610deb57610ddd818361091f565b9038614417565b81601f8201121561027d578051916146058361343a565b92614613604051948561091f565b808452602092838086019260051b82010192831161027d578301905b82821061463d575050505090565b8151815290830190830161462f565b91909160408184031261027d578051926001600160401b039384811161027d5782019381601f8601121561027d5784516146858161343a565b90614693604051928361091f565b808252602096878084019260051b8201019185831161027d5788809201905b8382106146d257505050509483015190811161027d576103d792016145ee565b82809183516146e08161026c565b8152019101906146b2565b60001981146135355760010190565b95919692949093859461470f8692878b614846565b60fe54614724906001600160a01b0316610c90565b604051637a99dc0160e11b81526001600160a01b039990991660048a01526024890191909152604488019690965260009586908890606490829084905af19788156103185786978799614807575b50865b89518810156147a25761479661479c9161478f8a8d614374565b519061403b565b976146eb565b96614775565b929598919497909396508883116147e75761094d9798836147c7575b5050505061501d565b836147de9496506147d7916142c7565b948461517e565b388080806147be565b6040516344783bd360e11b815260048101849052602481018a9052604490fd5b9098506148279197503d8088833e61481f818361091f565b81019061464c565b9690969738614772565b9081602091031261027d57516103d78161026c565b60fc5490929061485e906001600160a01b0316610c90565b6040516361fe24a960e11b81526004810184905260209490918590839060249082905afa918215610318576148ce948691600094614a6b575b50610101546148ae906001600160a01b0316610c90565b604051808098819463470d6ed960e11b8352600483019190602083019252565b03915afa93841561031857600094614a4c575b50818411614a2c578115613638576148f7614321565b9261496186614910610c9060fb5460018060a01b031690565b9261491e846144ce89614352565b61010254614934906001600160a01b0316610c90565b60405163e286ef3360e01b81526001600160a01b0390921660048301529092839190829081906024820190565b03915afa9081156103185761094d976000926149ff575b506001600160a01b0391614992915082166144ce87614364565b6149ab61499e86614364565b516001600160a01b031690565b166149ea576149be905b6144ce85614364565b6149c6614321565b936149d181846142c7565b6149da86614352565b526149e485614364565b5261517e565b506149be6149fa61499e85614364565b6149b5565b614a1e9250803d10614a25575b614a16818361091f565b810190614831565b3880614978565b503d614a0c565b604051639bdfbb5160e01b81526004810183905260248101859052604490fd5b614a64919450853d871161068357610674818361091f565b92386148e1565b614a83919450823d841161068357610674818361091f565b9238614897565b6001600160a01b038116151580614ac6575b614aa35750565b60405163cd5f748960e01b81526001600160a01b03919091166004820152602490fd5b5061010054614add906001600160a01b0316610c90565b604051632d5ad3d560e01b81526001600160a01b038316600482015290602090829060249082905afa90811561031857600091614b1c575b5015614a9c565b614b34915060203d8111610deb57610ddd818361091f565b38614b15565b803b158015614b6d575b614b4b5750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b808352602482015260248152614b9681610904565b519084617530fa6000513d82614bea575b5081614be0575b5080614bd0575b80614bc1575b15614b44565b50614bcb81614c53565b614bbb565b50614bda81614bf6565b15614bb5565b9050151538614bae565b60201115915038614ba7565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b602482015260248152614c2681610904565b5191617530fa6000513d82614c47575b5081614c40575090565b9050151590565b60201115915038614c36565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152614c2681610904565b6040516001620b695760e21b03198152600481018390526020816024816001600160a01b0386165afa90811561031857600091614ce1575b5015614cc5575050565b610643604051928392632be7c7f360e01b845260048401614012565b614cf9915060203d811161068357610674818361091f565b38614cbb565b6001600160a01b0381168015614e7f5734614e6d576040516370a0823160e01b808252306004830152602092908383602481855afa92831561031857600093614e4e575b5061010354614d5a906001600160a01b0316610c90565b90813b1561027d57604051630aed65f560e11b81526001600160a01b038716600482015233602482015230604482015260648101889052916000908390608490829084905af1918215610318578592614e3b575b5060405190815230600482015291829060249082905afa90811561031857614ddf93600092614e1e575b50506142c7565b828103614deb57505050565b604051636ff596f360e01b81526001600160a01b0392909216600483015260248201929092526044810191909152606490fd5b614e349250803d1061068357610674818361091f565b3880614dd8565b8061154d614e4892610864565b38614dae565b614e66919350843d861161068357610674818361091f565b9138614d43565b60405163d9efa38960e01b8152600490fd5b5050803403614e8b5750565b6040516305e4640960e21b81526004810191909152346024820152604490fd5b919081101561435f5760051b0190565b356103d78161026c565b356103d7816134a9565b91929092831561500b5760058411614feb57818403614fc95792919060009384935b828510614f2957505050505060648103614f085750565b6040516357623e5560e01b8152600481019190915260646024820152604490fd5b9091929394614f44610c90614f3f888589614eab565b614ebb565b15614fb057614f65614f5f614f5a888787614eab565b614ec5565b60ff1690565b15614f9757614f88614f8e91614f82614f5f614f5a8a8989614eab565b9061403b565b956146eb565b93929190614ef1565b60405163d4c1893560e01b815260048101879052602490fd5b6040516306f5730d60e41b815260048101879052602490fd5b50604051632db4fb2960e01b8152600481018490526024810191909152604490fd5b6040516366a4d05560e01b81526004810185905260056024820152604490fd5b60405163d218e6a560e01b8152600490fd5b9192939083518551908181036150d05750506150398451614388565b92819260005b8651808210156150c15761505389916142b8565b82036150745750808561506961506f9389614374565b526146eb565b61503f565b819561509f61447e615099614f5f61509261506f976150bb97614374565b5160ff1690565b88613522565b6150a9888a614374565b526150b48789614374565b51906142c7565b946146eb565b5050955061094d94925061517e565b604051632db4fb2960e01b815260048101919091526024810191909152604490fd5b6040810190604081528251809252606081019160208094019060005b818110615150575050508281830391015281808451928381520193019160005b82811061513c575050505090565b83518552938101939281019260010161512e565b82516001600160a01b03168552938501939185019160010161510e565b9060206103d7928181520190612ec4565b9192939083518551908181036152bf575050600092835b86518510156151b5576150bb6151af9161478f878a614374565b93615195565b90929491935083810361529e57506001600160a01b0391821692831561521c575060005b8151811015615214578061520a6151f661499e61520f9486614374565b85615201848b614374565b519116876152e1565b6146eb565b6151d9565b505050509050565b60009495925084935061525e61526c61523f610c9060ff5460018060a01b031690565b94604051928391602083019663c176e63960e01b8852602484016150f2565b03601f19810183528261091f565b51925af1615278612dff565b90156152815750565b604051634c0fe4a160e11b8152908190610643906004830161516d565b604051633bc6f52760e21b8152600481018590526024810191909152604490fd5b6040516345e8c29760e11b815260048101919091526024810191909152604490fd5b615367916000806040519361531b8561530d6020998a83019763a9059cbb60e01b895260248401614012565b03601f19810187528661091f565b60018060a01b03169260405194615331866108ce565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af1612c90612dff565b8051908282159283156153d7575b505050156153805750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b6153e793508201810191016140d0565b388281615375565b6001600160a01b0316156153ff57565b60405163602d6df560e01b8152734d41524b4554504c4143455f53455454494e475360601b6004820152602490fd5b6001600160a01b03161561543e57565b60405163602d6df560e01b81526d524f59414c54595f454e47494e4560901b6004820152602490fd5b6001600160a01b03161561547757565b60405163602d6df560e01b81526f5354414b494e475f524547495354525960801b6004820152602490fd5b6001600160a01b0316156154b257565b60405163602d6df560e01b8152724e4554574f524b5f42454e454649434941525960681b6004820152602490fd5b6001600160a01b0316156154f057565b60405163602d6df560e01b81527653504143455f4f50455241544f525f524547495354525960481b6004820152602490fd5b6001600160a01b03161561553257565b60405163602d6df560e01b8152675041594d454e545360c01b6004820152602490fd5b6001600160a01b03161561556557565b60405163602d6df560e01b815276415050524f5645445f544f4b454e5f524547495354525960481b6004820152602490fd5b6001600160a01b0316156155a757565b60405163602d6df560e01b81526f5354414b494e475f53455454494e475360801b6004820152602490fd5b6001600160a01b0316156155e257565b60405163c49074af60e01b8152600490fd5b6001600160a01b031660009081526101076020908152604080832093835292905220909290615622906142d4565b90815115801561569b575b6142b25761567192611c7f9260405160208101906156668161525e8a856014916bffffffffffffffffffffffff199060601b1681520190565b5190209051906156a9565b6156785750565b60405163e2cf60cb60e01b81526001600160a01b03919091166004820152602490fd5b50602082015142101561562d565b92909291600080925b8084106156c157505050501490565b90919293615704906156d4868487614eab565b3580821161570c576040805160208101938452908101919091526156fb816060810161525e565b519020946146eb565b9291906156b2565b6040805160208101928352908101929092529061572c816060810161525e565b5190206150bb565b6000806040516020810190638da5cb5b60e01b825260048152615756816108ce565b5190845afa90615764612dff565b911580156157b8575b61579657508060208061578593518301019101614831565b6001600160a01b0390811691161490565b60405163915b8f1d60e01b81526001600160a01b039091166004820152602490fd5b50602082511061576d56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212206776b47b7048559706408dd60a0fe4349c5977fdd54c839bc5171d00c2354a2564736f6c63430008120033","sourceMap":"1379:50771:95:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;;;;:::o;:::-;;;;;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;28057:26:95;;;:::i;:::-;28180:38;;:60;;;;;;1379:50771;;-1:-1:-1;;;28180:60:95;;:12;1379:50771;28180:60;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;28180:60;;;;;;;;1379:50771;;;28180:60;;;;:::i;:::-;1379:50771;;28180:60;;:::i;:::-;1379:50771;;;;;;;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;29151:20:95;;;:::i;:::-;29268:32;;:48;;;;;;1379:50771;;-1:-1:-1;;;29268:48:95;;:12;1379:50771;29268:48;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;29268:48;;;;;;;;1379:50771;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;24866:58;1379:50771;;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;;-1:-1:-1;1379:50771:95;;;24866:20;1379:50771;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;24866:58;1379:50771;;;;;;;;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;31233:22:95;;;:::i;:::-;31352:34;;:52;;;;;;1379:50771;;-1:-1:-1;;;31352:52:95;;:12;1379:50771;31352:52;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;31352:52;;;;;;;;1379:50771;;;;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;27488:25:95;;;:::i;:::-;27610:37;;:58;;;;;;1379:50771;;-1:-1:-1;;;27610:58:95;;:12;1379:50771;27610:58;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;27610:58;;;;;;;;1379:50771;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1898:6:27;1379:50771:95;;;;1873:80:27;1889:4;1881:23;;;1873:80;:::i;:::-;1963:87;-1:-1:-1;;;;;;;;;;;1379:50771:95;;;;;1971:30:27;1963:87;:::i;:::-;1303:62:20;;:::i;:::-;1379:50771:95;;;;;;:::i;:::-;-1:-1:-1;1379:50771:95;;971:66:24;;1379:50771:95;;971:66:24;;;3330:17;;;;;;:::i;:::-;1379:50771:95;3232:526:24;1379:50771:95;;;;;;;;971:66:24;;;;;;;3383:63;;1379:50771:95;;3383:63:24;;-1:-1:-1;;3383:63:24;;;3232:526;-1:-1:-1;3379:302:24;;1379:50771:95;;-1:-1:-1;;;3610:56:24;;1379:50771:95;3610:56:24;1379:50771:95;3610:56:24;;;:::i;:::-;;;;3379:302;3737:9;3496:28;3488:82;3496:28;;3488:82;:::i;:::-;3737:9;:::i;3383:63::-;;;;;1379:50771:95;3383:63:24;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1379:50771:95;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;26394:47;1379:50771;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26394:10;1379:50771;;;;;;;;;;;;;;;;;;;;;;;;;;;26394:47;1379:50771;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;;;;;-1:-1:-1;;1379:50771:95;;;;:::o;:::-;;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;3901:220:27;1379:50771:95;;;;;;;;;;3901:220:27;:::i;1379:50771:95:-;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1379:50771:95;;;;2333:6:27;-1:-1:-1;;;;;1379:50771:95;2324:4:27;2316:23;1379:50771:95;;;;-1:-1:-1;;;;;;;;;;;1379:50771:95;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;1379:50771:95;25291:12;1379:50771;;;-1:-1:-1;1379:50771:95;;;-1:-1:-1;1379:50771:95;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;25829:56;1379:50771;;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;;-1:-1:-1;1379:50771:95;;;25829:18;1379:50771;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;971:66:24;;;1379:50771:95;4873:6;971:66:24;1379:50771:95;4869:35;;17134:16;;;:::i;:::-;17192:12;;;;;;:::i;:::-;17240:16;;;:::i;:::-;17271:11;;17267:47;;17328:14;;17324:49;;1379:50771;;;;;;;;17548:39;1379:50771;;;;971:66:24;;;17548:39:95;;;;;;;;17566:10;;;;17548:39;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;17548:39:95;;;1379:50771;17601:25;;;;17597:153;;-1:-1:-1;17809:22:95;1379:50771;17764:69;;1379:50771;;17801:31;;-1:-1:-1;;;;;1379:50771:95;;-1:-1:-1;;;;;1379:50771:95;;;17801:31;1379:50771;;;971:66:24;;;;;;;;17764:69:95;;17566:10;17764:69;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;17764:69:95;;;1379:50771;17763:70;;17759:160;;1379:50771;;;;18016:50;1379:50771;;18016:38;18199:143;1379:50771;;;;18199:143;1379:50771;;;;;18081:102;1379:50771;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;;;;;18081:102;;;1379:50771;18081:102;;;;1379:50771;;;;;;:::i;:::-;18081:102;;;1379:50771;;;;;;:::i;:::-;18081:102;;;1379:50771;18016:28;17566:10;18016:28;1379:50771;;;;;;;;19672:10;1379:50771;;;;;;;18016:28;1379:50771;;;;;;;;;;18016:38;1379:50771;;;;;;;;;;;;;;;;18016:50;1379:50771;:::i;:::-;;17566:10;;;;18199:143;;;:::i;:::-;;;;1379:50771;17759:160;1379:50771;;-1:-1:-1;;;17856:52:95;;1379:50771;;;17856:52;;1379:50771;;17566:10;;17856:52;;;:::i;17764:69::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;17597:153;1379:50771;17649:90;1379:50771;;;;;;17649:90;;;;;;;;17566:10;17649:90;;;;:::i;17548:39::-;;;;;;;;;;;;;;:::i;:::-;;;;17324:49;1379:50771;;-1:-1:-1;;;17351:22:95;;1379:50771;;17351:22;17267:47;1379:50771;;-1:-1:-1;;;17291:23:95;;1379:50771;;17291:23;4869:35;1379:50771;;-1:-1:-1;;;4888:16:95;;1379:50771;;4888:16;1379:50771;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26663:12;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;1379:50771:95;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;2471:103:28;;:::i;:::-;1379:50771:95;4873:6;971:66:24;1379:50771:95;4869:35;;1379:50771;;19189:14;19185:49;;-1:-1:-1;;;;;19248:10:95;1379:50771;;;;19248:21;19244:66;;19442:16;1379:50771;;19442:16;:::i;:::-;19494;1379:50771;;19494:16;:::i;:::-;19672:47;1379:50771;;19672:38;1379:50771;;19672:28;1379:50771;;;;;;;;;;19672:10;1379:50771;;;;;;;19672:47;19819:18;;;1379:50771;19819:23;;19815:94;;1379:50771;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;19923:45;19919:144;;20076:15;1379:50771;20076:15;;1379:50771;;;20076:25;;20072:76;;1379:50771;;;20162:30;;20158:106;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;;20464:36:95;;1379:50771;;;20464:36;1379:50771;;;;;20464:36;;;:::i;:::-;;1379:50771;;;;;20464:36;;;;;;;-1:-1:-1;20464:36:95;;;1379:50771;;;;20514:25;;20510:150;;-1:-1:-1;20716:22:95;1379:50771;20674:66;;1379:50771;;20708:31;;-1:-1:-1;;;;;1379:50771:95;;;20708:31;1379:50771;;971:66:24;;;;;;;20674::95;;1379:50771;;;20674:66;;;:::i;:::-;;1379:50771;;;;;20674:66;;;;;;;-1:-1:-1;20674:66:95;;;1379:50771;20673:67;;20669:154;;20947:18;1379:50771;;;;20947:18;:::i;:::-;21043:32;1379:50771;;;;21043:56;;-1:-1:-1;;;;;1379:50771:95;;;21043:56;1379:50771;;-1:-1:-1;;;21043:68:95;;1379:50771;21043:68;;1379:50771;;;;;;;;;;;;21043:68;;;;;;;21030:81;21043:68;21030:81;21043:68;-1:-1:-1;21043:68:95;;;1379:50771;21030:81;;;:::i;:::-;1379:50771;;21030:81;:::i;:::-;21220:31;1379:50771;;19819:18;;;1379:50771;21220:31;:::i;:::-;19819:18;;;;;1787:1:28;1379:50771:95;;;;21389:25;;1379:50771;:::i;:::-;21453:21;;1379:50771;:::i;:::-;21488:23;;21484:199;;1379:50771;;;-1:-1:-1;;;21844:36:95;;1379:50771;;;21844:36;1379:50771;;;;;21844:36;;;:::i;:::-;;1379:50771;;;;;21844:36;;;;;;;-1:-1:-1;21844:36:95;;;1379:50771;-1:-1:-1;1379:50771:95;;-1:-1:-1;;;21927:39:95;;1379:50771;;;;21927:39;1379:50771;;19248:10;1379:50771;21927:39;;;:::i;:::-;;1379:50771;;;;;21927:39;;;;;;;-1:-1:-1;21927:39:95;;;1379:50771;;;;21980:39;;21976:178;;20716:22;1379:50771;22253:39;;-1:-1:-1;;;;;1379:50771:95;;;22253:39;:103;;;;;1379:50771;;-1:-1:-1;;;22253:103:95;;-1:-1:-1;;;;;1379:50771:95;;;;;22253:103;;;1379:50771;;;;;;;;;;;;;;;;19248:10;1379:50771;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;22253:103;;;;;;;;;;1379:50771;-1:-1:-1;1379:50771:95;;-1:-1:-1;;;22384:36:95;;1379:50771;;;;22384:36;1379:50771;;;;;22384:36;;;:::i;:::-;;1379:50771;;;;;22384:36;;;;;;;-1:-1:-1;22384:36:95;;;1379:50771;;22424:39;1379:50771;;;22424:39;;:::i;:::-;22384:79;;;;:180;;;1379:50771;22367:322;;;22904:11;1379:50771;;;;;;;;;;22904:11;:::i;:::-;1379:50771;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;19248:10;;1379:50771;;;;;;22941:90;;1379:50771;;;;22941:90;;;;2536:1:28;1787;2065:22;1787:1;1985:109;22367:322:95;1379:50771;;-1:-1:-1;;;22596:82:95;;-1:-1:-1;;;;;1379:50771:95;;;;;22596:82;;;1379:50771;;;;;;;;;;;;;;;;;;19248:10;1379:50771;;;;;;;;;;;;3610:56:24;22384:180:95;1379:50771;;-1:-1:-1;;;22483:39:95;;1379:50771;-1:-1:-1;1379:50771:95;;;22483:39;1379:50771;;19248:10;1379:50771;22483:39;;;:::i;:::-;;1379:50771;;;;;22483:39;;;;;;;-1:-1:-1;22483:39:95;;;22384:180;1379:50771;22526:38;1379:50771;;;22526:38;;:::i;:::-;22483:81;;22384:180;;;22483:39;22526:38;22483:39;;;;;1379:50771;22483:39;1379:50771;22483:39;;;;;;;:::i;:::-;;;;;22384:36;22424:39;22384:36;;;;;1379:50771;22384:36;1379:50771;22384:36;;;;;;;:::i;:::-;;;;;22253:103;;;;;;:::i;:::-;;;:::i;:::-;;;;21976:178;22042:101;1379:50771;;;17649:90;;;;;;22042:101;;1379:50771;;;;;;;;;22042:101;;;:::i;21927:39::-;;;;;1379:50771;21927:39;1379:50771;21927:39;;;;;;;:::i;:::-;;;;;21844:36;;;;1379:50771;21844:36;1379:50771;21844:36;;;;;;;:::i;:::-;;;;21484:199;21618:54;21625:47;1379:50771;;21625:38;1379:50771;;21625:28;1379:50771;;;;;;;;;;19672:10;1379:50771;;;;;;;21625:47;21618:54;:::i;:::-;21484:199;;21043:68;;;;1379:50771;21043:68;1379:50771;21043:68;;;;;;;:::i;:::-;;;;20669:154;1379:50771;;17856:52;;;20763:49;;1379:50771;20763:49;1379:50771;;;;;20763:49;;;:::i;20674:66::-;;;;1379:50771;20674:66;1379:50771;20674:66;;;;;;;:::i;:::-;;;;20464:36;;;;1379:50771;20464:36;1379:50771;20464:36;;;;;;;:::i;:::-;;;;20158:106;1379:50771;;-1:-1:-1;;;20201:63:95;;1379:50771;;;20201:63;;1379:50771;;;;;;;;;;3610:56:24;20072:76:95;1379:50771;;-1:-1:-1;;;20110:38:95;;1379:50771;;;20110:38;;1379:50771;;;;;;;;;;3610:56:24;19919:144:95;1379:50771;;-1:-1:-1;;;19991:61:95;;1379:50771;;;19991:61;;1379:50771;;;19991:61;;;:::i;19815:94::-;1379:50771;;-1:-1:-1;;;19851:58:95;;-1:-1:-1;;;;;1379:50771:95;;;;;19851:58;;;1379:50771;;;;;;;;;;;;;;;;;;;;3610:56:24;19244:66:95;1379:50771;;-1:-1:-1;;;19278:32:95;;1379:50771;;-1:-1:-1;;;;;1379:50771:95;;19278:32;;1379:50771;;;3610:56:24;19185:49:95;1379:50771;;-1:-1:-1;;;19212:22:95;;1379:50771;;19212:22;4869:35;1379:50771;;-1:-1:-1;;;4888:16:95;;1379:50771;;4888:16;1379:50771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23462:17;1379:50771;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1303:62:20;;:::i;:::-;2758:6;1379:50771:95;;-1:-1:-1;;;;;;1379:50771:95;;;;;;;-1:-1:-1;;;;;1379:50771:95;2806:40:20;1379:50771:95;;2806:40:20;1379:50771:95;;;;;;;;-1:-1:-1;;1379:50771:95;;;;6040:2153;1379:50771;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;6040:2153;:::i;1379:50771::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;16320:10;16285:46;16320:10;16285:46;;:::i;:::-;16284:47;16280:106;;16437:8;;;;:::i;:::-;1379:50771;;;;;;16601:51;1379:50771;-1:-1:-1;1379:50771:95;;;;16537:12;1379:50771;;;;;;;;;;;;;;1787:1:28;1379:50771:95;;;;;16601:51;1379:50771;;16280:106;1379:50771;;-1:-1:-1;;;;;;16340:46:95;;1379:50771;;;16340:46;;16320:10;;1379:50771;16340:46;;;:::i;1379:50771::-;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;28628:29:95;;;:::i;:::-;28754:40;;:64;;;;;;1379:50771;;-1:-1:-1;;;28754:64:95;;:12;1379:50771;28754:64;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;28754:64;;;;;;;;1379:50771;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;1379:50771:95;24350:14;1379:50771;;;-1:-1:-1;1379:50771:95;;;-1:-1:-1;1379:50771:95;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;33349:18:95;1379:50771;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;-1:-1:-1;;1379:50771:95;;;;1513:6:20;1379:50771:95;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;:::i;:::-;2471:103:28;;;:::i;:::-;1379:50771:95;4873:6;971:66:24;1379:50771:95;4869:35;;1379:50771;10589:45;:35;;;1379:50771;;;;;;;;10589:17;1379:50771;;;;;;;10589:45;1379:50771;:::i;:::-;3060:18;;;;-1:-1:-1;;;;;1379:50771:95;;;;;10769:37;10765:101;;3060:18;;10880:60;;10881:59;;-1:-1:-1;;;;;1379:50771:95;10881:59;;:::i;:::-;10880:60;;1379:50771;10880:60;10876:157;;11093:10;11105:6;11093:10;;11105:6;;;:::i;:::-;11127:14;;11123:49;;-1:-1:-1;;;;;1379:50771:95;;;;;;11310:14;1379:50771;;;;;11310:42;;:32;;;1379:50771;11310:42;1379:50771;11385:60;11093:10;11385:48;:38;;;1379:50771;;;;;;;;11385:20;1379:50771;;;;;;;11385:60;1379:50771;11459:14;;;:54;;;1379:50771;11455:185;;-1:-1:-1;;;;;;;1379:50771:95;;;;;;11778:12;1379:50771;;;;;11778:40;;:30;;;1379:50771;11778:40;1379:50771;11849:58;11093:10;11849:46;:36;;;1379:50771;;;;;;;;11849:18;1379:50771;;;;;;;11849:58;1379:50771;11921:12;;;:40;;;1379:50771;11917:163;;12199:25;;1379:50771;12199:25;;1379:50771;12199:30;;;:71;;;1379:50771;12195:162;;12370:26;1379:50771;12370:26;;1379:50771;12399:15;12370:44;;12366:99;;1379:50771;;12489:22;;;;1379:50771;;;12479:32;;;12475:90;;12602:16;;;;:::i;:::-;1379:50771;12633:32;;;3060:18;1379:50771;;12633:32;-1:-1:-1;;;;;1379:50771:95;;;;;;;12633:52;12629:158;;12914:18;;;;;:::i;:::-;1379:50771;;;;;12947:27;12943:471;12947:22;;;13089:9;;;;;;;;13085:47;;12943:471;;;;;-1:-1:-1;14006:70:95;12943:471;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;11310:14;1379:50771;;;;;13428:42;;:32;;;1379:50771;13428:42;1379:50771;13424:243;;12943:471;-1:-1:-1;;;;;1379:50771:95;;;;;;11778:12;1379:50771;;;;;13681:40;;:30;;;1379:50771;13681:40;1379:50771;13677:235;;12943:471;1379:50771;;;;;;971:66:24;;;;;;;;;;14006:70:95;;11093:10;14006:70;;;1379:50771;;;;;;;;;;;;;;;;;;;;;;;;14006:70;;;;;;;;;;14515:138;14006:70;14515:138;14006:70;3060:18;14006:70;;;12943:471;1379:50771;;;14087:413;;12943:471;-1:-1:-1;;3060:18:95;-1:-1:-1;;;;;1379:50771:95;;;3060:18;1379:50771;;11093:10;;;;14515:138;;1379:50771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14087:413;3060:18;;14447:28;;3060:18;-1:-1:-1;;;;;1379:50771:95;;14397:32;;;14447:28;;1379:50771;14447:28;;;;;:::i;:::-;14087:413;;;;14006:70;;;;;;-1:-1:-1;14006:70:95;;;;;;:::i;:::-;;;;;;13677:235;13838:58;11093:10;13838:46;:36;;;1379:50771;;;;;;;;11849:18;1379:50771;;;;;;;13838:58;:63;1379:50771;;13838:63;:::i;:::-;1787:1:28;;13677:235:95;;13424:243;13583:60;11093:10;13583:48;:38;;;1379:50771;;;;;;;;11385:20;1379:50771;;;;;;;13583:60;:73;1379:50771;;;13583:73;:::i;:::-;1787:1:28;;13424:243:95;;13085:47;1379:50771;;-1:-1:-1;;;13112:20:95;;1379:50771;;13112:20;12943:471;13321:32;1379:50771;13321:68;;1379:50771;;;;;13321:56;;-1:-1:-1;;;;;1379:50771:95;;;13321:56;1379:50771;;-1:-1:-1;;;13321:68:95;;;;;1379:50771;;;;;;;;;;;;;;13321:68;;;;;;;;;;;-1:-1:-1;14006:70:95;13321:68;13308:81;13321:68;;;;;;13308:81;13321:68;;;;;12943:471;13308:81;;;:::i;:::-;;;:::i;:::-;12943:471;;13321:68;;;;;;;;;;;;;;:::i;:::-;;;;12629:158;1379:50771;;-1:-1:-1;;;12708:68:95;;1379:50771;;;12708:68;;1379:50771;12708:68;;;;:::i;12475:90::-;1379:50771;;-1:-1:-1;;;12520:45:95;;;;;1379:50771;;;;;;;;;;;;;;;3610:56:24;;;12366:99:95;1379:50771;;-1:-1:-1;;;12423:42:95;;;;;1379:50771;;;;;;;;3610:56:24;;;12195:162:95;1379:50771;;;-1:-1:-1;;;12293:53:95;;;;;1379:50771;;;;;;;;;;;;;;3610:56:24;;;12199:71:95;12233:37;;;;12199:71;;11917:163;1379:50771;;;-1:-1:-1;;;11984:85:95;;-1:-1:-1;;;;;1379:50771:95;;11984:85;;;1379:50771;;;;;;;;;11093:10;1379:50771;;;;;;;;;;;;;;;;;;;;;;;;;;3610:56:24;;;11921:40:95;11937:14;;;;;:::i;:::-;:24;11921:40;;11455:185;1379:50771;;;-1:-1:-1;;;11536:93:95;;-1:-1:-1;;;;;1379:50771:95;;11536:93;;;1379:50771;;;;;;;;;11093:10;1379:50771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3610:56:24;;;11459:54:95;11477:24;;;;;;:::i;:::-;:36;11459:54;;11123:49;1379:50771;;-1:-1:-1;;;11150:22:95;;1379:50771;;11150:22;10876:157;3060:18;;1379:50771;;-1:-1:-1;;;;;;10963:59:95;;1379:50771;;;10963:59;;-1:-1:-1;;;;;1379:50771:95;3060:18;10963:59;;;;:::i;10765:101::-;1379:50771;;-1:-1:-1;;;10815:51:95;;1379:50771;10815:51;1379:50771;;10815:51;;;;:::i;4869:35::-;1379:50771;;-1:-1:-1;;;4888:16:95;;1379:50771;;4888:16;1379:50771;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;29648:14:95;;;:::i;:::-;29759:27;;:38;;;;;;1379:50771;;-1:-1:-1;;;29759:38:95;;:12;1379:50771;29759:38;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;29759:38;;;;;;;;1379:50771;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;27122:6;971:66:24;1379:50771:95;;;;;;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;;;;;:::i;:::-;;;14994:10;14959:46;14994:10;14959:46;;:::i;:::-;14958:47;14954:106;;15111:8;15333:73;15111:8;;;;;:::i;:::-;1379:50771;;;;;;;:::i;:::-;;;;15257:61;1379:50771;15257:61;;1379:50771;;;;;;;;;-1:-1:-1;1379:50771:95;15207:19;1379:50771;;15207:47;1379:50771;;-1:-1:-1;1379:50771:95;;;;;;;;;;;15207:47;1379:50771;;;;;;1787:1:28;;1379:50771:95;;;;1787:1:28;1379:50771:95;;;;;;;;;;;;;;;15333:73;1379:50771;14954:106;1379:50771;;-1:-1:-1;;;;;;15014:46:95;;1379:50771;15014:46;14994:10;1379:50771;;15014:46;;;:::i;1379:50771::-;;;;;;;:::i;:::-;15694:10;15659:46;15694:10;15659:46;;:::i;:::-;15658:47;15654:106;;15811:8;;;;:::i;:::-;1379:50771;;;;;;15974:53;1379:50771;-1:-1:-1;1379:50771:95;;;;15908:14;1379:50771;;;;;;;;;;;;;;1787:1:28;1379:50771:95;;;;;15974:53;1379:50771;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;1379:50771:95;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;23930:19;1379:50771;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;26923:22;1379:50771;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;971:66:24;;;1379:50771:95;4873:6;971:66:24;1379:50771:95;4869:35;;9119:47;9120:46;9155:10;9120:46;;:::i;9119:47::-;9115:131;;9398:16;9850:260;9398:16;;9850:260;9398:16;;;;1379:50771;9398:16;9631:45;9398:16;;9631:35;9398:16;;;;:::i;:::-;9456:12;;;;;;:::i;:::-;9521:8;;;;:::i;:::-;9679:155;1379:50771;;:::i;:::-;9155:10;1379:50771;;9155:10;9679:155;1379:50771;9679:155;;;;;1379:50771;9679:155;;;;1379:50771;9679:155;;;;1379:50771;;;;;;:::i;:::-;9679:155;;;1379:50771;;;;;;:::i;:::-;9679:155;;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;10589:17;1379:50771;;;;;;;9631:45;1379:50771;:::i;:::-;9679:155;1379:50771;9155:10;;-1:-1:-1;;;;;1379:50771:95;;;;;;9155:10;;1379:50771;9850:260;:::i;9115:131::-;1379:50771;;-1:-1:-1;;;;;;9189:46:95;;1379:50771;9189:46;9155:10;1379:50771;;9189:46;;;:::i;1379:50771::-;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;31751:21:95;;;:::i;:::-;31869:39;;:62;;;;;;1379:50771;;-1:-1:-1;;;31869:62:95;;:12;1379:50771;31869:62;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;31869:62;;;;;;;;1379:50771;;;;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;32331:22:95;;;:::i;:::-;32450:40;;:64;;;;;;1379:50771;;-1:-1:-1;;;32450:64:95;;:12;1379:50771;32450:64;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;32450:64;;;;;;;;1379:50771;;;;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;30178:29:95;;;:::i;:::-;30304:40;;:64;;;;;;1379:50771;;-1:-1:-1;;;30304:64:95;;:12;1379:50771;30304:64;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;30304:64;;;;;;;;1379:50771;;;;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;30711:22:95;;;:::i;:::-;30830:34;;:52;;;;;;1379:50771;;-1:-1:-1;;;30830:52:95;;:12;1379:50771;30830:52;;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;30830:52;;;;;;;;1379:50771;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;2402:22:20;1379:50771:95;;2496:8:20;;;:::i;1379:50771:95:-;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;;;:::i;:::-;1303:62:20;;:::i;:::-;32883:23:95;;;:::i;:::-;33009:73;1379:50771;;-1:-1:-1;;;;;;1379:50771:95;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;1599:130:20;1513:6;1379:50771:95;-1:-1:-1;;;;;1379:50771:95;929:10:37;1662:23:20;1379:50771:95;;1599:130:20:o;1379:50771:95:-;;;;3610:56:24;;;1379:50771:95;;;;;;;;;;;;;;;;;;2666:187:20;2758:6;1379:50771:95;;-1:-1:-1;;;;;1379:50771:95;;;-1:-1:-1;;;;;;1379:50771:95;;;;;;;;;;2806:40:20;-1:-1:-1;;2806:40:20;2666:187::o;1379:50771:95:-;;;;:::o;:::-;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;971:66:24;;;;;;;;;;;:::o;:::-;1379:50771:95;;971:66:24;;;;;;;;;;;:::o;:::-;1379:50771:95;;-1:-1:-1;;;971:66:24;;;;;;;;;;;1379:50771:95;971:66:24;1379:50771:95;;;971:66:24;-1:-1:-1;;;971:66:24;;;;;;;;;;;;;;;;;1379:50771:95;971:66:24;1379:50771:95;;;971:66:24;-1:-1:-1;;;971:66:24;;;;;;:::o;1699:281::-;1713:19:36;;:23;1379:50771:95;;-1:-1:-1;;;;;;;;;;;1379:50771:95;;-1:-1:-1;;;;;;1379:50771:95;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;1699:281:24:o;1379:50771:95:-;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;2372:276:24;;2171:17;;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;2204:27:24;-1:-1:-1;;2204:27:24;1379:50771:95;;2523:15:24;;;:28;;;2372:276;2519:123;;2372:276;;:::o;2519:123::-;7318:69:36;1379:50771:95;-1:-1:-1;1379:50771:95;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;7276:25:36;;;;;;;;;:::i;:::-;7318:69;;:::i;:::-;;2372:276:24:o;2523:28::-;;-1:-1:-1;2523:28:24;;2372:276;;2171:17;;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;2204:27:24;;;;1379:50771:95;;2523:15:24;;;:28;;;2519:123;;2372:276;;:::o;2523:28::-;;1379:50771:95;2523:28:24;;1842:226:27;-1:-1:-1;;;;;1898:6:27;1379:50771:95;;;;1873:80:27;1889:4;1881:23;;;1873:80;:::i;:::-;1963:87;-1:-1:-1;;;;;;;;;;;1379:50771:95;;;;;1971:30:27;1963:87;:::i;:::-;1303:62:20;;:::i;:::-;971:66:24;;1379:50771:95;;971:66:24;;;3330:17;;;;;;:::i;3232:526::-;3383:63;;1379:50771:95;;;;;;971:66:24;;;;;;;3383:63;;1379:50771:95;;3383:63:24;;;;;;;3232:526;-1:-1:-1;3379:302:24;;1379:50771:95;;-1:-1:-1;;;3610:56:24;;1379:50771:95;3610:56:24;3383:63;3610:56;;;:::i;3379:302::-;3737:9;3496:28;3488:82;3496:28;;3488:82;:::i;:::-;3737:9;:::i;3383:63::-;;;;;;;;;;;;;;;:::i;:::-;;;;;1379:50771:95;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1379:50771:95;;;;:::o;:::-;;;:::o;7682:628:36:-;;;;7886:418;;;1379:50771:95;;;7917:22:36;7913:286;;8212:17;;:::o;7913:286::-;1713:19;:23;1379:50771:95;;8212:17:36;:::o;1379:50771:95:-;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;7886:418:36;1379:50771:95;;;;-1:-1:-1;8991:21:36;:17;;9163:142;;;;;;;8987:379;1379:50771:95;;-1:-1:-1;;;9335:20:36;;1379:50771:95;9335:20:36;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;3246:506:26;;;;;;;;;;;3302:13;1379:50771:95;;;;;;;3301:14:26;3347:34;;;;;;3246:506;3346:108;;;;3246:506;1379:50771:95;;;;3636:1:26;3536:16;;;1379:50771:95;;;3302:13:26;1379:50771:95;;;3302:13:26;1379:50771:95;;3536:16:26;3562:65;;3636:1;:::i;:::-;3647:99;;3246:506::o;3647:99::-;3681:21;1379:50771:95;;3302:13:26;1379:50771:95;;3302:13:26;1379:50771:95;;3681:21:26;1379:50771:95;;3551:1:26;1379:50771:95;;3721:14:26;;1379:50771:95;;3721:14:26;3246:506::o;3562:65::-;3596:20;1379:50771:95;;;3302:13:26;1379:50771:95;;;3302:13:26;1379:50771:95;;3596:20:26;3636:1;:::i;1379:50771:95:-;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;3346:108:26;3426:4;1713:19:36;:23;;-1:-1:-1;1713:23:36;3387:66:26;;3346:108;;;;;3387:66;3452:1;1379:50771:95;;;;3436:17:26;3387:66;;;3347:34;3380:1;1379:50771:95;;;3365:16:26;;-1:-1:-1;3347:34:26;;3060:18:95;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;7529:381;1379:50771;;-1:-1:-1;;;;;;1379:50771:95;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;3060:18;;;;;1379:50771;;;;;;;;;;;;;3060:18;;;;;1379:50771;;;;;;;;;;;;;3060:18;;;;;1379:50771;;;;;;;;;;;;;3060:18;;;;;1379:50771;;;;;;;;;;;;;3060:18;;;;;1379:50771;;;;;;;;;;;;;3060:18;;;;;1379:50771;;;;;;;;;;;;;3060:18;;;;;1379:50771;;;;;;;;;;;;;3060:18;;;;1379:50771;;;;;;;;;;;3060:18;;;;;;;1379:50771;3060:18;1379:50771;;-1:-1:-1;;;;;;1379:50771:95;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;6040:2153;;3060:18;6040:2153;;;;;;;;;6645:25;;;:::i;:::-;6732:26;;;:::i;:::-;6822:29;;;:::i;:::-;6907:20;;;:::i;:::-;6978:14;;;:::i;:::-;7056:29;;;:::i;:::-;7143:22;;;:::i;:::-;7223;;;:::i;:::-;7281:21;;;:::i;:::-;7338:22;;;:::i;:::-;7396:23;;;:::i;:::-;1379:50771;;-1:-1:-1;;;7544:366:95;;-1:-1:-1;;;;;1379:50771:95;;;7544:366;;;1379:50771;;;;3060:18;;;1379:50771;;;;3060:18;;;1379:50771;;;;3060:18;;;1379:50771;;;;3060:18;;;1379:50771;;;;3060:18;;;1379:50771;;;;3060:18;;;1379:50771;;;;3060:18;;;1379:50771;;;;3060:18;;;1379:50771;;;3060:18;;;1379:50771;;;;;3060:18;7544:366;:14;;3060:18;7544:14;;:366;;;;;;7920:73;7544:366;3060:18;7544:366;-1:-1:-1;7544:366:95;;;6040:2153;3060:18;;;:::i;:::-;7920:73;1379:50771;;;;;;-1:-1:-1;;;;;1379:50771:95;-1:-1:-1;;;;;;1379:50771:95;;;;;;;7920:73;1003:95:20;;:::i;:::-;1868:111:28;;:::i;:::-;1042:67:27;;:::i;7544:366:95:-;;;;;;-1:-1:-1;7544:366:95;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1379:50771;;;;:::o;:::-;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;5328:125:26;5366:69;1379:50771:95;5374:13:26;1379:50771:95;;;;5366:69:26;;;:::i;:::-;;:::i;:::-;1195:12:20;929:10:37;1195:12:20;:::i;5328:125:26:-;5366:69;1379:50771:95;5374:13:26;1379:50771:95;;;;5366:69:26;:::i;5328:125::-;5366:69;1379:50771:95;5374:13:26;1379:50771:95;;;;5366:69:26;;;:::i;:::-;1787:1:28;2065:22;1787:1;5328:125:26:o;1379:50771:95:-;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;1379:50771:95;;;;;;;:::i;:::-;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1379:50771:95;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3060:18;;1379:50771;;-1:-1:-1;;;;;;1379:50771:95;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;3060:18;1379:50771;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;-1:-1:-1;;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;1787:1:28;1379:50771:95;;;;;;;1787:1:28;1379:50771:95;;;;;;;1787:1:28;1379:50771:95;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;1379:50771:95;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;1379:50771:95;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;:::o;:::-;;11950:1;1379:50771;;;;;;;:::o;:::-;;;;;;;;;;:::o;2580:287:28:-;1830:1;2712:7;1379:50771:95;2712:19:28;1830:1;;;2712:7;1787:1;2580:287::o;1830:1::-;1379:50771:95;;-1:-1:-1;;;1830:1:28;;;;;;;;;;;1379:50771:95;1830:1:28;1379:50771:95;;;1830:1:28;;;;1379:50771:95;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;3060:18;;1379:50771;;-1:-1:-1;;;;;;1379:50771:95;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;1787:1:28;1379:50771:95;;;;;;;1787:1:28;1379:50771:95;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1379:50771:95;;-1:-1:-1;1379:50771:95;;-1:-1:-1;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;19202:1;1379:50771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;18399:427;-1:-1:-1;;;;;1379:50771:95;-1:-1:-1;1379:50771:95;;;18491:10;1379:50771;;;;;;;;;;;;;;;;18530:10;1379:50771;;;;;;;18491:59;;1379:50771;18491:64;18487:101;;1379:50771;;;;;;;;;;;;;;;;;;;18530:10;-1:-1:-1;1379:50771:95;;;;;;;18688:57;;21618:54;:::i;18688:57::-;18761:58;18530:10;18761:58;;;18399:427::o;18487:101::-;18571:7;;;;:::o;1379:50771::-;-1:-1:-1;;1379:50771:95;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;35477:1;1379:50771;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;39632:1;1379:50771;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;38974:32;1379:50771;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;33910:2142::-;;;;;;34261:33;34459:7;;;;;;:::i;:::-;34614:34;1379:50771;34614:58;;-1:-1:-1;;;;;1379:50771:95;;;34614:58;1379:50771;;-1:-1:-1;;;34614:67:95;;-1:-1:-1;;;;;1379:50771:95;;34614:67;;;1379:50771;34614:67;;;1379:50771;;;34614:67;;;;;;;;-1:-1:-1;34614:67:95;;;33910:2142;-1:-1:-1;;;34614:254:95;;;-1:-1:-1;;1379:50771:95;;-1:-1:-1;;;34696:65:95;;-1:-1:-1;;;;;1379:50771:95;;;;34614:67;34696:65;;1379:50771;;;;;;;;;;;;34696:65;;;;;;;1379:50771;34696:65;-1:-1:-1;34696:65:95;;;34614:254;;;;1379:50771;34882:24;34903:3;34882:24;;34878:113;;35100:36;35101:28;36032:12;35101:28;;;;:::i;:::-;34903:3;1379:50771;;;;35100:36;35150:15;;35146:718;;34614:254;36032:12;;;:::i;35146:718::-;35276:30;35837:15;35276:30;;;;;;:::i;:::-;35455:24;;;:::i;:::-;34614:12;1379:50771;35493:64;;35517:40;;-1:-1:-1;;;;;1379:50771:95;;;35517:40;35493:64;;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;;;;;35493:64;35606:16;;:::i;:::-;35636:32;;;;;:::i;:::-;1379:50771;35837:15;;:::i;:::-;35146:718;;;;34878:113;1379:50771;;-1:-1:-1;;;34929:51:95;;34614:67;34929:51;;1379:50771;;;34903:3;1379:50771;;;;;;3610:56:24;34696:65:95;;;;;;-1:-1:-1;34696:65:95;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;34614:254;34776:32;1379:50771;;;-1:-1:-1;34776:92:95;;-1:-1:-1;1379:50771:95;;34776:74;;-1:-1:-1;;;;;1379:50771:95;;;34776:74;1379:50771;;-1:-1:-1;;;34776:92:95;;-1:-1:-1;;;;;1379:50771:95;;;34614:67;34776:92;;1379:50771;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;34776:92;;;;;;;;;;1379:50771;34776:92;;;;34614:254;;;;;34776:92;;;;;;-1:-1:-1;34776:92:95;;;;;;:::i;:::-;;;;;34614:67;;;;;;;;;;;;;;;:::i;:::-;;;;;1379:50771;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;;:::o;36636:1776::-;;;;;;;;;;37195:7;36997:33;37195:7;;;;:::i;:::-;37376:26;1379:50771;37376:37;;-1:-1:-1;;;;;1379:50771:95;;;37376:37;1379:50771;;-1:-1:-1;;;37376:74:95;;-1:-1:-1;;;;;1379:50771:95;;;;37376:74;;;1379:50771;;;;;;;;;;;;;;;-1:-1:-1;;;;1379:50771:95;;;;;;-1:-1:-1;;37376:74:95;;;;;;;;;;;;;36636:1776;37540:26;;37618:3;1379:50771;;37596:20;;;;;37637:30;37618:3;37655:12;;;;;:::i;:::-;1379:50771;37637:30;;:::i;:::-;37618:3;;:::i;:::-;37581:13;;;37596:20;;;;;;;;;;;37771:32;;;37767:103;;38392:12;37885:18;;;37881:343;;37576:102;38392:12;;;;;:::i;37881:343::-;38016:33;38203:9;38016:33;;;;;;:::i;:::-;38203:9;;;:::i;:::-;37881:343;;;;;;37767:103;1379:50771;;-1:-1:-1;;;37812:58:95;;37376:74;37812:58;;1379:50771;;;;;;;;;;;3610:56:24;37376:74:95;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;1379:50771;;;;;;;;;3060:18;;;;:::i;38755:1563::-;38974:32;1379:50771;38755:1563;;;38974:56;;-1:-1:-1;;;;;1379:50771:95;;;38974:56;1379:50771;;-1:-1:-1;;;38974:65:95;;;;;1379:50771;;;38974:65;;1379:50771;;38974:65;;1379:50771;;;;;;38974:65;;;;;;;39186:57;38974:65;;;-1:-1:-1;38974:65:95;;;38755:1563;-1:-1:-1;39186:28:95;1379:50771;39186:48;;-1:-1:-1;;;;;1379:50771:95;;;39186:48;1379:50771;;971:66:24;;;;;;;;39186:57:95;;38974:65;39186:57;;1379:50771;;;;;;;;39186:57;;;;;;;;;;-1:-1:-1;39186:57:95;;;38755:1563;39257:27;;;;39253:124;;39391:19;;39387:56;;39610:24;;:::i;:::-;1379:50771;39734:72;1379:50771;39660:40;1379:50771;38974:12;1379:50771;;;;;;;;;39660:40;39644:56;;;;;;:::i;:::-;39734:28;1379:50771;39734:63;;-1:-1:-1;;;;;1379:50771:95;;;39734:63;1379:50771;;-1:-1:-1;;;39734:72:95;;-1:-1:-1;;;;;1379:50771:95;;;38974:65;39734:72;;1379:50771;;;;;-1:-1:-1;1379:50771:95;;;;;;;;;39734:72;;;;;;;;;;40303:7;39734:72;-1:-1:-1;39734:72:95;;;38755:1563;-1:-1:-1;;;;;;1379:50771:95;39710:97;;-1:-1:-1;1379:50771:95;;39710:97;;;:::i;:::-;39833:13;;;;:::i;:::-;1379:50771;-1:-1:-1;;;;;1379:50771:95;;;39833:13;1379:50771;39833:86;;39817:102;39833:86;;39817:102;;;:::i;:::-;40064:16;;:::i;:::-;40103:27;;;;;:::i;:::-;40090:40;;;:::i;:::-;1379:50771;40140:23;;;:::i;:::-;1379:50771;40303:7;:::i;39833:86::-;39906:13;39817:102;39906:13;;;;:::i;:::-;39833:86;;39734:72;;;;;;-1:-1:-1;39734:72:95;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;39253:124;1379:50771;;-1:-1:-1;;;39307:59:95;;38974:65;39307:59;;1379:50771;;;;;;;;;;;3610:56:24;39186:57:95;;;;;;;;;;;;;;;:::i;:::-;;;;;38974:65;;;;;;;;;;;;;;;:::i;:::-;;;;;40477:355;-1:-1:-1;;;;;1379:50771:95;;40652:30;;;:103;;40477:355;40648:178;;40477:355;:::o;40648:178::-;1379:50771;;-1:-1:-1;;;40778:37:95;;-1:-1:-1;;;;;1379:50771:95;;;;40778:37;;;1379:50771;;;3610:56:24;40652:103:95;-1:-1:-1;40687:34:95;1379:50771;40687:50;;-1:-1:-1;;;;;1379:50771:95;;;40687:50;1379:50771;;-1:-1:-1;;;40687:68:95;;-1:-1:-1;;;;;1379:50771:95;;40687:68;;;1379:50771;;40687:68;;1379:50771;;;;;;40687:68;;;;;;;40680:1;40687:68;;;40652:103;40686:69;;40652:103;;40687:68;;;;;;;;;;;;;;:::i;:::-;;;;40984:321;41085:28;;:33;:131;;;;40984:321;41068:231;;40984:321;:::o;41068:231::-;1379:50771;;-1:-1:-1;;;41248:40:95;;-1:-1:-1;;;;;1379:50771:95;;;41248:40;;;1379:50771;;;41248:40;41085:131;1379:50771;4592:71:72;-1:-1:-1;1379:50771:95;;4592:71:72;;;1017:25;;;;4592:71;;;;;;1379:50771:95;4592:71:72;;;;;;:::i;:::-;4784:212;;;;;-1:-1:-1;4784:212:72;;5013:29;;;41085:131:95;5013:48:72;;;;41085:131:95;975:149:72;;;;41085:131:95;1543:81:72;;;41085:131:95;41138:78;41085:131;;1543:81:72;1570:54;;;;:::i;:::-;1543:81;;975:149;1060:64;;;;:::i;:::-;1059:65;975:149;;5013:48;5046:15;;;;5013:48;;;:29;4592:71;-1:-1:-1;5024:18:72;;-1:-1:-1;5013:29:72;;;4421:647;-1:-1:-1;4592:71:72;4421:647;1379:50771:95;;4592:71:72;;;1017:25;;;;4592:71;;1379:50771:95;;;4592:71:72;;;1379:50771:95;4592:71:72;;;;;;:::i;:::-;4784:212;;;;-1:-1:-1;4784:212:72;;5013:29;;;4421:647;5013:48;;;;5006:55;4421:647;:::o;5013:48::-;5046:15;;;;4421:647;:::o;5013:29::-;4592:71;-1:-1:-1;5024:18:72;;-1:-1:-1;5013:29:72;;;4421:647;-1:-1:-1;4592:71:72;4421:647;1379:50771:95;;4592:71:72;;;1017:25;;;;4592:71;;41189:26:95;;;4592:71:72;;;1379:50771:95;4592:71:72;;;;;;:::i;41497:351:95:-;1379:50771;;-1:-1:-1;;;;;;41704:58:95;;;;;1379:50771;;;41704:58;1379:50771;;;-1:-1:-1;;;;;1379:50771:95;;41704:58;;;;;;;-1:-1:-1;41704:58:95;;;41497:351;41704:63;;41700:142;;41497:351;;:::o;41700:142::-;41790:41;1379:50771;;41790:41;;;;;;;;41704:58;41790:41;;;:::i;41704:58::-;;;;;;;;;;;;;;:::i;:::-;;;;42229:1221;-1:-1:-1;;;;;1379:50771:95;;42328:30;;42324:246;;42653:9;42649:56;;1379:50771;;-1:-1:-1;;;42888:30:95;;;42912:4;42888:30;;;1379:50771;42888:30;;;;1379:50771;;;42888:30;;;;;;;;42356:1;42888:30;;;42229:1221;-1:-1:-1;43030:33:95;1379:50771;43030:46;;-1:-1:-1;;;;;1379:50771:95;;;43030:46;:100;;;;;;1379:50771;;-1:-1:-1;;;43030:100:95;;-1:-1:-1;;;;;1379:50771:95;;42888:30;43030:100;;1379:50771;43095:10;1379:50771;;;;42912:4;1379:50771;;;;;;;;;;;-1:-1:-1;;1379:50771:95;;;;;;-1:-1:-1;;43030:100:95;;;;;;;;;;;42229:1221;-1:-1:-1;1379:50771:95;;43253:30;;;42912:4;42888:30;43253;;1379:50771;;;;;;;;43253:30;;;;;;;:46;:30;42356:1;43253:30;;;42229:1221;43253:46;;;:::i;:::-;43313:25;;;43309:135;;42229:1221;;;:::o;43309:135::-;1379:50771;;-1:-1:-1;;;43361:72:95;;-1:-1:-1;;;;;1379:50771:95;;;;42888:30;43361:72;;1379:50771;;;;;;;;;;;;;;;;;3610:56:24;43253:30:95;;;;;;-1:-1:-1;43253:30:95;;;;;;:::i;:::-;;;;;43030:100;;;;;;:::i;:::-;;;;42888:30;;;;;;;;;;;;;;;:::i;:::-;;;;;42649:56;1379:50771;;-1:-1:-1;;;42676:29:95;;;;;42324:246;42472:9;;;;:20;42468:71;;42553:7;:::o;42468:71::-;1379:50771;;-1:-1:-1;;;42501:38:95;;;;;1379:50771;;;;42472:9;1379:50771;;;;;;3610:56:24;1379:50771:95;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;:::i;43667:1000::-;;;;;43882:28;;43878:66;;43984:1;43958:27;;43954:94;;44062:46;;;44058:149;;44289:22;;;43909:1;44326:13;;44321:265;44341:23;;;;;;44600:17;;;;;44614:3;44600:17;;44596:64;;43667:1000;:::o;44596:64::-;1379:50771;;-1:-1:-1;;;44626:34:95;;;;;1379:50771;;;;34903:3;1379:50771;;;;;;3610:56:24;44366:3:95;44389:19;;;;;:33;:19;;;;;;:::i;:::-;;:::i;:33::-;;44385:75;;44478:20;:15;;;;;;:::i;:::-;;:::i;:::-;1379:50771;;;;44478:20;;44474:58;;44546:29;44366:3;44560:15;44546:29;44560:15;;;;;;:::i;44546:29::-;;;:::i;:::-;44366:3;;:::i;:::-;44326:13;;;;;;44474:58;1379:50771;;-1:-1:-1;;;44507:25:95;;;;;1379:50771;;;;;3610:56:24;44385:75:95;1379:50771;;-1:-1:-1;;;44431:29:95;;;;;1379:50771;;;;;3610:56:24;44058:149:95;-1:-1:-1;1379:50771:95;;-1:-1:-1;;;44131:65:95;;;;;1379:50771;;;;;;;;;;;;3610:56:24;43954:94:95;1379:50771;;-1:-1:-1;;;43994:54:95;;;;;1379:50771;;;43984:1;1379:50771;;;;;;3610:56:24;43878:66:95;1379:50771;;-1:-1:-1;;;43919:25:95;;;;;45023:1293;;;;;1379:50771;;;;45287:46;;;;45283:149;;1379:50771;;45550:38;1379:50771;;45550:38;:::i;:::-;45598:33;;45647:13;-1:-1:-1;45691:3:95;1379:50771;;45662:27;;;;;;45719;;;;:::i;:::-;45714:32;;1379:50771;;45879:28;;;;45691:3;45879:28;;;:::i;:::-;1379:50771;45691:3;:::i;:::-;45647:13;;45710:439;46065:15;;46054:33;46055:25;;46065:15;;45691:3;46065:15;46105:29;46065:15;;:::i;:::-;1379:50771;;;;;46055:25;;;:::i;46054:33::-;46041:46;;;;:::i;:::-;1379:50771;46124:10;;;;:::i;:::-;1379:50771;46105:29;;:::i;:::-;45710:439;45691:3;:::i;45662:27::-;;;;;46301:7;45662:27;;;46301:7;:::i;45283:149::-;1379:50771;;-1:-1:-1;;;45356:65:95;;;;;1379:50771;;;;;;;;;;;;;3610:56:24;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1379:50771:95;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;46732:1541::-;;;;;1379:50771;;;;47023:37;;;;47019:132;;47255:23;;-1:-1:-1;47293:13:95;;47329:3;1379:50771;;47308:19;;;;;47348:26;47329:3;47363:11;;;;;:::i;47329:3::-;47293:13;;;47308:19;;;;;;;47398:22;;;47394:76;;-1:-1:-1;;;;;;1379:50771:95;;;;47485:30;;47481:521;;48066:13;-1:-1:-1;48105:3:95;1379:50771;;48081:22;;;;;48228:14;48209:47;48228:14;;48105:3;48228:14;;;:::i;:::-;48244:11;;;;;:::i;:::-;1379:50771;;;48209:47;;:::i;:::-;48105:3;:::i;:::-;48066:13;;48081:22;;;;;;;46732:1541::o;47481:521::-;-1:-1:-1;1379:50771:95;;;;;;;47724:84;;47655:30;1379:50771;47663:21;1379:50771;;;;;;;;;47655:30;1379:50771;;;47724:84;;;;;;971:66:24;;;;47724:84:95;;;;;;:::i;:::-;;1379:50771;;47724:84;;;;;;:::i;:::-;47655:167;;;;;;:::i;:::-;47936:8;;47932:39;;47985:7;:::o;47932:39::-;1379:50771;;-1:-1:-1;;;47953:18:95;;1379:50771;;;47953:18;;47663:21;47953:18;;;:::i;47394:76::-;1379:50771;;-1:-1:-1;;;47429:41:95;;;;;1379:50771;;;;;;;;;;;;3610:56:24;47019:132:95;1379:50771;;-1:-1:-1;;;47083:57:95;;;;;1379:50771;;;;;;;;;;;;;3610:56:24;941:175:60;5535:69:65;941:175:60;-1:-1:-1;1379:50771:95;;;1050:58:60;;;;;;;;;971:66:24;;;;1050:58:60;;;;;;:::i;:::-;;1379:50771:95;;1050:58:60;;;;;;:::i;:::-;1379:50771:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;5487:31:65;;;;;;;;:::i;5535:69::-;1379:50771:95;;5705:22:60;;;;:56;;;;;941:175;1379:50771:95;;;;;;941:175:60;:::o;1379:50771:95:-;;;;;3610:56:24;;;;1379:50771:95;;;;;;;1050:58:60;1379:50771:95;;;;;;;;-1:-1:-1;;;1379:50771:95;;;;;5705:56:60;5731:30;;-1:-1:-1;5731:30:60;;;;;;;:::i;:::-;5705:56;;;;;48454:281:95;-1:-1:-1;;;;;1379:50771:95;48658:22;48654:74;;48454:281::o;48654:74::-;1379:50771;;-1:-1:-1;;;48689:39:95;;-1:-1:-1;;;48689:39:95;;;1379:50771;;;48689:39;48454:281;-1:-1:-1;;;;;1379:50771:95;48658:22;48654:74;;48454:281::o;48654:74::-;1379:50771;;-1:-1:-1;;;48689:39:95;;-1:-1:-1;;;48689:39:95;;;1379:50771;;;48689:39;48454:281;-1:-1:-1;;;;;1379:50771:95;48658:22;48654:74;;48454:281::o;48654:74::-;1379:50771;;-1:-1:-1;;;48689:39:95;;-1:-1:-1;;;48689:39:95;;;1379:50771;;;48689:39;48454:281;-1:-1:-1;;;;;1379:50771:95;48658:22;48654:74;;48454:281::o;48654:74::-;1379:50771;;-1:-1:-1;;;48689:39:95;;-1:-1:-1;;;48689:39:95;;;1379:50771;;;48689:39;48454:281;-1:-1:-1;;;;;1379:50771:95;48658:22;48654:74;;48454:281::o;48654:74::-;1379:50771;;-1:-1:-1;;;48689:39:95;;-1:-1:-1;;;48689:39:95;;;1379:50771;;;48689:39;48454:281;-1:-1:-1;;;;;1379:50771:95;48658:22;48654:74;;48454:281::o;48654:74::-;1379:50771;;-1:-1:-1;;;48689:39:95;;-1:-1:-1;;;48689:39:95;;;1379:50771;;;48689:39;48454:281;-1:-1:-1;;;;;1379:50771:95;48658:22;48654:74;;48454:281::o;48654:74::-;1379:50771;;-1:-1:-1;;;48689:39:95;;-1:-1:-1;;;48689:39:95;;;1379:50771;;;48689:39;48454:281;-1:-1:-1;;;;;1379:50771:95;48658:22;48654:74;;48454:281::o;48654:74::-;1379:50771;;-1:-1:-1;;;48689:39:95;;-1:-1:-1;;;48689:39:95;;;1379:50771;;;48689:39;48866:270;-1:-1:-1;;;;;1379:50771:95;49061:30;49057:72;;48866:270::o;49057:72::-;1379:50771;;-1:-1:-1;;;49100:29:95;;;;;49428:763;-1:-1:-1;;;;;1379:50771:95;-1:-1:-1;1379:50771:95;;;49741:19;1379:50771;;;;;;;;;;;;;;;49428:763;;;1379:50771;;;:::i;:::-;;;;49803:34;:85;;;;49428:763;49799:122;;50038:82;1379:50771;50039:81;1379:50771;;;;50062:26;;;;;;;;1379:50771;;;;;;;;;;;;;50062:26;1379:50771;50052:37;;1379:50771;;50039:81;;:::i;50038:82::-;50034:151;;49428:763;:::o;50034:151::-;1379:50771;;-1:-1:-1;;;50143:31:95;;-1:-1:-1;;;;;1379:50771:95;;;;50143:31;;;1379:50771;;;3610:56:24;49803:85:95;49860:28;1379:50771;49860:28;;1379:50771;49841:15;:47;;49803:85;;50437:499;;;;50678:13;50690:1;50678:13;50673:219;50693:17;;;;;;50909:20;;;;;50437:499;:::o;50712:3::-;50871:9;;;;50712:3;50871:9;;;;;;:::i;:::-;1379:50771;51209:6;;;;;1379:50771;;;51228:22;;;1379:50771;;;;;;;;;;51228:22;1379:50771;;;;51228:22;1379:50771;51228:22;1379:50771;51218:33;;50712:3;;:::i;:::-;50678:13;;;;;51209:78;1379:50771;;;51264:22;;;1379:50771;;;;;;;;;;51264:22;;1379:50771;;;;51264:22;1379:50771;51264:22;1379:50771;51254:33;;51209:78;;51599:549;51881:34;1379:50771;;;51881:34;;;;;;;;;;;;;;;:::i;:::-;51853:63;;;;;;;;:::i;:::-;52012:8;;1379:50771;;52012:28;;51599:549;52008:77;;1379:50771;;51881:34;1379:50771;52102:27;1379:50771;;52102:27;;;;;;:::i;:::-;-1:-1:-1;;;;;1379:50771:95;;;;;52102:39;;51599:549::o;52008:77::-;1379:50771;;-1:-1:-1;;;52049:36:95;;-1:-1:-1;;;;;1379:50771:95;;;51881:34;52049:36;;1379:50771;51881:34;;52049:36;52012:28;1379:50771;51881:34;1379:50771;;52024:16;52012:28;","linkReferences":{"src/v2/utils/MarketConfigV2.sol":{"MarketConfigV2":[{"start":693,"length":20},{"start":855,"length":20},{"start":1114,"length":20},{"start":1252,"length":20},{"start":6833,"length":20},{"start":8729,"length":20},{"start":9812,"length":20},{"start":9950,"length":20},{"start":10088,"length":20},{"start":10226,"length":20},{"start":13014,"length":20}]}},"immutableReferences":{"30657":[{"start":1378,"length":32},{"start":2589,"length":32},{"start":11518,"length":32}]}},"methodIdentifiers":{"buy(address,uint256,address,address,uint256,uint256)":"6afaf006","cancelSalePrice(address,uint256)":"3f83e9e0","getDirectSaleConfig(address,uint256)":"6e2f4d8b","getERC1155ApprovalManager()":"c7c83d17","getMarketConfig()":"614bd944","getSalePrice(address,uint256,address)":"369679a4","getTokenAllowListConfig(address,uint256)":"bf3d90f8","getTokenMintLimit(address,uint256)":"8760251a","getTokenMintsPerAddress(address,uint256,address)":"28fbba03","getTokenTxLimit(address,uint256)":"552f791d","getTokenTxsPerAddress(address,uint256,address)":"5a501f8f","initialize(address,address,address,address,address,address,address,address,address,address,address)":"76902b83","isPaused()":"b187bd26","mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])":"99273b3d","owner()":"8da5cb5b","prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])":"d5f339a8","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","setApprovedTokenRegistry(address)":"e4e87e3b","setContractPaused(bool)":"882796f1","setERC1155ApprovalManager(address)":"ff5c83a4","setERC20ApprovalManager(address)":"d7a9fb7c","setERC721ApprovalManager(address)":"d80b23e3","setMarketplaceSettings(address)":"176ab440","setNetworkBeneficiary(address)":"3492e5a8","setPayments(address)":"af231a58","setRoyaltyEngine(address)":"21ede032","setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])":"5faec406","setSpaceOperatorRegistry(address)":"7f358230","setStakingRegistry(address)":"2c740844","setStakingSettings(address)":"f1035744","setTokenAllowListConfig(bytes32,uint256,address,uint256)":"b64843b2","setTokenMintLimit(address,uint256,uint256)":"b8aefc63","setTokenTxLimit(address,uint256,uint256)":"7b2db4bb","transferOwnership(address)":"f2fde38b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"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\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"buy\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"cancelSalePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDirectSaleConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155Marketplace.DirectSaleConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC1155ApprovalManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"contract IPayments\",\"name\":\"payments\",\"type\":\"address\"},{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IStakingSettings\",\"name\":\"stakingSettings\",\"type\":\"address\"},{\"internalType\":\"contract IRareStakingRegistry\",\"name\":\"stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IERC20ApprovalManager\",\"name\":\"erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC721ApprovalManager\",\"name\":\"erc721ApprovalManager\",\"type\":\"address\"}],\"internalType\":\"struct MarketConfigV2.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"getSalePrice\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155Marketplace.SalePrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenAllowListConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Marketplace.AllowListConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenMintLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getTokenMintsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenTxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getTokenTxsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"_proof\",\"type\":\"bytes32[]\"}],\"name\":\"mintDirectSale\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"prepareMintDirectSale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"}],\"name\":\"setApprovedTokenRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isPaused\",\"type\":\"bool\"}],\"name\":\"setContractPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC1155ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC20ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC721ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"}],\"name\":\"setMarketplaceSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"}],\"name\":\"setNetworkBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"}],\"name\":\"setPayments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"}],\"name\":\"setRoyaltyEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"setSalePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"}],\"name\":\"setSpaceOperatorRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"}],\"name\":\"setStakingRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"}],\"name\":\"setStakingSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"setTokenAllowListConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"setTokenMintLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"setTokenTxLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"UUPS-upgradeable marketplace that keeps ERC1155 sale semantics separate from ERC721 marketplace logic.\",\"errors\":{\"AddressNotAllowlisted(address)\":[{\"params\":{\"_account\":\"Buyer account that failed allowlist verification.\"}}],\"ContractHasNoOwner(address)\":[{\"params\":{\"_contractAddress\":\"Contract that did not expose a valid `owner()`.\"}}],\"CurrencyMismatch(address,address)\":[{\"params\":{\"_configuredCurrency\":\"Currency stored in marketplace configuration.\",\"_suppliedCurrency\":\"Currency supplied by the caller.\"}}],\"CurrencyNotApproved(address)\":[{\"params\":{\"_currencyAddress\":\"Currency that failed approval.\"}}],\"DirectSaleNotConfigured(address,uint256)\":[{\"params\":{\"_contractAddress\":\"Collection address.\",\"_tokenId\":\"Token id missing a primary sale config.\"}}],\"ERC20FeeOnTransferUnsupported(address,uint256,uint256)\":[{\"params\":{\"_currencyAddress\":\"ERC20 token address.\",\"_expectedAmount\":\"Amount expected by the marketplace.\",\"_receivedAmount\":\"Amount actually received by the marketplace.\"}}],\"IncorrectETHAmount(uint256,uint256)\":[{\"params\":{\"_requiredAmount\":\"Amount required by the marketplace.\",\"_suppliedAmount\":\"Amount supplied as `msg.value`.\"}}],\"InsufficientTokenBalance(address,address,uint256,uint256,uint256)\":[{\"params\":{\"_account\":\"Account whose balance was checked.\",\"_availableQuantity\":\"Quantity available at check time.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_requestedQuantity\":\"Quantity required by the operation.\",\"_tokenId\":\"Token id whose balance was checked.\"}}],\"InvalidERC1155Contract(address)\":[{\"params\":{\"_contractAddress\":\"Collection address that failed validation.\"}}],\"InvalidERC1155Transfer(address,uint256,address,address,uint256)\":[{\"params\":{\"_buyer\":\"Buyer whose balance should increase.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_quantity\":\"Quantity that should be transferred.\",\"_seller\":\"Seller whose balance should decrease.\",\"_tokenId\":\"Token id transferred.\"}}],\"MarketConfigAddressCannotBeZero(bytes32)\":[{\"params\":{\"_field\":\"Name of the dependency field that was zero.\"}}],\"MarketplaceNotApproved(address,address)\":[{\"params\":{\"_account\":\"ERC1155 owner that must approve the marketplace.\",\"_contractAddress\":\"ERC1155 collection address.\"}}],\"MaxMintExceeded(uint256,uint256)\":[{\"params\":{\"_maxMints\":\"Configured max quantity per transaction.\",\"_requestedQuantity\":\"Requested mint quantity.\"}}],\"MintLimitExceeded(address,uint256,address,uint256,uint256,uint256)\":[{\"params\":{\"_account\":\"Buyer account.\",\"_contractAddress\":\"Collection address.\",\"_limit\":\"Configured mint limit.\",\"_mintedQuantity\":\"Quantity already minted by the account.\",\"_requestedQuantity\":\"Requested mint quantity.\",\"_tokenId\":\"Token id being minted.\"}}],\"NotContractOwner(address,address)\":[{\"params\":{\"_account\":\"Account that failed the owner check.\",\"_contractAddress\":\"Collection address whose owner was checked.\"}}],\"PayoutFailed(bytes)\":[{\"params\":{\"_revertData\":\"Raw revert data returned by the failed payout call.\"}}],\"PayoutLengthMismatch(uint256,uint256)\":[{\"params\":{\"_amountsLength\":\"Number of payout amounts supplied.\",\"_recipientsLength\":\"Number of payout recipients supplied.\"}}],\"PayoutTotalMismatch(uint256,uint256)\":[{\"params\":{\"_actualAmount\":\"Sum of supplied payout amounts.\",\"_expectedAmount\":\"Amount expected to be paid by the batch.\"}}],\"PlatformCommissionExceeded(uint256,uint256)\":[{\"params\":{\"_maxPlatformCommission\":\"Maximum supported platform commission percentage.\",\"_platformCommission\":\"Supplied primary platform commission percentage.\"}}],\"PriceMismatch(uint256,uint256)\":[{\"params\":{\"_configuredPrice\":\"Price stored in marketplace configuration.\",\"_suppliedPrice\":\"Price supplied by the caller.\"}}],\"QuantityExceedsSalePriceQuantity(uint256,uint256)\":[{\"params\":{\"_availableQuantity\":\"Quantity currently listed.\",\"_requestedQuantity\":\"Quantity requested by the buyer.\"}}],\"RoyaltiesExceedSaleAmount(uint256,uint256)\":[{\"params\":{\"_royalties\":\"Total royalties returned by the royalty engine.\",\"_saleAmount\":\"Gross sale amount before royalty deduction.\"}}],\"SaleNotStarted(uint256)\":[{\"params\":{\"_startTime\":\"Configured sale start timestamp.\"}}],\"SalePriceDoesNotExist(address,uint256,address)\":[{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_seller\":\"Seller whose listing was requested.\",\"_tokenId\":\"Token id requested.\"}}],\"SelfPurchaseUnsupported(address)\":[{\"params\":{\"_seller\":\"Seller whose listing was targeted.\"}}],\"SplitLengthMismatch(uint256,uint256)\":[{\"params\":{\"_ratiosLength\":\"Supplied ratio count.\",\"_recipientsLength\":\"Supplied recipient count.\"}}],\"SplitRatioCannotBeZero(uint256)\":[{\"params\":{\"_index\":\"Index of the invalid split ratio.\"}}],\"SplitRecipientCannotBeZero(uint256)\":[{\"params\":{\"_index\":\"Index of the invalid split recipient.\"}}],\"SplitRecipientsExceededMax(uint256,uint256)\":[{\"params\":{\"_maxRecipients\":\"Maximum supported recipient count.\",\"_recipientsLength\":\"Supplied recipient count.\"}}],\"SplitTotalInvalid(uint256,uint256)\":[{\"params\":{\"_requiredTotal\":\"Required ratio total.\",\"_totalRatio\":\"Supplied ratio total.\"}}],\"StakingFeeExceedsMarketplaceFee(uint256,uint256)\":[{\"params\":{\"_marketplaceFee\":\"Total marketplace fee collected from the buyer.\",\"_stakingFee\":\"Staking portion requested by staking settings.\"}}],\"TokenNotFound(address,uint256)\":[{\"params\":{\"_contractAddress\":\"Collection address.\",\"_tokenId\":\"Missing token id.\"}}],\"TransactionLimitExceeded(address,uint256,address,uint256,uint256)\":[{\"params\":{\"_account\":\"Buyer account.\",\"_contractAddress\":\"Collection address.\",\"_limit\":\"Configured transaction limit.\",\"_tokenId\":\"Token id being minted.\",\"_usedTransactions\":\"Transactions already used by the account.\"}}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MintDirectSale(address,uint256,address,address,uint256,address,uint256)\":{\"params\":{\"buyer\":\"Address that paid for and received the mint.\",\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Sale currency. Zero address indicates ETH.\",\"price\":\"Unit price paid.\",\"quantity\":\"Quantity minted.\",\"seller\":\"Creator/seller that received proceeds.\",\"tokenId\":\"Minted token id.\"}},\"PrepareMintDirectSale(address,uint256,address,address,uint256,uint256,uint256,address[],uint8[])\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Sale currency. Zero address indicates ETH.\",\"maxMints\":\"Max quantity per transaction. Zero means unlimited.\",\"price\":\"Unit price per token.\",\"seller\":\"Creator/seller that receives sale proceeds.\",\"splitRatios\":\"Percentages for `splitRecipients`.\",\"splitRecipients\":\"Recipients that split seller proceeds.\",\"startTime\":\"Timestamp when minting may begin.\",\"tokenId\":\"Token id sold by the primary sale.\"}},\"SalePriceCancelled(address,address,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"seller\":\"Seller that cancelled the listing.\",\"tokenId\":\"Token id whose listing was cancelled.\"}},\"SalePriceSet(address,address,uint256,address,uint256,uint256,address[],uint8[])\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Listing currency. Zero address indicates ETH.\",\"price\":\"Unit price per token.\",\"quantity\":\"Quantity listed.\",\"seller\":\"Seller that owns the listed ERC1155 balance.\",\"splitRatios\":\"Percentages for `splitRecipients`.\",\"splitRecipients\":\"Recipients that split seller proceeds.\",\"tokenId\":\"Listed token id.\"}},\"SetTokenAllowListConfig(address,uint256,bytes32,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"endTimestamp\":\"Timestamp when allowlist enforcement expires.\",\"root\":\"Merkle root for allowlisted buyers.\",\"tokenId\":\"Token id controlled by the allowlist.\"}},\"Sold(address,address,address,uint256,address,uint256,uint256)\":{\"params\":{\"buyer\":\"Buyer that paid and received the ERC1155 tokens.\",\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Purchase currency. Zero address indicates ETH.\",\"price\":\"Unit price paid.\",\"quantity\":\"Quantity purchased.\",\"seller\":\"Seller that transferred the ERC1155 tokens.\",\"tokenId\":\"Purchased token id.\"}},\"TokenMintLimitSet(address,uint256,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"limit\":\"Max quantity each address may mint while the limit is enabled. Zero disables the limit.\",\"tokenId\":\"Token id controlled by the limit.\"}},\"TokenTxLimitSet(address,uint256,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"limit\":\"Max mint transactions each address may submit while the limit is enabled. Zero disables the limit.\",\"tokenId\":\"Token id controlled by the limit.\"}},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"buy(address,uint256,address,address,uint256,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Currency expected by the buyer.\",\"_price\":\"Unit price expected by the buyer.\",\"_quantity\":\"Quantity to buy.\",\"_seller\":\"Seller whose listing is being filled.\",\"_tokenId\":\"Token id to buy.\"}},\"cancelSalePrice(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Listed token id.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getDirectSaleConfig(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Primary sale config for the token id.\"}},\"getERC1155ApprovalManager()\":{\"returns\":{\"_0\":\"Current ERC1155 approval manager address.\"}},\"getMarketConfig()\":{\"returns\":{\"_0\":\"Current market config struct.\"}},\"getSalePrice(address,uint256,address)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_seller\":\"Seller whose listing is returned.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Secondary fixed-price listing for the seller and token id.\"}},\"getTokenAllowListConfig(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Allowlist config for the token id.\"}},\"getTokenMintLimit(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Mint quantity limit. Zero means unlimited.\"}},\"getTokenMintsPerAddress(address,uint256,address)\":{\"params\":{\"_address\":\"Address whose minted quantity is returned.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Quantity minted by `_address`.\"}},\"getTokenTxLimit(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Transaction limit. Zero means unlimited.\"}},\"getTokenTxsPerAddress(address,uint256,address)\":{\"params\":{\"_address\":\"Address whose transaction count is returned.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Number of mint transactions used by `_address`.\"}},\"initialize(address,address,address,address,address,address,address,address,address,address,address)\":{\"details\":\"Stores the market config dependency bundle and initializes inherited upgradeability modules.\",\"params\":{\"_approvedTokenRegistry\":\"Registry of approved ERC20 currencies.\",\"_erc1155ApprovalManager\":\"ERC1155 transfer manager for seller token approvals.\",\"_erc20ApprovalManager\":\"ERC20 transfer manager for buyer currency approvals.\",\"_erc721ApprovalManager\":\"ERC721 transfer manager kept in shared V2 market config.\",\"_marketplaceSettings\":\"Marketplace settings contract.\",\"_networkBeneficiary\":\"Address receiving network marketplace fees.\",\"_payments\":\"Payments contract used for ETH fan-out.\",\"_royaltyEngine\":\"Royalty engine contract.\",\"_spaceOperatorRegistry\":\"Space operator registry contract.\",\"_stakingRegistry\":\"Staking registry contract.\",\"_stakingSettings\":\"Staking fee settings contract.\"}},\"isPaused()\":{\"returns\":{\"_0\":\"True when paused.\"}},\"mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Currency expected by the buyer.\",\"_price\":\"Unit price expected by the buyer.\",\"_proof\":\"Merkle proof for active allowlist sales.\",\"_quantity\":\"Quantity to mint.\",\"_tokenId\":\"Token id to mint.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Sale currency. Zero address indicates ETH.\",\"_maxMints\":\"Max quantity per mint transaction. Zero means unlimited.\",\"_price\":\"Unit price per token.\",\"_splitRatios\":\"Percentages for `splitRecipients`, totaling 100.\",\"_splitRecipients\":\"Recipients that split seller proceeds.\",\"_startTime\":\"Timestamp when minting may begin.\",\"_tokenId\":\"Token id to sell through primary minting.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setApprovedTokenRegistry(address)\":{\"params\":{\"_approvedTokenRegistry\":\"New approved token registry contract.\"}},\"setContractPaused(bool)\":{\"params\":{\"_isPaused\":\"New pause state.\"}},\"setERC1155ApprovalManager(address)\":{\"params\":{\"_erc1155ApprovalManager\":\"New ERC1155 approval manager contract.\"}},\"setERC20ApprovalManager(address)\":{\"params\":{\"_erc20ApprovalManager\":\"New ERC20 approval manager contract.\"}},\"setERC721ApprovalManager(address)\":{\"params\":{\"_erc721ApprovalManager\":\"New ERC721 approval manager contract.\"}},\"setMarketplaceSettings(address)\":{\"params\":{\"_marketplaceSettings\":\"New marketplace settings contract.\"}},\"setNetworkBeneficiary(address)\":{\"params\":{\"_networkBeneficiary\":\"New network beneficiary.\"}},\"setPayments(address)\":{\"params\":{\"_payments\":\"New payments contract.\"}},\"setRoyaltyEngine(address)\":{\"params\":{\"_royaltyEngine\":\"New royalty engine contract.\"}},\"setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Listings intentionally have no expiry timestamp and can be cancelled by the seller with `cancelSalePrice`.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Listing currency. Zero address indicates ETH.\",\"_price\":\"Unit price per token.\",\"_quantity\":\"Quantity listed.\",\"_splitRatios\":\"Percentages for `splitRecipients`, totaling 100.\",\"_splitRecipients\":\"Recipients that split seller proceeds.\",\"_tokenId\":\"Token id to list.\"}},\"setSpaceOperatorRegistry(address)\":{\"params\":{\"_spaceOperatorRegistry\":\"New space operator registry contract.\"}},\"setStakingRegistry(address)\":{\"params\":{\"_stakingRegistry\":\"New staking registry contract.\"}},\"setStakingSettings(address)\":{\"params\":{\"_stakingSettings\":\"New staking settings contract.\"}},\"setTokenAllowListConfig(bytes32,uint256,address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_endTimestamp\":\"Timestamp when allowlist enforcement expires.\",\"_root\":\"Merkle root for allowlisted minters. Zero root disables allowlist enforcement.\",\"_tokenId\":\"Token id controlled by the allowlist.\"}},\"setTokenMintLimit(address,uint256,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_limit\":\"Max mint quantity per address. Zero disables the limit and disabled periods are not counted.\",\"_tokenId\":\"Token id controlled by the limit.\"}},\"setTokenTxLimit(address,uint256,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_limit\":\"Max transactions per address. Zero disables the limit and disabled periods are not counted.\",\"_tokenId\":\"Token id controlled by the limit.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"salePrices\":{\"details\":\"Listings intentionally do not carry expiry timestamps or seller-wide nonces. Sellers cancel standing offers explicitly, and buys revalidate balance, approval, currency, price, and quantity.\"}},\"title\":\"RareERC1155Marketplace\",\"version\":1},\"userdoc\":{\"errors\":{\"AddressNotAllowlisted(address)\":[{\"notice\":\"Reverted when a buyer is not included in an active allowlist.\"}],\"ApprovalManagerCannotBeZero()\":[{\"notice\":\"Reverted when an approval manager address is zero.\"}],\"ContractHasNoOwner(address)\":[{\"notice\":\"Reverted when ownership cannot be read from a collection.\"}],\"ContractPaused()\":[{\"notice\":\"Reverted when a write function is called while the marketplace is paused.\"}],\"CurrencyMismatch(address,address)\":[{\"notice\":\"Reverted when a caller-supplied currency does not match the configured currency.\"}],\"CurrencyNotApproved(address)\":[{\"notice\":\"Reverted when a currency is neither ETH nor approved by the token registry.\"}],\"DirectSaleNotConfigured(address,uint256)\":[{\"notice\":\"Reverted when a primary mint is attempted before sale configuration exists.\"}],\"ERC20FeeOnTransferUnsupported(address,uint256,uint256)\":[{\"notice\":\"Reverted when an ERC20 transfer receives less or more than expected.\"}],\"IncorrectETHAmount(uint256,uint256)\":[{\"notice\":\"Reverted when an ETH purchase sends the wrong `msg.value`.\"}],\"InsufficientTokenBalance(address,address,uint256,uint256,uint256)\":[{\"notice\":\"Reverted when a seller does not have enough ERC1155 balance for a listing or purchase.\"}],\"InvalidERC1155Contract(address)\":[{\"notice\":\"Reverted when a secondary collection is not a deployed ERC1155 contract.\"}],\"InvalidERC1155Transfer(address,uint256,address,address,uint256)\":[{\"notice\":\"Reverted when an ERC1155 transfer completes without exact seller and buyer balance deltas.\"}],\"MarketConfigAddressCannotBeZero(bytes32)\":[{\"notice\":\"Reverted when a required market config dependency address is zero.\"}],\"MarketplaceNotApproved(address,address)\":[{\"notice\":\"Reverted when the marketplace is not approved to transfer a seller's ERC1155 tokens.\"}],\"MaxMintExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a mint quantity exceeds the sale's per-transaction max.\"}],\"MintLimitExceeded(address,uint256,address,uint256,uint256,uint256)\":[{\"notice\":\"Reverted when a mint would exceed a buyer's per-address mint limit for a token id.\"}],\"MsgValueMustBeZero()\":[{\"notice\":\"Reverted when a free mint includes ETH.\"}],\"MsgValueUnsupportedForERC20()\":[{\"notice\":\"Reverted when ETH is supplied for an ERC20 purchase.\"}],\"NotContractOwner(address,address)\":[{\"notice\":\"Reverted when a caller is not the owner of a collection.\"}],\"PayoutFailed(bytes)\":[{\"notice\":\"Reverted when ETH payout through the Payments contract fails.\"}],\"PayoutLengthMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when payout recipients and amounts have different lengths.\"}],\"PayoutTotalMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when payout amounts do not sum to the expected batch amount.\"}],\"PlatformCommissionExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when primary platform commission exceeds 100%.\"}],\"PriceMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when a caller-supplied price does not match the configured price.\"}],\"QuantityCannotBeZero()\":[{\"notice\":\"Reverted when a quantity argument is zero.\"}],\"QuantityExceedsSalePriceQuantity(uint256,uint256)\":[{\"notice\":\"Reverted when a purchase quantity exceeds listed quantity.\"}],\"RoyaltiesExceedSaleAmount(uint256,uint256)\":[{\"notice\":\"Reverted when royalties returned by the royalty engine exceed sale proceeds.\"}],\"SaleNotStarted(uint256)\":[{\"notice\":\"Reverted when a primary mint is attempted before the start time.\"}],\"SalePriceCannotBeZero()\":[{\"notice\":\"Reverted when a secondary listing price is zero.\"}],\"SalePriceDoesNotExist(address,uint256,address)\":[{\"notice\":\"Reverted when no secondary listing exists for a seller and token id.\"}],\"SelfPurchaseUnsupported(address)\":[{\"notice\":\"Reverted when a buyer tries to fill their own secondary listing.\"}],\"SplitLengthMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when split recipient and ratio arrays have different lengths.\"}],\"SplitRatioCannotBeZero(uint256)\":[{\"notice\":\"Reverted when a split ratio is zero.\"}],\"SplitRecipientCannotBeZero(uint256)\":[{\"notice\":\"Reverted when a split recipient is the zero address.\"}],\"SplitRecipientsExceededMax(uint256,uint256)\":[{\"notice\":\"Reverted when a sale config has more split recipients than supported.\"}],\"SplitRecipientsRequired()\":[{\"notice\":\"Reverted when a sale config has no split recipients.\"}],\"SplitTotalInvalid(uint256,uint256)\":[{\"notice\":\"Reverted when split ratios do not total 100.\"}],\"StakingFeeExceedsMarketplaceFee(uint256,uint256)\":[{\"notice\":\"Reverted when the staking fee exceeds the buyer-paid marketplace fee.\"}],\"TokenNotFound(address,uint256)\":[{\"notice\":\"Reverted when a token id has not been created on a collection.\"}],\"TransactionLimitExceeded(address,uint256,address,uint256,uint256)\":[{\"notice\":\"Reverted when a mint would exceed a buyer's per-address transaction limit for a token id.\"}]},\"events\":{\"MintDirectSale(address,uint256,address,address,uint256,address,uint256)\":{\"notice\":\"Emitted when a buyer mints through a primary sale.\"},\"PrepareMintDirectSale(address,uint256,address,address,uint256,uint256,uint256,address[],uint8[])\":{\"notice\":\"Emitted when a creator configures a primary mint sale.\"},\"SalePriceCancelled(address,address,uint256)\":{\"notice\":\"Emitted when a seller cancels a secondary listing.\"},\"SalePriceSet(address,address,uint256,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Emitted when a seller creates or replaces a secondary fixed-price listing.\"},\"SetTokenAllowListConfig(address,uint256,bytes32,uint256)\":{\"notice\":\"Emitted when a token allowlist config is set.\"},\"Sold(address,address,address,uint256,address,uint256,uint256)\":{\"notice\":\"Emitted when a buyer fills a secondary fixed-price listing.\"},\"TokenMintLimitSet(address,uint256,uint256)\":{\"notice\":\"Emitted when a per-address mint limit is set for a token id.\"},\"TokenTxLimitSet(address,uint256,uint256)\":{\"notice\":\"Emitted when a per-address transaction limit is set for a token id.\"}},\"kind\":\"user\",\"methods\":{\"buy(address,uint256,address,address,uint256,uint256)\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listing.\"},\"cancelSalePrice(address,uint256)\":{\"notice\":\"Cancels the caller's secondary listing for a token id.\"},\"getDirectSaleConfig(address,uint256)\":{\"notice\":\"Returns the primary mint sale config for a token id.\"},\"getERC1155ApprovalManager()\":{\"notice\":\"Returns the ERC1155 approval manager used for secondary transfers.\"},\"getMarketConfig()\":{\"notice\":\"Returns the marketplace dependency configuration.\"},\"getSalePrice(address,uint256,address)\":{\"notice\":\"Returns a seller's secondary fixed-price listing.\"},\"getTokenAllowListConfig(address,uint256)\":{\"notice\":\"Returns the allowlist config for a token id.\"},\"getTokenMintLimit(address,uint256)\":{\"notice\":\"Returns the per-address mint quantity limit for a token id.\"},\"getTokenMintsPerAddress(address,uint256,address)\":{\"notice\":\"Returns quantity minted by an address for a token id.\"},\"getTokenTxLimit(address,uint256)\":{\"notice\":\"Returns the per-address transaction limit for a token id.\"},\"getTokenTxsPerAddress(address,uint256,address)\":{\"notice\":\"Returns mint transactions used by an address for a token id.\"},\"initialize(address,address,address,address,address,address,address,address,address,address,address)\":{\"notice\":\"Initializes the UUPS marketplace implementation behind a proxy.\"},\"isPaused()\":{\"notice\":\"Returns whether marketplace writes are paused.\"},\"mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])\":{\"notice\":\"Mints tokens from a configured primary sale.\"},\"prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])\":{\"notice\":\"Configures or replaces a primary mint sale for a token id.\"},\"setApprovedTokenRegistry(address)\":{\"notice\":\"Updates the approved token registry address.\"},\"setContractPaused(bool)\":{\"notice\":\"Pauses or unpauses marketplace write operations.\"},\"setERC1155ApprovalManager(address)\":{\"notice\":\"Updates the ERC1155 approval manager address.\"},\"setERC20ApprovalManager(address)\":{\"notice\":\"Updates the ERC20 approval manager address.\"},\"setERC721ApprovalManager(address)\":{\"notice\":\"Updates the ERC721 approval manager address retained by the shared V2 market config.\"},\"setMarketplaceSettings(address)\":{\"notice\":\"Updates the marketplace settings contract address.\"},\"setNetworkBeneficiary(address)\":{\"notice\":\"Updates the network beneficiary address.\"},\"setPayments(address)\":{\"notice\":\"Updates the Payments contract address used for ETH fan-out.\"},\"setRoyaltyEngine(address)\":{\"notice\":\"Updates the royalty engine address.\"},\"setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Creates or replaces a secondary fixed-price listing.\"},\"setSpaceOperatorRegistry(address)\":{\"notice\":\"Updates the space operator registry address.\"},\"setStakingRegistry(address)\":{\"notice\":\"Updates the staking registry address.\"},\"setStakingSettings(address)\":{\"notice\":\"Updates the staking settings address.\"},\"setTokenAllowListConfig(bytes32,uint256,address,uint256)\":{\"notice\":\"Sets a token id allowlist configuration.\"},\"setTokenMintLimit(address,uint256,uint256)\":{\"notice\":\"Sets the max quantity each address may mint for a token id while the limit is enabled.\"},\"setTokenTxLimit(address,uint256,uint256)\":{\"notice\":\"Sets the max number of mint transactions each address may submit for a token id while the limit is enabled.\"}},\"notice\":\"Primary mint sales for RARE Protocol ERC1155 tokens and fixed-price resale listings for ERC1155 tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155Marketplace.sol\":\"RareERC1155Marketplace\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol\":{\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0\",\"dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x584ebdf9c1118a7c773f98788e3f3ede01982bdf8932aa06f5acc7d54876e161\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9826c7edf276ff48b99ee217358393097c30448a71d345d287c2f6961bb1f159\",\"dweb:/ipfs/QmYXBTY9wDvffGU47yMRFJ1NFyKwpbj94VHzRzhsm6R7Gz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xb607cb94c27e89750f5ae2ccebcb94e654e926f6125f4fd4c6262c89875118ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33e8f8d863c6943ea046fcf4972b4e815c04ab06bad195dba1d93f8ebeb8420d\",\"dweb:/ipfs/QmTQzxQTuuzPDk3eqVmYy7hv2RCXM1yt1NtubXpRbzYjaj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025\",\"dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685\",\"dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155Marketplace.sol\":{\"keccak256\":\"0xdc49e7eb0b48b0eb40aa5776b44b0fcb4f2f38223762b6ca2fbcc814f16ae3cb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86188372ffe2e7ff9025f1e8e0ee62940c9ac7ec787a892b176421eab3f7bae0\",\"dweb:/ipfs/Qmf83TtD6ax7M97dKtMEeQEohs1aKWPMrCWV4aB1NHtunb\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155Marketplace.sol\":{\"keccak256\":\"0x1815e380bf66a8b97d3f5f07893ab9c36b896e9d622602a6111fb36d9d2a70c3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8badd0eb1bc87b61dfd6ecab9ed8b67a87c94a69ba461b9da7bde874deb955be\",\"dweb:/ipfs/QmNefodrs6Zkwy7NzN4Y938S8PJktnWbuLZ97gqGSbzGXK\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x9dc23a2064e31818e89092b5935ab96079a99b29e1aa1456565ee698d3fd23a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5aaa41dbed645e29ec41a7159bee7a10519ebaa71fb86187bd109aba732db40\",\"dweb:/ipfs/Qma3yM1SZuHAxo6HS16uFMX1yVVqikkXX9v6n5op5Tss1V\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"stateMutability":"payable","type":"function","name":"buy"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"cancelSalePrice"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDirectSaleConfig","outputs":[{"internalType":"struct IRareERC1155Marketplace.DirectSaleConfig","name":"","type":"tuple","components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getERC1155ApprovalManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMarketConfig","outputs":[{"internalType":"struct MarketConfigV2.Config","name":"","type":"tuple","components":[{"internalType":"address","name":"networkBeneficiary","type":"address"},{"internalType":"contract IMarketplaceSettings","name":"marketplaceSettings","type":"address"},{"internalType":"contract ISpaceOperatorRegistry","name":"spaceOperatorRegistry","type":"address"},{"internalType":"contract IRoyaltyEngineV1","name":"royaltyEngine","type":"address"},{"internalType":"contract IPayments","name":"payments","type":"address"},{"internalType":"contract IApprovedTokenRegistry","name":"approvedTokenRegistry","type":"address"},{"internalType":"contract IStakingSettings","name":"stakingSettings","type":"address"},{"internalType":"contract IRareStakingRegistry","name":"stakingRegistry","type":"address"},{"internalType":"contract IERC20ApprovalManager","name":"erc20ApprovalManager","type":"address"},{"internalType":"contract IERC721ApprovalManager","name":"erc721ApprovalManager","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"stateMutability":"view","type":"function","name":"getSalePrice","outputs":[{"internalType":"struct IRareERC1155Marketplace.SalePrice","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenAllowListConfig","outputs":[{"internalType":"struct IRareERC1155Marketplace.AllowListConfig","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenTxsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"},{"internalType":"address","name":"_marketplaceSettings","type":"address"},{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"},{"internalType":"address","name":"_royaltyEngine","type":"address"},{"internalType":"address","name":"_payments","type":"address"},{"internalType":"address","name":"_approvedTokenRegistry","type":"address"},{"internalType":"address","name":"_stakingSettings","type":"address"},{"internalType":"address","name":"_stakingRegistry","type":"address"},{"internalType":"address","name":"_erc20ApprovalManager","type":"address"},{"internalType":"address","name":"_erc721ApprovalManager","type":"address"},{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"bytes32[]","name":"_proof","type":"bytes32[]"}],"stateMutability":"payable","type":"function","name":"mintDirectSale"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"prepareMintDirectSale"},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"_approvedTokenRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setApprovedTokenRegistry"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setContractPaused"},{"inputs":[{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC1155ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc20ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC20ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc721ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC721ApprovalManager"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketplaceSettings"},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkBeneficiary"},{"inputs":[{"internalType":"address","name":"_payments","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPayments"},{"inputs":[{"internalType":"address","name":"_royaltyEngine","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyEngine"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"setSalePrice"},{"inputs":[{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSpaceOperatorRegistry"},{"inputs":[{"internalType":"address","name":"_stakingRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingRegistry"},{"inputs":[{"internalType":"address","name":"_stakingSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingSettings"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"},{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setTokenAllowListConfig"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setTokenMintLimit"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setTokenTxLimit"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgradeTo"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"}],"devdoc":{"kind":"dev","methods":{"buy(address,uint256,address,address,uint256,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Currency expected by the buyer.","_price":"Unit price expected by the buyer.","_quantity":"Quantity to buy.","_seller":"Seller whose listing is being filled.","_tokenId":"Token id to buy."}},"cancelSalePrice(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Listed token id."}},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"getDirectSaleConfig(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Primary sale config for the token id."}},"getERC1155ApprovalManager()":{"returns":{"_0":"Current ERC1155 approval manager address."}},"getMarketConfig()":{"returns":{"_0":"Current market config struct."}},"getSalePrice(address,uint256,address)":{"params":{"_contractAddress":"ERC1155 collection address.","_seller":"Seller whose listing is returned.","_tokenId":"Token id to inspect."},"returns":{"_0":"Secondary fixed-price listing for the seller and token id."}},"getTokenAllowListConfig(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Allowlist config for the token id."}},"getTokenMintLimit(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Mint quantity limit. Zero means unlimited."}},"getTokenMintsPerAddress(address,uint256,address)":{"params":{"_address":"Address whose minted quantity is returned.","_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Quantity minted by `_address`."}},"getTokenTxLimit(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Transaction limit. Zero means unlimited."}},"getTokenTxsPerAddress(address,uint256,address)":{"params":{"_address":"Address whose transaction count is returned.","_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Number of mint transactions used by `_address`."}},"initialize(address,address,address,address,address,address,address,address,address,address,address)":{"details":"Stores the market config dependency bundle and initializes inherited upgradeability modules.","params":{"_approvedTokenRegistry":"Registry of approved ERC20 currencies.","_erc1155ApprovalManager":"ERC1155 transfer manager for seller token approvals.","_erc20ApprovalManager":"ERC20 transfer manager for buyer currency approvals.","_erc721ApprovalManager":"ERC721 transfer manager kept in shared V2 market config.","_marketplaceSettings":"Marketplace settings contract.","_networkBeneficiary":"Address receiving network marketplace fees.","_payments":"Payments contract used for ETH fan-out.","_royaltyEngine":"Royalty engine contract.","_spaceOperatorRegistry":"Space operator registry contract.","_stakingRegistry":"Staking registry contract.","_stakingSettings":"Staking fee settings contract."}},"isPaused()":{"returns":{"_0":"True when paused."}},"mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])":{"params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Currency expected by the buyer.","_price":"Unit price expected by the buyer.","_proof":"Merkle proof for active allowlist sales.","_quantity":"Quantity to mint.","_tokenId":"Token id to mint."}},"owner()":{"details":"Returns the address of the current owner."},"prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])":{"params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Sale currency. Zero address indicates ETH.","_maxMints":"Max quantity per mint transaction. Zero means unlimited.","_price":"Unit price per token.","_splitRatios":"Percentages for `splitRecipients`, totaling 100.","_splitRecipients":"Recipients that split seller proceeds.","_startTime":"Timestamp when minting may begin.","_tokenId":"Token id to sell through primary minting."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setApprovedTokenRegistry(address)":{"params":{"_approvedTokenRegistry":"New approved token registry contract."}},"setContractPaused(bool)":{"params":{"_isPaused":"New pause state."}},"setERC1155ApprovalManager(address)":{"params":{"_erc1155ApprovalManager":"New ERC1155 approval manager contract."}},"setERC20ApprovalManager(address)":{"params":{"_erc20ApprovalManager":"New ERC20 approval manager contract."}},"setERC721ApprovalManager(address)":{"params":{"_erc721ApprovalManager":"New ERC721 approval manager contract."}},"setMarketplaceSettings(address)":{"params":{"_marketplaceSettings":"New marketplace settings contract."}},"setNetworkBeneficiary(address)":{"params":{"_networkBeneficiary":"New network beneficiary."}},"setPayments(address)":{"params":{"_payments":"New payments contract."}},"setRoyaltyEngine(address)":{"params":{"_royaltyEngine":"New royalty engine contract."}},"setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])":{"details":"Listings intentionally have no expiry timestamp and can be cancelled by the seller with `cancelSalePrice`.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Listing currency. Zero address indicates ETH.","_price":"Unit price per token.","_quantity":"Quantity listed.","_splitRatios":"Percentages for `splitRecipients`, totaling 100.","_splitRecipients":"Recipients that split seller proceeds.","_tokenId":"Token id to list."}},"setSpaceOperatorRegistry(address)":{"params":{"_spaceOperatorRegistry":"New space operator registry contract."}},"setStakingRegistry(address)":{"params":{"_stakingRegistry":"New staking registry contract."}},"setStakingSettings(address)":{"params":{"_stakingSettings":"New staking settings contract."}},"setTokenAllowListConfig(bytes32,uint256,address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_endTimestamp":"Timestamp when allowlist enforcement expires.","_root":"Merkle root for allowlisted minters. Zero root disables allowlist enforcement.","_tokenId":"Token id controlled by the allowlist."}},"setTokenMintLimit(address,uint256,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_limit":"Max mint quantity per address. Zero disables the limit and disabled periods are not counted.","_tokenId":"Token id controlled by the limit."}},"setTokenTxLimit(address,uint256,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_limit":"Max transactions per address. Zero disables the limit and disabled periods are not counted.","_tokenId":"Token id controlled by the limit."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"buy(address,uint256,address,address,uint256,uint256)":{"notice":"Buys tokens from a seller's secondary fixed-price listing."},"cancelSalePrice(address,uint256)":{"notice":"Cancels the caller's secondary listing for a token id."},"getDirectSaleConfig(address,uint256)":{"notice":"Returns the primary mint sale config for a token id."},"getERC1155ApprovalManager()":{"notice":"Returns the ERC1155 approval manager used for secondary transfers."},"getMarketConfig()":{"notice":"Returns the marketplace dependency configuration."},"getSalePrice(address,uint256,address)":{"notice":"Returns a seller's secondary fixed-price listing."},"getTokenAllowListConfig(address,uint256)":{"notice":"Returns the allowlist config for a token id."},"getTokenMintLimit(address,uint256)":{"notice":"Returns the per-address mint quantity limit for a token id."},"getTokenMintsPerAddress(address,uint256,address)":{"notice":"Returns quantity minted by an address for a token id."},"getTokenTxLimit(address,uint256)":{"notice":"Returns the per-address transaction limit for a token id."},"getTokenTxsPerAddress(address,uint256,address)":{"notice":"Returns mint transactions used by an address for a token id."},"initialize(address,address,address,address,address,address,address,address,address,address,address)":{"notice":"Initializes the UUPS marketplace implementation behind a proxy."},"isPaused()":{"notice":"Returns whether marketplace writes are paused."},"mintDirectSale(address,uint256,address,uint256,uint256,bytes32[])":{"notice":"Mints tokens from a configured primary sale."},"prepareMintDirectSale(address,uint256,address,uint256,uint256,uint256,address[],uint8[])":{"notice":"Configures or replaces a primary mint sale for a token id."},"setApprovedTokenRegistry(address)":{"notice":"Updates the approved token registry address."},"setContractPaused(bool)":{"notice":"Pauses or unpauses marketplace write operations."},"setERC1155ApprovalManager(address)":{"notice":"Updates the ERC1155 approval manager address."},"setERC20ApprovalManager(address)":{"notice":"Updates the ERC20 approval manager address."},"setERC721ApprovalManager(address)":{"notice":"Updates the ERC721 approval manager address retained by the shared V2 market config."},"setMarketplaceSettings(address)":{"notice":"Updates the marketplace settings contract address."},"setNetworkBeneficiary(address)":{"notice":"Updates the network beneficiary address."},"setPayments(address)":{"notice":"Updates the Payments contract address used for ETH fan-out."},"setRoyaltyEngine(address)":{"notice":"Updates the royalty engine address."},"setSalePrice(address,uint256,address,uint256,uint256,address[],uint8[])":{"notice":"Creates or replaces a secondary fixed-price listing."},"setSpaceOperatorRegistry(address)":{"notice":"Updates the space operator registry address."},"setStakingRegistry(address)":{"notice":"Updates the staking registry address."},"setStakingSettings(address)":{"notice":"Updates the staking settings address."},"setTokenAllowListConfig(bytes32,uint256,address,uint256)":{"notice":"Sets a token id allowlist configuration."},"setTokenMintLimit(address,uint256,uint256)":{"notice":"Sets the max quantity each address may mint for a token id while the limit is enabled."},"setTokenTxLimit(address,uint256,uint256)":{"notice":"Sets the max number of mint transactions each address may submit for a token id while the limit is enabled."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155Marketplace.sol":"RareERC1155Marketplace"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol":{"keccak256":"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b","urls":["bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0","dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol":{"keccak256":"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f","urls":["bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053","dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"keccak256":"0x584ebdf9c1118a7c773f98788e3f3ede01982bdf8932aa06f5acc7d54876e161","urls":["bzz-raw://9826c7edf276ff48b99ee217358393097c30448a71d345d287c2f6961bb1f159","dweb:/ipfs/QmYXBTY9wDvffGU47yMRFJ1NFyKwpbj94VHzRzhsm6R7Gz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol":{"keccak256":"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908","urls":["bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1","dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xb607cb94c27e89750f5ae2ccebcb94e654e926f6125f4fd4c6262c89875118ad","urls":["bzz-raw://33e8f8d863c6943ea046fcf4972b4e815c04ab06bad195dba1d93f8ebeb8420d","dweb:/ipfs/QmTQzxQTuuzPDk3eqVmYy7hv2RCXM1yt1NtubXpRbzYjaj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0","urls":["bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025","dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol":{"keccak256":"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908","urls":["bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685","dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155Marketplace.sol":{"keccak256":"0xdc49e7eb0b48b0eb40aa5776b44b0fcb4f2f38223762b6ca2fbcc814f16ae3cb","urls":["bzz-raw://86188372ffe2e7ff9025f1e8e0ee62940c9ac7ec787a892b176421eab3f7bae0","dweb:/ipfs/Qmf83TtD6ax7M97dKtMEeQEohs1aKWPMrCWV4aB1NHtunb"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155Marketplace.sol":{"keccak256":"0x1815e380bf66a8b97d3f5f07893ab9c36b896e9d622602a6111fb36d9d2a70c3","urls":["bzz-raw://8badd0eb1bc87b61dfd6ecab9ed8b67a87c94a69ba461b9da7bde874deb955be","dweb:/ipfs/QmNefodrs6Zkwy7NzN4Y938S8PJktnWbuLZ97gqGSbzGXK"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x9dc23a2064e31818e89092b5935ab96079a99b29e1aa1456565ee698d3fd23a6","urls":["bzz-raw://d5aaa41dbed645e29ec41a7159bee7a10519ebaa71fb86187bd109aba732db40","dweb:/ipfs/Qma3yM1SZuHAxo6HS16uFMX1yVVqikkXX9v6n5op5Tss1V"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":95} \ No newline at end of file diff --git a/script/marketplace/RareERC1155MarketplaceDeploy.s.sol b/script/marketplace/RareERC1155ListingsDeploy.s.sol similarity index 90% rename from script/marketplace/RareERC1155MarketplaceDeploy.s.sol rename to script/marketplace/RareERC1155ListingsDeploy.s.sol index f658fde..713e62e 100644 --- a/script/marketplace/RareERC1155MarketplaceDeploy.s.sol +++ b/script/marketplace/RareERC1155ListingsDeploy.s.sol @@ -4,12 +4,12 @@ pragma solidity ^0.8.0; import "forge-std/Script.sol"; import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import "../../src/marketplace/RareERC1155Marketplace.sol"; +import "../../src/marketplace/RareERC1155Listings.sol"; -/// @title RareERC1155MarketplaceDeploy +/// @title RareERC1155ListingsDeploy /// @notice Forge deployment script for the ERC1155 marketplace implementation and ERC1967 proxy. /// @dev Reads market config addresses from environment variables and initializes the proxy in the same broadcast. -contract RareERC1155MarketplaceDeploy is Script { +contract RareERC1155ListingsDeploy is Script { /// @notice Deploys marketplace logic, deploys proxy, and initializes the proxied marketplace. function run() external { // Environment read: select deployer key for broadcast signing. @@ -35,13 +35,13 @@ contract RareERC1155MarketplaceDeploy is Script { address erc1155ApprovalManager = vm.envAddress("ERC1155_APPROVAL_MANAGER"); // Deployment operation: deploy UUPS implementation logic. - RareERC1155Marketplace marketplace = new RareERC1155Marketplace(); + RareERC1155Listings marketplace = new RareERC1155Listings(); // Deployment operation: deploy ERC1967 proxy pointing at the implementation. ERC1967Proxy marketplaceProxy = new ERC1967Proxy(address(marketplace), ""); // Initialization transaction: configure proxied marketplace dependencies. - RareERC1155Marketplace(address(marketplaceProxy)) + RareERC1155Listings(address(marketplaceProxy)) .initialize( networkBeneficiary, marketplaceSettings, diff --git a/script/marketplace/RareERC1155MarketplaceLogicUpdate.s.sol b/script/marketplace/RareERC1155ListingsLogicUpdate.s.sol similarity index 61% rename from script/marketplace/RareERC1155MarketplaceLogicUpdate.s.sol rename to script/marketplace/RareERC1155ListingsLogicUpdate.s.sol index 113553c..f559782 100644 --- a/script/marketplace/RareERC1155MarketplaceLogicUpdate.s.sol +++ b/script/marketplace/RareERC1155ListingsLogicUpdate.s.sol @@ -3,25 +3,25 @@ pragma solidity ^0.8.0; import "forge-std/Script.sol"; -import "../../src/marketplace/RareERC1155Marketplace.sol"; +import "../../src/marketplace/RareERC1155Listings.sol"; -/// @title RareERC1155MarketplaceLogicUpdate +/// @title RareERC1155ListingsLogicUpdate /// @notice Forge script for upgrading an existing ERC1155 marketplace proxy to a new implementation. -/// @dev Reads `PRIVATE_KEY` and `RARE_ERC1155_MARKETPLACE` from the environment. -contract RareERC1155MarketplaceLogicUpdate is Script { +/// @dev Reads `PRIVATE_KEY` and `RARE_ERC1155_LISTINGS` from the environment. +contract RareERC1155ListingsLogicUpdate is Script { /// @notice Deploys new marketplace logic and calls `upgradeTo` on the configured proxy. function run() external { // Broadcast boundary: following operations are submitted as deployer transactions. vm.startBroadcast(vm.envUint("PRIVATE_KEY")); // Environment read: proxy address to upgrade. - address marketplaceProxy = vm.envAddress("RARE_ERC1155_MARKETPLACE"); + address marketplaceProxy = vm.envAddress("RARE_ERC1155_LISTINGS"); // Deployment operation: deploy replacement UUPS implementation. - RareERC1155Marketplace marketplace = new RareERC1155Marketplace(); + RareERC1155Listings marketplace = new RareERC1155Listings(); // Upgrade transaction: proxy owner must authorize the implementation change. - RareERC1155Marketplace(marketplaceProxy).upgradeTo(address(marketplace)); + RareERC1155Listings(marketplaceProxy).upgradeTo(address(marketplace)); // Broadcast boundary: stop submitting transactions. vm.stopBroadcast(); diff --git a/src/marketplace/IRareERC1155Marketplace.sol b/src/marketplace/IRareERC1155Listings.sol similarity index 79% rename from src/marketplace/IRareERC1155Marketplace.sol rename to src/marketplace/IRareERC1155Listings.sol index abc002f..836c024 100644 --- a/src/marketplace/IRareERC1155Marketplace.sol +++ b/src/marketplace/IRareERC1155Listings.sol @@ -4,11 +4,11 @@ pragma solidity ^0.8.0; import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; /// @author SuperRare Labs Inc. -/// @title IRareERC1155Marketplace +/// @title IRareERC1155Listings /// @notice Interface for RARE Protocol ERC1155 primary mint sales and ERC1155 fixed-price secondary sales. /// @dev Primary sales are configured per `(collection, tokenId)`. Secondary listings are approval-based and keyed by `(collection, tokenId, seller)`. /// Secondary listings intentionally do not expire on-chain; they remain fillable until sold, cancelled, or made invalid by seller balance, ERC1155 approval, or currency policy. -interface IRareERC1155Marketplace { +interface IRareERC1155Listings { /// @notice Primary mint sale configuration for a collection token id. struct DirectSaleConfig { /// @notice Seller/creator that owns the primary sale and receives sale proceeds. @@ -36,21 +36,87 @@ interface IRareERC1155Marketplace { } /// @notice Secondary fixed-price listing for an ERC1155 token id. - /// @dev Intentionally has no expiry timestamp or nonce. Product semantics treat listings as standing seller offers - /// that persist until filled, cancelled, or invalidated by balance, approval, or currency approval changes. + /// @dev `expirationTime == 0` means no expiration. Nonzero expiration timestamps are exclusive end times. + /// Listings persist until filled, cancelled, expired, or invalidated by balance, approval, or currency approval changes. struct SalePrice { /// @notice Currency accepted by the seller. Zero address indicates ETH. address currencyAddress; /// @notice Unit price per ERC1155 token. uint256 price; - /// @notice Remaining quantity available for purchase. + /// @notice Remaining quantity available for purchase. Allows for partial fills. uint256 quantity; + /// @notice Timestamp when the listing can no longer be filled. Zero means no expiration. + uint256 expirationTime; /// @notice Recipients that split seller proceeds after seller-side fee deductions. address payable[] splitRecipients; /// @notice Percentages corresponding to `splitRecipients`. Must total 100. uint8[] splitRatios; } + /// @notice Primary sale setup input for one token id in a batch. + struct DirectSaleRequest { + /// @notice Token id to configure. + uint256 tokenId; + /// @notice Unit price per ERC1155 token. + uint256 price; + /// @notice Timestamp when minting may begin. + uint256 startTime; + /// @notice Max quantity allowed per mint transaction. Zero means unlimited per transaction. + uint256 maxMints; + } + + /// @notice Primary mint input for one token id in a batch. + struct MintRequest { + /// @notice Token id to mint. + uint256 tokenId; + /// @notice Unit price expected by the buyer. + uint256 price; + /// @notice Quantity to mint. + uint256 quantity; + /// @notice Merkle proof for active allowlist sales. + bytes32[] proof; + } + + /// @notice Allowlist setup input for one token id in a batch. + struct AllowListConfigRequest { + /// @notice Token id controlled by the allowlist. + uint256 tokenId; + /// @notice Merkle root for allowed minters. Zero root disables allowlist enforcement. + bytes32 root; + /// @notice Timestamp when allowlist enforcement expires. + uint256 endTimestamp; + } + + /// @notice Limit setup input for one token id in a batch. + struct TokenLimitRequest { + /// @notice Token id controlled by the limit. + uint256 tokenId; + /// @notice New limit value. Zero disables the limit. + uint256 limit; + } + + /// @notice Secondary listing setup input for one token id in a batch. + struct SalePriceRequest { + /// @notice Token id to list. + uint256 tokenId; + /// @notice Unit price per ERC1155 token. + uint256 price; + /// @notice Quantity listed. + uint256 quantity; + /// @notice Timestamp when the listing can no longer be filled. Zero means no expiration. + uint256 expirationTime; + } + + /// @notice Secondary buy input for one token id in a batch. + struct BuyRequest { + /// @notice Token id to buy. + uint256 tokenId; + /// @notice Unit price expected by the buyer. + uint256 price; + /// @notice Quantity to buy. + uint256 quantity; + } + /// @notice Emitted when a creator configures a primary mint sale. /// @param contractAddress ERC1155 collection address. /// @param tokenId Token id sold by the primary sale. @@ -119,6 +185,7 @@ interface IRareERC1155Marketplace { /// @param currency Listing currency. Zero address indicates ETH. /// @param price Unit price per token. /// @param quantity Quantity listed. + /// @param expirationTime Timestamp when the listing can no longer be filled. Zero means no expiration. /// @param splitRecipients Recipients that split seller proceeds. /// @param splitRatios Percentages for `splitRecipients`. event SalePriceSet( @@ -128,6 +195,7 @@ interface IRareERC1155Marketplace { address currency, uint256 price, uint256 quantity, + uint256 expirationTime, address payable[] splitRecipients, uint8[] splitRatios ); @@ -168,6 +236,20 @@ interface IRareERC1155Marketplace { /// @notice Reverted when a write function is called while the marketplace is paused. error ContractPaused(); + /// @notice Reverted when a batch operation receives no items. + error EmptyBatch(); + + /// @notice Reverted when a batch exceeds the supported item count. + /// @param supplied Number of items supplied. + /// @param max Maximum supported item count. + error BatchSizeExceeded(uint256 supplied, uint256 max); + + /// @notice Reverted when token ids are not strictly ascending. + /// @param index Index of the token id that is not greater than the previous token id. + /// @param previousTokenId Token id at `index - 1`. + /// @param tokenId Token id at `index`. + error TokenIdsNotStrictlyAscending(uint256 index, uint256 previousTokenId, uint256 tokenId); + /// @notice Reverted when a caller is not the owner of a collection. /// @param _contractAddress Collection address whose owner was checked. /// @param _account Account that failed the owner check. @@ -255,6 +337,11 @@ interface IRareERC1155Marketplace { /// @notice Reverted when a secondary listing price is zero. error SalePriceCannotBeZero(); + /// @notice Reverted when a secondary listing expiration is nonzero and not in the future. + /// @param _expirationTime Expiration supplied for the listing. + /// @param _currentTime Current block timestamp. + error SalePriceExpirationInvalid(uint256 _expirationTime, uint256 _currentTime); + /// @notice Reverted when a secondary collection is not a deployed ERC1155 contract. /// @param _contractAddress Collection address that failed validation. error InvalidERC1155Contract(address _contractAddress); @@ -288,6 +375,13 @@ interface IRareERC1155Marketplace { /// @param _seller Seller whose listing was requested. error SalePriceDoesNotExist(address _contractAddress, uint256 _tokenId, address _seller); + /// @notice Reverted when a buyer tries to fill an expired secondary listing. + /// @param _contractAddress ERC1155 collection address. + /// @param _tokenId Token id requested. + /// @param _seller Seller whose listing was requested. + /// @param _expirationTime Stored listing expiration timestamp. + error SalePriceExpired(address _contractAddress, uint256 _tokenId, address _seller, uint256 _expirationTime); + /// @notice Reverted when a purchase quantity exceeds listed quantity. /// @param _requestedQuantity Quantity requested by the buyer. /// @param _availableQuantity Quantity currently listed. @@ -399,100 +493,86 @@ interface IRareERC1155Marketplace { address _erc1155ApprovalManager ) external; - /// @notice Configures or replaces a primary mint sale for a token id. + /// @notice Maximum number of token ids accepted by public batch operations. + /// @return Maximum supported batch item count. + function MAX_BATCH_SIZE() external pure returns (uint256); + + /// @notice Configures or replaces primary mint sales for token ids. + /// @dev Request token ids must be strictly ascending. A one-token sale is represented by a one-item batch. /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to sell through primary minting. /// @param _currencyAddress Sale currency. Zero address indicates ETH. - /// @param _price Unit price per token. - /// @param _startTime Timestamp when minting may begin. - /// @param _maxMints Max quantity per mint transaction. Zero means unlimited. + /// @param _requests Sale configs to apply. /// @param _splitRecipients Recipients that split seller proceeds. /// @param _splitRatios Percentages for `splitRecipients`, totaling 100. - function prepareMintDirectSale( + function prepareMintDirectSales( address _contractAddress, - uint256 _tokenId, address _currencyAddress, - uint256 _price, - uint256 _startTime, - uint256 _maxMints, + DirectSaleRequest[] calldata _requests, address payable[] calldata _splitRecipients, uint8[] calldata _splitRatios ) external; - /// @notice Mints tokens from a configured primary sale. + /// @notice Mints tokens from configured primary sales. + /// @dev Request token ids must be strictly ascending. Each token id included in a batch consumes one + /// transaction against that token's tx limit when the token tx limit is enabled. /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to mint. /// @param _currencyAddress Currency expected by the buyer. - /// @param _price Unit price expected by the buyer. - /// @param _quantity Quantity to mint. - /// @param _proof Merkle proof for active allowlist sales. - function mintDirectSale( - address _contractAddress, - uint256 _tokenId, - address _currencyAddress, - uint256 _price, - uint256 _quantity, - bytes32[] calldata _proof - ) external payable; + /// @param _requests Mint requests to execute. + function mintDirectSaleBatch(address _contractAddress, address _currencyAddress, MintRequest[] calldata _requests) + external + payable; - /// @notice Sets a token id allowlist configuration. - /// @param _root Merkle root for allowlisted minters. Zero root disables allowlist enforcement. - /// @param _endTimestamp Timestamp when allowlist enforcement expires. + /// @notice Sets token id allowlist configurations. + /// @dev Request token ids must be strictly ascending. /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id controlled by the allowlist. - function setTokenAllowListConfig(bytes32 _root, uint256 _endTimestamp, address _contractAddress, uint256 _tokenId) - external; + /// @param _requests Allowlist configs to apply. + function setTokenAllowListConfigs(address _contractAddress, AllowListConfigRequest[] calldata _requests) external; - /// @notice Sets the max quantity each address may mint for a token id while the limit is enabled. + /// @notice Sets the max quantity each address may mint for token ids while the limit is enabled. + /// @dev Request token ids must be strictly ascending. /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id controlled by the limit. - /// @param _limit Max mint quantity per address. Zero disables the limit and disabled periods are not counted. - function setTokenMintLimit(address _contractAddress, uint256 _tokenId, uint256 _limit) external; + /// @param _requests Mint limits to apply. Zero disables a token id's limit and disabled periods are not counted. + function setTokenMintLimits(address _contractAddress, TokenLimitRequest[] calldata _requests) external; - /// @notice Sets the max number of mint transactions each address may submit for a token id while the limit is enabled. + /// @notice Sets the max number of mint transactions each address may submit for token ids while the limit is enabled. + /// @dev Request token ids must be strictly ascending. /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id controlled by the limit. - /// @param _limit Max transactions per address. Zero disables the limit and disabled periods are not counted. - function setTokenTxLimit(address _contractAddress, uint256 _tokenId, uint256 _limit) external; + /// @param _requests Transaction limits to apply. Zero disables a token id's limit and disabled periods are not counted. + function setTokenTxLimits(address _contractAddress, TokenLimitRequest[] calldata _requests) external; - /// @notice Creates or replaces a secondary fixed-price listing. - /// @dev Listings intentionally have no expiry timestamp and can be cancelled by the seller with `cancelSalePrice`. + /// @notice Creates or replaces secondary fixed-price listings. + /// @dev Request token ids must be strictly ascending. `expirationTime == 0` means no expiration. + /// Listings can be cancelled by the seller with `cancelSalePrices`. /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to list. /// @param _currencyAddress Listing currency. Zero address indicates ETH. - /// @param _price Unit price per token. - /// @param _quantity Quantity listed. + /// @param _requests Listing configs to apply. /// @param _splitRecipients Recipients that split seller proceeds. /// @param _splitRatios Percentages for `splitRecipients`, totaling 100. - function setSalePrice( + function setSalePrices( address _contractAddress, - uint256 _tokenId, address _currencyAddress, - uint256 _price, - uint256 _quantity, + SalePriceRequest[] calldata _requests, address payable[] calldata _splitRecipients, uint8[] calldata _splitRatios ) external; - /// @notice Cancels the caller's secondary listing for a token id. + /// @notice Cancels the caller's secondary listings for token ids. + /// @dev Token ids must be strictly ascending. /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Listed token id. - function cancelSalePrice(address _contractAddress, uint256 _tokenId) external; + /// @param _tokenIds Listed token ids. + function cancelSalePrices(address _contractAddress, uint256[] calldata _tokenIds) external; - /// @notice Buys tokens from a seller's secondary fixed-price listing. + /// @notice Buys tokens from a seller's secondary fixed-price listings. + /// @dev Request token ids must be strictly ascending. A one-token buy is represented by a one-item batch. /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to buy. /// @param _seller Seller whose listing is being filled. /// @param _currencyAddress Currency expected by the buyer. - /// @param _price Unit price expected by the buyer. - /// @param _quantity Quantity to buy. - function buy( + /// @param _requests Buy requests to execute. + function buyBatch( address _contractAddress, - uint256 _tokenId, address _seller, address _currencyAddress, - uint256 _price, - uint256 _quantity + BuyRequest[] calldata _requests ) external payable; /// @notice Returns the primary mint sale config for a token id. diff --git a/src/marketplace/RareERC1155Marketplace.sol b/src/marketplace/RareERC1155Listings.sol similarity index 55% rename from src/marketplace/RareERC1155Marketplace.sol rename to src/marketplace/RareERC1155Listings.sol index 2b54ca8..a6338b7 100644 --- a/src/marketplace/RareERC1155Marketplace.sol +++ b/src/marketplace/RareERC1155Listings.sol @@ -12,16 +12,16 @@ import {SafeERC20} from "openzeppelin-contracts/token/ERC20/utils/SafeERC20.sol" import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; import {IRareERC1155} from "../token/ERC1155/IRareERC1155.sol"; -import {IRareERC1155Marketplace} from "./IRareERC1155Marketplace.sol"; +import {IRareERC1155Listings} from "./IRareERC1155Listings.sol"; import {IERC1155ApprovalManager} from "../v2/approver/ERC1155/IERC1155ApprovalManager.sol"; /// @author SuperRare Labs Inc. -/// @title RareERC1155Marketplace +/// @title RareERC1155Listings /// @notice Primary mint sales for RARE Protocol ERC1155 tokens and fixed-price resale listings for ERC1155 tokens. /// @dev UUPS-upgradeable marketplace that keeps ERC1155 sale semantics separate from ERC721 marketplace logic. -contract RareERC1155Marketplace is +contract RareERC1155Listings is Initializable, - IRareERC1155Marketplace, + IRareERC1155Listings, OwnableUpgradeable, ReentrancyGuardUpgradeable, UUPSUpgradeable @@ -29,12 +29,6 @@ contract RareERC1155Marketplace is using SafeERC20 for IERC20; using MarketConfigV2 for MarketConfigV2.Config; - /// @notice RARE Protocol marketplace dependency bundle. - MarketConfigV2.Config private marketConfig; - - /// @notice ERC1155 transfer manager approved by sellers and callable by this marketplace. - IERC1155ApprovalManager private erc1155ApprovalManager; - /// @notice Market config field label for zero-address validation. bytes32 private constant NETWORK_BENEFICIARY_FIELD = "NETWORK_BENEFICIARY"; @@ -68,36 +62,76 @@ contract RareERC1155Marketplace is /// @notice Config field label for ERC1155 approval manager updates. bytes32 private constant ERC1155_APPROVAL_MANAGER_FIELD = "ERC1155_APPROVAL_MANAGER"; - /// @notice Primary mint sale configuration by collection and token id. - mapping(address => mapping(uint256 => IRareERC1155Marketplace.DirectSaleConfig)) private directSaleConfigs; - - /// @notice Allowlist configuration by collection and token id. - mapping(address => mapping(uint256 => IRareERC1155Marketplace.AllowListConfig)) private tokenAllowlistRoots; - - /// @notice Per-address mint quantity limit by collection and token id. - mapping(address => mapping(uint256 => uint256)) private tokenMintLimit; - - /// @notice Quantity minted per buyer by collection and token id. - mapping(address => mapping(uint256 => mapping(address => uint256))) private tokenMintsPerAddress; + /// @inheritdoc IRareERC1155Listings + uint256 public constant MAX_BATCH_SIZE = 100; + + /// @notice Primary payout data preserved before the external batch mint. + struct PrimaryPayoutContext { + uint256 tokenId; + uint256 grossAmount; + uint256 marketplaceFee; + address seller; + address payable[] splitRecipients; + uint8[] splitRatios; + } - /// @notice Per-address mint transaction limit by collection and token id. - mapping(address => mapping(uint256 => uint256)) private tokenTxLimit; + /// @notice Secondary payout data preserved before listings are decremented or deleted. + struct SecondaryPayoutContext { + uint256 tokenId; + uint256 grossAmount; + uint256 marketplaceFee; + address payable[] splitRecipients; + uint8[] splitRatios; + } - /// @notice Mint transaction count per buyer by collection and token id. - mapping(address => mapping(uint256 => mapping(address => uint256))) private tokenTxsPerAddress; + /// @notice ERC-7201 namespaced storage for the marketplace. + /// @dev Pins all contract-owned state to a fixed hashed slot so it cannot collide with inherited + /// upgradeable base contracts and can be extended in future upgrades without reserving storage gaps. + /// @custom:storage-location erc7201:superrare.storage.RareERC1155Listings + struct ListingsStorage { + // --- config --- + /// @notice RARE Protocol marketplace dependency bundle. + MarketConfigV2.Config marketConfig; + /// @notice ERC1155 transfer manager approved by sellers and callable by this marketplace. + IERC1155ApprovalManager erc1155ApprovalManager; + // --- Direct sales state --- + /// @notice Primary mint sale configuration by collection and token id. + mapping(address => mapping(uint256 => IRareERC1155Listings.DirectSaleConfig)) directSaleConfigs; + /// @notice Allowlist configuration by collection and token id. + mapping(address => mapping(uint256 => IRareERC1155Listings.AllowListConfig)) tokenAllowlistRoots; + /// @notice Per-address mint quantity limit by collection and token id. + mapping(address => mapping(uint256 => uint256)) tokenMintLimit; + /// @notice Quantity minted per buyer by collection and token id. + mapping(address => mapping(uint256 => mapping(address => uint256))) tokenMintsPerAddress; + /// @notice Per-address mint transaction limit by collection and token id. + mapping(address => mapping(uint256 => uint256)) tokenTxLimit; + /// @notice Mint transaction count per buyer by collection and token id. + mapping(address => mapping(uint256 => mapping(address => uint256))) tokenTxsPerAddress; + // --- Secondary sales state --- + /// @notice Secondary fixed-price listings by collection, token id, and seller. + /// @dev `expirationTime == 0` means no expiration. Buys revalidate expiration, balance, approval, currency, price, + /// and quantity. + mapping(address => mapping(uint256 => mapping(address => IRareERC1155Listings.SalePrice))) salePrices; + /// @notice Whether marketplace value-moving and listing-creation operations are paused. + bool paused; + } - /// @notice Secondary fixed-price listings by collection, token id, and seller. - /// @dev Listings intentionally do not carry expiry timestamps or seller-wide nonces. - /// Sellers cancel standing offers explicitly, and buys revalidate balance, approval, currency, price, and quantity. - mapping(address => mapping(uint256 => mapping(address => IRareERC1155Marketplace.SalePrice))) private salePrices; + /// @dev keccak256(abi.encode(uint256(keccak256("superrare.storage.RareERC1155Listings")) - 1)) & ~bytes32(uint256(0xff)) + bytes32 private constant LISTINGS_STORAGE_LOCATION = + 0x094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1300; - /// @notice Whether marketplace value-moving and listing-creation operations are paused. - bool private paused; + /// @notice Resolves the ERC-7201 namespaced storage pointer for this contract. + /// @return $ Storage pointer to the `ListingsStorage` struct. + function _listingsStorage() private pure returns (ListingsStorage storage $) { + assembly { + $.slot := LISTINGS_STORAGE_LOCATION + } + } /// @notice Ensures marketplace actions that create listings or move value are not paused. modifier notPaused() { // Atomic guard: pause state blocks marketplace writes before any mutation or transfer. - if (paused) revert ContractPaused(); + if (_listingsStorage().paused) revert ContractPaused(); _; } @@ -146,7 +180,8 @@ contract RareERC1155Marketplace is _validateApprovalManager(_erc1155ApprovalManager); // State write: persist all marketplace dependency addresses in the shared config struct. - marketConfig = MarketConfigV2.generateMarketConfig( + ListingsStorage storage $ = _listingsStorage(); + $.marketConfig = MarketConfigV2.generateMarketConfig( _networkBeneficiary, _marketplaceSettings, _spaceOperatorRegistry, @@ -158,7 +193,7 @@ contract RareERC1155Marketplace is _erc20ApprovalManager, _erc721ApprovalManager ); - erc1155ApprovalManager = IERC1155ApprovalManager(_erc1155ApprovalManager); + $.erc1155ApprovalManager = IERC1155ApprovalManager(_erc1155ApprovalManager); // Initializer calls: set up ownership, reentrancy guard, and UUPS storage for the proxy. __Ownable_init(); @@ -174,296 +209,406 @@ contract RareERC1155Marketplace is _newImplementation; } - /// @inheritdoc IRareERC1155Marketplace - function prepareMintDirectSale( + /// @inheritdoc IRareERC1155Listings + function prepareMintDirectSales( address _contractAddress, - uint256 _tokenId, address _currencyAddress, - uint256 _price, - uint256 _startTime, - uint256 _maxMints, + IRareERC1155Listings.DirectSaleRequest[] calldata _requests, address payable[] calldata _splitRecipients, uint8[] calldata _splitRatios - ) external notPaused { + ) external nonReentrant notPaused { // Atomic ownership check: only the collection owner can configure primary mint sales. if (!_isContractOwner(_contractAddress, msg.sender)) { revert NotContractOwner(_contractAddress, msg.sender); } - // Atomic config checks: sale currency and seller split configuration must be valid before storage writes. + // Atomic config checks: batch shape, sale currency, and seller split config must be valid before storage writes. + _validateDirectSaleRequests(_requests); _checkIfCurrencyIsApproved(_currencyAddress); _checkSplits(_splitRecipients, _splitRatios); - _revertIfTokenNotFound(_contractAddress, _tokenId); + for (uint256 i = 0; i < _requests.length; i++) { + uint256 tokenId = _requests[i].tokenId; + _revertIfTokenNotFound(_contractAddress, tokenId); - // State write: replace the primary sale config for this collection and token id. - directSaleConfigs[_contractAddress][_tokenId] = IRareERC1155Marketplace.DirectSaleConfig( - msg.sender, _currencyAddress, _price, _startTime, _maxMints, _splitRecipients, _splitRatios - ); + // State write: replace the primary sale config for this collection and token id. + _listingsStorage().directSaleConfigs[_contractAddress][tokenId] = IRareERC1155Listings.DirectSaleConfig( + msg.sender, + _currencyAddress, + _requests[i].price, + _requests[i].startTime, + _requests[i].maxMints, + _splitRecipients, + _splitRatios + ); - emit PrepareMintDirectSale( - _contractAddress, - _tokenId, - msg.sender, - _currencyAddress, - _price, - _startTime, - _maxMints, - _splitRecipients, - _splitRatios - ); + emit PrepareMintDirectSale( + _contractAddress, + tokenId, + msg.sender, + _currencyAddress, + _requests[i].price, + _requests[i].startTime, + _requests[i].maxMints, + _splitRecipients, + _splitRatios + ); + } } - /// @inheritdoc IRareERC1155Marketplace - function mintDirectSale( + /// @inheritdoc IRareERC1155Listings + function mintDirectSaleBatch( address _contractAddress, - uint256 _tokenId, address _currencyAddress, - uint256 _price, - uint256 _quantity, - bytes32[] calldata _proof + IRareERC1155Listings.MintRequest[] calldata _requests ) external payable nonReentrant notPaused { - // Storage read: copy primary sale config for consistent validation and payout inputs. - IRareERC1155Marketplace.DirectSaleConfig memory directSaleConfig = directSaleConfigs[_contractAddress][_tokenId]; - - // Atomic guards: ensure sale existence, current seller ownership, allowlist membership, and non-zero quantity. - if (directSaleConfig.seller == address(0)) revert DirectSaleNotConfigured(_contractAddress, _tokenId); - if (!_isContractOwner(_contractAddress, directSaleConfig.seller)) { - revert NotContractOwner(_contractAddress, directSaleConfig.seller); - } - _enforceTokenAllowList(_contractAddress, _tokenId, msg.sender, _proof); + _validateMintRequests(_requests); + _checkIfCurrencyIsApproved(_currencyAddress); - if (_quantity == 0) revert QuantityCannotBeZero(); + ListingsStorage storage $ = _listingsStorage(); + uint256 requestCount = _requests.length; + uint256[] memory tokenIds = new uint256[](requestCount); + uint256[] memory amounts = new uint256[](requestCount); + PrimaryPayoutContext[] memory payoutContexts = new PrimaryPayoutContext[](requestCount); + uint256 buyerTotal = 0; + + for (uint256 i = 0; i < requestCount;) { + payoutContexts[i] = + _validateMintDirectSaleRequest(_contractAddress, _currencyAddress, msg.sender, _requests[i]); + if (payoutContexts[i].grossAmount != 0) { + payoutContexts[i].marketplaceFee = + $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContexts[i].grossAmount); + buyerTotal += payoutContexts[i].grossAmount + payoutContexts[i].marketplaceFee; + } - // Atomic mint-limit check: validate requested quantity against buyer's enabled-period mint count. - uint256 mintLimit = tokenMintLimit[_contractAddress][_tokenId]; - uint256 currentMints = tokenMintsPerAddress[_contractAddress][_tokenId][msg.sender]; - if (mintLimit != 0 && currentMints + _quantity > mintLimit) { - revert MintLimitExceeded(_contractAddress, _tokenId, msg.sender, _quantity, currentMints, mintLimit); - } + tokenIds[i] = payoutContexts[i].tokenId; + amounts[i] = _requests[i].quantity; - // Atomic tx-limit check: validate this transaction against buyer's enabled-period transaction count. - uint256 txLimit = tokenTxLimit[_contractAddress][_tokenId]; - uint256 currentTxs = tokenTxsPerAddress[_contractAddress][_tokenId][msg.sender]; - if (txLimit != 0 && currentTxs + 1 > txLimit) { - revert TransactionLimitExceeded(_contractAddress, _tokenId, msg.sender, currentTxs, txLimit); + unchecked { + ++i; + } } - // Atomic sale-parameter checks: buyer-supplied price and currency must match the stored config. - if (directSaleConfig.maxMints != 0 && _quantity > directSaleConfig.maxMints) { - revert MaxMintExceeded(_quantity, directSaleConfig.maxMints); - } - if (directSaleConfig.startTime > block.timestamp) revert SaleNotStarted(directSaleConfig.startTime); - if (_price != directSaleConfig.price) revert PriceMismatch(_price, directSaleConfig.price); - _checkIfCurrencyIsApproved(_currencyAddress); - if (directSaleConfig.currencyAddress != _currencyAddress) { - revert CurrencyMismatch(_currencyAddress, directSaleConfig.currencyAddress); - } + // Payment pull: collect aggregate sale amount plus per-line marketplace fees before minting. + _checkBatchPayment(_currencyAddress, buyerTotal); - // Price calculation: unit price multiplied by ERC1155 quantity before fee calculation. - uint256 totalPrice = _quantity * _price; + for (uint256 i = 0; i < requestCount;) { + uint256 tokenId = _requests[i].tokenId; - if (directSaleConfig.price == 0) { - // Atomic free-mint guard: free mints must not leave ETH stuck in the marketplace. - if (msg.value != 0) revert MsgValueMustBeZero(); - } else { - // Payment pull: collect sale amount plus marketplace fee before minting. - _checkAmountAndTransfer( - _currencyAddress, totalPrice + marketConfig.marketplaceSettings.calculateMarketplaceFee(totalPrice) - ); - } + if ($.tokenMintLimit[_contractAddress][tokenId] > 0) { + // State write: record quantity minted while this token's mint limit is enabled. + $.tokenMintsPerAddress[_contractAddress][tokenId][msg.sender] += _requests[i].quantity; + } - if (tokenMintLimit[_contractAddress][_tokenId] > 0) { - // State write: record quantity minted while this token's mint limit is enabled. - tokenMintsPerAddress[_contractAddress][_tokenId][msg.sender] += _quantity; - } + if ($.tokenTxLimit[_contractAddress][tokenId] > 0) { + // State write: record this token id as one transaction while its tx limit is enabled. + $.tokenTxsPerAddress[_contractAddress][tokenId][msg.sender] += 1; + } - if (tokenTxLimit[_contractAddress][_tokenId] > 0) { - // State write: record this mint transaction while this token's tx limit is enabled. - tokenTxsPerAddress[_contractAddress][_tokenId][msg.sender] += 1; + unchecked { + ++i; + } } // External mint: collection must have approved this marketplace as minter. - IRareERC1155(_contractAddress).mintTo(msg.sender, _tokenId, _quantity); + IRareERC1155(_contractAddress).mintBatchTo(msg.sender, tokenIds, amounts); - if (directSaleConfig.price != 0) { + for (uint256 i = 0; i < requestCount;) { // Payout fan-out: distribute collected primary sale funds after successful mint. - _payoutPrimary( + if (payoutContexts[i].grossAmount != 0) { + _payoutPrimary( + _contractAddress, + _currencyAddress, + payoutContexts[i].grossAmount, + payoutContexts[i].marketplaceFee, + payoutContexts[i].seller, + payoutContexts[i].splitRecipients, + payoutContexts[i].splitRatios + ); + } + + emit MintDirectSale( _contractAddress, + payoutContexts[i].tokenId, + msg.sender, + payoutContexts[i].seller, + _requests[i].quantity, _currencyAddress, - totalPrice, - directSaleConfig.seller, - directSaleConfig.splitRecipients, - directSaleConfig.splitRatios + _requests[i].price ); - } - emit MintDirectSale( - _contractAddress, _tokenId, msg.sender, directSaleConfig.seller, _quantity, _currencyAddress, _price - ); + unchecked { + ++i; + } + } } - /// @inheritdoc IRareERC1155Marketplace - function setTokenAllowListConfig(bytes32 _root, uint256 _endTimestamp, address _contractAddress, uint256 _tokenId) - external - { + /// @inheritdoc IRareERC1155Listings + function setTokenAllowListConfigs( + address _contractAddress, + IRareERC1155Listings.AllowListConfigRequest[] calldata _requests + ) external nonReentrant { // Atomic ownership check: only the collection owner can change token allowlist settings. if (!_isContractOwner(_contractAddress, msg.sender)) revert NotContractOwner(_contractAddress, msg.sender); - _revertIfTokenNotFound(_contractAddress, _tokenId); + _validateAllowListConfigRequests(_requests); + + for (uint256 i = 0; i < _requests.length; i++) { + uint256 tokenId = _requests[i].tokenId; + _revertIfTokenNotFound(_contractAddress, tokenId); - // State write: replace allowlist root and expiry for the token id. - tokenAllowlistRoots[_contractAddress][_tokenId] = IRareERC1155Marketplace.AllowListConfig(_root, _endTimestamp); - emit SetTokenAllowListConfig(_contractAddress, _tokenId, _root, _endTimestamp); + // State write: replace allowlist root and expiry for the token id. + _listingsStorage().tokenAllowlistRoots[_contractAddress][tokenId] = + IRareERC1155Listings.AllowListConfig(_requests[i].root, _requests[i].endTimestamp); + emit SetTokenAllowListConfig(_contractAddress, tokenId, _requests[i].root, _requests[i].endTimestamp); + } } - /// @inheritdoc IRareERC1155Marketplace - function setTokenMintLimit(address _contractAddress, uint256 _tokenId, uint256 _limit) external { + /// @inheritdoc IRareERC1155Listings + function setTokenMintLimits(address _contractAddress, IRareERC1155Listings.TokenLimitRequest[] calldata _requests) + external + nonReentrant + { // Atomic ownership check: only the collection owner can change mint limits. if (!_isContractOwner(_contractAddress, msg.sender)) revert NotContractOwner(_contractAddress, msg.sender); - _revertIfTokenNotFound(_contractAddress, _tokenId); + _validateTokenLimitRequests(_requests); - // State write: replace per-address quantity limit for the token id. - tokenMintLimit[_contractAddress][_tokenId] = _limit; - emit TokenMintLimitSet(_contractAddress, _tokenId, _limit); + for (uint256 i = 0; i < _requests.length; i++) { + uint256 tokenId = _requests[i].tokenId; + _revertIfTokenNotFound(_contractAddress, tokenId); + + // State write: replace per-address quantity limit for the token id. + _listingsStorage().tokenMintLimit[_contractAddress][tokenId] = _requests[i].limit; + emit TokenMintLimitSet(_contractAddress, tokenId, _requests[i].limit); + } } - /// @inheritdoc IRareERC1155Marketplace - function setTokenTxLimit(address _contractAddress, uint256 _tokenId, uint256 _limit) external { + /// @inheritdoc IRareERC1155Listings + function setTokenTxLimits(address _contractAddress, IRareERC1155Listings.TokenLimitRequest[] calldata _requests) + external + nonReentrant + { // Atomic ownership check: only the collection owner can change transaction limits. if (!_isContractOwner(_contractAddress, msg.sender)) revert NotContractOwner(_contractAddress, msg.sender); - _revertIfTokenNotFound(_contractAddress, _tokenId); + _validateTokenLimitRequests(_requests); + + for (uint256 i = 0; i < _requests.length; i++) { + uint256 tokenId = _requests[i].tokenId; + _revertIfTokenNotFound(_contractAddress, tokenId); - // State write: replace per-address transaction limit for the token id. - tokenTxLimit[_contractAddress][_tokenId] = _limit; - emit TokenTxLimitSet(_contractAddress, _tokenId, _limit); + // State write: replace per-address transaction limit for the token id. + _listingsStorage().tokenTxLimit[_contractAddress][tokenId] = _requests[i].limit; + emit TokenTxLimitSet(_contractAddress, tokenId, _requests[i].limit); + } } - /// @inheritdoc IRareERC1155Marketplace - function setSalePrice( + /// @inheritdoc IRareERC1155Listings + function setSalePrices( address _contractAddress, - uint256 _tokenId, address _currencyAddress, - uint256 _price, - uint256 _quantity, + IRareERC1155Listings.SalePriceRequest[] calldata _requests, address payable[] calldata _splitRecipients, uint8[] calldata _splitRatios - ) external notPaused { - // Atomic config checks: listing currency, split recipients, price, and quantity must be valid. + ) external nonReentrant notPaused { + // Atomic config checks: batch shape, listing currency, split recipients, price, quantity, and expiration must be valid. + _validateSalePriceRequests(_requests); _checkIfCurrencyIsApproved(_currencyAddress); _checkSplits(_splitRecipients, _splitRatios); _validateERC1155Contract(_contractAddress); - if (_price == 0) revert SalePriceCannotBeZero(); - if (_quantity == 0) revert QuantityCannotBeZero(); - // External reads: verify seller balance and transfer approval at list time. + // External read: one collection-level transfer approval supports every token id in the batch. IERC1155 erc1155 = IERC1155(_contractAddress); - uint256 sellerBalance = erc1155.balanceOf(msg.sender, _tokenId); - if (sellerBalance < _quantity) { - revert InsufficientTokenBalance(msg.sender, _contractAddress, _tokenId, _quantity, sellerBalance); - } - if (!erc1155.isApprovedForAll(msg.sender, address(erc1155ApprovalManager))) { + if (!erc1155.isApprovedForAll(msg.sender, address(_listingsStorage().erc1155ApprovalManager))) { revert MarketplaceNotApproved(msg.sender, _contractAddress); } - // State write: create or replace seller's approval-based fixed-price listing. - salePrices[_contractAddress][_tokenId][msg.sender] = - IRareERC1155Marketplace.SalePrice(_currencyAddress, _price, _quantity, _splitRecipients, _splitRatios); + for (uint256 i = 0; i < _requests.length; i++) { + uint256 tokenId = _requests[i].tokenId; + uint256 price = _requests[i].price; + uint256 quantity = _requests[i].quantity; + uint256 expirationTime = _requests[i].expirationTime; - emit SalePriceSet( - msg.sender, _contractAddress, _tokenId, _currencyAddress, _price, _quantity, _splitRecipients, _splitRatios - ); - } + if (price == 0) revert SalePriceCannotBeZero(); + if (quantity == 0) revert QuantityCannotBeZero(); + if (expirationTime != 0 && expirationTime <= block.timestamp) { + revert SalePriceExpirationInvalid(expirationTime, block.timestamp); + } - /// @inheritdoc IRareERC1155Marketplace - function cancelSalePrice(address _contractAddress, uint256 _tokenId) external { - if (salePrices[_contractAddress][_tokenId][msg.sender].quantity == 0) { - return; + // External reads: verify seller balance at list time. + uint256 sellerBalance = erc1155.balanceOf(msg.sender, tokenId); + if (sellerBalance < quantity) { + revert InsufficientTokenBalance(msg.sender, _contractAddress, tokenId, quantity, sellerBalance); + } + + // State write: create or replace seller's approval-based fixed-price listing. + _listingsStorage().salePrices[_contractAddress][tokenId][msg.sender] = IRareERC1155Listings.SalePrice( + _currencyAddress, price, quantity, expirationTime, _splitRecipients, _splitRatios + ); + + emit SalePriceSet( + msg.sender, + _contractAddress, + tokenId, + _currencyAddress, + price, + quantity, + expirationTime, + _splitRecipients, + _splitRatios + ); } + } + + /// @inheritdoc IRareERC1155Listings + function cancelSalePrices(address _contractAddress, uint256[] calldata _tokenIds) external nonReentrant { + _validateTokenIds(_tokenIds); + + for (uint256 i = 0; i < _tokenIds.length; i++) { + uint256 tokenId = _tokenIds[i]; + ListingsStorage storage $ = _listingsStorage(); + if ($.salePrices[_contractAddress][tokenId][msg.sender].quantity == 0) { + continue; + } - // State delete: remove caller's active listing for this collection and token id. - delete salePrices[_contractAddress][_tokenId][msg.sender]; + // State delete: remove caller's active listing for this collection and token id. + delete $.salePrices[_contractAddress][tokenId][msg.sender]; - emit SalePriceCancelled(msg.sender, _contractAddress, _tokenId); + emit SalePriceCancelled(msg.sender, _contractAddress, tokenId); + } } - /// @inheritdoc IRareERC1155Marketplace - function buy( + /// @inheritdoc IRareERC1155Listings + function buyBatch( address _contractAddress, - uint256 _tokenId, address _seller, address _currencyAddress, - uint256 _price, - uint256 _quantity + IRareERC1155Listings.BuyRequest[] calldata _requests ) external payable nonReentrant notPaused { - // Atomic guard: secondary fills must buy at least one token. - if (_quantity == 0) revert QuantityCannotBeZero(); + _validateBuyRequests(_requests); if (msg.sender == _seller) revert SelfPurchaseUnsupported(_seller); // Atomic currency check: rejected currencies cannot be used even for stale listings. _checkIfCurrencyIsApproved(_currencyAddress); _validateERC1155Contract(_contractAddress); - // Storage pointer: mutate seller listing quantity only after all buy-time checks pass. - IRareERC1155Marketplace.SalePrice storage salePrice = salePrices[_contractAddress][_tokenId][_seller]; - - // Atomic listing checks: listing must exist and match buyer-supplied terms. - if (salePrice.quantity == 0) revert SalePriceDoesNotExist(_contractAddress, _tokenId, _seller); - if (salePrice.currencyAddress != _currencyAddress) { - revert CurrencyMismatch(_currencyAddress, salePrice.currencyAddress); - } - if (salePrice.price != _price) revert PriceMismatch(_price, salePrice.price); - if (salePrice.quantity < _quantity) revert QuantityExceedsSalePriceQuantity(_quantity, salePrice.quantity); - - // External reads: recheck seller balance and approval at buy time because listings are not escrowed. + // External read: recheck seller approval at buy time because listings are not escrowed. + ListingsStorage storage $ = _listingsStorage(); IERC1155 erc1155 = IERC1155(_contractAddress); - uint256 sellerBalance = erc1155.balanceOf(_seller, _tokenId); - if (sellerBalance < _quantity) { - revert InsufficientTokenBalance(_seller, _contractAddress, _tokenId, _quantity, sellerBalance); - } - if (!erc1155.isApprovedForAll(_seller, address(erc1155ApprovalManager))) { + if (!erc1155.isApprovedForAll(_seller, address($.erc1155ApprovalManager))) { revert MarketplaceNotApproved(_seller, _contractAddress); } - // Payment pull: collect sale amount plus marketplace fee before moving the ERC1155. - uint256 totalPrice = _quantity * _price; - _checkAmountAndTransfer( - _currencyAddress, totalPrice + marketConfig.marketplaceSettings.calculateMarketplaceFee(totalPrice) - ); + uint256 requestCount = _requests.length; + uint256[] memory tokenIds = new uint256[](requestCount); + uint256[] memory amounts = new uint256[](requestCount); + address[] memory balanceAccounts = new address[](requestCount * 2); + uint256[] memory balanceTokenIds = new uint256[](requestCount * 2); + SecondaryPayoutContext[] memory payoutContexts = new SecondaryPayoutContext[](requestCount); + uint256 buyerTotal = 0; + + for (uint256 i = 0; i < requestCount;) { + payoutContexts[i] = _validateSecondaryBuyRequest(_contractAddress, _seller, _currencyAddress, _requests[i]); + + tokenIds[i] = _requests[i].tokenId; + amounts[i] = _requests[i].quantity; + + uint256 sellerBalance = erc1155.balanceOf(_seller, tokenIds[i]); + if (sellerBalance < amounts[i]) { + revert InsufficientTokenBalance(_seller, _contractAddress, tokenIds[i], amounts[i], sellerBalance); + } + + payoutContexts[i].marketplaceFee = + $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContexts[i].grossAmount); + buyerTotal += payoutContexts[i].grossAmount + payoutContexts[i].marketplaceFee; + + uint256 balanceIndex = i * 2; + balanceAccounts[balanceIndex] = _seller; + balanceAccounts[balanceIndex + 1] = msg.sender; + balanceTokenIds[balanceIndex] = tokenIds[i]; + balanceTokenIds[balanceIndex + 1] = tokenIds[i]; + + unchecked { + ++i; + } + } + + // Payment pull: collect aggregate sale amount plus per-line marketplace fees before moving the ERC1155 batch. + _checkBatchPayment(_currencyAddress, buyerTotal); - // State write: decrement listed quantity before the external ERC1155 transfer. - salePrice.quantity -= _quantity; + for (uint256 i = 0; i < requestCount;) { + IRareERC1155Listings.SalePrice storage salePrice = + $.salePrices[_contractAddress][_requests[i].tokenId][_seller]; - // Memory copies: preserve split data before possibly deleting the listing. - address payable[] memory splitRecipients = salePrice.splitRecipients; - uint8[] memory splitRatios = salePrice.splitRatios; - if (salePrice.quantity == 0) { - // State delete: clear listing storage once the final listed quantity is sold. - delete salePrices[_contractAddress][_tokenId][_seller]; + // State write: decrement listed quantity before the external ERC1155 batch transfer. + salePrice.quantity -= _requests[i].quantity; + if (salePrice.quantity == 0) { + // State delete: clear listing storage once the final listed quantity is sold. + delete $.salePrices[_contractAddress][_requests[i].tokenId][_seller]; + } + + unchecked { + ++i; + } } - // Balance snapshots: used to reject non-standard ERC1155 transfers that do not move the exact quantity. - uint256 sellerBalanceBeforeTransfer = erc1155.balanceOf(_seller, _tokenId); - uint256 buyerBalanceBeforeTransfer = erc1155.balanceOf(msg.sender, _tokenId); - if (sellerBalanceBeforeTransfer < _quantity) { - revert InsufficientTokenBalance(_seller, _contractAddress, _tokenId, _quantity, sellerBalanceBeforeTransfer); + uint256[] memory balancesBeforeTransfer = erc1155.balanceOfBatch(balanceAccounts, balanceTokenIds); + for (uint256 i = 0; i < requestCount;) { + uint256 sellerBalanceIndex = i * 2; + if (balancesBeforeTransfer[sellerBalanceIndex] < amounts[i]) { + revert InsufficientTokenBalance( + _seller, _contractAddress, tokenIds[i], amounts[i], balancesBeforeTransfer[sellerBalanceIndex] + ); + } + + unchecked { + ++i; + } } // External transfer: move ERC1155 tokens through the approved transfer manager. - erc1155ApprovalManager.safeTransferFrom(_contractAddress, _seller, msg.sender, _tokenId, _quantity, ""); + $.erc1155ApprovalManager.safeBatchTransferFrom(_contractAddress, _seller, msg.sender, tokenIds, amounts, ""); + + uint256[] memory balancesAfterTransfer = erc1155.balanceOfBatch(balanceAccounts, balanceTokenIds); + for (uint256 i = 0; i < requestCount;) { + uint256 balanceIndex = i * 2; + if ( + balancesAfterTransfer[balanceIndex] != balancesBeforeTransfer[balanceIndex] - amounts[i] + || balancesAfterTransfer[balanceIndex + 1] != balancesBeforeTransfer[balanceIndex + 1] + amounts[i] + ) { + revert InvalidERC1155Transfer(_contractAddress, tokenIds[i], _seller, msg.sender, amounts[i]); + } - if ( - erc1155.balanceOf(_seller, _tokenId) != sellerBalanceBeforeTransfer - _quantity - || erc1155.balanceOf(msg.sender, _tokenId) != buyerBalanceBeforeTransfer + _quantity - ) { - revert InvalidERC1155Transfer(_contractAddress, _tokenId, _seller, msg.sender, _quantity); + unchecked { + ++i; + } } - // Payout fan-out: distribute collected secondary sale funds after token transfer. - _payoutSecondary( - _contractAddress, _tokenId, _currencyAddress, totalPrice, _seller, splitRecipients, splitRatios - ); + for (uint256 i = 0; i < requestCount;) { + // Payout fan-out: distribute collected secondary sale funds after token transfer. + _payoutSecondary( + _contractAddress, + payoutContexts[i].tokenId, + _currencyAddress, + payoutContexts[i].grossAmount, + payoutContexts[i].marketplaceFee, + _seller, + payoutContexts[i].splitRecipients, + payoutContexts[i].splitRatios + ); - emit Sold(_seller, msg.sender, _contractAddress, _tokenId, _currencyAddress, _price, _quantity); + emit Sold( + _seller, + msg.sender, + _contractAddress, + payoutContexts[i].tokenId, + _currencyAddress, + _requests[i].price, + _requests[i].quantity + ); + + unchecked { + ++i; + } + } } /// @notice Returns the primary mint sale config for a token id. @@ -473,9 +618,9 @@ contract RareERC1155Marketplace is function getDirectSaleConfig(address _contractAddress, uint256 _tokenId) external view - returns (IRareERC1155Marketplace.DirectSaleConfig memory) + returns (IRareERC1155Listings.DirectSaleConfig memory) { - return directSaleConfigs[_contractAddress][_tokenId]; + return _listingsStorage().directSaleConfigs[_contractAddress][_tokenId]; } /// @notice Returns the allowlist config for a token id. @@ -485,9 +630,9 @@ contract RareERC1155Marketplace is function getTokenAllowListConfig(address _contractAddress, uint256 _tokenId) external view - returns (IRareERC1155Marketplace.AllowListConfig memory) + returns (IRareERC1155Listings.AllowListConfig memory) { - return tokenAllowlistRoots[_contractAddress][_tokenId]; + return _listingsStorage().tokenAllowlistRoots[_contractAddress][_tokenId]; } /// @notice Returns the per-address mint quantity limit for a token id. @@ -495,7 +640,7 @@ contract RareERC1155Marketplace is /// @param _tokenId Token id to inspect. /// @return Mint quantity limit. Zero means unlimited. function getTokenMintLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256) { - return tokenMintLimit[_contractAddress][_tokenId]; + return _listingsStorage().tokenMintLimit[_contractAddress][_tokenId]; } /// @notice Returns quantity minted by an address for a token id. @@ -508,7 +653,7 @@ contract RareERC1155Marketplace is view returns (uint256) { - return tokenMintsPerAddress[_contractAddress][_tokenId][_address]; + return _listingsStorage().tokenMintsPerAddress[_contractAddress][_tokenId][_address]; } /// @notice Returns the per-address transaction limit for a token id. @@ -516,7 +661,7 @@ contract RareERC1155Marketplace is /// @param _tokenId Token id to inspect. /// @return Transaction limit. Zero means unlimited. function getTokenTxLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256) { - return tokenTxLimit[_contractAddress][_tokenId]; + return _listingsStorage().tokenTxLimit[_contractAddress][_tokenId]; } /// @notice Returns mint transactions used by an address for a token id. @@ -529,7 +674,7 @@ contract RareERC1155Marketplace is view returns (uint256) { - return tokenTxsPerAddress[_contractAddress][_tokenId][_address]; + return _listingsStorage().tokenTxsPerAddress[_contractAddress][_tokenId][_address]; } /// @notice Returns a seller's secondary fixed-price listing. @@ -540,27 +685,27 @@ contract RareERC1155Marketplace is function getSalePrice(address _contractAddress, uint256 _tokenId, address _seller) external view - returns (IRareERC1155Marketplace.SalePrice memory) + returns (IRareERC1155Listings.SalePrice memory) { - return salePrices[_contractAddress][_tokenId][_seller]; + return _listingsStorage().salePrices[_contractAddress][_tokenId][_seller]; } /// @notice Returns the marketplace dependency configuration. /// @return Current market config struct. function getMarketConfig() external view returns (MarketConfigV2.Config memory) { - return marketConfig; + return _listingsStorage().marketConfig; } /// @notice Returns the ERC1155 approval manager used for secondary transfers. /// @return Current ERC1155 approval manager address. function getERC1155ApprovalManager() external view returns (address) { - return address(erc1155ApprovalManager); + return address(_listingsStorage().erc1155ApprovalManager); } /// @notice Returns whether marketplace writes are paused. /// @return True when paused. function isPaused() external view returns (bool) { - return paused; + return _listingsStorage().paused; } /// @notice Updates the network beneficiary address. @@ -570,7 +715,7 @@ contract RareERC1155Marketplace is _validateMarketConfigAddress(_networkBeneficiary, NETWORK_BENEFICIARY_FIELD); // State write: delegate config mutation to the shared MarketConfig library. - marketConfig.updateNetworkBeneficiary(_networkBeneficiary); + _listingsStorage().marketConfig.updateNetworkBeneficiary(_networkBeneficiary); emit MarketplaceDependencyUpdated(NETWORK_BENEFICIARY_FIELD, _networkBeneficiary); } @@ -582,7 +727,7 @@ contract RareERC1155Marketplace is _validateMarketConfigAddress(_marketplaceSettings, MARKETPLACE_SETTINGS_FIELD); // State write: delegate config mutation to the shared MarketConfig library. - marketConfig.updateMarketplaceSettings(_marketplaceSettings); + _listingsStorage().marketConfig.updateMarketplaceSettings(_marketplaceSettings); emit MarketplaceDependencyUpdated(MARKETPLACE_SETTINGS_FIELD, _marketplaceSettings); } @@ -594,7 +739,7 @@ contract RareERC1155Marketplace is _validateMarketConfigAddress(_spaceOperatorRegistry, SPACE_OPERATOR_REGISTRY_FIELD); // State write: delegate config mutation to the shared MarketConfig library. - marketConfig.updateSpaceOperatorRegistry(_spaceOperatorRegistry); + _listingsStorage().marketConfig.updateSpaceOperatorRegistry(_spaceOperatorRegistry); emit MarketplaceDependencyUpdated(SPACE_OPERATOR_REGISTRY_FIELD, _spaceOperatorRegistry); } @@ -606,7 +751,7 @@ contract RareERC1155Marketplace is _validateMarketConfigAddress(_royaltyEngine, ROYALTY_ENGINE_FIELD); // State write: delegate config mutation to the shared MarketConfig library. - marketConfig.updateRoyaltyEngine(_royaltyEngine); + _listingsStorage().marketConfig.updateRoyaltyEngine(_royaltyEngine); emit MarketplaceDependencyUpdated(ROYALTY_ENGINE_FIELD, _royaltyEngine); } @@ -618,7 +763,7 @@ contract RareERC1155Marketplace is _validateMarketConfigAddress(_payments, PAYMENTS_FIELD); // State write: delegate config mutation to the shared MarketConfig library. - marketConfig.updatePayments(_payments); + _listingsStorage().marketConfig.updatePayments(_payments); emit MarketplaceDependencyUpdated(PAYMENTS_FIELD, _payments); } @@ -630,7 +775,7 @@ contract RareERC1155Marketplace is _validateMarketConfigAddress(_approvedTokenRegistry, APPROVED_TOKEN_REGISTRY_FIELD); // State write: delegate config mutation to the shared MarketConfig library. - marketConfig.updateApprovedTokenRegistry(_approvedTokenRegistry); + _listingsStorage().marketConfig.updateApprovedTokenRegistry(_approvedTokenRegistry); emit MarketplaceDependencyUpdated(APPROVED_TOKEN_REGISTRY_FIELD, _approvedTokenRegistry); } @@ -642,7 +787,7 @@ contract RareERC1155Marketplace is _validateMarketConfigAddress(_stakingSettings, STAKING_SETTINGS_FIELD); // State write: delegate config mutation to the shared MarketConfig library. - marketConfig.updateStakingSettings(_stakingSettings); + _listingsStorage().marketConfig.updateStakingSettings(_stakingSettings); emit MarketplaceDependencyUpdated(STAKING_SETTINGS_FIELD, _stakingSettings); } @@ -654,7 +799,7 @@ contract RareERC1155Marketplace is _validateMarketConfigAddress(_stakingRegistry, STAKING_REGISTRY_FIELD); // State write: delegate config mutation to the shared MarketConfig library. - marketConfig.updateStakingRegistry(_stakingRegistry); + _listingsStorage().marketConfig.updateStakingRegistry(_stakingRegistry); emit MarketplaceDependencyUpdated(STAKING_REGISTRY_FIELD, _stakingRegistry); } @@ -666,7 +811,7 @@ contract RareERC1155Marketplace is _validateApprovalManager(_erc20ApprovalManager); // State write: delegate config mutation to the shared MarketConfig library. - marketConfig.updateERC20ApprovalManager(_erc20ApprovalManager); + _listingsStorage().marketConfig.updateERC20ApprovalManager(_erc20ApprovalManager); emit MarketplaceDependencyUpdated(ERC20_APPROVAL_MANAGER_FIELD, _erc20ApprovalManager); } @@ -678,7 +823,7 @@ contract RareERC1155Marketplace is _validateApprovalManager(_erc721ApprovalManager); // State write: delegate config mutation to the shared MarketConfig library. - marketConfig.updateERC721ApprovalManager(_erc721ApprovalManager); + _listingsStorage().marketConfig.updateERC721ApprovalManager(_erc721ApprovalManager); emit MarketplaceDependencyUpdated(ERC721_APPROVAL_MANAGER_FIELD, _erc721ApprovalManager); } @@ -690,7 +835,7 @@ contract RareERC1155Marketplace is _validateApprovalManager(_erc1155ApprovalManager); // State write: replace the manager used for seller approval checks and transfers. - erc1155ApprovalManager = IERC1155ApprovalManager(_erc1155ApprovalManager); + _listingsStorage().erc1155ApprovalManager = IERC1155ApprovalManager(_erc1155ApprovalManager); emit MarketplaceDependencyUpdated(ERC1155_APPROVAL_MANAGER_FIELD, _erc1155ApprovalManager); } @@ -699,7 +844,7 @@ contract RareERC1155Marketplace is /// @param _isPaused New pause state. function setContractPaused(bool _isPaused) external onlyOwner { // State write: set pause flag consumed by the notPaused modifier. - paused = _isPaused; + _listingsStorage().paused = _isPaused; emit ContractPausedUpdated(_isPaused); } @@ -709,6 +854,7 @@ contract RareERC1155Marketplace is /// @param _contractAddress ERC1155 collection address. /// @param _currencyAddress Currency being paid. Zero address indicates ETH. /// @param _amount Gross sale amount before platform fee. + /// @param _marketplaceFee Buyer-paid marketplace fee already calculated for `_amount`. /// @param _seller Primary sale seller. /// @param _splitRecipients Seller proceed recipients. /// @param _splitRatios Seller proceed split ratios. @@ -716,20 +862,22 @@ contract RareERC1155Marketplace is address _contractAddress, address _currencyAddress, uint256 _amount, + uint256 _marketplaceFee, address _seller, address payable[] memory _splitRecipients, uint8[] memory _splitRatios ) internal { // Accounting state: track seller proceeds remaining after primary platform commission. + ListingsStorage storage $ = _listingsStorage(); uint256 remainingAmount = _amount; // Payout operation: distribute the buyer-paid marketplace fee through the configured fee split. - _payoutMarketplaceFee(_currencyAddress, _amount, _seller); + _payoutMarketplaceFee(_currencyAddress, _amount, _marketplaceFee, _seller); // External reads: choose primary commission from approved space operator or marketplace settings. - uint256 platformCommission = marketConfig.spaceOperatorRegistry.isApprovedSpaceOperator(_seller) - ? marketConfig.spaceOperatorRegistry.getPlatformCommission(_seller) - : marketConfig.marketplaceSettings.getERC721ContractPrimarySaleFeePercentage(_contractAddress); + uint256 platformCommission = $.marketConfig.spaceOperatorRegistry.isApprovedSpaceOperator(_seller) + ? $.marketConfig.spaceOperatorRegistry.getPlatformCommission(_seller) + : $.marketConfig.marketplaceSettings.getERC721ContractPrimarySaleFeePercentage(_contractAddress); if (platformCommission > 100) { revert PlatformCommissionExceeded(platformCommission, 100); } @@ -742,7 +890,7 @@ contract RareERC1155Marketplace is // Memory setup: represent single-recipient platform fee as a payout batch. address payable[] memory platformRecipients = new address payable[](1); - platformRecipients[0] = payable(marketConfig.networkBeneficiary); + platformRecipients[0] = payable($.marketConfig.networkBeneficiary); uint256[] memory platformAmounts = new uint256[](1); platformAmounts[0] = platformFee; @@ -760,6 +908,7 @@ contract RareERC1155Marketplace is /// @param _tokenId Sold token id. /// @param _currencyAddress Currency being paid. Zero address indicates ETH. /// @param _amount Gross sale amount before royalty deduction. + /// @param _marketplaceFee Buyer-paid marketplace fee already calculated for `_amount`. /// @param _seller Secondary seller. /// @param _splitRecipients Seller proceed recipients. /// @param _splitRatios Seller proceed split ratios. @@ -768,6 +917,7 @@ contract RareERC1155Marketplace is uint256 _tokenId, address _currencyAddress, uint256 _amount, + uint256 _marketplaceFee, address _seller, address payable[] memory _splitRecipients, uint8[] memory _splitRatios @@ -776,11 +926,11 @@ contract RareERC1155Marketplace is uint256 remainingAmount = _amount; // Payout operation: distribute the buyer-paid marketplace fee through the configured fee split. - _payoutMarketplaceFee(_currencyAddress, _amount, _seller); + _payoutMarketplaceFee(_currencyAddress, _amount, _marketplaceFee, _seller); // External read: resolve royalties through the configured royalty engine. (address payable[] memory receivers, uint256[] memory royalties) = - marketConfig.royaltyEngine.getRoyalty(_contractAddress, _tokenId, _amount); + _listingsStorage().marketConfig.royaltyEngine.getRoyalty(_contractAddress, _tokenId, _amount); // Accounting operation: aggregate royalty amounts before paying them. uint256 totalRoyalties = 0; @@ -806,41 +956,45 @@ contract RareERC1155Marketplace is /// @notice Distributes marketplace fee between network beneficiary and seller staking rewards. /// @param _currencyAddress Currency being paid. Zero address indicates ETH. /// @param _amount Gross sale amount used for fee calculation. + /// @param _marketplaceFee Buyer-paid marketplace fee already calculated for `_amount`. /// @param _seller Seller whose staking reward accumulator may receive staking fees. - function _payoutMarketplaceFee(address _currencyAddress, uint256 _amount, address _seller) internal { - // External read: calculate buyer-paid marketplace fee for the sale amount. - uint256 marketplaceFee = marketConfig.marketplaceSettings.calculateMarketplaceFee(_amount); - + function _payoutMarketplaceFee(address _currencyAddress, uint256 _amount, uint256 _marketplaceFee, address _seller) + internal + { // External read: calculate staking fee from staking settings and send the collected remainder to network. - uint256 stakingFee = marketConfig.stakingSettings.calculateStakingFee(_amount); - if (stakingFee > marketplaceFee) { - revert StakingFeeExceedsMarketplaceFee(marketplaceFee, stakingFee); + ListingsStorage storage $ = _listingsStorage(); + uint256 stakingFee = $.marketConfig.stakingSettings.calculateStakingFee(_amount); + if (stakingFee > _marketplaceFee) { + revert StakingFeeExceedsMarketplaceFee(_marketplaceFee, stakingFee); } - if (marketplaceFee == 0) { + if (_marketplaceFee == 0) { return; } // Memory setup: recipient 0 is network, recipient 1 is seller staking reward accumulator or network fallback. address payable[] memory recipients = new address payable[](2); - recipients[0] = payable(marketConfig.networkBeneficiary); - recipients[1] = payable(marketConfig.stakingRegistry.getRewardAccumulatorAddressForUser(_seller)); - recipients[1] = recipients[1] == address(0) ? payable(marketConfig.networkBeneficiary) : recipients[1]; + recipients[0] = payable($.marketConfig.networkBeneficiary); + recipients[1] = payable($.marketConfig.stakingRegistry.getRewardAccumulatorAddressForUser(_seller)); + recipients[1] = recipients[1] == address(0) ? payable($.marketConfig.networkBeneficiary) : recipients[1]; // Memory setup: distribute the buyer-paid marketplace fee between network and staking recipients. uint256[] memory amounts = new uint256[](2); - amounts[0] = marketplaceFee - stakingFee; + amounts[0] = _marketplaceFee - stakingFee; amounts[1] = stakingFee; // Payout operation: distribute the marketplace fee batch. - _performPayouts(_currencyAddress, marketplaceFee, recipients, amounts); + _performPayouts(_currencyAddress, _marketplaceFee, recipients, amounts); } /// @notice Validates that a currency is ETH or an approved ERC20. /// @param _currencyAddress Currency to validate. Zero address indicates ETH. function _checkIfCurrencyIsApproved(address _currencyAddress) internal view { // External read: non-ETH currencies must be approved by the token registry. - if (_currencyAddress != address(0) && !marketConfig.approvedTokenRegistry.isApprovedToken(_currencyAddress)) { + if ( + _currencyAddress != address(0) + && !_listingsStorage().marketConfig.approvedTokenRegistry.isApprovedToken(_currencyAddress) + ) { revert CurrencyNotApproved(_currencyAddress); } } @@ -866,6 +1020,201 @@ contract RareERC1155Marketplace is } } + /// @notice Validates one primary mint request and snapshots payout state. + /// @param _contractAddress ERC1155 collection address. + /// @param _currencyAddress Currency expected by the buyer. + /// @param _buyer Buyer executing the batch. + /// @param _request Mint request to validate. + /// @return payoutContext Payout data copied before the external batch mint. + function _validateMintDirectSaleRequest( + address _contractAddress, + address _currencyAddress, + address _buyer, + IRareERC1155Listings.MintRequest calldata _request + ) internal view returns (PrimaryPayoutContext memory payoutContext) { + ListingsStorage storage $ = _listingsStorage(); + uint256 tokenId = _request.tokenId; + uint256 quantity = _request.quantity; + IRareERC1155Listings.DirectSaleConfig memory directSaleConfig = $.directSaleConfigs[_contractAddress][tokenId]; + + // Atomic guards: ensure sale existence, current seller ownership, allowlist membership, and non-zero quantity. + if (directSaleConfig.seller == address(0)) revert DirectSaleNotConfigured(_contractAddress, tokenId); + if (!_isContractOwner(_contractAddress, directSaleConfig.seller)) { + revert NotContractOwner(_contractAddress, directSaleConfig.seller); + } + _enforceTokenAllowList(_contractAddress, tokenId, _buyer, _request.proof); + if (quantity == 0) revert QuantityCannotBeZero(); + + // Atomic mint-limit check: validate requested quantity against buyer's enabled-period mint count. + uint256 mintLimit = $.tokenMintLimit[_contractAddress][tokenId]; + uint256 currentMints = $.tokenMintsPerAddress[_contractAddress][tokenId][_buyer]; + if (mintLimit != 0 && currentMints + quantity > mintLimit) { + revert MintLimitExceeded(_contractAddress, tokenId, _buyer, quantity, currentMints, mintLimit); + } + + // Atomic tx-limit check: each touched token id consumes one transaction when its tx limit is enabled. + uint256 txLimit = $.tokenTxLimit[_contractAddress][tokenId]; + uint256 currentTxs = $.tokenTxsPerAddress[_contractAddress][tokenId][_buyer]; + if (txLimit != 0 && currentTxs + 1 > txLimit) { + revert TransactionLimitExceeded(_contractAddress, tokenId, _buyer, currentTxs, txLimit); + } + + // Atomic sale-parameter checks: buyer-supplied price and currency must match the stored config. + if (directSaleConfig.maxMints != 0 && quantity > directSaleConfig.maxMints) { + revert MaxMintExceeded(quantity, directSaleConfig.maxMints); + } + if (directSaleConfig.startTime > block.timestamp) revert SaleNotStarted(directSaleConfig.startTime); + if (_request.price != directSaleConfig.price) revert PriceMismatch(_request.price, directSaleConfig.price); + if (directSaleConfig.currencyAddress != _currencyAddress) { + revert CurrencyMismatch(_currencyAddress, directSaleConfig.currencyAddress); + } + + payoutContext = PrimaryPayoutContext( + tokenId, + quantity * _request.price, + 0, + directSaleConfig.seller, + directSaleConfig.splitRecipients, + directSaleConfig.splitRatios + ); + } + + /// @notice Validates one secondary buy request and snapshots payout state. + /// @param _contractAddress ERC1155 collection address. + /// @param _seller Seller whose listing is being filled. + /// @param _currencyAddress Currency expected by the buyer. + /// @param _request Buy request to validate. + /// @return payoutContext Payout data copied before listings may be decremented or deleted. + function _validateSecondaryBuyRequest( + address _contractAddress, + address _seller, + address _currencyAddress, + IRareERC1155Listings.BuyRequest calldata _request + ) internal view returns (SecondaryPayoutContext memory payoutContext) { + uint256 tokenId = _request.tokenId; + uint256 quantity = _request.quantity; + if (quantity == 0) revert QuantityCannotBeZero(); + + // Storage pointer: mutate seller listing quantity only after all buy-time checks pass. + IRareERC1155Listings.SalePrice storage salePrice = + _listingsStorage().salePrices[_contractAddress][tokenId][_seller]; + + // Atomic listing checks: listing must exist and match buyer-supplied terms. + if (salePrice.quantity == 0) revert SalePriceDoesNotExist(_contractAddress, tokenId, _seller); + if (salePrice.expirationTime != 0 && salePrice.expirationTime <= block.timestamp) { + revert SalePriceExpired(_contractAddress, tokenId, _seller, salePrice.expirationTime); + } + if (salePrice.currencyAddress != _currencyAddress) { + revert CurrencyMismatch(_currencyAddress, salePrice.currencyAddress); + } + if (salePrice.price != _request.price) revert PriceMismatch(_request.price, salePrice.price); + if (salePrice.quantity < quantity) revert QuantityExceedsSalePriceQuantity(quantity, salePrice.quantity); + + payoutContext = SecondaryPayoutContext( + tokenId, quantity * _request.price, 0, salePrice.splitRecipients, salePrice.splitRatios + ); + } + + /// @notice Validates plain token id batch shape and ordering. + /// @param _tokenIds Token ids supplied by the caller. + function _validateTokenIds(uint256[] calldata _tokenIds) internal pure { + _validateBatchSize(_tokenIds.length); + for (uint256 i = 1; i < _tokenIds.length; i++) { + if (_tokenIds[i] <= _tokenIds[i - 1]) { + revert TokenIdsNotStrictlyAscending(i, _tokenIds[i - 1], _tokenIds[i]); + } + } + } + + /// @notice Validates primary sale config request batch shape and ordering. + /// @param _requests Requests supplied by the caller. + function _validateDirectSaleRequests(IRareERC1155Listings.DirectSaleRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + if (_requests[i].tokenId <= _requests[i - 1].tokenId) { + revert TokenIdsNotStrictlyAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } + } + + /// @notice Validates primary mint request batch shape and ordering. + /// @param _requests Requests supplied by the caller. + function _validateMintRequests(IRareERC1155Listings.MintRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + if (_requests[i].tokenId <= _requests[i - 1].tokenId) { + revert TokenIdsNotStrictlyAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } + } + + /// @notice Validates allowlist config request batch shape and ordering. + /// @param _requests Requests supplied by the caller. + function _validateAllowListConfigRequests(IRareERC1155Listings.AllowListConfigRequest[] calldata _requests) + internal + pure + { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + if (_requests[i].tokenId <= _requests[i - 1].tokenId) { + revert TokenIdsNotStrictlyAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } + } + + /// @notice Validates token limit request batch shape and ordering. + /// @param _requests Requests supplied by the caller. + function _validateTokenLimitRequests(IRareERC1155Listings.TokenLimitRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + if (_requests[i].tokenId <= _requests[i - 1].tokenId) { + revert TokenIdsNotStrictlyAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } + } + + /// @notice Validates secondary listing request batch shape and ordering. + /// @param _requests Requests supplied by the caller. + function _validateSalePriceRequests(IRareERC1155Listings.SalePriceRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + if (_requests[i].tokenId <= _requests[i - 1].tokenId) { + revert TokenIdsNotStrictlyAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } + } + + /// @notice Validates secondary buy request batch shape and ordering. + /// @param _requests Requests supplied by the caller. + function _validateBuyRequests(IRareERC1155Listings.BuyRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + if (_requests[i].tokenId <= _requests[i - 1].tokenId) { + revert TokenIdsNotStrictlyAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } + } + + /// @notice Validates common batch size constraints. + /// @param _length Number of batch items supplied by the caller. + function _validateBatchSize(uint256 _length) internal pure { + if (_length == 0) revert EmptyBatch(); + if (_length > MAX_BATCH_SIZE) revert BatchSizeExceeded(_length, MAX_BATCH_SIZE); + } + + /// @notice Validates aggregate payment amount and pulls ERC20 funds when needed. + /// @param _currencyAddress Currency to collect. Zero address indicates ETH. + /// @param _amount Total amount to collect, including all buyer-paid marketplace fees. + function _checkBatchPayment(address _currencyAddress, uint256 _amount) internal { + if (_amount == 0) { + // Atomic free-batch guard: free batches must not leave ETH stuck in the marketplace. + if (msg.value != 0) revert MsgValueMustBeZero(); + return; + } + + _checkAmountAndTransfer(_currencyAddress, _amount); + } + /// @notice Validates payment amount and pulls ERC20 funds when needed. /// @dev For ETH payments, funds are already present in `msg.value`; for ERC20 payments, this function transfers tokens in. /// @param _currencyAddress Currency to collect. Zero address indicates ETH. @@ -886,7 +1235,8 @@ contract RareERC1155Marketplace is uint256 balanceBefore = erc20.balanceOf(address(this)); // External transfer: pull exact payment amount through the approved ERC20 transfer manager. - marketConfig.erc20ApprovalManager.transferFrom(_currencyAddress, msg.sender, address(this), _amount); + _listingsStorage().marketConfig.erc20ApprovalManager + .transferFrom(_currencyAddress, msg.sender, address(this), _amount); // Atomic transfer check: marketplace must receive the exact amount requested. uint256 receivedAmount = erc20.balanceOf(address(this)) - balanceBefore; @@ -978,6 +1328,7 @@ contract RareERC1155Marketplace is if (_currencyAddress == address(0)) { // External call: send ETH to Payments so it can fan out to each recipient. + MarketConfigV2.Config storage marketConfig = _listingsStorage().marketConfig; (bool success, bytes memory data) = address(marketConfig.payments).call{value: _amount}( abi.encodeWithSelector(marketConfig.payments.payout.selector, _recipients, _amounts) ); @@ -1021,7 +1372,8 @@ contract RareERC1155Marketplace is bytes32[] calldata _proof ) internal view { // Storage read: load allowlist config for the token id. - IRareERC1155Marketplace.AllowListConfig memory allowListConfig = tokenAllowlistRoots[_contractAddress][_tokenId]; + IRareERC1155Listings.AllowListConfig memory allowListConfig = + _listingsStorage().tokenAllowlistRoots[_contractAddress][_tokenId]; if (allowListConfig.root == bytes32(0) || block.timestamp >= allowListConfig.endTimestamp) { return; diff --git a/src/test/marketplace/RareERC1155Marketplace.t.sol b/src/test/marketplace/RareERC1155Listings.t.sol similarity index 55% rename from src/test/marketplace/RareERC1155Marketplace.t.sol rename to src/test/marketplace/RareERC1155Listings.t.sol index 38d8392..5da1b5a 100644 --- a/src/test/marketplace/RareERC1155Marketplace.t.sol +++ b/src/test/marketplace/RareERC1155Listings.t.sol @@ -16,8 +16,8 @@ import {IMarketplaceSettings} from "../../marketplace/IMarketplaceSettings.sol"; import {Payments} from "../../payments/Payments.sol"; import {RareERC1155} from "../../token/ERC1155/RareERC1155.sol"; import {RareERC1155ContractFactory} from "../../token/ERC1155/RareERC1155ContractFactory.sol"; -import {RareERC1155Marketplace} from "../../marketplace/RareERC1155Marketplace.sol"; -import {IRareERC1155Marketplace} from "../../marketplace/IRareERC1155Marketplace.sol"; +import {RareERC1155Listings} from "../../marketplace/RareERC1155Listings.sol"; +import {IRareERC1155Listings} from "../../marketplace/IRareERC1155Listings.sol"; import {ERC20ApprovalManager} from "../../v2/approver/ERC20/ERC20ApprovalManager.sol"; import {ERC721ApprovalManager} from "../../v2/approver/ERC721/ERC721ApprovalManager.sol"; import {ERC1155ApprovalManager} from "../../v2/approver/ERC1155/ERC1155ApprovalManager.sol"; @@ -106,11 +106,22 @@ contract TestNoOpERC1155 is IERC1155 { {} } -contract RareERC1155MarketplaceTest is Test { +contract RareERC1155ListingsTest is Test { event MarketplaceDependencyUpdated(bytes32 indexed field, address indexed dependency); event ContractPausedUpdated(bool isPaused); - - RareERC1155Marketplace private market; + event SalePriceSet( + address indexed seller, + address indexed contractAddress, + uint256 indexed tokenId, + address currency, + uint256 price, + uint256 quantity, + uint256 expirationTime, + address payable[] splitRecipients, + uint8[] splitRatios + ); + + RareERC1155Listings private market; RareERC1155 private token; TestERC1155Currency private currency; ERC20ApprovalManager private erc20ApprovalManager; @@ -153,8 +164,8 @@ contract RareERC1155MarketplaceTest is Test { erc721ApprovalManager = new ERC721ApprovalManager(); erc1155ApprovalManager = new ERC1155ApprovalManager(); - RareERC1155Marketplace implementation = new RareERC1155Marketplace(); - market = RareERC1155Marketplace(address(new ERC1967Proxy(address(implementation), ""))); + RareERC1155Listings implementation = new RareERC1155Listings(); + market = RareERC1155Listings(address(new ERC1967Proxy(address(implementation), ""))); market.initialize( networkBeneficiary, marketplaceSettings, @@ -179,7 +190,7 @@ contract RareERC1155MarketplaceTest is Test { token = RareERC1155(tokenFactory.createRareERC1155Contract("Rare Editions", "RED", "ipfs://base/{id}.json")); vm.prank(seller); - tokenId = token.createToken("ipfs://token/1.json", 20, royaltyReceiver); + tokenId = token.createToken("ipfs://token/1.json", 20); vm.etch(marketplaceSettings, address(market).code); vm.etch(stakingSettings, address(market).code); @@ -190,7 +201,7 @@ contract RareERC1155MarketplaceTest is Test { } function testImplementationCannotBeInitialized() public { - RareERC1155Marketplace directImplementation = new RareERC1155Marketplace(); + RareERC1155Listings directImplementation = new RareERC1155Listings(); Payments payments = new Payments(); vm.expectRevert("Initializable: contract is already initialized"); @@ -209,6 +220,10 @@ contract RareERC1155MarketplaceTest is Test { ); } + function testMaxBatchSize() public { + assertEq(market.MAX_BATCH_SIZE(), 100); + } + function testPrepareAndMintDirectSaleERC20() public { uint256 price = 1 ether; uint256 quantity = 2; @@ -228,7 +243,7 @@ contract RareERC1155MarketplaceTest is Test { uint256 rewardBalanceBefore = currency.balanceOf(rewardAccumulator); vm.prank(buyer); - market.mintDirectSale(address(token), tokenId, address(currency), price, quantity, emptyProof); + _mintDirectSale(tokenId, address(currency), price, quantity, emptyProof, 0); assertEq(token.balanceOf(buyer, tokenId), quantity); assertEq(buyerBalanceBefore - currency.balanceOf(buyer), totalPrice + ((totalPrice * 3) / 100)); @@ -265,7 +280,7 @@ contract RareERC1155MarketplaceTest is Test { uint256 rewardBalanceBefore = currency.balanceOf(rewardAccumulator); vm.prank(buyer); - market.mintDirectSale(address(token), tokenId, address(currency), price, 1, emptyProof); + _mintDirectSale(tokenId, address(currency), price, 1, emptyProof, 0); assertEq(buyerBalanceBefore - currency.balanceOf(buyer), price + marketplaceFee); assertEq(currency.balanceOf(seller), 28); @@ -289,9 +304,7 @@ contract RareERC1155MarketplaceTest is Test { uint256 rewardBalanceBefore = rewardAccumulator.balance; vm.prank(buyer); - market.mintDirectSale{value: totalPrice + ((totalPrice * 3) / 100)}( - address(token), tokenId, address(0), price, quantity, emptyProof - ); + _mintDirectSale(tokenId, address(0), price, quantity, emptyProof, totalPrice + ((totalPrice * 3) / 100)); assertEq(token.balanceOf(buyer, tokenId), quantity); assertEq(seller.balance - sellerBalanceBefore, (totalPrice * 85) / 100); @@ -305,7 +318,7 @@ contract RareERC1155MarketplaceTest is Test { _prepareDirectSale(address(0), 0, block.timestamp, 0); vm.prank(buyer); - market.mintDirectSale(address(token), tokenId, address(0), 0, 3, emptyProof); + _mintDirectSale(tokenId, address(0), 0, 3, emptyProof, 0); assertEq(token.balanceOf(buyer, tokenId), 3); } @@ -319,9 +332,13 @@ contract RareERC1155MarketplaceTest is Test { splitRatios[1] = 50; vm.prank(seller); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.SplitRecipientCannotBeZero.selector, 0)); - market.prepareMintDirectSale( - address(token), tokenId, address(0), 1 ether, block.timestamp, 0, splitRecipients, splitRatios + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.SplitRecipientCannotBeZero.selector, 0)); + market.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, 1 ether, block.timestamp, 0), + splitRecipients, + splitRatios ); } @@ -334,9 +351,13 @@ contract RareERC1155MarketplaceTest is Test { splitRatios[1] = 100; vm.prank(seller); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.SplitRatioCannotBeZero.selector, 0)); - market.prepareMintDirectSale( - address(token), tokenId, address(0), 1 ether, block.timestamp, 0, splitRecipients, splitRatios + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.SplitRatioCannotBeZero.selector, 0)); + market.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, 1 ether, block.timestamp, 0), + splitRecipients, + splitRatios ); } @@ -348,12 +369,8 @@ contract RareERC1155MarketplaceTest is Test { token.transferOwnership(nextOwner); vm.prank(buyer); - vm.expectRevert( - abi.encodeWithSelector(IRareERC1155Marketplace.NotContractOwner.selector, address(token), seller) - ); - market.mintDirectSale{value: price + ((price * 3) / 100)}( - address(token), tokenId, address(0), price, 1, emptyProof - ); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.NotContractOwner.selector, address(token), seller)); + _mintDirectSale(tokenId, address(0), price, 1, emptyProof, price + ((price * 3) / 100)); assertEq(token.balanceOf(buyer, tokenId), 0); } @@ -380,7 +397,7 @@ contract RareERC1155MarketplaceTest is Test { uint256 rewardBalanceBefore = rewardAccumulator.balance; vm.prank(buyer); - market.mintDirectSale{value: 104}(address(token), tokenId, address(0), price, 1, emptyProof); + _mintDirectSale(tokenId, address(0), price, 1, emptyProof, 104); assertEq(token.balanceOf(buyer, tokenId), 1); assertEq(seller.balance - sellerBalanceBefore, 86); @@ -407,8 +424,8 @@ contract RareERC1155MarketplaceTest is Test { ); vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.StakingFeeExceedsMarketplaceFee.selector, 3, 4)); - market.mintDirectSale{value: 104}(address(token), tokenId, address(0), price, 1, emptyProof); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.StakingFeeExceedsMarketplaceFee.selector, 3, 4)); + _mintDirectSale(tokenId, address(0), price, 1, emptyProof, 104); assertEq(token.balanceOf(buyer, tokenId), 0); assertEq(address(market).balance, 0); @@ -432,10 +449,8 @@ contract RareERC1155MarketplaceTest is Test { ); vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.PlatformCommissionExceeded.selector, 101, 100)); - market.mintDirectSale{value: price + ((price * 3) / 100)}( - address(token), tokenId, address(0), price, 1, emptyProof - ); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.PlatformCommissionExceeded.selector, 101, 100)); + _mintDirectSale(tokenId, address(0), price, 1, emptyProof, price + ((price * 3) / 100)); assertEq(token.balanceOf(buyer, tokenId), 0); assertEq(address(market).balance, 0); @@ -457,10 +472,8 @@ contract RareERC1155MarketplaceTest is Test { ); vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.PlatformCommissionExceeded.selector, 101, 100)); - market.mintDirectSale{value: price + ((price * 3) / 100)}( - address(token), tokenId, address(0), price, 1, emptyProof - ); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.PlatformCommissionExceeded.selector, 101, 100)); + _mintDirectSale(tokenId, address(0), price, 1, emptyProof, price + ((price * 3) / 100)); assertEq(token.balanceOf(buyer, tokenId), 0); assertEq(address(market).balance, 0); @@ -473,26 +486,22 @@ contract RareERC1155MarketplaceTest is Test { _prepareDirectSale(address(0), price, block.timestamp, 2); vm.prank(seller); - market.setTokenAllowListConfig(root, block.timestamp + 1 days, address(token), tokenId); + _setTokenAllowListConfig(tokenId, root, block.timestamp + 1 days); vm.prank(seller); - market.setTokenMintLimit(address(token), tokenId, 2); + _setTokenMintLimit(tokenId, 2); _mockPrimaryPayout(price * 2, seller); vm.prank(buyer); - market.mintDirectSale{value: (price * 2) + (((price * 2) * 3) / 100)}( - address(token), tokenId, address(0), price, 2, emptyProof - ); + _mintDirectSale(tokenId, address(0), price, 2, emptyProof, (price * 2) + (((price * 2) * 3) / 100)); vm.prank(buyer); vm.expectRevert( abi.encodeWithSelector( - IRareERC1155Marketplace.MintLimitExceeded.selector, address(token), tokenId, buyer, 1, 2, 2 + IRareERC1155Listings.MintLimitExceeded.selector, address(token), tokenId, buyer, 1, 2, 2 ) ); - market.mintDirectSale{value: price + ((price * 3) / 100)}( - address(token), tokenId, address(0), price, 1, emptyProof - ); + _mintDirectSale(tokenId, address(0), price, 1, emptyProof, price + ((price * 3) / 100)); } function testMintDirectSaleAllowListRejectsNonMember() public { @@ -502,13 +511,11 @@ contract RareERC1155MarketplaceTest is Test { _prepareDirectSale(address(0), price, block.timestamp, 0); vm.prank(seller); - market.setTokenAllowListConfig(root, block.timestamp + 1 days, address(token), tokenId); + _setTokenAllowListConfig(tokenId, root, block.timestamp + 1 days); vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.AddressNotAllowlisted.selector, buyer)); - market.mintDirectSale{value: price + ((price * 3) / 100)}( - address(token), tokenId, address(0), price, 1, emptyProof - ); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.AddressNotAllowlisted.selector, buyer)); + _mintDirectSale(tokenId, address(0), price, 1, emptyProof, price + ((price * 3) / 100)); } function testTokenScopedPrimaryConfigRevertsForUnknownTokenId() public { @@ -517,19 +524,19 @@ contract RareERC1155MarketplaceTest is Test { vm.startPrank(seller); vm.expectRevert( - abi.encodeWithSelector(IRareERC1155Marketplace.TokenNotFound.selector, address(token), missingTokenId) + abi.encodeWithSelector(IRareERC1155Listings.TokenNotFound.selector, address(token), missingTokenId) ); - market.setTokenAllowListConfig(root, block.timestamp + 1 days, address(token), missingTokenId); + _setTokenAllowListConfig(missingTokenId, root, block.timestamp + 1 days); vm.expectRevert( - abi.encodeWithSelector(IRareERC1155Marketplace.TokenNotFound.selector, address(token), missingTokenId) + abi.encodeWithSelector(IRareERC1155Listings.TokenNotFound.selector, address(token), missingTokenId) ); - market.setTokenMintLimit(address(token), missingTokenId, 1); + _setTokenMintLimit(missingTokenId, 1); vm.expectRevert( - abi.encodeWithSelector(IRareERC1155Marketplace.TokenNotFound.selector, address(token), missingTokenId) + abi.encodeWithSelector(IRareERC1155Listings.TokenNotFound.selector, address(token), missingTokenId) ); - market.setTokenTxLimit(address(token), missingTokenId, 1); + _setTokenTxLimit(missingTokenId, 1); vm.stopPrank(); } @@ -538,41 +545,37 @@ contract RareERC1155MarketplaceTest is Test { _prepareDirectSale(address(0), price, block.timestamp, 0); vm.prank(seller); - market.setTokenTxLimit(address(token), tokenId, 1); + _setTokenTxLimit(tokenId, 1); _mockPrimaryPayout(price, seller); vm.prank(buyer); - market.mintDirectSale{value: price + ((price * 3) / 100)}( - address(token), tokenId, address(0), price, 1, emptyProof - ); + _mintDirectSale(tokenId, address(0), price, 1, emptyProof, price + ((price * 3) / 100)); vm.prank(buyer); vm.expectRevert( abi.encodeWithSelector( - IRareERC1155Marketplace.TransactionLimitExceeded.selector, address(token), tokenId, buyer, 1, 1 + IRareERC1155Listings.TransactionLimitExceeded.selector, address(token), tokenId, buyer, 1, 1 ) ); - market.mintDirectSale{value: price + ((price * 3) / 100)}( - address(token), tokenId, address(0), price, 1, emptyProof - ); + _mintDirectSale(tokenId, address(0), price, 1, emptyProof, price + ((price * 3) / 100)); } function testMintDirectSaleLimitsOnlyCountWhileEnabled() public { _prepareDirectSale(address(0), 0, block.timestamp, 0); vm.prank(buyer); - market.mintDirectSale(address(token), tokenId, address(0), 0, 2, emptyProof); + _mintDirectSale(tokenId, address(0), 0, 2, emptyProof, 0); assertEq(market.getTokenMintsPerAddress(address(token), tokenId, buyer), 0); assertEq(market.getTokenTxsPerAddress(address(token), tokenId, buyer), 0); vm.startPrank(seller); - market.setTokenMintLimit(address(token), tokenId, 1); - market.setTokenTxLimit(address(token), tokenId, 1); + _setTokenMintLimit(tokenId, 1); + _setTokenTxLimit(tokenId, 1); vm.stopPrank(); vm.prank(buyer); - market.mintDirectSale(address(token), tokenId, address(0), 0, 1, emptyProof); + _mintDirectSale(tokenId, address(0), 0, 1, emptyProof, 0); assertEq(market.getTokenMintsPerAddress(address(token), tokenId, buyer), 1); assertEq(market.getTokenTxsPerAddress(address(token), tokenId, buyer), 1); @@ -580,37 +583,37 @@ contract RareERC1155MarketplaceTest is Test { vm.prank(buyer); vm.expectRevert( abi.encodeWithSelector( - IRareERC1155Marketplace.MintLimitExceeded.selector, address(token), tokenId, buyer, 1, 1, 1 + IRareERC1155Listings.MintLimitExceeded.selector, address(token), tokenId, buyer, 1, 1, 1 ) ); - market.mintDirectSale(address(token), tokenId, address(0), 0, 1, emptyProof); + _mintDirectSale(tokenId, address(0), 0, 1, emptyProof, 0); } function testMintDirectSaleLimitsAreTokenScoped() public { uint256 otherTokenId; vm.prank(seller); - otherTokenId = token.createToken("ipfs://token/2.json", 20, royaltyReceiver); + otherTokenId = token.createToken("ipfs://token/2.json", 20); _prepareDirectSale(address(0), 0, block.timestamp, 0); _prepareDirectSaleForToken(otherTokenId, address(0), 0, block.timestamp, 0); vm.prank(seller); - market.setTokenMintLimit(address(token), tokenId, 1); + _setTokenMintLimit(tokenId, 1); vm.prank(buyer); - market.mintDirectSale(address(token), tokenId, address(0), 0, 1, emptyProof); + _mintDirectSale(tokenId, address(0), 0, 1, emptyProof, 0); vm.prank(buyer); vm.expectRevert( abi.encodeWithSelector( - IRareERC1155Marketplace.MintLimitExceeded.selector, address(token), tokenId, buyer, 1, 1, 1 + IRareERC1155Listings.MintLimitExceeded.selector, address(token), tokenId, buyer, 1, 1, 1 ) ); - market.mintDirectSale(address(token), tokenId, address(0), 0, 1, emptyProof); + _mintDirectSale(tokenId, address(0), 0, 1, emptyProof, 0); vm.prank(buyer); - market.mintDirectSale(address(token), otherTokenId, address(0), 0, 2, emptyProof); + _mintDirectSale(otherTokenId, address(0), 0, 2, emptyProof, 0); assertEq(token.balanceOf(buyer, tokenId), 1); assertEq(token.balanceOf(buyer, otherTokenId), 2); @@ -624,22 +627,161 @@ contract RareERC1155MarketplaceTest is Test { _prepareDirectSale(address(currency), price, block.timestamp + 1 hours, 0); vm.prank(buyer); - vm.expectRevert( - abi.encodeWithSelector(IRareERC1155Marketplace.SaleNotStarted.selector, block.timestamp + 1 hours) - ); - market.mintDirectSale(address(token), tokenId, address(currency), price, 1, emptyProof); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.SaleNotStarted.selector, block.timestamp + 1 hours)); + _mintDirectSale(tokenId, address(currency), price, 1, emptyProof, 0); skip(1 hours); vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.PriceMismatch.selector, price + 1, price)); - market.mintDirectSale(address(token), tokenId, address(currency), price + 1, 1, emptyProof); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.PriceMismatch.selector, price + 1, price)); + _mintDirectSale(tokenId, address(currency), price + 1, 1, emptyProof, 0); vm.prank(buyer); vm.expectRevert( - abi.encodeWithSelector(IRareERC1155Marketplace.CurrencyMismatch.selector, address(0), address(currency)) + abi.encodeWithSelector(IRareERC1155Listings.CurrencyMismatch.selector, address(0), address(currency)) ); - market.mintDirectSale(address(token), tokenId, address(0), price, 1, emptyProof); + _mintDirectSale(tokenId, address(0), price, 1, emptyProof, 0); + } + + function testMintDirectSaleBatchRejectsBadBatchShape() public { + IRareERC1155Listings.MintRequest[] memory emptyRequests = new IRareERC1155Listings.MintRequest[](0); + + vm.prank(buyer); + vm.expectRevert(IRareERC1155Listings.EmptyBatch.selector); + market.mintDirectSaleBatch(address(token), address(0), emptyRequests); + + bytes32[] memory proof = new bytes32[](0); + IRareERC1155Listings.MintRequest[] memory requests = new IRareERC1155Listings.MintRequest[](2); + requests[0] = IRareERC1155Listings.MintRequest(1, 0, 1, proof); + requests[1] = IRareERC1155Listings.MintRequest(1, 0, 1, proof); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.TokenIdsNotStrictlyAscending.selector, 1, 1, 1)); + market.mintDirectSaleBatch(address(token), address(0), requests); + + requests[0] = IRareERC1155Listings.MintRequest(2, 0, 1, proof); + requests[1] = IRareERC1155Listings.MintRequest(1, 0, 1, proof); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.TokenIdsNotStrictlyAscending.selector, 1, 2, 1)); + market.mintDirectSaleBatch(address(token), address(0), requests); + } + + function testMintDirectSaleBatchRejectsOversizedBatch() public { + bytes32[] memory proof = new bytes32[](0); + IRareERC1155Listings.MintRequest[] memory requests = new IRareERC1155Listings.MintRequest[](101); + + for (uint256 i = 0; i < requests.length; i++) { + requests[i] = IRareERC1155Listings.MintRequest(i + 1, 0, 1, proof); + } + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.BatchSizeExceeded.selector, 101, 100)); + market.mintDirectSaleBatch(address(token), address(0), requests); + } + + function testMintDirectSaleBatchRejectsZeroQuantity() public { + _prepareDirectSale(address(0), 0, block.timestamp, 0); + + vm.prank(buyer); + vm.expectRevert(IRareERC1155Listings.QuantityCannotBeZero.selector); + _mintDirectSale(tokenId, address(0), 0, 0, emptyProof, 0); + } + + function testMintDirectSaleBatchAggregatesFreeAndPaidETHPayment() public { + uint256 paidTokenId; + uint256 price = 1 ether; + + vm.prank(seller); + paidTokenId = token.createToken("ipfs://token/2.json", 20); + + _prepareDirectSale(address(0), 0, block.timestamp, 0); + _prepareDirectSaleForToken(paidTokenId, address(0), price, block.timestamp, 0); + _mockPrimaryPayout(price, seller); + + IRareERC1155Listings.MintRequest[] memory requests = new IRareERC1155Listings.MintRequest[](2); + bytes32[] memory proof = new bytes32[](0); + requests[0] = IRareERC1155Listings.MintRequest(tokenId, 0, 2, proof); + requests[1] = IRareERC1155Listings.MintRequest(paidTokenId, price, 1, proof); + + vm.prank(buyer); + market.mintDirectSaleBatch{value: price + ((price * 3) / 100)}(address(token), address(0), requests); + + assertEq(token.balanceOf(buyer, tokenId), 2); + assertEq(token.balanceOf(buyer, paidTokenId), 1); + } + + function testMintDirectSaleBatchRejectsValueForAllFreeBatch() public { + _prepareDirectSale(address(0), 0, block.timestamp, 0); + + vm.prank(buyer); + vm.expectRevert(IRareERC1155Listings.MsgValueMustBeZero.selector); + _mintDirectSale(tokenId, address(0), 0, 1, emptyProof, 1); + } + + function testMintDirectSaleBatchRejectsMsgValueForERC20Batch() public { + uint256 price = 1 ether; + _mockApprovedCurrency(true); + _prepareDirectSale(address(currency), price, block.timestamp, 0); + _mockMarketplaceFee(price, seller); + + vm.prank(buyer); + vm.expectRevert(IRareERC1155Listings.MsgValueUnsupportedForERC20.selector); + _mintDirectSale(tokenId, address(currency), price, 1, emptyProof, 1); + } + + function testMintDirectSaleBatchCalculatesFeesPerItem() public { + uint256 otherTokenId; + uint256 price = 33; + + vm.prank(seller); + otherTokenId = token.createToken("ipfs://token/2.json", 20); + + _prepareDirectSale(address(0), price, block.timestamp, 0); + _prepareDirectSaleForToken(otherTokenId, address(0), price, block.timestamp, 0); + _mockPrimaryPayout(price, seller); + + IRareERC1155Listings.MintRequest[] memory requests = new IRareERC1155Listings.MintRequest[](2); + bytes32[] memory proof = new bytes32[](0); + requests[0] = IRareERC1155Listings.MintRequest(tokenId, price, 1, proof); + requests[1] = IRareERC1155Listings.MintRequest(otherTokenId, price, 1, proof); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.IncorrectETHAmount.selector, 66, 67)); + market.mintDirectSaleBatch{value: 67}(address(token), address(0), requests); + + vm.prank(buyer); + market.mintDirectSaleBatch{value: 66}(address(token), address(0), requests); + + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(buyer, otherTokenId), 1); + assertEq(address(market).balance, 0); + } + + function testMintDirectSaleBatchCountsOneTxPerTokenId() public { + uint256 otherTokenId; + + vm.prank(seller); + otherTokenId = token.createToken("ipfs://token/2.json", 20); + + _prepareDirectSale(address(0), 0, block.timestamp, 0); + _prepareDirectSaleForToken(otherTokenId, address(0), 0, block.timestamp, 0); + + vm.startPrank(seller); + _setTokenTxLimit(tokenId, 1); + _setTokenTxLimit(otherTokenId, 1); + vm.stopPrank(); + + IRareERC1155Listings.MintRequest[] memory requests = new IRareERC1155Listings.MintRequest[](2); + bytes32[] memory proof = new bytes32[](0); + requests[0] = IRareERC1155Listings.MintRequest(tokenId, 0, 1, proof); + requests[1] = IRareERC1155Listings.MintRequest(otherTokenId, 0, 2, proof); + + vm.prank(buyer); + market.mintDirectSaleBatch(address(token), address(0), requests); + + assertEq(market.getTokenTxsPerAddress(address(token), tokenId, buyer), 1); + assertEq(market.getTokenTxsPerAddress(address(token), otherTokenId, buyer), 1); } function testSetSalePriceAndBuyPartialERC20() public { @@ -660,7 +802,7 @@ contract RareERC1155MarketplaceTest is Test { uint256 rewardBalanceBefore = currency.balanceOf(rewardAccumulator); vm.prank(buyer); - market.buy(address(token), tokenId, seller, address(currency), price, quantity); + _buy(address(token), tokenId, seller, address(currency), price, quantity, 0); assertEq(token.balanceOf(buyer, tokenId), quantity); assertEq(currency.balanceOf(seller) - sellerBalanceBefore, (totalPrice * 90) / 100); @@ -668,8 +810,122 @@ contract RareERC1155MarketplaceTest is Test { assertEq(currency.balanceOf(networkBeneficiary) - networkBalanceBefore, (totalPrice * 2) / 100); assertEq(currency.balanceOf(rewardAccumulator) - rewardBalanceBefore, (totalPrice * 1) / 100); - IRareERC1155Marketplace.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); + IRareERC1155Listings.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); + assertEq(salePrice.quantity, 2); + } + + function testNoExpirySalePriceRemainsBuyableAfterTimePasses() public { + uint256 price = 1 ether; + + _mintToSellerAndList(address(0), price, 1); + vm.warp(block.timestamp + 30 days); + _mockSecondaryPayout(price, seller); + + vm.prank(buyer); + _buy(address(token), tokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); + + assertEq(token.balanceOf(buyer, tokenId), 1); + } + + function testSetSalePriceStoresAndEmitsExpiration() public { + uint256 price = 1 ether; + uint256 quantity = 2; + uint256 expirationTime = block.timestamp + 1 days; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(quantity)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + address payable[] memory splitRecipients = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRecipients[0] = payable(seller); + splitRatios[0] = 100; + + vm.prank(seller); + vm.expectEmit(true, true, true, true, address(market)); + emit SalePriceSet( + seller, address(token), tokenId, address(0), price, quantity, expirationTime, splitRecipients, splitRatios + ); + market.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, quantity, expirationTime), + splitRecipients, + splitRatios + ); + + IRareERC1155Listings.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); + assertEq(salePrice.expirationTime, expirationTime); + } + + function testBuyBeforeExpirationPreservesExpirationOnPartialFill() public { + uint256 price = 1 ether; + uint256 expirationTime = block.timestamp + 1 days; + + _mintToSellerAndListWithExpiration(address(0), price, 3, expirationTime); + _mockSecondaryPayout(price, seller); + + vm.prank(buyer); + _buy(address(token), tokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); + + IRareERC1155Listings.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); + assertEq(salePrice.quantity, 2); + assertEq(salePrice.expirationTime, expirationTime); + } + + function testBuyAtExpirationRevertsAndLeavesListingReadable() public { + uint256 price = 1 ether; + uint256 expirationTime = block.timestamp + 1 days; + + _mintToSellerAndListWithExpiration(address(0), price, 2, expirationTime); + vm.warp(expirationTime); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector( + IRareERC1155Listings.SalePriceExpired.selector, address(token), tokenId, seller, expirationTime + ) + ); + _buy(address(token), tokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); + + IRareERC1155Listings.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); assertEq(salePrice.quantity, 2); + assertEq(salePrice.expirationTime, expirationTime); + } + + function testSetSalePriceRevertsForCurrentOrPastExpiration() public { + uint256 price = 1 ether; + vm.warp(100); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + address payable[] memory splitRecipients = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRecipients[0] = payable(seller); + splitRatios[0] = 100; + + vm.prank(seller); + vm.expectRevert( + abi.encodeWithSelector( + IRareERC1155Listings.SalePriceExpirationInvalid.selector, block.timestamp, block.timestamp + ) + ); + _setSalePriceWithExpiration( + address(token), tokenId, address(0), price, 1, block.timestamp, splitRecipients, splitRatios + ); + + vm.prank(seller); + vm.expectRevert( + abi.encodeWithSelector( + IRareERC1155Listings.SalePriceExpirationInvalid.selector, block.timestamp - 1, block.timestamp + ) + ); + _setSalePriceWithExpiration( + address(token), tokenId, address(0), price, 1, block.timestamp - 1, splitRecipients, splitRatios + ); } function testBuyRevertsForRoyaltyPayoutLengthMismatch() public { @@ -691,8 +947,8 @@ contract RareERC1155MarketplaceTest is Test { ); vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.PayoutLengthMismatch.selector, 1, 2)); - market.buy{value: price + ((price * 3) / 100)}(address(token), tokenId, seller, address(0), price, 1); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.PayoutLengthMismatch.selector, 1, 2)); + _buy(address(token), tokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); assertEq(token.balanceOf(buyer, tokenId), 0); assertEq(token.balanceOf(seller, tokenId), 1); @@ -703,17 +959,110 @@ contract RareERC1155MarketplaceTest is Test { uint256 price = 1 ether; uint256 quantity = 2; uint256 totalPrice = price * quantity; + uint256 expirationTime = block.timestamp + 1 days; - _mintToSellerAndList(address(0), price, quantity); + _mintToSellerAndListWithExpiration(address(0), price, quantity, expirationTime); _mockSecondaryPayout(totalPrice, seller); vm.prank(buyer); - market.buy{value: totalPrice + ((totalPrice * 3) / 100)}( - address(token), tokenId, seller, address(0), price, quantity - ); + _buy(address(token), tokenId, seller, address(0), price, quantity, totalPrice + ((totalPrice * 3) / 100)); - IRareERC1155Marketplace.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); + IRareERC1155Listings.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); assertEq(salePrice.quantity, 0); + assertEq(salePrice.expirationTime, 0); + } + + function testBuyBatchPartialAndFinalFillUpdatesListingsAndBalances() public { + uint256 otherTokenId; + uint256 price = 1 ether; + + vm.prank(seller); + otherTokenId = token.createToken("ipfs://token/2.json", 20); + + uint256[] memory tokenIds = new uint256[](2); + uint256[] memory mintAmounts = new uint256[](2); + tokenIds[0] = tokenId; + tokenIds[1] = otherTokenId; + mintAmounts[0] = 5; + mintAmounts[1] = 5; + + vm.prank(seller); + token.mintBatchTo(seller, tokenIds, mintAmounts); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + address payable[] memory splitRecipients = new address payable[](1); + uint8[] memory splitRatios = new uint8[](1); + splitRecipients[0] = payable(seller); + splitRatios[0] = 100; + + IRareERC1155Listings.SalePriceRequest[] memory saleRequests = new IRareERC1155Listings.SalePriceRequest[](2); + saleRequests[0] = IRareERC1155Listings.SalePriceRequest(tokenId, price, 5, 0); + saleRequests[1] = IRareERC1155Listings.SalePriceRequest(otherTokenId, price, 5, 0); + + vm.prank(seller); + market.setSalePrices(address(token), address(0), saleRequests, splitRecipients, splitRatios); + + IRareERC1155Listings.BuyRequest[] memory buyRequests = new IRareERC1155Listings.BuyRequest[](2); + buyRequests[0] = IRareERC1155Listings.BuyRequest(tokenId, price, 2); + buyRequests[1] = IRareERC1155Listings.BuyRequest(otherTokenId, price, 3); + + _mockSecondaryPayoutFor(address(token), tokenId, 2 ether, seller); + _mockSecondaryPayoutFor(address(token), otherTokenId, 3 ether, seller); + + vm.prank(buyer); + market.buyBatch{value: 5 ether + ((2 ether * 3) / 100) + ((3 ether * 3) / 100)}( + address(token), seller, address(0), buyRequests + ); + + assertEq(token.balanceOf(seller, tokenId), 3); + assertEq(token.balanceOf(seller, otherTokenId), 2); + assertEq(token.balanceOf(buyer, tokenId), 2); + assertEq(token.balanceOf(buyer, otherTokenId), 3); + assertEq(market.getSalePrice(address(token), tokenId, seller).quantity, 3); + assertEq(market.getSalePrice(address(token), otherTokenId, seller).quantity, 2); + + buyRequests[0] = IRareERC1155Listings.BuyRequest(tokenId, price, 3); + buyRequests[1] = IRareERC1155Listings.BuyRequest(otherTokenId, price, 2); + + _mockSecondaryPayoutFor(address(token), tokenId, 3 ether, seller); + _mockSecondaryPayoutFor(address(token), otherTokenId, 2 ether, seller); + + vm.prank(buyer); + market.buyBatch{value: 5 ether + ((3 ether * 3) / 100) + ((2 ether * 3) / 100)}( + address(token), seller, address(0), buyRequests + ); + + assertEq(token.balanceOf(seller, tokenId), 0); + assertEq(token.balanceOf(seller, otherTokenId), 0); + assertEq(token.balanceOf(buyer, tokenId), 5); + assertEq(token.balanceOf(buyer, otherTokenId), 5); + assertEq(market.getSalePrice(address(token), tokenId, seller).quantity, 0); + assertEq(market.getSalePrice(address(token), otherTokenId, seller).quantity, 0); + } + + function testBuyBatchRejectsBadBatchShape() public { + IRareERC1155Listings.BuyRequest[] memory emptyRequests = new IRareERC1155Listings.BuyRequest[](0); + + vm.prank(buyer); + vm.expectRevert(IRareERC1155Listings.EmptyBatch.selector); + market.buyBatch(address(token), seller, address(0), emptyRequests); + + IRareERC1155Listings.BuyRequest[] memory requests = new IRareERC1155Listings.BuyRequest[](2); + requests[0] = IRareERC1155Listings.BuyRequest(1, 1 ether, 1); + requests[1] = IRareERC1155Listings.BuyRequest(1, 1 ether, 1); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.TokenIdsNotStrictlyAscending.selector, 1, 1, 1)); + market.buyBatch(address(token), seller, address(0), requests); + + requests[0] = IRareERC1155Listings.BuyRequest(2, 1 ether, 1); + requests[1] = IRareERC1155Listings.BuyRequest(1, 1 ether, 1); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.TokenIdsNotStrictlyAscending.selector, 1, 2, 1)); + market.buyBatch(address(token), seller, address(0), requests); } function testSetSalePriceAndBuyArbitraryERC1155() public { @@ -734,13 +1083,13 @@ contract RareERC1155MarketplaceTest is Test { splitRatios[0] = 100; vm.prank(seller); - market.setSalePrice(address(openToken), openTokenId, address(0), price, quantity, splitRecipients, splitRatios); + _setSalePrice(address(openToken), openTokenId, address(0), price, quantity, splitRecipients, splitRatios); _mockSecondaryPayoutFor(address(openToken), openTokenId, totalPrice, seller); vm.prank(buyer); - market.buy{value: totalPrice + ((totalPrice * 3) / 100)}( - address(openToken), openTokenId, seller, address(0), price, quantity + _buy( + address(openToken), openTokenId, seller, address(0), price, quantity, totalPrice + ((totalPrice * 3) / 100) ); assertEq(openToken.balanceOf(seller, openTokenId), 0); @@ -757,9 +1106,9 @@ contract RareERC1155MarketplaceTest is Test { vm.prank(buyer); vm.expectRevert( - abi.encodeWithSelector(IRareERC1155Marketplace.MarketplaceNotApproved.selector, seller, address(token)) + abi.encodeWithSelector(IRareERC1155Listings.MarketplaceNotApproved.selector, seller, address(token)) ); - market.buy{value: price + ((price * 3) / 100)}(address(token), tokenId, seller, address(0), price, 1); + _buy(address(token), tokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); vm.prank(seller); token.setApprovalForAll(address(erc1155ApprovalManager), true); @@ -770,10 +1119,10 @@ contract RareERC1155MarketplaceTest is Test { vm.prank(buyer); vm.expectRevert( abi.encodeWithSelector( - IRareERC1155Marketplace.InsufficientTokenBalance.selector, seller, address(token), tokenId, 1, 0 + IRareERC1155Listings.InsufficientTokenBalance.selector, seller, address(token), tokenId, 1, 0 ) ); - market.buy{value: price + ((price * 3) / 100)}(address(token), tokenId, seller, address(0), price, 1); + _buy(address(token), tokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); } function testSetSalePriceRevertsForNonERC1155Contract() public { @@ -792,11 +1141,9 @@ contract RareERC1155MarketplaceTest is Test { vm.prank(seller); vm.expectRevert( - abi.encodeWithSelector(IRareERC1155Marketplace.InvalidERC1155Contract.selector, address(nonERC1155)) - ); - market.setSalePrice( - address(nonERC1155), unsupportedTokenId, address(0), 1 ether, 1, splitRecipients, splitRatios + abi.encodeWithSelector(IRareERC1155Listings.InvalidERC1155Contract.selector, address(nonERC1155)) ); + _setSalePrice(address(nonERC1155), unsupportedTokenId, address(0), 1 ether, 1, splitRecipients, splitRatios); } function testSetSalePriceRevertsForZeroSplitRecipient() public { @@ -808,8 +1155,8 @@ contract RareERC1155MarketplaceTest is Test { splitRatios[1] = 50; vm.prank(seller); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.SplitRecipientCannotBeZero.selector, 1)); - market.setSalePrice(address(token), tokenId, address(0), 1 ether, 1, splitRecipients, splitRatios); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.SplitRecipientCannotBeZero.selector, 1)); + _setSalePrice(address(token), tokenId, address(0), 1 ether, 1, splitRecipients, splitRatios); } function testSetSalePriceRevertsForZeroSplitRatio() public { @@ -821,8 +1168,8 @@ contract RareERC1155MarketplaceTest is Test { splitRatios[1] = 0; vm.prank(seller); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.SplitRatioCannotBeZero.selector, 1)); - market.setSalePrice(address(token), tokenId, address(0), 1 ether, 1, splitRecipients, splitRatios); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.SplitRatioCannotBeZero.selector, 1)); + _setSalePrice(address(token), tokenId, address(0), 1 ether, 1, splitRecipients, splitRatios); } function testBuyRevertsWhenERC1155TransferDoesNotMoveBalances() public { @@ -841,14 +1188,14 @@ contract RareERC1155MarketplaceTest is Test { splitRatios[0] = 100; vm.prank(seller); - market.setSalePrice(address(brokenToken), brokenTokenId, address(0), price, 1, splitRecipients, splitRatios); + _setSalePrice(address(brokenToken), brokenTokenId, address(0), price, 1, splitRecipients, splitRatios); _mockMarketplaceFee(price, seller); vm.prank(buyer); vm.expectRevert( abi.encodeWithSelector( - IRareERC1155Marketplace.InvalidERC1155Transfer.selector, + IRareERC1155Listings.InvalidERC1155Transfer.selector, address(brokenToken), brokenTokenId, seller, @@ -856,9 +1203,7 @@ contract RareERC1155MarketplaceTest is Test { 1 ) ); - market.buy{value: price + ((price * 3) / 100)}( - address(brokenToken), brokenTokenId, seller, address(0), price, 1 - ); + _buy(address(brokenToken), brokenTokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); assertEq(brokenToken.balanceOf(seller, brokenTokenId), 1); assertEq(brokenToken.balanceOf(buyer, brokenTokenId), 0); @@ -870,17 +1215,17 @@ contract RareERC1155MarketplaceTest is Test { _mintToSellerAndList(address(0), price, 1); vm.prank(seller); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Marketplace.SelfPurchaseUnsupported.selector, seller)); - market.buy{value: price + ((price * 3) / 100)}(address(token), tokenId, seller, address(0), price, 1); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.SelfPurchaseUnsupported.selector, seller)); + _buy(address(token), tokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); } function testCancelSalePrice() public { _mintToSellerAndList(address(0), 1 ether, 2); vm.prank(seller); - market.cancelSalePrice(address(token), tokenId); + market.cancelSalePrices(address(token), _singleTokenIds(tokenId)); - IRareERC1155Marketplace.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); + IRareERC1155Listings.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); assertEq(salePrice.quantity, 0); } @@ -891,9 +1236,9 @@ contract RareERC1155MarketplaceTest is Test { market.setContractPaused(true); vm.prank(seller); - market.cancelSalePrice(address(token), tokenId); + market.cancelSalePrices(address(token), _singleTokenIds(tokenId)); - IRareERC1155Marketplace.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); + IRareERC1155Listings.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); assertEq(salePrice.quantity, 0); } @@ -928,8 +1273,8 @@ contract RareERC1155MarketplaceTest is Test { market.setContractPaused(true); vm.prank(seller); - vm.expectRevert(IRareERC1155Marketplace.ContractPaused.selector); - market.setSalePrice(address(token), tokenId, address(0), 1 ether, 1, splitRecipients, splitRatios); + vm.expectRevert(IRareERC1155Listings.ContractPaused.selector); + _setSalePrice(address(token), tokenId, address(0), 1 ether, 1, splitRecipients, splitRatios); } function testBuyRevertsWhilePaused() public { @@ -940,8 +1285,8 @@ contract RareERC1155MarketplaceTest is Test { market.setContractPaused(true); vm.prank(buyer); - vm.expectRevert(IRareERC1155Marketplace.ContractPaused.selector); - market.buy{value: price + ((price * 3) / 100)}(address(token), tokenId, seller, address(0), price, 1); + vm.expectRevert(IRareERC1155Listings.ContractPaused.selector); + _buy(address(token), tokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); } function _expectDependencyUpdate(bytes32 _field, address _dependency, function(address) external _setter) private { @@ -1068,14 +1413,27 @@ contract RareERC1155MarketplaceTest is Test { uint8[] memory _splitRatios ) internal { vm.prank(seller); - market.prepareMintDirectSale( - address(token), _tokenId, _currencyAddress, _price, _startTime, _maxMints, _splitRecipients, _splitRatios + market.prepareMintDirectSales( + address(token), + _currencyAddress, + _singleDirectSaleRequest(_tokenId, _price, _startTime, _maxMints), + _splitRecipients, + _splitRatios ); } function _mintToSellerAndList(address _currencyAddress, uint256 _price, uint256 _quantity) internal { + _mintToSellerAndListWithExpiration(_currencyAddress, _price, _quantity, 0); + } + + function _mintToSellerAndListWithExpiration( + address _currencyAddress, + uint256 _price, + uint256 _quantity, + uint256 _expirationTime + ) internal { vm.prank(seller); - token.mintTo(seller, tokenId, _quantity); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(_quantity)); vm.prank(seller); token.setApprovalForAll(address(erc1155ApprovalManager), true); @@ -1090,7 +1448,166 @@ contract RareERC1155MarketplaceTest is Test { splitRatios[0] = 100; vm.prank(seller); - market.setSalePrice(address(token), tokenId, _currencyAddress, _price, _quantity, splitRecipients, splitRatios); + market.setSalePrices( + address(token), + _currencyAddress, + _singleSalePriceRequest(tokenId, _price, _quantity, _expirationTime), + splitRecipients, + splitRatios + ); + } + + function _mintDirectSale( + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + bytes32[] memory _proof, + uint256 _value + ) internal { + market.mintDirectSaleBatch{value: _value}( + address(token), _currencyAddress, _singleMintRequest(_tokenId, _price, _quantity, _proof) + ); + } + + function _setTokenAllowListConfig(uint256 _tokenId, bytes32 _root, uint256 _endTimestamp) internal { + market.setTokenAllowListConfigs(address(token), _singleAllowListConfigRequest(_tokenId, _root, _endTimestamp)); + } + + function _setTokenMintLimit(uint256 _tokenId, uint256 _limit) internal { + market.setTokenMintLimits(address(token), _singleTokenLimitRequest(_tokenId, _limit)); + } + + function _setTokenTxLimit(uint256 _tokenId, uint256 _limit) internal { + market.setTokenTxLimits(address(token), _singleTokenLimitRequest(_tokenId, _limit)); + } + + function _setSalePrice( + address _contractAddress, + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + address payable[] memory _splitRecipients, + uint8[] memory _splitRatios + ) internal { + _setSalePriceWithExpiration( + _contractAddress, _tokenId, _currencyAddress, _price, _quantity, 0, _splitRecipients, _splitRatios + ); + } + + function _setSalePriceWithExpiration( + address _contractAddress, + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + uint256 _expirationTime, + address payable[] memory _splitRecipients, + uint8[] memory _splitRatios + ) internal { + market.setSalePrices( + _contractAddress, + _currencyAddress, + _singleSalePriceRequest(_tokenId, _price, _quantity, _expirationTime), + _splitRecipients, + _splitRatios + ); + } + + function _buy( + address _contractAddress, + uint256 _tokenId, + address _seller, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + uint256 _value + ) internal { + market.buyBatch{value: _value}( + _contractAddress, _seller, _currencyAddress, _singleBuyRequest(_tokenId, _price, _quantity) + ); + } + + function _singleDirectSaleRequest(uint256 _tokenId, uint256 _price, uint256 _startTime, uint256 _maxMints) + internal + pure + returns (IRareERC1155Listings.DirectSaleRequest[] memory) + { + IRareERC1155Listings.DirectSaleRequest[] memory requests = new IRareERC1155Listings.DirectSaleRequest[](1); + requests[0] = IRareERC1155Listings.DirectSaleRequest(_tokenId, _price, _startTime, _maxMints); + return requests; + } + + function _singleMintRequest(uint256 _tokenId, uint256 _price, uint256 _quantity, bytes32[] memory _proof) + internal + pure + returns (IRareERC1155Listings.MintRequest[] memory) + { + IRareERC1155Listings.MintRequest[] memory requests = new IRareERC1155Listings.MintRequest[](1); + requests[0] = IRareERC1155Listings.MintRequest(_tokenId, _price, _quantity, _proof); + return requests; + } + + function _singleAllowListConfigRequest(uint256 _tokenId, bytes32 _root, uint256 _endTimestamp) + internal + pure + returns (IRareERC1155Listings.AllowListConfigRequest[] memory) + { + IRareERC1155Listings.AllowListConfigRequest[] memory requests = + new IRareERC1155Listings.AllowListConfigRequest[](1); + requests[0] = IRareERC1155Listings.AllowListConfigRequest(_tokenId, _root, _endTimestamp); + return requests; + } + + function _singleTokenLimitRequest(uint256 _tokenId, uint256 _limit) + internal + pure + returns (IRareERC1155Listings.TokenLimitRequest[] memory) + { + IRareERC1155Listings.TokenLimitRequest[] memory requests = new IRareERC1155Listings.TokenLimitRequest[](1); + requests[0] = IRareERC1155Listings.TokenLimitRequest(_tokenId, _limit); + return requests; + } + + function _singleSalePriceRequest(uint256 _tokenId, uint256 _price, uint256 _quantity) + internal + pure + returns (IRareERC1155Listings.SalePriceRequest[] memory) + { + return _singleSalePriceRequest(_tokenId, _price, _quantity, 0); + } + + function _singleSalePriceRequest(uint256 _tokenId, uint256 _price, uint256 _quantity, uint256 _expirationTime) + internal + pure + returns (IRareERC1155Listings.SalePriceRequest[] memory) + { + IRareERC1155Listings.SalePriceRequest[] memory requests = new IRareERC1155Listings.SalePriceRequest[](1); + requests[0] = IRareERC1155Listings.SalePriceRequest(_tokenId, _price, _quantity, _expirationTime); + return requests; + } + + function _singleBuyRequest(uint256 _tokenId, uint256 _price, uint256 _quantity) + internal + pure + returns (IRareERC1155Listings.BuyRequest[] memory) + { + IRareERC1155Listings.BuyRequest[] memory requests = new IRareERC1155Listings.BuyRequest[](1); + requests[0] = IRareERC1155Listings.BuyRequest(_tokenId, _price, _quantity); + return requests; + } + + function _singleTokenIds(uint256 _tokenId) internal pure returns (uint256[] memory) { + uint256[] memory tokenIds = new uint256[](1); + tokenIds[0] = _tokenId; + return tokenIds; + } + + function _singleAmounts(uint256 _amount) internal pure returns (uint256[] memory) { + uint256[] memory amounts = new uint256[](1); + amounts[0] = _amount; + return amounts; } function _mockApprovedCurrency(bool _approved) internal { diff --git a/src/test/token/ERC1155/RareERC1155.t.sol b/src/test/token/ERC1155/RareERC1155.t.sol index 4f502e0..17861d3 100644 --- a/src/test/token/ERC1155/RareERC1155.t.sol +++ b/src/test/token/ERC1155/RareERC1155.t.sol @@ -7,7 +7,7 @@ import {IRareERC1155} from "../../../token/ERC1155/IRareERC1155.sol"; import {RareERC1155} from "../../../token/ERC1155/RareERC1155.sol"; import {RareERC1155ContractFactory} from "../../../token/ERC1155/RareERC1155ContractFactory.sol"; import {ITokenCreator} from "../../../token/extensions/ITokenCreator.sol"; -import {IERC2981} from "../../../token/extensions/IERC2981.sol"; +import {IERC2981Upgradeable} from "openzeppelin-contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; contract RareERC1155Test is Test { RareERC1155 private token; @@ -18,8 +18,6 @@ contract RareERC1155Test is Test { address private collector = address(0x3333); address private royaltyReceiver = address(0x4444); - event MetadataUpdate(uint256 _tokenId); - function setUp() public { factory = new RareERC1155ContractFactory(); factory.setDefaultMinter(minter); @@ -35,6 +33,10 @@ contract RareERC1155Test is Test { implementation.init("Rare Editions", "RARE1155", "ipfs://base/{id}.json", owner, minter); } + function testMaxBatchSize() public { + assertEq(token.MAX_BATCH_SIZE(), 100); + } + function testFactoryCreatesInitializedClone() public { factory = new RareERC1155ContractFactory(); factory.setDefaultMinter(minter); @@ -51,7 +53,7 @@ contract RareERC1155Test is Test { function testCreateTokenMintAndRoyalty() public { vm.prank(owner); - uint256 tokenId = token.createToken("ipfs://token/1.json", 10, royaltyReceiver); + uint256 tokenId = token.createToken("ipfs://token/1.json", 10); assertEq(tokenId, 1); assertEq(token.uri(tokenId), "ipfs://token/1.json"); @@ -59,32 +61,48 @@ contract RareERC1155Test is Test { assertEq(token.tokenCreator(tokenId), owner); assertTrue(token.supportsInterface(type(IRareERC1155).interfaceId)); assertTrue(token.supportsInterface(type(ITokenCreator).interfaceId)); - assertTrue(token.supportsInterface(type(IERC2981).interfaceId)); - assertTrue(token.supportsInterface(0x49064906)); + assertTrue(token.supportsInterface(type(IERC2981Upgradeable).interfaceId)); vm.prank(minter); - token.mintTo(collector, tokenId, 4); + _mintBatchTo(collector, tokenId, 4); assertEq(token.balanceOf(collector, tokenId), 4); assertEq(token.totalSupply(tokenId), 4); assertEq(token.totalMintedForToken(tokenId), 4); (address receiver, uint256 royaltyAmount) = token.royaltyInfo(tokenId, 1 ether); - assertEq(receiver, royaltyReceiver); + assertEq(receiver, owner); assertEq(royaltyAmount, 0.1 ether); } - function testUpdateTokenURIEmitsMetadataUpdate() public { + function testOwnerCanUpdateDefaultRoyaltyReceiverAndPercentage() public { vm.prank(owner); uint256 tokenId = token.createToken("ipfs://token/1.json", 10); - vm.expectEmit(false, false, false, true, address(token)); - emit MetadataUpdate(tokenId); + vm.prank(owner); + token.setDefaultRoyaltyReceiver(royaltyReceiver); + + (address receiverAfterReceiverUpdate, uint256 amountAfterReceiverUpdate) = token.royaltyInfo(tokenId, 1 ether); + assertEq(receiverAfterReceiverUpdate, royaltyReceiver); + assertEq(amountAfterReceiverUpdate, 0.1 ether); vm.prank(owner); - token.updateTokenURI(tokenId, "ipfs://token/updated.json"); + token.setDefaultRoyaltyPercentage(15); + + (address receiverAfterPercentageUpdate, uint256 amountAfterPercentageUpdate) = + token.royaltyInfo(tokenId, 1 ether); + assertEq(receiverAfterPercentageUpdate, royaltyReceiver); + assertEq(amountAfterPercentageUpdate, 0.15 ether); + } - assertEq(token.uri(tokenId), "ipfs://token/updated.json"); + function testSetDefaultRoyaltyRejectsInvalidConfig() public { + vm.prank(owner); + vm.expectRevert(IRareERC1155.ZeroAddressUnsupported.selector); + token.setDefaultRoyaltyReceiver(address(0)); + + vm.prank(owner); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155.RoyaltyPercentageTooHigh.selector, 101, 100)); + token.setDefaultRoyaltyPercentage(101); } function testMaxSupplyEnforced() public { @@ -92,11 +110,11 @@ contract RareERC1155Test is Test { uint256 tokenId = token.createToken("ipfs://token/1.json", 2); vm.prank(minter); - token.mintTo(collector, tokenId, 2); + _mintBatchTo(collector, tokenId, 2); vm.prank(minter); vm.expectRevert(abi.encodeWithSelector(IRareERC1155.ExceededMaxSupply.selector, tokenId, 3, 2)); - token.mintTo(collector, tokenId, 1); + _mintBatchTo(collector, tokenId, 1); } function testBurnDoesNotResetMaxSupply() public { @@ -104,7 +122,7 @@ contract RareERC1155Test is Test { uint256 tokenId = token.createToken("ipfs://token/1.json", 2); vm.prank(minter); - token.mintTo(collector, tokenId, 2); + _mintBatchTo(collector, tokenId, 2); vm.prank(collector); token.burn(collector, tokenId, 1); @@ -115,7 +133,7 @@ contract RareERC1155Test is Test { vm.prank(minter); vm.expectRevert(abi.encodeWithSelector(IRareERC1155.ExceededMaxSupply.selector, tokenId, 3, 2)); - token.mintTo(collector, tokenId, 1); + _mintBatchTo(collector, tokenId, 1); } function testOnlyOwnerOrApprovedMinterCanMint() public { @@ -124,13 +142,13 @@ contract RareERC1155Test is Test { vm.prank(collector); vm.expectRevert(abi.encodeWithSelector(IRareERC1155.CallerCannotMint.selector, collector)); - token.mintTo(collector, tokenId, 1); + _mintBatchTo(collector, tokenId, 1); vm.prank(owner); token.setMinterApproval(collector, true); vm.prank(collector); - token.mintTo(collector, tokenId, 1); + _mintBatchTo(collector, tokenId, 1); assertEq(token.balanceOf(collector, tokenId), 1); } @@ -140,7 +158,7 @@ contract RareERC1155Test is Test { uint256 tokenId = token.createToken("ipfs://token/1.json", 5); vm.prank(minter); - token.mintTo(collector, tokenId, 3); + _mintBatchTo(collector, tokenId, 3); vm.prank(collector); token.burn(collector, tokenId, 1); @@ -153,12 +171,12 @@ contract RareERC1155Test is Test { vm.prank(minter); vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); - token.mintTo(collector, tokenId, 1); + _mintBatchTo(collector, tokenId, 1); } function testDisableFreezesOwnerManagedWrites() public { vm.prank(owner); - uint256 tokenId = token.createToken("ipfs://token/1.json", 5, royaltyReceiver); + uint256 tokenId = token.createToken("ipfs://token/1.json", 5); vm.prank(owner); token.disableContract(); @@ -169,14 +187,108 @@ contract RareERC1155Test is Test { vm.prank(owner); vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); - token.setDefaultRoyaltyReceiver(collector); + token.setDefaultRoyaltyReceiver(royaltyReceiver); vm.prank(owner); vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); - token.setRoyaltyReceiverForToken(collector, tokenId); + token.setDefaultRoyaltyPercentage(15); vm.prank(owner); vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); token.updateTokenURI(tokenId, "ipfs://token/updated.json"); } + + function testMintBatchToMultipleTokenIds() public { + vm.startPrank(owner); + uint256 tokenIdA = token.createToken("ipfs://token/1.json", 10); + uint256 tokenIdB = token.createToken("ipfs://token/2.json", 10); + vm.stopPrank(); + + uint256[] memory tokenIds = new uint256[](2); + uint256[] memory amounts = new uint256[](2); + tokenIds[0] = tokenIdA; + tokenIds[1] = tokenIdB; + amounts[0] = 2; + amounts[1] = 3; + + vm.prank(minter); + token.mintBatchTo(collector, tokenIds, amounts); + + assertEq(token.balanceOf(collector, tokenIdA), 2); + assertEq(token.balanceOf(collector, tokenIdB), 3); + assertEq(token.totalMintedForToken(tokenIdA), 2); + assertEq(token.totalMintedForToken(tokenIdB), 3); + } + + function testMintToWrapsBatchMinting() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 10); + + vm.prank(minter); + uint256 mintedTokenId = token.mintTo(collector, tokenId, 4); + + assertEq(mintedTokenId, tokenId); + assertEq(token.balanceOf(collector, tokenId), 4); + assertEq(token.totalMintedForToken(tokenId), 4); + } + + function testMintBatchToRejectsBadBatchShape() public { + uint256[] memory emptyIds = new uint256[](0); + uint256[] memory emptyAmounts = new uint256[](0); + + vm.prank(minter); + vm.expectRevert(IRareERC1155.EmptyBatch.selector); + token.mintBatchTo(collector, emptyIds, emptyAmounts); + + uint256[] memory tokenIds = new uint256[](1); + uint256[] memory amounts = new uint256[](2); + tokenIds[0] = 1; + amounts[0] = 1; + amounts[1] = 1; + + vm.prank(minter); + vm.expectRevert(IRareERC1155.BatchLengthMismatch.selector); + token.mintBatchTo(collector, tokenIds, amounts); + } + + function testMintBatchToRejectsUnsortedOrDuplicateTokenIds() public { + uint256[] memory tokenIds = new uint256[](2); + uint256[] memory amounts = new uint256[](2); + amounts[0] = 1; + amounts[1] = 1; + + tokenIds[0] = 1; + tokenIds[1] = 1; + vm.prank(minter); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155.TokenIdsNotStrictlyAscending.selector, 1)); + token.mintBatchTo(collector, tokenIds, amounts); + + tokenIds[0] = 2; + tokenIds[1] = 1; + vm.prank(minter); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155.TokenIdsNotStrictlyAscending.selector, 1)); + token.mintBatchTo(collector, tokenIds, amounts); + } + + function testMintBatchToRejectsOversizedBatch() public { + uint256[] memory tokenIds = new uint256[](101); + uint256[] memory amounts = new uint256[](101); + + for (uint256 i = 0; i < tokenIds.length; i++) { + tokenIds[i] = i + 1; + amounts[i] = 1; + } + + vm.prank(minter); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155.BatchSizeExceeded.selector, 101, 100)); + token.mintBatchTo(collector, tokenIds, amounts); + } + + function _mintBatchTo(address _receiver, uint256 _tokenId, uint256 _amount) internal { + uint256[] memory tokenIds = new uint256[](1); + uint256[] memory amounts = new uint256[](1); + tokenIds[0] = _tokenId; + amounts[0] = _amount; + token.mintBatchTo(_receiver, tokenIds, amounts); + } } diff --git a/src/token/ERC1155/IRareERC1155.sol b/src/token/ERC1155/IRareERC1155.sol index 831eb72..4add49c 100644 --- a/src/token/ERC1155/IRareERC1155.sol +++ b/src/token/ERC1155/IRareERC1155.sol @@ -1,13 +1,15 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; +import {IERC2981Upgradeable} from "openzeppelin-contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; + import {ITokenCreator} from "../extensions/ITokenCreator.sol"; /// @author SuperRare Labs Inc. /// @title IRareERC1155 /// @notice Interface for the RARE Protocol ERC1155 token. /// @dev Extends the RARE `ITokenCreator` interface so marketplace and royalty infrastructure can resolve creators per token id. -interface IRareERC1155 is ITokenCreator { +interface IRareERC1155 is ITokenCreator, IERC2981Upgradeable { /// @notice Per-token configuration for an ERC1155 edition. struct TokenConfig { /// @notice Maximum supply that may ever be minted for the token id. @@ -27,25 +29,13 @@ interface IRareERC1155 is ITokenCreator { /// @param creator RARE creator recorded for the token id. /// @param maxSupply Maximum supply configured for the token id. /// @param tokenURI Token-specific metadata URI. - /// @param royaltyReceiver ERC2981 royalty receiver configured for the token id. - event TokenCreated( - uint256 indexed tokenId, address indexed creator, uint256 maxSupply, string tokenURI, address royaltyReceiver - ); + event TokenCreated(uint256 indexed tokenId, address indexed creator, uint256 maxSupply, string tokenURI); /// @notice Emitted when owner changes minter approval. /// @param minter Address whose approval changed. /// @param isMinter True when the address is approved to mint. event MinterApprovalUpdated(address indexed minter, bool isMinter); - /// @notice Emitted when the metadata of a token is changed. - /// @param _tokenId Token id whose metadata changed. - event MetadataUpdate(uint256 _tokenId); - - /// @notice Emitted when the metadata of a consecutive range of tokens is changed. - /// @param _fromTokenId First token id in the changed range. - /// @param _toTokenId Last token id in the changed range. - event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId); - /// @notice Reverted when a write operation is attempted after the collection has been disabled. error ContractIsDisabled(); @@ -72,6 +62,30 @@ interface IRareERC1155 is ITokenCreator { /// @param _maxSupply The configured max supply for the token id. error ExceededMaxSupply(uint256 _tokenId, uint256 _requestedTotalMinted, uint256 _maxSupply); + /// @notice Reverted when a batch operation receives no items. + error EmptyBatch(); + + /// @notice Reverted when parallel batch arrays have different lengths. + error BatchLengthMismatch(); + + /// @notice Reverted when a batch exceeds the supported item count. + /// @param supplied Number of items supplied. + /// @param max Maximum supported item count. + error BatchSizeExceeded(uint256 supplied, uint256 max); + + /// @notice Reverted when token ids are not strictly ascending. + /// @param tokenId Token id that is not greater than the previous token id. + error TokenIdsNotStrictlyAscending(uint256 tokenId); + + /// @notice Reverted when the default royalty percentage is above 100%. + /// @param supplied Percentage supplied by the caller. + /// @param max Maximum supported percentage. + error RoyaltyPercentageTooHigh(uint256 supplied, uint256 max); + + /// @notice Maximum number of token ids accepted by public batch mint operations. + /// @return Maximum supported batch item count. + function MAX_BATCH_SIZE() external pure returns (uint256); + /// @notice Returns the human-readable collection name. /// @return Collection name. function name() external view returns (string memory); @@ -89,7 +103,7 @@ interface IRareERC1155 is ITokenCreator { /// @param _name Human-readable collection name. /// @param _symbol Human-readable collection symbol. /// @param _baseURI Base ERC1155 URI used when a token id has no token-specific URI. - /// @param _creator Initial collection owner and default royalty receiver. + /// @param _creator Initial collection owner and ERC2981 royalty receiver. /// @param _defaultMinter Optional minter approved during initialization. Use zero address for no default minter. function init( string calldata _name, @@ -99,32 +113,31 @@ interface IRareERC1155 is ITokenCreator { address _defaultMinter ) external; - /// @notice Creates a new token type with a token-specific URI, max supply, and royalty receiver. - /// @param _tokenURI Metadata URI returned for the new token id. - /// @param _maxSupply Maximum supply that may ever be minted for the new token id. - /// @param _royaltyReceiver Address that receives ERC2981 royalties for the new token id. - /// @return The newly created token id. - function createToken(string calldata _tokenURI, uint256 _maxSupply, address _royaltyReceiver) - external - returns (uint256); - - /// @notice Creates a new token type using the caller as the royalty receiver. + /// @notice Creates a new token type. /// @param _tokenURI Metadata URI returned for the new token id. /// @param _maxSupply Maximum supply that may ever be minted for the new token id. /// @return The newly created token id. function createToken(string calldata _tokenURI, uint256 _maxSupply) external returns (uint256); - /// @notice Mints an existing token id to a receiver. - /// @dev Callable by the owner or an approved minter only. Approved minters intentionally have - /// collection-wide mint authority for any existing token id, up to that token's max supply, so - /// creators can approve a trusted marketplace contract once instead of approving per token. - /// Owners should only approve minters they trust to mint remaining collection supply. + /// @notice Mints one existing token id to a receiver. + /// @dev Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting. /// @param _receiver Address that receives the minted tokens. /// @param _tokenId Existing token id to mint. /// @param _amount Quantity to mint. - /// @return The minted token id. + /// @return Minted token id. function mintTo(address _receiver, uint256 _tokenId, uint256 _amount) external returns (uint256); + /// @notice Mints existing token ids to a receiver. + /// @dev Callable by the owner or an approved minter only. Token ids must be strictly ascending. + /// Approved minters intentionally have collection-wide mint authority for any existing token id, + /// up to that token's max supply, so creators can approve a trusted marketplace contract once + /// instead of approving per token. Owners should only approve minters they trust to mint remaining + /// collection supply. + /// @param _receiver Address that receives the minted tokens. + /// @param _tokenIds Existing token ids to mint. + /// @param _amounts Quantities to mint for each token id. + function mintBatchTo(address _receiver, uint256[] calldata _tokenIds, uint256[] calldata _amounts) external; + /// @notice Grants or revokes collection-wide minter approval for an address. /// @dev Approval is deliberately collection-wide rather than token-scoped to keep the creator UX /// to a single marketplace approval. An approved minter can mint any existing token id to any @@ -133,14 +146,13 @@ interface IRareERC1155 is ITokenCreator { /// @param _isMinter Whether the address should be allowed to mint. function setMinterApproval(address _minter, bool _isMinter) external; - /// @notice Updates the fallback royalty receiver for tokens that rely on default royalties. + /// @notice Updates the collection-wide ERC2981 royalty receiver. /// @param _receiver New default royalty receiver. function setDefaultRoyaltyReceiver(address _receiver) external; - /// @notice Updates the royalty receiver for a specific token id. - /// @param _receiver New royalty receiver for the token id. - /// @param _tokenId Token id whose royalty receiver is updated. - function setRoyaltyReceiverForToken(address _receiver, uint256 _tokenId) external; + /// @notice Updates the collection-wide ERC2981 royalty percentage. + /// @param _percentage New royalty percentage, expressed as whole percentage points. + function setDefaultRoyaltyPercentage(uint256 _percentage) external; /// @notice Updates the token-specific metadata URI for an existing token id. /// @param _tokenId Token id whose URI is updated. @@ -171,10 +183,4 @@ interface IRareERC1155 is ITokenCreator { /// @param _tokenId Token id to inspect. /// @return Metadata URI for the token id. function uri(uint256 _tokenId) external view returns (string memory); - - /// @notice Returns whether this contract supports an interface id. - /// @dev Returns true for ERC-4906 metadata updates at interface id `0x49064906`. - /// @param _interfaceId Interface id to inspect. - /// @return True when the interface id is supported. - function supportsInterface(bytes4 _interfaceId) external view returns (bool); } diff --git a/src/token/ERC1155/RareERC1155.sol b/src/token/ERC1155/RareERC1155.sol index 8e9777e..58fb512 100644 --- a/src/token/ERC1155/RareERC1155.sol +++ b/src/token/ERC1155/RareERC1155.sol @@ -9,8 +9,9 @@ import { import { ERC1155SupplyUpgradeable } from "openzeppelin-contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol"; +import {ERC2981Upgradeable} from "openzeppelin-contracts-upgradeable/token/common/ERC2981Upgradeable.sol"; +import {IERC165Upgradeable} from "openzeppelin-contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol"; -import {ERC2981Upgradeable} from "../extensions/ERC2981Upgradeable.sol"; import {ITokenCreator} from "../extensions/ITokenCreator.sol"; import {IRareERC1155} from "./IRareERC1155.sol"; @@ -33,6 +34,18 @@ contract RareERC1155 is /// @notice Last created token id. uint256 private tokenIdCounter; + /// @inheritdoc IRareERC1155 + uint256 public constant MAX_BATCH_SIZE = 100; + + /// @notice Default ERC2981 royalty fee in whole percentage points. + uint256 private constant DEFAULT_ROYALTY_PERCENTAGE = 10; + + /// @notice Maximum ERC2981 royalty fee in whole percentage points. + uint256 private constant MAX_ROYALTY_PERCENTAGE = 100; + + /// @notice ERC2981 fee denominator uses basis points. + uint256 private constant BASIS_POINTS_PER_PERCENT = 100; + /// @notice Token configuration by token id. mapping(uint256 => TokenConfig) private tokenConfigs; @@ -45,6 +58,12 @@ contract RareERC1155 is /// @notice Lifetime minted quantity by token id. mapping(uint256 => uint256) private tokenTotalMinted; + /// @notice Collection-wide ERC2981 royalty receiver. + address private defaultRoyaltyReceiver; + + /// @notice Collection-wide ERC2981 royalty percentage, expressed as whole percentage points. + uint256 private defaultRoyaltyPercentage; + /// @notice Ensures the collection has not been disabled. modifier ifNotDisabled() { // Atomic guard: disabled collections reject owner-managed writes before any state changes. @@ -55,7 +74,7 @@ contract RareERC1155 is /// @notice Ensures a token id has been created. /// @param _tokenId Token id that must exist. modifier tokenExists(uint256 _tokenId) { - // Atomic guard: missing token ids cannot be minted, updated, or assigned royalties. + // Atomic guard: missing token ids cannot be minted or updated. if (!tokenConfigs[_tokenId].exists) revert TokenDoesNotExist(_tokenId); _; } @@ -86,11 +105,10 @@ contract RareERC1155 is __ERC1155_init(_baseURI); __ERC1155Burnable_init(); __ERC1155Supply_init(); - __ERC2981__init(); + __ERC2981_init(); - // State writes: configure collection-wide default royalty behavior. - _setDefaultRoyaltyPercentage(10); - _setDefaultRoyaltyReceiver(_creator); + // State write: expose EIP-2981 royalties as 10% to the collection creator. + _setDefaultRoyaltyConfig(_creator, DEFAULT_ROYALTY_PERCENTAGE); if (_defaultMinter != address(0)) { // State write: grant optional marketplace or minter approval at initialization. @@ -103,50 +121,61 @@ contract RareERC1155 is } /// @inheritdoc IRareERC1155 - function createToken(string calldata _tokenURI, uint256 _maxSupply, address _royaltyReceiver) + function createToken(string calldata _tokenURI, uint256 _maxSupply) external onlyOwner ifNotDisabled returns (uint256) { - return _createToken(_tokenURI, _maxSupply, msg.sender, _royaltyReceiver); + return _createToken(_tokenURI, _maxSupply, msg.sender); } /// @inheritdoc IRareERC1155 - function createToken(string calldata _tokenURI, uint256 _maxSupply) - external - onlyOwner - ifNotDisabled - returns (uint256) - { - return _createToken(_tokenURI, _maxSupply, msg.sender, msg.sender); + function mintTo(address _receiver, uint256 _tokenId, uint256 _amount) external ifNotDisabled returns (uint256) { + uint256[] memory tokenIds = new uint256[](1); + uint256[] memory amounts = new uint256[](1); + tokenIds[0] = _tokenId; + amounts[0] = _amount; + + _mintBatchTo(_receiver, tokenIds, amounts); + return _tokenId; } /// @inheritdoc IRareERC1155 - function mintTo(address _receiver, uint256 _tokenId, uint256 _amount) + function mintBatchTo(address _receiver, uint256[] calldata _tokenIds, uint256[] calldata _amounts) external ifNotDisabled - tokenExists(_tokenId) - returns (uint256) { - // Atomic guards: validate receiver, collection-wide minter authority, and non-zero mint amount before supply math. + _mintBatchTo(_receiver, _tokenIds, _amounts); + } + + /// @notice Mints existing token ids to a receiver after shared mint validation. + /// @param _receiver Address that receives the minted tokens. + /// @param _tokenIds Existing token ids to mint. + /// @param _amounts Quantities to mint for each token id. + function _mintBatchTo(address _receiver, uint256[] memory _tokenIds, uint256[] memory _amounts) internal { + // Atomic guards: validate receiver, collection-wide minter authority, and batch shape before supply math. // Approved minters are deliberately not token-scoped so creators can approve a trusted marketplace once. if (_receiver == address(0)) revert ZeroAddressUnsupported(); if (msg.sender != owner() && !minterAddresses[msg.sender]) revert CallerCannotMint(msg.sender); - if (_amount == 0) revert AmountCannotBeZero(); + _validateMintBatch(_tokenIds, _amounts); - // Atomic lifetime supply check: burns must not reopen edition supply. - uint256 requestedTotalMinted = tokenTotalMinted[_tokenId] + _amount; - uint256 maxSupply = tokenConfigs[_tokenId].maxSupply; - if (requestedTotalMinted > maxSupply) revert ExceededMaxSupply(_tokenId, requestedTotalMinted, maxSupply); + for (uint256 i = 0; i < _tokenIds.length; i++) { + uint256 tokenId = _tokenIds[i]; + if (!tokenConfigs[tokenId].exists) revert TokenDoesNotExist(tokenId); + if (_amounts[i] == 0) revert AmountCannotBeZero(); - // State write: record lifetime minted supply before the ERC1155 receiver hook can run. - tokenTotalMinted[_tokenId] = requestedTotalMinted; + // Atomic lifetime supply check: burns must not reopen edition supply. + uint256 requestedTotalMinted = tokenTotalMinted[tokenId] + _amounts[i]; + uint256 maxSupply = tokenConfigs[tokenId].maxSupply; + if (requestedTotalMinted > maxSupply) revert ExceededMaxSupply(tokenId, requestedTotalMinted, maxSupply); - // Token mint: OpenZeppelin ERC1155 updates balances, total supply, and emits TransferSingle. - _mint(_receiver, _tokenId, _amount, ""); + // State write: record lifetime minted supply before the ERC1155 receiver hook can run. + tokenTotalMinted[tokenId] = requestedTotalMinted; + } - return _tokenId; + // Token mint: OpenZeppelin ERC1155 updates balances, total supply, and emits TransferBatch. + _mintBatch(_receiver, _tokenIds, _amounts, ""); } /// @inheritdoc IRareERC1155 @@ -161,25 +190,12 @@ contract RareERC1155 is /// @inheritdoc IRareERC1155 function setDefaultRoyaltyReceiver(address _receiver) external onlyOwner ifNotDisabled { - // Atomic guard: default royalties must pay a real recipient. - if (_receiver == address(0)) revert ZeroAddressUnsupported(); - - // State write: update inherited ERC2981 default royalty receiver. - _setDefaultRoyaltyReceiver(_receiver); + _setDefaultRoyaltyConfig(_receiver, defaultRoyaltyPercentage); } /// @inheritdoc IRareERC1155 - function setRoyaltyReceiverForToken(address _receiver, uint256 _tokenId) - external - onlyOwner - ifNotDisabled - tokenExists(_tokenId) - { - // Atomic guard: token-specific royalties must pay a real recipient. - if (_receiver == address(0)) revert ZeroAddressUnsupported(); - - // State write: update inherited ERC2981 royalty receiver for a single token id. - _setRoyaltyReceiver(_tokenId, _receiver); + function setDefaultRoyaltyPercentage(uint256 _percentage) external onlyOwner ifNotDisabled { + _setDefaultRoyaltyConfig(defaultRoyaltyReceiver, _percentage); } /// @inheritdoc IRareERC1155 @@ -194,7 +210,6 @@ contract RareERC1155 is // ERC1155 metadata signal: notify indexers of the new URI. emit URI(_tokenURI, _tokenId); - emit MetadataUpdate(_tokenId); } /// @inheritdoc IRareERC1155 @@ -230,48 +245,68 @@ contract RareERC1155 is return bytes(tokenURI).length > 0 ? tokenURI : super.uri(_tokenId); } - /// @inheritdoc IRareERC1155 + /// @inheritdoc IERC165Upgradeable function supportsInterface(bytes4 _interfaceId) public view - override(ERC1155Upgradeable, ERC2981Upgradeable, IRareERC1155) + override(ERC1155Upgradeable, ERC2981Upgradeable, IERC165Upgradeable) returns (bool) { - return _interfaceId == 0x49064906 || _interfaceId == type(IRareERC1155).interfaceId - || _interfaceId == type(ITokenCreator).interfaceId || super.supportsInterface(_interfaceId); + return _interfaceId == type(IRareERC1155).interfaceId || _interfaceId == type(ITokenCreator).interfaceId + || super.supportsInterface(_interfaceId); } - /// @notice Creates a token id and configures creator and royalty state. + /// @notice Creates a token id and configures creator state. /// @param _tokenURI Token-specific metadata URI. /// @param _maxSupply Maximum supply for the token id. /// @param _creator RARE creator recorded for the token id. - /// @param _royaltyReceiver ERC2981 receiver for the token id. /// @return tokenId Newly created token id. - function _createToken(string calldata _tokenURI, uint256 _maxSupply, address _creator, address _royaltyReceiver) - internal - returns (uint256) - { - // Atomic guards: token ids must be mintable and royalties must have a recipient. + function _createToken(string calldata _tokenURI, uint256 _maxSupply, address _creator) internal returns (uint256) { + // Atomic guard: token ids must be mintable. if (_maxSupply == 0) revert MaxSupplyCannotBeZero(); - if (_royaltyReceiver == address(0)) revert ZeroAddressUnsupported(); // State write: advance the monotonically increasing token id counter. tokenIdCounter++; uint256 tokenId = tokenIdCounter; - // State writes: register token constraints, creator lookup, and ERC2981 royalty settings. + // State writes: register token constraints and creator lookup. tokenConfigs[tokenId] = TokenConfig(_maxSupply, _tokenURI, true); tokenCreators[tokenId] = _creator; - _setRoyaltyReceiver(tokenId, _royaltyReceiver); - _setRoyaltyPercentage(tokenId, getDefaultRoyaltyPercentage()); // Metadata and domain events: expose the new URI and token config to indexers. emit URI(_tokenURI, tokenId); - emit TokenCreated(tokenId, _creator, _maxSupply, _tokenURI, _royaltyReceiver); + emit TokenCreated(tokenId, _creator, _maxSupply, _tokenURI); return tokenId; } + /// @notice Updates collection-wide default ERC2981 royalty config. + /// @param _receiver Royalty receiver address. + /// @param _percentage Royalty percentage, expressed as whole percentage points. + function _setDefaultRoyaltyConfig(address _receiver, uint256 _percentage) internal { + if (_receiver == address(0)) revert ZeroAddressUnsupported(); + if (_percentage > MAX_ROYALTY_PERCENTAGE) { + revert RoyaltyPercentageTooHigh(_percentage, MAX_ROYALTY_PERCENTAGE); + } + + defaultRoyaltyReceiver = _receiver; + defaultRoyaltyPercentage = _percentage; + _setDefaultRoyalty(_receiver, uint96(_percentage * BASIS_POINTS_PER_PERCENT)); + } + + /// @notice Validates batch mint input shape and token id ordering. + /// @param _tokenIds Token ids requested by the caller. + /// @param _amounts Amounts requested by the caller. + function _validateMintBatch(uint256[] memory _tokenIds, uint256[] memory _amounts) internal pure { + if (_tokenIds.length == 0) revert EmptyBatch(); + if (_tokenIds.length != _amounts.length) revert BatchLengthMismatch(); + if (_tokenIds.length > MAX_BATCH_SIZE) revert BatchSizeExceeded(_tokenIds.length, MAX_BATCH_SIZE); + + for (uint256 i = 1; i < _tokenIds.length; i++) { + if (_tokenIds[i] <= _tokenIds[i - 1]) revert TokenIdsNotStrictlyAscending(_tokenIds[i]); + } + } + /// @notice Hook called by OpenZeppelin before ERC1155 token transfers, mints, and burns. /// @dev Delegates to `ERC1155SupplyUpgradeable` so total supply accounting stays correct. /// @param _operator Operator executing the transfer. From 86b1d9b0aeea52460e4a82aec889b5855c3cb67f Mon Sep 17 00:00:00 2001 From: Keegan Date: Sat, 30 May 2026 19:47:38 -0400 Subject: [PATCH 04/17] Move ERC1155 listing docs into interface --- src/marketplace/IRareERC1155Listings.sol | 35 +++++- src/marketplace/RareERC1155Listings.sol | 130 ++++++----------------- 2 files changed, 65 insertions(+), 100 deletions(-) diff --git a/src/marketplace/IRareERC1155Listings.sol b/src/marketplace/IRareERC1155Listings.sol index 836c024..d2cfc53 100644 --- a/src/marketplace/IRareERC1155Listings.sol +++ b/src/marketplace/IRareERC1155Listings.sol @@ -7,8 +7,41 @@ import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; /// @title IRareERC1155Listings /// @notice Interface for RARE Protocol ERC1155 primary mint sales and ERC1155 fixed-price secondary sales. /// @dev Primary sales are configured per `(collection, tokenId)`. Secondary listings are approval-based and keyed by `(collection, tokenId, seller)`. -/// Secondary listings intentionally do not expire on-chain; they remain fillable until sold, cancelled, or made invalid by seller balance, ERC1155 approval, or currency policy. +/// Secondary listings remain fillable until sold, cancelled, expired, or made invalid by seller balance, +/// ERC1155 approval, or currency policy. interface IRareERC1155Listings { + /// @notice Primary payout data captured before an external collection mint. + /// @dev Used by implementations to preserve payout inputs across external calls. + struct PrimaryPayoutContext { + /// @notice Token id being minted. + uint256 tokenId; + /// @notice Gross sale amount before marketplace fee or platform commission. + uint256 grossAmount; + /// @notice Buyer-paid marketplace fee calculated for `grossAmount`. + uint256 marketplaceFee; + /// @notice Primary seller that receives proceeds after marketplace and platform fees. + address seller; + /// @notice Recipients that split seller proceeds. + address payable[] splitRecipients; + /// @notice Percentages corresponding to `splitRecipients`. + uint8[] splitRatios; + } + + /// @notice Secondary payout data captured before a listing is decremented or deleted. + /// @dev Used by implementations to preserve payout inputs across external calls and storage mutation. + struct SecondaryPayoutContext { + /// @notice Token id being purchased. + uint256 tokenId; + /// @notice Gross sale amount before marketplace fee or royalties. + uint256 grossAmount; + /// @notice Buyer-paid marketplace fee calculated for `grossAmount`. + uint256 marketplaceFee; + /// @notice Recipients that split seller proceeds. + address payable[] splitRecipients; + /// @notice Percentages corresponding to `splitRecipients`. + uint8[] splitRatios; + } + /// @notice Primary mint sale configuration for a collection token id. struct DirectSaleConfig { /// @notice Seller/creator that owns the primary sale and receives sale proceeds. diff --git a/src/marketplace/RareERC1155Listings.sol b/src/marketplace/RareERC1155Listings.sol index a6338b7..682f279 100644 --- a/src/marketplace/RareERC1155Listings.sol +++ b/src/marketplace/RareERC1155Listings.sol @@ -65,25 +65,6 @@ contract RareERC1155Listings is /// @inheritdoc IRareERC1155Listings uint256 public constant MAX_BATCH_SIZE = 100; - /// @notice Primary payout data preserved before the external batch mint. - struct PrimaryPayoutContext { - uint256 tokenId; - uint256 grossAmount; - uint256 marketplaceFee; - address seller; - address payable[] splitRecipients; - uint8[] splitRatios; - } - - /// @notice Secondary payout data preserved before listings are decremented or deleted. - struct SecondaryPayoutContext { - uint256 tokenId; - uint256 grossAmount; - uint256 marketplaceFee; - address payable[] splitRecipients; - uint8[] splitRatios; - } - /// @notice ERC-7201 namespaced storage for the marketplace. /// @dev Pins all contract-owned state to a fixed hashed slot so it cannot collide with inherited /// upgradeable base contracts and can be extended in future upgrades without reserving storage gaps. @@ -140,19 +121,7 @@ contract RareERC1155Listings is _disableInitializers(); } - /// @notice Initializes the UUPS marketplace implementation behind a proxy. - /// @dev Stores the market config dependency bundle and initializes inherited upgradeability modules. - /// @param _networkBeneficiary Address receiving network marketplace fees. - /// @param _marketplaceSettings Marketplace settings contract. - /// @param _spaceOperatorRegistry Space operator registry contract. - /// @param _royaltyEngine Royalty engine contract. - /// @param _payments Payments contract used for ETH fan-out. - /// @param _approvedTokenRegistry Registry of approved ERC20 currencies. - /// @param _stakingSettings Staking fee settings contract. - /// @param _stakingRegistry Staking registry contract. - /// @param _erc20ApprovalManager ERC20 transfer manager for buyer currency approvals. - /// @param _erc721ApprovalManager ERC721 transfer manager kept in shared V2 market config. - /// @param _erc1155ApprovalManager ERC1155 transfer manager for seller token approvals. + /// @inheritdoc IRareERC1155Listings function initialize( address _networkBeneficiary, address _marketplaceSettings, @@ -269,7 +238,8 @@ contract RareERC1155Listings is uint256 requestCount = _requests.length; uint256[] memory tokenIds = new uint256[](requestCount); uint256[] memory amounts = new uint256[](requestCount); - PrimaryPayoutContext[] memory payoutContexts = new PrimaryPayoutContext[](requestCount); + IRareERC1155Listings.PrimaryPayoutContext[] memory payoutContexts = + new IRareERC1155Listings.PrimaryPayoutContext[](requestCount); uint256 buyerTotal = 0; for (uint256 i = 0; i < requestCount;) { @@ -502,7 +472,8 @@ contract RareERC1155Listings is uint256[] memory amounts = new uint256[](requestCount); address[] memory balanceAccounts = new address[](requestCount * 2); uint256[] memory balanceTokenIds = new uint256[](requestCount * 2); - SecondaryPayoutContext[] memory payoutContexts = new SecondaryPayoutContext[](requestCount); + IRareERC1155Listings.SecondaryPayoutContext[] memory payoutContexts = + new IRareERC1155Listings.SecondaryPayoutContext[](requestCount); uint256 buyerTotal = 0; for (uint256 i = 0; i < requestCount;) { @@ -611,10 +582,7 @@ contract RareERC1155Listings is } } - /// @notice Returns the primary mint sale config for a token id. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to inspect. - /// @return Primary sale config for the token id. + /// @inheritdoc IRareERC1155Listings function getDirectSaleConfig(address _contractAddress, uint256 _tokenId) external view @@ -623,10 +591,7 @@ contract RareERC1155Listings is return _listingsStorage().directSaleConfigs[_contractAddress][_tokenId]; } - /// @notice Returns the allowlist config for a token id. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to inspect. - /// @return Allowlist config for the token id. + /// @inheritdoc IRareERC1155Listings function getTokenAllowListConfig(address _contractAddress, uint256 _tokenId) external view @@ -635,19 +600,12 @@ contract RareERC1155Listings is return _listingsStorage().tokenAllowlistRoots[_contractAddress][_tokenId]; } - /// @notice Returns the per-address mint quantity limit for a token id. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to inspect. - /// @return Mint quantity limit. Zero means unlimited. + /// @inheritdoc IRareERC1155Listings function getTokenMintLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256) { return _listingsStorage().tokenMintLimit[_contractAddress][_tokenId]; } - /// @notice Returns quantity minted by an address for a token id. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to inspect. - /// @param _address Address whose minted quantity is returned. - /// @return Quantity minted by `_address`. + /// @inheritdoc IRareERC1155Listings function getTokenMintsPerAddress(address _contractAddress, uint256 _tokenId, address _address) external view @@ -656,19 +614,12 @@ contract RareERC1155Listings is return _listingsStorage().tokenMintsPerAddress[_contractAddress][_tokenId][_address]; } - /// @notice Returns the per-address transaction limit for a token id. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to inspect. - /// @return Transaction limit. Zero means unlimited. + /// @inheritdoc IRareERC1155Listings function getTokenTxLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256) { return _listingsStorage().tokenTxLimit[_contractAddress][_tokenId]; } - /// @notice Returns mint transactions used by an address for a token id. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to inspect. - /// @param _address Address whose transaction count is returned. - /// @return Number of mint transactions used by `_address`. + /// @inheritdoc IRareERC1155Listings function getTokenTxsPerAddress(address _contractAddress, uint256 _tokenId, address _address) external view @@ -677,11 +628,7 @@ contract RareERC1155Listings is return _listingsStorage().tokenTxsPerAddress[_contractAddress][_tokenId][_address]; } - /// @notice Returns a seller's secondary fixed-price listing. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to inspect. - /// @param _seller Seller whose listing is returned. - /// @return Secondary fixed-price listing for the seller and token id. + /// @inheritdoc IRareERC1155Listings function getSalePrice(address _contractAddress, uint256 _tokenId, address _seller) external view @@ -690,26 +637,22 @@ contract RareERC1155Listings is return _listingsStorage().salePrices[_contractAddress][_tokenId][_seller]; } - /// @notice Returns the marketplace dependency configuration. - /// @return Current market config struct. + /// @inheritdoc IRareERC1155Listings function getMarketConfig() external view returns (MarketConfigV2.Config memory) { return _listingsStorage().marketConfig; } - /// @notice Returns the ERC1155 approval manager used for secondary transfers. - /// @return Current ERC1155 approval manager address. + /// @inheritdoc IRareERC1155Listings function getERC1155ApprovalManager() external view returns (address) { return address(_listingsStorage().erc1155ApprovalManager); } - /// @notice Returns whether marketplace writes are paused. - /// @return True when paused. + /// @inheritdoc IRareERC1155Listings function isPaused() external view returns (bool) { return _listingsStorage().paused; } - /// @notice Updates the network beneficiary address. - /// @param _networkBeneficiary New network beneficiary. + /// @inheritdoc IRareERC1155Listings function setNetworkBeneficiary(address _networkBeneficiary) external onlyOwner { // Atomic guard: network beneficiary must remain payable by marketplace fee flows. _validateMarketConfigAddress(_networkBeneficiary, NETWORK_BENEFICIARY_FIELD); @@ -720,8 +663,7 @@ contract RareERC1155Listings is emit MarketplaceDependencyUpdated(NETWORK_BENEFICIARY_FIELD, _networkBeneficiary); } - /// @notice Updates the marketplace settings contract address. - /// @param _marketplaceSettings New marketplace settings contract. + /// @inheritdoc IRareERC1155Listings function setMarketplaceSettings(address _marketplaceSettings) external onlyOwner { // Atomic guard: marketplace fee calculations must retain a concrete settings contract. _validateMarketConfigAddress(_marketplaceSettings, MARKETPLACE_SETTINGS_FIELD); @@ -732,8 +674,7 @@ contract RareERC1155Listings is emit MarketplaceDependencyUpdated(MARKETPLACE_SETTINGS_FIELD, _marketplaceSettings); } - /// @notice Updates the space operator registry address. - /// @param _spaceOperatorRegistry New space operator registry contract. + /// @inheritdoc IRareERC1155Listings function setSpaceOperatorRegistry(address _spaceOperatorRegistry) external onlyOwner { // Atomic guard: primary platform-fee resolution must retain a concrete registry. _validateMarketConfigAddress(_spaceOperatorRegistry, SPACE_OPERATOR_REGISTRY_FIELD); @@ -744,8 +685,7 @@ contract RareERC1155Listings is emit MarketplaceDependencyUpdated(SPACE_OPERATOR_REGISTRY_FIELD, _spaceOperatorRegistry); } - /// @notice Updates the royalty engine address. - /// @param _royaltyEngine New royalty engine contract. + /// @inheritdoc IRareERC1155Listings function setRoyaltyEngine(address _royaltyEngine) external onlyOwner { // Atomic guard: secondary royalty resolution must retain a concrete engine. _validateMarketConfigAddress(_royaltyEngine, ROYALTY_ENGINE_FIELD); @@ -756,8 +696,7 @@ contract RareERC1155Listings is emit MarketplaceDependencyUpdated(ROYALTY_ENGINE_FIELD, _royaltyEngine); } - /// @notice Updates the Payments contract address used for ETH fan-out. - /// @param _payments New payments contract. + /// @inheritdoc IRareERC1155Listings function setPayments(address _payments) external onlyOwner { // Atomic guard: ETH payout fan-out must retain a concrete Payments contract. _validateMarketConfigAddress(_payments, PAYMENTS_FIELD); @@ -768,8 +707,7 @@ contract RareERC1155Listings is emit MarketplaceDependencyUpdated(PAYMENTS_FIELD, _payments); } - /// @notice Updates the approved token registry address. - /// @param _approvedTokenRegistry New approved token registry contract. + /// @inheritdoc IRareERC1155Listings function setApprovedTokenRegistry(address _approvedTokenRegistry) external onlyOwner { // Atomic guard: currency approval checks must retain a concrete registry. _validateMarketConfigAddress(_approvedTokenRegistry, APPROVED_TOKEN_REGISTRY_FIELD); @@ -780,8 +718,7 @@ contract RareERC1155Listings is emit MarketplaceDependencyUpdated(APPROVED_TOKEN_REGISTRY_FIELD, _approvedTokenRegistry); } - /// @notice Updates the staking settings address. - /// @param _stakingSettings New staking settings contract. + /// @inheritdoc IRareERC1155Listings function setStakingSettings(address _stakingSettings) external onlyOwner { // Atomic guard: marketplace fee split math must retain concrete settings. _validateMarketConfigAddress(_stakingSettings, STAKING_SETTINGS_FIELD); @@ -792,8 +729,7 @@ contract RareERC1155Listings is emit MarketplaceDependencyUpdated(STAKING_SETTINGS_FIELD, _stakingSettings); } - /// @notice Updates the staking registry address. - /// @param _stakingRegistry New staking registry contract. + /// @inheritdoc IRareERC1155Listings function setStakingRegistry(address _stakingRegistry) external onlyOwner { // Atomic guard: marketplace fee split recipients must retain a concrete registry. _validateMarketConfigAddress(_stakingRegistry, STAKING_REGISTRY_FIELD); @@ -804,8 +740,7 @@ contract RareERC1155Listings is emit MarketplaceDependencyUpdated(STAKING_REGISTRY_FIELD, _stakingRegistry); } - /// @notice Updates the ERC20 approval manager address. - /// @param _erc20ApprovalManager New ERC20 approval manager contract. + /// @inheritdoc IRareERC1155Listings function setERC20ApprovalManager(address _erc20ApprovalManager) external onlyOwner { // Atomic guard: ERC20 purchases must retain a concrete transfer manager. _validateApprovalManager(_erc20ApprovalManager); @@ -816,8 +751,7 @@ contract RareERC1155Listings is emit MarketplaceDependencyUpdated(ERC20_APPROVAL_MANAGER_FIELD, _erc20ApprovalManager); } - /// @notice Updates the ERC721 approval manager address retained by the shared V2 market config. - /// @param _erc721ApprovalManager New ERC721 approval manager contract. + /// @inheritdoc IRareERC1155Listings function setERC721ApprovalManager(address _erc721ApprovalManager) external onlyOwner { // Atomic guard: shared V2 config must retain a concrete ERC721 approval manager. _validateApprovalManager(_erc721ApprovalManager); @@ -828,8 +762,7 @@ contract RareERC1155Listings is emit MarketplaceDependencyUpdated(ERC721_APPROVAL_MANAGER_FIELD, _erc721ApprovalManager); } - /// @notice Updates the ERC1155 approval manager address. - /// @param _erc1155ApprovalManager New ERC1155 approval manager contract. + /// @inheritdoc IRareERC1155Listings function setERC1155ApprovalManager(address _erc1155ApprovalManager) external onlyOwner { // Atomic guard: secondary ERC1155 transfers must retain a concrete approval manager. _validateApprovalManager(_erc1155ApprovalManager); @@ -840,8 +773,7 @@ contract RareERC1155Listings is emit MarketplaceDependencyUpdated(ERC1155_APPROVAL_MANAGER_FIELD, _erc1155ApprovalManager); } - /// @notice Pauses or unpauses marketplace write operations. - /// @param _isPaused New pause state. + /// @inheritdoc IRareERC1155Listings function setContractPaused(bool _isPaused) external onlyOwner { // State write: set pause flag consumed by the notPaused modifier. _listingsStorage().paused = _isPaused; @@ -1031,7 +963,7 @@ contract RareERC1155Listings is address _currencyAddress, address _buyer, IRareERC1155Listings.MintRequest calldata _request - ) internal view returns (PrimaryPayoutContext memory payoutContext) { + ) internal view returns (IRareERC1155Listings.PrimaryPayoutContext memory payoutContext) { ListingsStorage storage $ = _listingsStorage(); uint256 tokenId = _request.tokenId; uint256 quantity = _request.quantity; @@ -1069,7 +1001,7 @@ contract RareERC1155Listings is revert CurrencyMismatch(_currencyAddress, directSaleConfig.currencyAddress); } - payoutContext = PrimaryPayoutContext( + payoutContext = IRareERC1155Listings.PrimaryPayoutContext( tokenId, quantity * _request.price, 0, @@ -1090,7 +1022,7 @@ contract RareERC1155Listings is address _seller, address _currencyAddress, IRareERC1155Listings.BuyRequest calldata _request - ) internal view returns (SecondaryPayoutContext memory payoutContext) { + ) internal view returns (IRareERC1155Listings.SecondaryPayoutContext memory payoutContext) { uint256 tokenId = _request.tokenId; uint256 quantity = _request.quantity; if (quantity == 0) revert QuantityCannotBeZero(); @@ -1110,7 +1042,7 @@ contract RareERC1155Listings is if (salePrice.price != _request.price) revert PriceMismatch(_request.price, salePrice.price); if (salePrice.quantity < quantity) revert QuantityExceedsSalePriceQuantity(quantity, salePrice.quantity); - payoutContext = SecondaryPayoutContext( + payoutContext = IRareERC1155Listings.SecondaryPayoutContext( tokenId, quantity * _request.price, 0, salePrice.splitRecipients, salePrice.splitRatios ); } From 33b7e6fcbe2c94b001d095fdddd74e6ae57baa5a Mon Sep 17 00:00:00 2001 From: Keegan Date: Sat, 30 May 2026 20:01:19 -0400 Subject: [PATCH 05/17] Initialize ERC1155 listings proxy atomically --- .../RareERC1155ListingsDeploy.s.sol | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/script/marketplace/RareERC1155ListingsDeploy.s.sol b/script/marketplace/RareERC1155ListingsDeploy.s.sol index 713e62e..c3d665c 100644 --- a/script/marketplace/RareERC1155ListingsDeploy.s.sol +++ b/script/marketplace/RareERC1155ListingsDeploy.s.sol @@ -37,24 +37,23 @@ contract RareERC1155ListingsDeploy is Script { // Deployment operation: deploy UUPS implementation logic. RareERC1155Listings marketplace = new RareERC1155Listings(); - // Deployment operation: deploy ERC1967 proxy pointing at the implementation. - ERC1967Proxy marketplaceProxy = new ERC1967Proxy(address(marketplace), ""); - - // Initialization transaction: configure proxied marketplace dependencies. - RareERC1155Listings(address(marketplaceProxy)) - .initialize( - networkBeneficiary, - marketplaceSettings, - spaceOperatorRegistry, - royaltyEngine, - payments, - approvedTokenRegistry, - stakingSettings, - stakingRegistry, - erc20ApprovalManager, - erc721ApprovalManager, - erc1155ApprovalManager - ); + bytes memory initData = abi.encodeWithSelector( + RareERC1155Listings.initialize.selector, + networkBeneficiary, + marketplaceSettings, + spaceOperatorRegistry, + royaltyEngine, + payments, + approvedTokenRegistry, + stakingSettings, + stakingRegistry, + erc20ApprovalManager, + erc721ApprovalManager, + erc1155ApprovalManager + ); + + // Deployment operation: deploy ERC1967 proxy and initialize it atomically. + new ERC1967Proxy(address(marketplace), initData); // Broadcast boundary: stop submitting transactions. vm.stopBroadcast(); From c285398855e53fa016b32d183984a10f7b1c63d2 Mon Sep 17 00:00:00 2001 From: Keegan Date: Sat, 30 May 2026 20:13:13 -0400 Subject: [PATCH 06/17] Fix zero marketplace fee staking payout --- src/marketplace/RareERC1155Listings.sol | 8 ++-- .../marketplace/RareERC1155Listings.t.sol | 38 +++++++++++++++++++ 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/src/marketplace/RareERC1155Listings.sol b/src/marketplace/RareERC1155Listings.sol index 682f279..20fcbd1 100644 --- a/src/marketplace/RareERC1155Listings.sol +++ b/src/marketplace/RareERC1155Listings.sol @@ -893,6 +893,10 @@ contract RareERC1155Listings is function _payoutMarketplaceFee(address _currencyAddress, uint256 _amount, uint256 _marketplaceFee, address _seller) internal { + if (_marketplaceFee == 0) { + return; + } + // External read: calculate staking fee from staking settings and send the collected remainder to network. ListingsStorage storage $ = _listingsStorage(); uint256 stakingFee = $.marketConfig.stakingSettings.calculateStakingFee(_amount); @@ -900,10 +904,6 @@ contract RareERC1155Listings is revert StakingFeeExceedsMarketplaceFee(_marketplaceFee, stakingFee); } - if (_marketplaceFee == 0) { - return; - } - // Memory setup: recipient 0 is network, recipient 1 is seller staking reward accumulator or network fallback. address payable[] memory recipients = new address payable[](2); recipients[0] = payable($.marketConfig.networkBeneficiary); diff --git a/src/test/marketplace/RareERC1155Listings.t.sol b/src/test/marketplace/RareERC1155Listings.t.sol index 5da1b5a..472005a 100644 --- a/src/test/marketplace/RareERC1155Listings.t.sol +++ b/src/test/marketplace/RareERC1155Listings.t.sol @@ -431,6 +431,44 @@ contract RareERC1155ListingsTest is Test { assertEq(address(market).balance, 0); } + function testMintDirectSaleSkipsStakingFeeWhenMarketplaceFeeIsZero() public { + uint256 price = 100; + _prepareDirectSale(address(0), price, block.timestamp, 0); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, price), + abi.encode(0) + ); + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, seller), + abi.encode(false) + ); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector( + IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, address(token) + ), + abi.encode(15) + ); + vm.mockCall( + stakingSettings, abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, price), abi.encode(1) + ); + + uint256 sellerBalanceBefore = seller.balance; + uint256 networkBalanceBefore = networkBeneficiary.balance; + uint256 rewardBalanceBefore = rewardAccumulator.balance; + + vm.prank(buyer); + _mintDirectSale(tokenId, address(0), price, 1, emptyProof, price); + + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(seller.balance - sellerBalanceBefore, 85); + assertEq(networkBeneficiary.balance - networkBalanceBefore, 15); + assertEq(rewardAccumulator.balance - rewardBalanceBefore, 0); + assertEq(address(market).balance, 0); + } + function testMintDirectSaleRevertsWhenSettingsPlatformCommissionExceedsMax() public { uint256 price = 1 ether; _prepareDirectSale(address(0), price, block.timestamp, 0); From 4a8dc6d02cfeed02c7368ebbd77231c3dcea0a00 Mon Sep 17 00:00:00 2001 From: Keegan Date: Sat, 30 May 2026 20:52:51 -0400 Subject: [PATCH 07/17] Add per-token ERC1155 royalty receivers --- abis/IRareERC1155.json | 2 +- abis/RareERC1155.json | 2 +- .../marketplace/RareERC1155Listings.t.sol | 12 +-- src/test/token/ERC1155/RareERC1155.t.sol | 79 +++++++++++++++---- src/token/ERC1155/IRareERC1155.sol | 26 +++++- src/token/ERC1155/RareERC1155.sol | 43 ++++++++-- 6 files changed, 130 insertions(+), 34 deletions(-) diff --git a/abis/IRareERC1155.json b/abis/IRareERC1155.json index 1f8b70d..8f139a1 100644 --- a/abis/IRareERC1155.json +++ b/abis/IRareERC1155.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintBatchTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"royaltyAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setDefaultRoyaltyPercentage","inputs":[{"name":"_percentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"BatchLengthMismatch","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"RoyaltyPercentageTooHigh","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","createToken(string,uint256)":"72b3b620","disableContract()":"894ba833","disabled()":"ee070805","init(string,string,string,address,address)":"a7eae21c","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintBatchTo(address,uint256[],uint256[])":"3512639c","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","royaltyInfo(uint256,uint256)":"2a55205a","setDefaultRoyaltyPercentage(uint256)":"e27a41bf","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RoyaltyPercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBatchTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_percentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRoyaltyPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Extends the RARE `ITokenCreator` interface so marketplace and royalty infrastructure can resolve creators per token id.\",\"errors\":{\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported percentage.\",\"supplied\":\"Percentage supplied by the caller.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"params\":{\"tokenId\":\"Token id that is not greater than the previous token id.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,uint256,string)\":{\"params\":{\"creator\":\"RARE creator recorded for the token id.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}}},\"kind\":\"dev\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"createToken(string,uint256)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"disabled()\":{\"returns\":{\"_0\":\"True when disabled.\"}},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and ERC2981 royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintBatchTo(address,uint256[],uint256[])\":{\"details\":\"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.\",\"params\":{\"_amounts\":\"Quantities to mint for each token id.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenIds\":\"Existing token ids to mint.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"Minted token id.\"}},\"name()\":{\"returns\":{\"_0\":\"Collection name.\"}},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"params\":{\"_percentage\":\"New royalty percentage, expressed as whole percentage points.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"details\":\"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.\",\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"returns\":{\"_0\":\"Collection symbol.\"}},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"title\":\"IRareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"BatchLengthMismatch()\":[{\"notice\":\"Reverted when parallel batch arrays have different lengths.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"notice\":\"Reverted when the default royalty percentage is above 100%.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,uint256,string)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch mint operations.\"},\"createToken(string,uint256)\":{\"notice\":\"Creates a new token type.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintBatchTo(address,uint256[],uint256[])\":{\"notice\":\"Mints existing token ids to a receiver.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints one existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"notice\":\"Updates the collection-wide ERC2981 royalty percentage.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the collection-wide ERC2981 royalty receiver.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes collection-wide minter approval for an address.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Interface for the RARE Protocol ERC1155 token.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/IRareERC1155.sol\":\"IRareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x423f16f31739668c0162422d91b2f9eea3769de9389d876d876928369b298976\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b942a7152ad01624065e302e75505c551348ddeca2bbb80d2ce556a0d15b0b2a\",\"dweb:/ipfs/QmQrtDpdLvntxFnh9tqFVUiRQPHQpf5BZjGp9PhM558gvJ\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[],"type":"error","name":"BatchLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"RoyaltyPercentageTooHigh"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[],"stateMutability":"pure","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"mintBatchTo"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyPercentage"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"MAX_BATCH_SIZE()":{"returns":{"_0":"Maximum supported batch item count."}},"createToken(string,uint256)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"disabled()":{"returns":{"_0":"True when disabled."}},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and ERC2981 royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintBatchTo(address,uint256[],uint256[])":{"details":"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.","params":{"_amounts":"Quantities to mint for each token id.","_receiver":"Address that receives the minted tokens.","_tokenIds":"Existing token ids to mint."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"Minted token id."}},"name()":{"returns":{"_0":"Collection name."}},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"setDefaultRoyaltyPercentage(uint256)":{"params":{"_percentage":"New royalty percentage, expressed as whole percentage points."}},"setDefaultRoyaltyReceiver(address)":{"params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"details":"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.","params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"returns":{"_0":"Collection symbol."}},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch mint operations."},"createToken(string,uint256)":{"notice":"Creates a new token type."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintBatchTo(address,uint256[],uint256[])":{"notice":"Mints existing token ids to a receiver."},"mintTo(address,uint256,uint256)":{"notice":"Mints one existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"setDefaultRoyaltyPercentage(uint256)":{"notice":"Updates the collection-wide ERC2981 royalty percentage."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the collection-wide ERC2981 royalty receiver."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes collection-wide minter approval for an address."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/IRareERC1155.sol":"IRareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x423f16f31739668c0162422d91b2f9eea3769de9389d876d876928369b298976","urls":["bzz-raw://b942a7152ad01624065e302e75505c551348ddeca2bbb80d2ce556a0d15b0b2a","dweb:/ipfs/QmQrtDpdLvntxFnh9tqFVUiRQPHQpf5BZjGp9PhM558gvJ"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":81} \ No newline at end of file +{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"},{"name":"_royaltyReceiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintBatchTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"royaltyAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setDefaultRoyaltyPercentage","inputs":[{"name":"_percentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyReceiverForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"royaltyReceiver","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"BatchLengthMismatch","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"RoyaltyPercentageTooHigh","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","createToken(string,uint256,address)":"1542bb95","disableContract()":"894ba833","disabled()":"ee070805","init(string,string,string,address,address)":"a7eae21c","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintBatchTo(address,uint256[],uint256[])":"3512639c","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","royaltyInfo(uint256,uint256)":"2a55205a","setDefaultRoyaltyPercentage(uint256)":"e27a41bf","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","setRoyaltyReceiverForToken(uint256,address)":"e2200a0b","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RoyaltyPercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"royaltyReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_royaltyReceiver\",\"type\":\"address\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBatchTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_percentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRoyaltyPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setRoyaltyReceiverForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Extends the RARE `ITokenCreator` interface so marketplace and royalty infrastructure can resolve creators per token id.\",\"errors\":{\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported percentage.\",\"supplied\":\"Percentage supplied by the caller.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"params\":{\"tokenId\":\"Token id that is not greater than the previous token id.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,address,uint256,string)\":{\"params\":{\"creator\":\"RARE creator recorded for the token id.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"royaltyReceiver\":\"ERC2981 royalty receiver configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}}},\"kind\":\"dev\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"createToken(string,uint256,address)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_royaltyReceiver\":\"ERC2981 royalty receiver for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"disabled()\":{\"returns\":{\"_0\":\"True when disabled.\"}},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and ERC2981 royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintBatchTo(address,uint256[],uint256[])\":{\"details\":\"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.\",\"params\":{\"_amounts\":\"Quantities to mint for each token id.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenIds\":\"Existing token ids to mint.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"Minted token id.\"}},\"name()\":{\"returns\":{\"_0\":\"Collection name.\"}},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"details\":\"Tokens created before this update keep their token-specific royalty percentage.\",\"params\":{\"_percentage\":\"New royalty percentage, expressed as whole percentage points.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"details\":\"Token-specific royalty receivers take precedence over this value.\",\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"details\":\"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.\",\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"setRoyaltyReceiverForToken(uint256,address)\":{\"details\":\"The token's existing royalty percentage is preserved.\",\"params\":{\"_receiver\":\"New token-specific royalty receiver.\",\"_tokenId\":\"Token id whose royalty receiver is updated.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"returns\":{\"_0\":\"Collection symbol.\"}},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"title\":\"IRareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"BatchLengthMismatch()\":[{\"notice\":\"Reverted when parallel batch arrays have different lengths.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"notice\":\"Reverted when the default royalty percentage is above 100%.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,address,uint256,string)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch mint operations.\"},\"createToken(string,uint256,address)\":{\"notice\":\"Creates a new token type.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintBatchTo(address,uint256[],uint256[])\":{\"notice\":\"Mints existing token ids to a receiver.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints one existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"notice\":\"Updates the fallback ERC2981 royalty percentage.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the fallback ERC2981 royalty receiver.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes collection-wide minter approval for an address.\"},\"setRoyaltyReceiverForToken(uint256,address)\":{\"notice\":\"Updates the ERC2981 royalty receiver for one token id.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Interface for the RARE Protocol ERC1155 token.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/IRareERC1155.sol\":\"IRareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e\",\"dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[],"type":"error","name":"BatchLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"RoyaltyPercentageTooHigh"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"address","name":"royaltyReceiver","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[],"stateMutability":"pure","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"address","name":"_royaltyReceiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"mintBatchTo"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyPercentage"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyReceiverForToken"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"MAX_BATCH_SIZE()":{"returns":{"_0":"Maximum supported batch item count."}},"createToken(string,uint256,address)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_royaltyReceiver":"ERC2981 royalty receiver for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"disabled()":{"returns":{"_0":"True when disabled."}},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and ERC2981 royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintBatchTo(address,uint256[],uint256[])":{"details":"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.","params":{"_amounts":"Quantities to mint for each token id.","_receiver":"Address that receives the minted tokens.","_tokenIds":"Existing token ids to mint."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"Minted token id."}},"name()":{"returns":{"_0":"Collection name."}},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"setDefaultRoyaltyPercentage(uint256)":{"details":"Tokens created before this update keep their token-specific royalty percentage.","params":{"_percentage":"New royalty percentage, expressed as whole percentage points."}},"setDefaultRoyaltyReceiver(address)":{"details":"Token-specific royalty receivers take precedence over this value.","params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"details":"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.","params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"setRoyaltyReceiverForToken(uint256,address)":{"details":"The token's existing royalty percentage is preserved.","params":{"_receiver":"New token-specific royalty receiver.","_tokenId":"Token id whose royalty receiver is updated."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"returns":{"_0":"Collection symbol."}},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch mint operations."},"createToken(string,uint256,address)":{"notice":"Creates a new token type."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintBatchTo(address,uint256[],uint256[])":{"notice":"Mints existing token ids to a receiver."},"mintTo(address,uint256,uint256)":{"notice":"Mints one existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"setDefaultRoyaltyPercentage(uint256)":{"notice":"Updates the fallback ERC2981 royalty percentage."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the fallback ERC2981 royalty receiver."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes collection-wide minter approval for an address."},"setRoyaltyReceiverForToken(uint256,address)":{"notice":"Updates the ERC2981 royalty receiver for one token id."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/IRareERC1155.sol":"IRareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052","urls":["bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e","dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file diff --git a/abis/RareERC1155.json b/abis/RareERC1155.json index 41d53bc..e52dde4 100644 --- a/abis/RareERC1155.json +++ b/abis/RareERC1155.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBatch","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnBatch","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"exists","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintBatchTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyPercentage","inputs":[{"name":"_percentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"_interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"TransferBatch","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"values","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"TransferSingle","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"URI","inputs":[{"name":"value","type":"string","indexed":false,"internalType":"string"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"BatchLengthMismatch","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"RoyaltyPercentageTooHigh","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x608080604052346100c2576000549060ff8260081c16610070575060ff80821603610035575b6040516132d49081620000c88239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a138610025565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e146123d757806301ffc9a71461231d57806306fdde031461228b5780630de54ba0146122075780630e89341c1461208557806318e97fd114611f025780632a55205a14611e3e5780632baf2acb14611dcd5780632eb2c2d614611a055780633512639c146119855780633a3d146f146119455780633ebc82c51461190c57806340c1a064146118d75780634e1273f4146117395780634f558e791461170b5780636b20c454146114c3578063715018a61461146657806372b3b620146111f6578063894ba833146111a75780638da5cb5b1461117e57806395d89b41146110ab578063a22cb46514610fd4578063a7eae21c14610917578063bd85b039146108eb578063c33ae88f146108be578063cfdbf254146108a2578063e27a41bf14610852578063e985e9c5146107fc578063ee070805146107d8578063f242432a14610442578063f2fde38b146103b5578063f5298aca146101b85763ffd25aa41461018657600080fd5b346101b35760203660031901126101b3576004356000526101636020526020604060002054604051908152f35b600080fd5b346101b3576101c636612557565b6001600160a01b039092169190338314801561038c575b6101e690612835565b8215926101f38415612b4f565b6101fc82612b2a565b9161020684612b2a565b9460006040516102158161247f565b52610338575b60005b83518110156102b9576102318185612821565b5161023c8288612821565b51908060005260fb6020818152604060002054928484106102755790610270959493929160005252036040600020556127ef565b61021e565b60405162461bcd60e51b8152600481018390526028602482015260008051602061327f833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102e282821015612ba7565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a461033660405161247f565b005b929060005b8351811015610384578061035461037f9288612821565b5161035f8287612821565b5160005260fb6020526103786040600020918254612951565b90556127ef565b61033d565b50909261021b565b508260005260986020526040600020336000526020526101e660ff6040600020541690506101dd565b346101b35760203660031901126101b3576103ce6123fe565b6103d66126c9565b6001600160a01b038116156103ee5761033690612721565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101b35760a03660031901126101b35761045b6123fe565b610463612414565b90608480356001600160401b0381116101b35761048490369060040161264a565b6001600160a01b039190838316331480156107ad575b6104a390612835565b828516156104b18115612898565b6104bc604435612b2a565b6104c7606435612b2a565b918587161561076d575b6106bf575b505060443560005260209460978652604060002084861660005286526040600020546105066064358210156128f2565b60443560005260978752604060002085871660005287526064359003604060002055604435600052609786526040600020848216600052865260406000206105516064358254612951565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b61059857005b60a060006105e2958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a48301906124bb565b0393165af160009181610690575b50610666575050600190610602612a49565b6308c379a014610631575b5061061457005b60405162461bcd60e51b81528061062d60048201612ad5565b0390fd5b610639612a67565b9081610645575061060d565b61062d60405192839262461bcd60e51b8452600484015260248301906124bb565b6001600160e01b0319161490506103365760405162461bcd60e51b81528061062d60048201612a00565b6106b1919250843d86116106b8575b6106a9818361249a565b8101906129e0565b90846105f0565b503d61069f565b92959194909360005b845181101561075e576106db8186612821565b51906106e78188612821565b518260005260fb60205260406000205481811061071b576107169360005260fb602052036040600020556127ef565b6106c8565b60405162461bcd60e51b8152602060048201526028602482015260008051602061327f833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104d6565b959260009794919592975b865181101561079f578061078f61079a928b612821565b5161035f828a612821565b610778565b5092959691949093966104d1565b5082841660005260986020526040600020336000526020526104a360ff60406000205416905061049a565b346101b35760003660031901126101b357602060ff61016154166040519015158152f35b346101b35760403660031901126101b3576108156123fe565b61081d612414565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101b35760203660031901126101b35761086b6126c9565b60ff6101615416610890576101675461033690600435906001600160a01b0316613120565b604051637abbf1c960e01b8152600490fd5b346101b35760003660031901126101b357602060405160648152f35b346101b35760203660031901126101b3576004356000526101666020526020604060002054604051908152f35b346101b35760203660031901126101b35760043560005260fb6020526020604060002054604051908152f35b346101b35760a03660031901126101b3576004356001600160401b0381116101b35761094790369060040161252a565b906024356001600160401b0381116101b35761096790369060040161252a565b6044356001600160401b0381116101b35761098690369060040161252a565b90929091906064356001600160a01b03811690036101b357608435956001600160a01b03871687036101b3576000549560ff8760081c161596878098610fc7575b8015610fb0575b15610f545760ff19811660011760005587610f42575b506064356001600160a01b031615610f30576001600160401b038211610d38578190610a1261015f5461242a565b601f8111610ec2575b50600090601f8311600114610e3957600092610e2e575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610d3857610a636101605461242a565b601f8111610dcc575b50600090601f8311600114610d5957610ad79493929160009183610d4e575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ac760ff60005460081c16610ac281612c53565b612c53565b610ad033612721565b3691612604565b91610aed60ff60005460081c16610ac281612c53565b82516001600160401b038111610d3857610b0860995461242a565b601f8111610cd3575b506020601f8211600114610c6c5781929394600092610c61575b50508160011b916000199060031b1c1916176099555b610b5f60ff60005460081c16610b5681612c53565b610ac281612c53565b61016780546001600160a01b0319166064356001600160a01b0316179055600a610168556040516103e890602090610b9681612464565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610c09575b50610bcb606435612721565b610bd157005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101656020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610bbf565b015190508480610b2b565b601f198216906099600052806000209160005b818110610cbb57509583600195969710610ca2575b505050811b01609955610b41565b015160001960f88460031b161c19169055848080610c94565b9192602060018192868b015181550194019201610c7f565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610d2e575b601f0160051c01905b818110610d225750610b11565b60008155600101610d15565b9091508190610d0c565b634e487b7160e01b600052604160045260246000fd5b013590508780610a8b565b61016060005260206000209160005b601f1985168110610db45750918391600193610ad7979695601f19811610610d9a575b505050811b0161016055610aa2565b0135600019600384901b60f8161c19169055878080610d8b565b90926020600181928686013581550194019101610d68565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610e27575b601f830160051c82018110610e1b575050610a6c565b60008155600101610e05565b5080610e05565b013590508880610a32565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610eaa576001945083601f19811610610e90575b505050811b0161015f55610a49565b0135600019600384901b60f8161c19169055888080610e81565b81810135835560209485019460019093019201610e66565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510610f29575b90849392915b601f830160051c82018110610f1a575050610a1b565b60008155859450600101610f04565b5080610efe565b604051637827912560e01b8152600490fd5b61ffff191661010117600055886109e4565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156109ce5750600160ff8216146109ce565b50600160ff8216106109c7565b346101b357610fe2366124fb565b6001600160a01b0390911690338214611054573360005260986020526040600020826000526020526110248160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101b35760003660031901126101b3576040516000906101608054906110d18261242a565b9081845260019283811690816000146111565750600114611115575b611111846110fd8188038261249a565b6040519182916020835260208301906124bb565b0390f35b90935060005260209283600020916000925b8284106111435750505081611111936110fd92820101936110ed565b8054858501870152928501928101611127565b61111196506110fd9450602092508593915060ff191682840152151560051b820101936110ed565b346101b35760003660031901126101b3576033546040516001600160a01b039091168152602090f35b346101b35760003660031901126101b3576111c06126c9565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101b35760403660031901126101b3576001600160401b036004358181116101b35761122790369060040161252a565b61122f6126c9565b60ff61016154166108905760243515611454576101629161125083546127ef565b809355604051906060820182811086821117610d38576040526024358252611279368483612604565b6020830190815260016040840152846000526101636020526040600020908351825551928351968711610d38578686946112c56020996112bc600187015461242a565b60018701612bff565b8890601f83116001146113b55760407f7775d6ac27837184534d17b6cdcdcc82f564fa44d02ec9e6a2efa2aee69fe58196948461133b9561139f98956002956000926113aa575b50508160011b916000199060031b1c19161760018501555b0151151591019060ff801983541691151516179055565b6000848152610164885260409081902080546001600160a01b0319163317905551878152849060008051602061325f833981519152908061137f818c018a876130ff565b0390a26040519182916024358352604089840152339660408401916130ff565b0390a3604051908152f35b015190508e8061130c565b9060018501600052896000209160005b601f198516811061143a57507f7775d6ac27837184534d17b6cdcdcc82f564fa44d02ec9e6a2efa2aee69fe581969460018561139f989560029560409561133b99601f19811610611421575b505050811b016001850155611324565b015160001960f88460031b161c191690558e8080611411565b8183015184558a9850600190930192918b01918b016113c5565b604051631dd0e19360e01b8152600490fd5b346101b35760003660031901126101b35761147f6126c9565b603380546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101b35760603660031901126101b3576114dc6123fe565b6024906001600160401b039082358281116101b3576114ff9036906004016125e6565b9160449081359081116101b35761151a9036906004016125e6565b6001600160a01b039092169233841480156116e2575b61153990612835565b83156115458115612b4f565b611552825185511461295e565b60006040516115608161247f565b526116aa575b60005b81518110156116025761157c8183612821565b516115878286612821565b51908060005260fb6020818152604060002054928484106115c057906115bb959493929160005252036040600020556127ef565b611569565b60405162461bcd60e51b8152600481018390526028818d015260008051602061327f833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b8251811015611677578061161f6116729285612821565b5161162a8287612821565b519080600052609760209080825260406000208760005282526040600020549261165685851015612ba7565b60005281526040600020908660005252036040600020556127ef565b611608565b509060008051602061323f83398151915261169c6000946040519182913395836129bb565b0390a461033660405161247f565b9260009491945b84518110156116d857806116c86116d39286612821565b5161035f8288612821565b6116b1565b5092939093611566565b5083600052609860205260406000203360005260205261153960ff604060002054169050611530565b346101b35760203660031901126101b35760043560005260fb60205260206040600020541515604051908152f35b346101b35760403660031901126101b3576004356001600160401b038082116101b357366023830112156101b35781600401359061177682612581565b92611784604051948561249a565b82845260209260248486019160051b830101913683116101b357602401905b8282106118b8575050506024359081116101b3576117c59036906004016125e6565b8251815103611861578251926117da84612581565b936117e8604051958661249a565b8085526117f7601f1991612581565b01368486013760005b815181101561184a57611845906118356001600160a01b036118228386612821565b511661182e8387612821565b519061276a565b61183f8288612821565b526127ef565b611800565b505050611111604051928284938452830190612695565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101b35781529084019084016117a3565b346101b35760203660031901126101b357600435600052610164602052602060018060a01b0360406000205416604051908152f35b346101b35760203660031901126101b3576119256123fe565b61192d6126c9565b60ff6101615416610890576101685461033691613120565b346101b35760203660031901126101b3576001600160a01b036119666123fe565b16600052610165602052602060ff604060002054166040519015158152f35b346101b35760603660031901126101b35761199e6123fe565b6001600160401b03906024358281116101b3576119bf903690600401612665565b926044359081116101b3576119d8903690600401612665565b919060ff6101615416610890576119f76119ff92610336963691612598565b923691612598565b91612cb3565b346101b35760031960a0368201126101b357611a1f6123fe565b90611a28612414565b6044908135926001600160401b03938481116101b357611a4c9036906004016125e6565b606480358681116101b357611a659036906004016125e6565b9460849687359081116101b357611a8090369060040161264a565b6001600160a01b039489861633148015611da2575b611a9e90612835565b611aab855189511461295e565b85871615611ab98115612898565b868b1615611d5f575b611caa575b60005b8551811015611b5f5780611ae1611b5a9288612821565b518c611aed838d612821565b519180600052609790838c6020948486526040600020828216600052865260406000205491611b1e848410156128f2565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c16600052526103786040600020918254612951565b611aca565b50888a9897969497896040518860008051602061323f83398151915289808d1694169280611b8f873395836129bb565b0390a4873b611b9a57005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a48701611bce91612695565b90848783030190870152611be191612695565b918483030190840152611bf3916124bb565b03921691815a602094600091f160009181611c8a575b50611c625750506001611c1a612a49565b6308c379a014611c2b575b61061457005b611c33612a67565b80611c3e5750611c25565b60405162461bcd60e51b81526020600482015290819061062d9060248301906124bb565b6001600160e01b031916146103365760405162461bcd60e51b81528061062d60048201612a00565b611ca391925060203d81116106b8576106a9818361249a565b9083611c09565b9796949060009993999692965b8551811015611d4f57611cca8187612821565b51611cd58289612821565b519080600052602060fb815260406000205491838310611d0e57611d099493929160fb9160005252036040600020556127ef565b611cb7565b508b9067616c537570706c7960c01b8f60008051602061327f8339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b5090949697989298959195611ac7565b99969498959392919060005b8a51811015611d9357808b61035f82611d87611d8e958f612821565b5192612821565b611d6b565b50909192939598949699611ac2565b50858a166000526098602052604060002033600052602052611a9e60ff604060002054169050611a95565b346101b357611ddb36612557565b9160ff610161541661089057602092611e369160405190611dfb82612464565b6001825285368184013760405192611e1284612464565b6001845286368186013785611e26846127fe565b52611e30846127fe565b52612cb3565b604051908152f35b346101b35760403660031901126101b35760243560043560005261012e60205260406000209060405191611e7183612464565b546001600160a01b0380821680855260a09290921c6020850152929015611edf575b6001600160601b0360208201511691828102928184041490151715611ec957604092612710915116918351928352046020820152f35b634e487b7160e01b600052601160045260246000fd5b50604051611eec81612464565b61012d54838116825260a01c6020820152611e93565b346101b35760403660031901126101b3576004356001600160401b036024358181116101b357611f3690369060040161252a565b9190611f406126c9565b60ff610161541661089057836000526101639160209280845260ff600260406000200154161561206c57856000528352600180604060002001918511610d3857611f9485611f8e845461242a565b84612bff565b6000601f8611600114611ff55791858060008051602061325f83398151915297969593611fe595600093611fea575b501b906000198760031b1c19161790555b6040519383859485528401916130ff565b0390a2005b85013592508a611fc3565b601f1986169083600052856000209160005b818110612057575091879695939160008051602061325f83398151915298611fe596941061203d575b505085811b019055611fd4565b840135600019600389901b60f8161c191690558880612030565b86830135845592840192918701918701612007565b60405163c927e5bf60e01b815260048101879052602490fd5b346101b3576020806003193601126101b3576004356000526101638152600180604060002001908260405180936000908054906120c18261242a565b808552918681169081156121e657506001146121a5575b50506120e69250038361249a565b8151156121045750905b6111116040519282849384528301906124bb565b905060405190600090836099549161211b8361242a565b9283865285828216918260001461218557505060011461214b575b5050508161214591038261249a565b906120f0565b91909250609960005282600020916000925b82841061217257505050820101818385612136565b805486850186015292840192810161215d565b60ff19168482015293151560051b84019092019350859150869050612136565b9091506000528260002090846000925b8284106121cf57505050916120e6928201018592876120d8565b8054888501870152879450928501928691016121b5565b9150506120e694925060ff191682840152151560051b8201018592876120d8565b346101b357612215366124fb565b9061221e6126c9565b60ff6101615416610890576001600160a01b0316908115610f305760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261016582526122808160406000209060ff801983541691151516179055565b6040519015158152a2005b346101b35760003660031901126101b35760405160009061015f8054906122b18261242a565b90818452600192838116908160001461115657506001146122dc57611111846110fd8188038261249a565b90935060005260209283600020916000925b82841061230a5750505081611111936110fd92820101936110ed565b80548585018701529285019281016122ee565b346101b35760203660031901126101b35760043563ffffffff60e01b81168091036101b3576020906306380de360e31b81149081156123c6575b8115612369575b506040519015158152f35b63152a902d60e11b811491508115612383575b508261235e565b636cdb3d1360e11b8114915081156123b5575b81156123a4575b508261237c565b6301ffc9a760e01b1490508261239d565b6303a24d0760e21b81149150612396565b631030681960e21b81149150612357565b346101b35760403660031901126101b3576020611e366123f56123fe565b6024359061276a565b600435906001600160a01b03821682036101b357565b602435906001600160a01b03821682036101b357565b90600182811c9216801561245a575b602083101461244457565b634e487b7160e01b600052602260045260246000fd5b91607f1691612439565b604081019081106001600160401b03821117610d3857604052565b602081019081106001600160401b03821117610d3857604052565b90601f801991011681019081106001600160401b03821117610d3857604052565b919082519283825260005b8481106124e7575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016124c6565b60409060031901126101b3576004356001600160a01b03811681036101b3579060243580151581036101b35790565b9181601f840112156101b3578235916001600160401b0383116101b357602083818601950101116101b357565b60609060031901126101b3576004356001600160a01b03811681036101b357906024359060443590565b6001600160401b038111610d385760051b60200190565b92916125a382612581565b916125b1604051938461249a565b829481845260208094019160051b81019283116101b357905b8282106125d75750505050565b813581529083019083016125ca565b9080601f830112156101b35781602061260193359101612598565b90565b9291926001600160401b038211610d38576040519161262d601f8201601f19166020018461249a565b8294818452818301116101b3578281602093846000960137010152565b9080601f830112156101b35781602061260193359101612604565b9181601f840112156101b3578235916001600160401b0383116101b3576020808501948460051b0101116101b357565b90815180825260208080930193019160005b8281106126b5575050505090565b8351855293810193928101926001016126a7565b6033546001600160a01b031633036126dd57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561279757600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b6000198114611ec95760010190565b80511561280b5760200190565b634e487b7160e01b600052603260045260246000fd5b805182101561280b5760209160051b010190565b1561283c57565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561289f57565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b156128f957565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b91908201809211611ec957565b1561296557565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b90916129d261260193604084526040840190612695565b916020818403910152612695565b908160209103126101b357516001600160e01b0319811681036101b35790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612a5657565b905060046000803e60005160e01c90565b600060443d1061260157604051600319913d83016004833e81516001600160401b03918282113d602484011117612ac457818401948551938411612acc573d85010160208487010111612ac457506126019291016020019061249a565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612b3782612464565b6001825260203681840137612b4b826127fe565b5290565b15612b5657565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612bae57565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c0d57505050565b600091825260208220906020601f850160051c83019410612c49575b601f0160051c01915b828110612c3e57505050565b818155600101612c32565b9092508290612c29565b15612c5a57565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b038083169291908315610f305760335416331415806130e5575b6130cd578351156130bb5783518151036130a95783519260649384811161308b575060015b8551811015612d7157612d0e8187612821565b516000198201828111612d5c57612d259088612821565b511015612d3a57612d35906127ef565b612cfb565b612d4660249187612821565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612e6357612d8f8684612821565b519586600052610163602081815260409060ff60028360002001541615612e4b57612dba8489612821565b5115612e3a578960005261016690818152612de48360002054612ddd878c612821565b5190612951565b938b60005281528260002054808511612e185750612e0e95969798999a60005252600020556127ef565b9493929190612d7c565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612e798761247f565b60008752612e8a865185511461295e565b60005b8651811015612ecc5780612ea4612ec79287612821565b51612eaf828a612821565b5160005260fb60205261037888600020918254612951565b612e8d565b5090919560005b8651811015612f1d5780612eea612f189287612821565b51612ef5828a612821565b5160005260206097815288600020908c6000525261037888600020918254612951565b612ed3565b509196909395816000885160008051602061323f833981519152339180612f458a8d836129bb565b0390a43b612f56575b505050505050565b612fa96000602094612fb8895197889687958694612f9663bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a4880190612695565b9060031994858884030190880152612695565b918483030160848501526124bb565b03925af16000918161306b575b5061303f5750506001612fd6612a49565b6308c379a014613009575b612ff257505b388080808080612f4e565b5162461bcd60e51b81528061062d60048201612ad5565b613011612a67565b8061301c5750612fe1565b825162461bcd60e51b81526020600482015290819061062d9060248301906124bb565b6001600160e01b031916036130545750612fe7565b5162461bcd60e51b81528061062d60048201612a00565b61308491925060203d81116106b8576106a9818361249a565b9038612fc5565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016560205260ff6040600020541615612cd6565b908060209392818452848401376000828201840152601f01601f1916010190565b6001600160a01b0390811691908215610f30576064821161321e5760018060a01b03199261016781858254161790558261016855606483029280840460641490151715611ec9576001600160601b0383169061271082116131c6576131b491602060405161318d81612464565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a26469706673582212204ca4ff283ff7cda1cad3d691ee2843143f55cef369b79a0c13172ba44fe5a53564736f6c63430008120033","sourceMap":"1123:12716:83:-:0;;;;;;;6007:13:23;1123:12716:83;;;;;;;;;;;;;;6078:31:23;6074:139;;-1:-1:-1;1123:12716:83;;;;;;;;;6074:139:23;1123:12716:83;;;;;;6007:13:23;1123:12716:83;6174:28:23;1123:12716:83;;;;;;6174:28:23;6074:139;;;1123:12716:83;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c8062fdd58e146123d757806301ffc9a71461231d57806306fdde031461228b5780630de54ba0146122075780630e89341c1461208557806318e97fd114611f025780632a55205a14611e3e5780632baf2acb14611dcd5780632eb2c2d614611a055780633512639c146119855780633a3d146f146119455780633ebc82c51461190c57806340c1a064146118d75780634e1273f4146117395780634f558e791461170b5780636b20c454146114c3578063715018a61461146657806372b3b620146111f6578063894ba833146111a75780638da5cb5b1461117e57806395d89b41146110ab578063a22cb46514610fd4578063a7eae21c14610917578063bd85b039146108eb578063c33ae88f146108be578063cfdbf254146108a2578063e27a41bf14610852578063e985e9c5146107fc578063ee070805146107d8578063f242432a14610442578063f2fde38b146103b5578063f5298aca146101b85763ffd25aa41461018657600080fd5b346101b35760203660031901126101b3576004356000526101636020526020604060002054604051908152f35b600080fd5b346101b3576101c636612557565b6001600160a01b039092169190338314801561038c575b6101e690612835565b8215926101f38415612b4f565b6101fc82612b2a565b9161020684612b2a565b9460006040516102158161247f565b52610338575b60005b83518110156102b9576102318185612821565b5161023c8288612821565b51908060005260fb6020818152604060002054928484106102755790610270959493929160005252036040600020556127ef565b61021e565b60405162461bcd60e51b8152600481018390526028602482015260008051602061327f833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102e282821015612ba7565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a461033660405161247f565b005b929060005b8351811015610384578061035461037f9288612821565b5161035f8287612821565b5160005260fb6020526103786040600020918254612951565b90556127ef565b61033d565b50909261021b565b508260005260986020526040600020336000526020526101e660ff6040600020541690506101dd565b346101b35760203660031901126101b3576103ce6123fe565b6103d66126c9565b6001600160a01b038116156103ee5761033690612721565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101b35760a03660031901126101b35761045b6123fe565b610463612414565b90608480356001600160401b0381116101b35761048490369060040161264a565b6001600160a01b039190838316331480156107ad575b6104a390612835565b828516156104b18115612898565b6104bc604435612b2a565b6104c7606435612b2a565b918587161561076d575b6106bf575b505060443560005260209460978652604060002084861660005286526040600020546105066064358210156128f2565b60443560005260978752604060002085871660005287526064359003604060002055604435600052609786526040600020848216600052865260406000206105516064358254612951565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b61059857005b60a060006105e2958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a48301906124bb565b0393165af160009181610690575b50610666575050600190610602612a49565b6308c379a014610631575b5061061457005b60405162461bcd60e51b81528061062d60048201612ad5565b0390fd5b610639612a67565b9081610645575061060d565b61062d60405192839262461bcd60e51b8452600484015260248301906124bb565b6001600160e01b0319161490506103365760405162461bcd60e51b81528061062d60048201612a00565b6106b1919250843d86116106b8575b6106a9818361249a565b8101906129e0565b90846105f0565b503d61069f565b92959194909360005b845181101561075e576106db8186612821565b51906106e78188612821565b518260005260fb60205260406000205481811061071b576107169360005260fb602052036040600020556127ef565b6106c8565b60405162461bcd60e51b8152602060048201526028602482015260008051602061327f833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104d6565b959260009794919592975b865181101561079f578061078f61079a928b612821565b5161035f828a612821565b610778565b5092959691949093966104d1565b5082841660005260986020526040600020336000526020526104a360ff60406000205416905061049a565b346101b35760003660031901126101b357602060ff61016154166040519015158152f35b346101b35760403660031901126101b3576108156123fe565b61081d612414565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101b35760203660031901126101b35761086b6126c9565b60ff6101615416610890576101675461033690600435906001600160a01b0316613120565b604051637abbf1c960e01b8152600490fd5b346101b35760003660031901126101b357602060405160648152f35b346101b35760203660031901126101b3576004356000526101666020526020604060002054604051908152f35b346101b35760203660031901126101b35760043560005260fb6020526020604060002054604051908152f35b346101b35760a03660031901126101b3576004356001600160401b0381116101b35761094790369060040161252a565b906024356001600160401b0381116101b35761096790369060040161252a565b6044356001600160401b0381116101b35761098690369060040161252a565b90929091906064356001600160a01b03811690036101b357608435956001600160a01b03871687036101b3576000549560ff8760081c161596878098610fc7575b8015610fb0575b15610f545760ff19811660011760005587610f42575b506064356001600160a01b031615610f30576001600160401b038211610d38578190610a1261015f5461242a565b601f8111610ec2575b50600090601f8311600114610e3957600092610e2e575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610d3857610a636101605461242a565b601f8111610dcc575b50600090601f8311600114610d5957610ad79493929160009183610d4e575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ac760ff60005460081c16610ac281612c53565b612c53565b610ad033612721565b3691612604565b91610aed60ff60005460081c16610ac281612c53565b82516001600160401b038111610d3857610b0860995461242a565b601f8111610cd3575b506020601f8211600114610c6c5781929394600092610c61575b50508160011b916000199060031b1c1916176099555b610b5f60ff60005460081c16610b5681612c53565b610ac281612c53565b61016780546001600160a01b0319166064356001600160a01b0316179055600a610168556040516103e890602090610b9681612464565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610c09575b50610bcb606435612721565b610bd157005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101656020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610bbf565b015190508480610b2b565b601f198216906099600052806000209160005b818110610cbb57509583600195969710610ca2575b505050811b01609955610b41565b015160001960f88460031b161c19169055848080610c94565b9192602060018192868b015181550194019201610c7f565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610d2e575b601f0160051c01905b818110610d225750610b11565b60008155600101610d15565b9091508190610d0c565b634e487b7160e01b600052604160045260246000fd5b013590508780610a8b565b61016060005260206000209160005b601f1985168110610db45750918391600193610ad7979695601f19811610610d9a575b505050811b0161016055610aa2565b0135600019600384901b60f8161c19169055878080610d8b565b90926020600181928686013581550194019101610d68565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610e27575b601f830160051c82018110610e1b575050610a6c565b60008155600101610e05565b5080610e05565b013590508880610a32565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610eaa576001945083601f19811610610e90575b505050811b0161015f55610a49565b0135600019600384901b60f8161c19169055888080610e81565b81810135835560209485019460019093019201610e66565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510610f29575b90849392915b601f830160051c82018110610f1a575050610a1b565b60008155859450600101610f04565b5080610efe565b604051637827912560e01b8152600490fd5b61ffff191661010117600055886109e4565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156109ce5750600160ff8216146109ce565b50600160ff8216106109c7565b346101b357610fe2366124fb565b6001600160a01b0390911690338214611054573360005260986020526040600020826000526020526110248160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101b35760003660031901126101b3576040516000906101608054906110d18261242a565b9081845260019283811690816000146111565750600114611115575b611111846110fd8188038261249a565b6040519182916020835260208301906124bb565b0390f35b90935060005260209283600020916000925b8284106111435750505081611111936110fd92820101936110ed565b8054858501870152928501928101611127565b61111196506110fd9450602092508593915060ff191682840152151560051b820101936110ed565b346101b35760003660031901126101b3576033546040516001600160a01b039091168152602090f35b346101b35760003660031901126101b3576111c06126c9565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101b35760403660031901126101b3576001600160401b036004358181116101b35761122790369060040161252a565b61122f6126c9565b60ff61016154166108905760243515611454576101629161125083546127ef565b809355604051906060820182811086821117610d38576040526024358252611279368483612604565b6020830190815260016040840152846000526101636020526040600020908351825551928351968711610d38578686946112c56020996112bc600187015461242a565b60018701612bff565b8890601f83116001146113b55760407f7775d6ac27837184534d17b6cdcdcc82f564fa44d02ec9e6a2efa2aee69fe58196948461133b9561139f98956002956000926113aa575b50508160011b916000199060031b1c19161760018501555b0151151591019060ff801983541691151516179055565b6000848152610164885260409081902080546001600160a01b0319163317905551878152849060008051602061325f833981519152908061137f818c018a876130ff565b0390a26040519182916024358352604089840152339660408401916130ff565b0390a3604051908152f35b015190508e8061130c565b9060018501600052896000209160005b601f198516811061143a57507f7775d6ac27837184534d17b6cdcdcc82f564fa44d02ec9e6a2efa2aee69fe581969460018561139f989560029560409561133b99601f19811610611421575b505050811b016001850155611324565b015160001960f88460031b161c191690558e8080611411565b8183015184558a9850600190930192918b01918b016113c5565b604051631dd0e19360e01b8152600490fd5b346101b35760003660031901126101b35761147f6126c9565b603380546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101b35760603660031901126101b3576114dc6123fe565b6024906001600160401b039082358281116101b3576114ff9036906004016125e6565b9160449081359081116101b35761151a9036906004016125e6565b6001600160a01b039092169233841480156116e2575b61153990612835565b83156115458115612b4f565b611552825185511461295e565b60006040516115608161247f565b526116aa575b60005b81518110156116025761157c8183612821565b516115878286612821565b51908060005260fb6020818152604060002054928484106115c057906115bb959493929160005252036040600020556127ef565b611569565b60405162461bcd60e51b8152600481018390526028818d015260008051602061327f833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b8251811015611677578061161f6116729285612821565b5161162a8287612821565b519080600052609760209080825260406000208760005282526040600020549261165685851015612ba7565b60005281526040600020908660005252036040600020556127ef565b611608565b509060008051602061323f83398151915261169c6000946040519182913395836129bb565b0390a461033660405161247f565b9260009491945b84518110156116d857806116c86116d39286612821565b5161035f8288612821565b6116b1565b5092939093611566565b5083600052609860205260406000203360005260205261153960ff604060002054169050611530565b346101b35760203660031901126101b35760043560005260fb60205260206040600020541515604051908152f35b346101b35760403660031901126101b3576004356001600160401b038082116101b357366023830112156101b35781600401359061177682612581565b92611784604051948561249a565b82845260209260248486019160051b830101913683116101b357602401905b8282106118b8575050506024359081116101b3576117c59036906004016125e6565b8251815103611861578251926117da84612581565b936117e8604051958661249a565b8085526117f7601f1991612581565b01368486013760005b815181101561184a57611845906118356001600160a01b036118228386612821565b511661182e8387612821565b519061276a565b61183f8288612821565b526127ef565b611800565b505050611111604051928284938452830190612695565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101b35781529084019084016117a3565b346101b35760203660031901126101b357600435600052610164602052602060018060a01b0360406000205416604051908152f35b346101b35760203660031901126101b3576119256123fe565b61192d6126c9565b60ff6101615416610890576101685461033691613120565b346101b35760203660031901126101b3576001600160a01b036119666123fe565b16600052610165602052602060ff604060002054166040519015158152f35b346101b35760603660031901126101b35761199e6123fe565b6001600160401b03906024358281116101b3576119bf903690600401612665565b926044359081116101b3576119d8903690600401612665565b919060ff6101615416610890576119f76119ff92610336963691612598565b923691612598565b91612cb3565b346101b35760031960a0368201126101b357611a1f6123fe565b90611a28612414565b6044908135926001600160401b03938481116101b357611a4c9036906004016125e6565b606480358681116101b357611a659036906004016125e6565b9460849687359081116101b357611a8090369060040161264a565b6001600160a01b039489861633148015611da2575b611a9e90612835565b611aab855189511461295e565b85871615611ab98115612898565b868b1615611d5f575b611caa575b60005b8551811015611b5f5780611ae1611b5a9288612821565b518c611aed838d612821565b519180600052609790838c6020948486526040600020828216600052865260406000205491611b1e848410156128f2565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c16600052526103786040600020918254612951565b611aca565b50888a9897969497896040518860008051602061323f83398151915289808d1694169280611b8f873395836129bb565b0390a4873b611b9a57005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a48701611bce91612695565b90848783030190870152611be191612695565b918483030190840152611bf3916124bb565b03921691815a602094600091f160009181611c8a575b50611c625750506001611c1a612a49565b6308c379a014611c2b575b61061457005b611c33612a67565b80611c3e5750611c25565b60405162461bcd60e51b81526020600482015290819061062d9060248301906124bb565b6001600160e01b031916146103365760405162461bcd60e51b81528061062d60048201612a00565b611ca391925060203d81116106b8576106a9818361249a565b9083611c09565b9796949060009993999692965b8551811015611d4f57611cca8187612821565b51611cd58289612821565b519080600052602060fb815260406000205491838310611d0e57611d099493929160fb9160005252036040600020556127ef565b611cb7565b508b9067616c537570706c7960c01b8f60008051602061327f8339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b5090949697989298959195611ac7565b99969498959392919060005b8a51811015611d9357808b61035f82611d87611d8e958f612821565b5192612821565b611d6b565b50909192939598949699611ac2565b50858a166000526098602052604060002033600052602052611a9e60ff604060002054169050611a95565b346101b357611ddb36612557565b9160ff610161541661089057602092611e369160405190611dfb82612464565b6001825285368184013760405192611e1284612464565b6001845286368186013785611e26846127fe565b52611e30846127fe565b52612cb3565b604051908152f35b346101b35760403660031901126101b35760243560043560005261012e60205260406000209060405191611e7183612464565b546001600160a01b0380821680855260a09290921c6020850152929015611edf575b6001600160601b0360208201511691828102928184041490151715611ec957604092612710915116918351928352046020820152f35b634e487b7160e01b600052601160045260246000fd5b50604051611eec81612464565b61012d54838116825260a01c6020820152611e93565b346101b35760403660031901126101b3576004356001600160401b036024358181116101b357611f3690369060040161252a565b9190611f406126c9565b60ff610161541661089057836000526101639160209280845260ff600260406000200154161561206c57856000528352600180604060002001918511610d3857611f9485611f8e845461242a565b84612bff565b6000601f8611600114611ff55791858060008051602061325f83398151915297969593611fe595600093611fea575b501b906000198760031b1c19161790555b6040519383859485528401916130ff565b0390a2005b85013592508a611fc3565b601f1986169083600052856000209160005b818110612057575091879695939160008051602061325f83398151915298611fe596941061203d575b505085811b019055611fd4565b840135600019600389901b60f8161c191690558880612030565b86830135845592840192918701918701612007565b60405163c927e5bf60e01b815260048101879052602490fd5b346101b3576020806003193601126101b3576004356000526101638152600180604060002001908260405180936000908054906120c18261242a565b808552918681169081156121e657506001146121a5575b50506120e69250038361249a565b8151156121045750905b6111116040519282849384528301906124bb565b905060405190600090836099549161211b8361242a565b9283865285828216918260001461218557505060011461214b575b5050508161214591038261249a565b906120f0565b91909250609960005282600020916000925b82841061217257505050820101818385612136565b805486850186015292840192810161215d565b60ff19168482015293151560051b84019092019350859150869050612136565b9091506000528260002090846000925b8284106121cf57505050916120e6928201018592876120d8565b8054888501870152879450928501928691016121b5565b9150506120e694925060ff191682840152151560051b8201018592876120d8565b346101b357612215366124fb565b9061221e6126c9565b60ff6101615416610890576001600160a01b0316908115610f305760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261016582526122808160406000209060ff801983541691151516179055565b6040519015158152a2005b346101b35760003660031901126101b35760405160009061015f8054906122b18261242a565b90818452600192838116908160001461115657506001146122dc57611111846110fd8188038261249a565b90935060005260209283600020916000925b82841061230a5750505081611111936110fd92820101936110ed565b80548585018701529285019281016122ee565b346101b35760203660031901126101b35760043563ffffffff60e01b81168091036101b3576020906306380de360e31b81149081156123c6575b8115612369575b506040519015158152f35b63152a902d60e11b811491508115612383575b508261235e565b636cdb3d1360e11b8114915081156123b5575b81156123a4575b508261237c565b6301ffc9a760e01b1490508261239d565b6303a24d0760e21b81149150612396565b631030681960e21b81149150612357565b346101b35760403660031901126101b3576020611e366123f56123fe565b6024359061276a565b600435906001600160a01b03821682036101b357565b602435906001600160a01b03821682036101b357565b90600182811c9216801561245a575b602083101461244457565b634e487b7160e01b600052602260045260246000fd5b91607f1691612439565b604081019081106001600160401b03821117610d3857604052565b602081019081106001600160401b03821117610d3857604052565b90601f801991011681019081106001600160401b03821117610d3857604052565b919082519283825260005b8481106124e7575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016124c6565b60409060031901126101b3576004356001600160a01b03811681036101b3579060243580151581036101b35790565b9181601f840112156101b3578235916001600160401b0383116101b357602083818601950101116101b357565b60609060031901126101b3576004356001600160a01b03811681036101b357906024359060443590565b6001600160401b038111610d385760051b60200190565b92916125a382612581565b916125b1604051938461249a565b829481845260208094019160051b81019283116101b357905b8282106125d75750505050565b813581529083019083016125ca565b9080601f830112156101b35781602061260193359101612598565b90565b9291926001600160401b038211610d38576040519161262d601f8201601f19166020018461249a565b8294818452818301116101b3578281602093846000960137010152565b9080601f830112156101b35781602061260193359101612604565b9181601f840112156101b3578235916001600160401b0383116101b3576020808501948460051b0101116101b357565b90815180825260208080930193019160005b8281106126b5575050505090565b8351855293810193928101926001016126a7565b6033546001600160a01b031633036126dd57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561279757600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b6000198114611ec95760010190565b80511561280b5760200190565b634e487b7160e01b600052603260045260246000fd5b805182101561280b5760209160051b010190565b1561283c57565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561289f57565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b156128f957565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b91908201809211611ec957565b1561296557565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b90916129d261260193604084526040840190612695565b916020818403910152612695565b908160209103126101b357516001600160e01b0319811681036101b35790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612a5657565b905060046000803e60005160e01c90565b600060443d1061260157604051600319913d83016004833e81516001600160401b03918282113d602484011117612ac457818401948551938411612acc573d85010160208487010111612ac457506126019291016020019061249a565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612b3782612464565b6001825260203681840137612b4b826127fe565b5290565b15612b5657565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612bae57565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c0d57505050565b600091825260208220906020601f850160051c83019410612c49575b601f0160051c01915b828110612c3e57505050565b818155600101612c32565b9092508290612c29565b15612c5a57565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b038083169291908315610f305760335416331415806130e5575b6130cd578351156130bb5783518151036130a95783519260649384811161308b575060015b8551811015612d7157612d0e8187612821565b516000198201828111612d5c57612d259088612821565b511015612d3a57612d35906127ef565b612cfb565b612d4660249187612821565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612e6357612d8f8684612821565b519586600052610163602081815260409060ff60028360002001541615612e4b57612dba8489612821565b5115612e3a578960005261016690818152612de48360002054612ddd878c612821565b5190612951565b938b60005281528260002054808511612e185750612e0e95969798999a60005252600020556127ef565b9493929190612d7c565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612e798761247f565b60008752612e8a865185511461295e565b60005b8651811015612ecc5780612ea4612ec79287612821565b51612eaf828a612821565b5160005260fb60205261037888600020918254612951565b612e8d565b5090919560005b8651811015612f1d5780612eea612f189287612821565b51612ef5828a612821565b5160005260206097815288600020908c6000525261037888600020918254612951565b612ed3565b509196909395816000885160008051602061323f833981519152339180612f458a8d836129bb565b0390a43b612f56575b505050505050565b612fa96000602094612fb8895197889687958694612f9663bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a4880190612695565b9060031994858884030190880152612695565b918483030160848501526124bb565b03925af16000918161306b575b5061303f5750506001612fd6612a49565b6308c379a014613009575b612ff257505b388080808080612f4e565b5162461bcd60e51b81528061062d60048201612ad5565b613011612a67565b8061301c5750612fe1565b825162461bcd60e51b81526020600482015290819061062d9060248301906124bb565b6001600160e01b031916036130545750612fe7565b5162461bcd60e51b81528061062d60048201612a00565b61308491925060203d81116106b8576106a9818361249a565b9038612fc5565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016560205260ff6040600020541615612cd6565b908060209392818452848401376000828201840152601f01601f1916010190565b6001600160a01b0390811691908215610f30576064821161321e5760018060a01b03199261016781858254161790558261016855606483029280840460641490151715611ec9576001600160601b0383169061271082116131c6576131b491602060405161318d81612464565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a26469706673582212204ca4ff283ff7cda1cad3d691ee2843143f55cef369b79a0c13172ba44fe5a53564736f6c63430008120033","sourceMap":"1123:12716:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;9435:12;1123:12716;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:12716:83;;;;;929:10:34;764:23:29;;:66;;;;1123:12716:83;743:159:29;;;:::i;:::-;11246:18:26;;;11238:66;11246:18;;11238:66;:::i;:::-;11379:21;;;:::i;:::-;11437:25;;;;:::i;:::-;1123:12716:83;;;;;;;:::i;:::-;;1658:156:30;;1123:12716:83;;1896:3:30;1123:12716:83;;1880:14:30;;;;;1932:6;;;;:::i;:::-;1123:12716:83;1973:10:30;;;;:::i;:::-;1123:12716:83;;;;;2018:12:30;1123:12716:83;;;;;;;;2060:16:30;;;;1123:12716:83;;;1896:3:30;1123:12716:83;;;;;;;;;;;;;1896:3:30;:::i;:::-;1865:13;;1123:12716:83;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:12716:83;;;;-1:-1:-1;;;1123:12716:83;;;;;;;1880:14:30;1123:12716:83;1880:14:30;;;1123:12716:83;;;11572:9:26;1123:12716:83;;;;;;;;;;;;;;;11601:70:26;11609:21;;;;11601:70;:::i;:::-;1123:12716:83;;;11572:9:26;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;11773:54:26;1123:12716:83;929:10:34;11773:54:26;;1123:12716:83;;;;:::i;:::-;;1658:156:30;1701:13;;1123:12716:83;1732:3:30;1123:12716:83;;1716:14:30;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:12716:83;1768:6:30;;;;:::i;:::-;1123:12716:83;;;1755:12:30;1123:12716:83;;1755:34:30;1123:12716:83;;;;;;1755:34:30;:::i;:::-;1123:12716:83;;1732:3:30;:::i;:::-;1701:13;;1716:14;;;;1658:156;;764:66:29;1123:12716:83;;;;3873:18:26;1123:12716:83;;;;;929:10:34;1123:12716:83;;;;743:159:29;1123:12716:83;;;;;;764:66:29;;;;1123:12716:83;;;;;;-1:-1:-1;;1123:12716:83;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;-1:-1:-1;;;;;1123:12716:83;;2402:22:17;1123:12716:83;;2496:8:17;;;:::i;1123:12716:83:-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:12716:83;;;;;929:10:34;4184:20:26;:60;;;;1123:12716:83;4163:153:26;;;:::i;:::-;1123:12716:83;;;5507:16:26;5499:66;5507:16;;5499:66;:::i;:::-;5640:21;1123:12716:83;;5640:21:26;:::i;:::-;5698:25;1123:12716:83;;5698:25:26;:::i;:::-;1123:12716:83;;;;1662:18:30;1658:156;;1123:12716:83;1824:424:30;;1123:12716:83;;;;;;;;;5827:9:26;1123:12716:83;;;;;;;;;;;;;;;;5856:76:26;1123:12716:83;;5864:21:26;;;5856:76;:::i;:::-;1123:12716:83;;;;5827:9:26;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;5827:9:26;1123:12716:83;;;;;;;;;;;;;;;6028:27:26;1123:12716:83;;;;6028:27:26;:::i;:::-;1123:12716:83;;;;;;;;;;;;;;;;;;;;;929:10:34;6071:46:26;1123:12716:83;929:10:34;6071:46:26;;1713:19:33;;15996:538:26;;1123:12716:83;15996:538:26;1123:12716:83;;;;;;;;;;;;;;;;;;;16035:83:26;;;;929:10:34;1123:12716:83;16035:83:26;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16035:83:26;1123:12716:83;;16035:83:26;;1123:12716:83;;16035:83:26;;;15996:538;-1:-1:-1;16031:493:26;;;;1123:12716:83;16031:493:26;;;:::i;:::-;;;;;;;;;1123:12716:83;16031:493:26;1123:12716:83;;-1:-1:-1;;;16447:62:26;;1123:12716:83;16447:62:26;1123:12716:83;16447:62:26;;;:::i;:::-;;;;16031:493;16341:81;;:::i;:::-;;;;;16031:493;;;16341:81;1123:12716:83;;;;;;;;;16393:14:26;;1123:12716:83;16393:14:26;;1123:12716:83;;;;;;:::i;16031:493:26:-;-1:-1:-1;;;;;;1123:12716:83;16163:163:26;;-1:-1:-1;16031:493:26;16163:163;1123:12716:83;;-1:-1:-1;;;16257:50:26;;1123:12716:83;16257:50:26;1123:12716:83;16257:50:26;;;:::i;16035:83::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1824:424:30;1865:13;;;;;;1123:12716:83;1896:3:30;1123:12716:83;;1880:14:30;;;;;1932:6;;;;:::i;:::-;1123:12716:83;1973:10:30;;;;;:::i;:::-;1123:12716:83;;;;2018:12:30;1123:12716:83;;;;;;2060:16:30;;;1123:12716:83;;1896:3:30;1123:12716:83;;;2018:12:30;1123:12716:83;;;;;;;1896:3:30;:::i;:::-;1865:13;;1123:12716:83;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:12716:83;;;;-1:-1:-1;;;1123:12716:83;;;;;;;1880:14:30;;;;;;;;;1824:424;;;;1658:156;1701:13;;1123:12716:83;1701:13:30;;;;;;1732:3;1123:12716:83;;1716:14:30;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:12716:83;1768:6:30;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;1658:156;;4184:60:26;1123:12716:83;;;;;;3873:18:26;1123:12716:83;;;;;929:10:34;1123:12716:83;;;;4163:153:26;1123:12716:83;;;;;;4184:60:26;;;;1123:12716:83;;;;;;-1:-1:-1;;1123:12716:83;;;;;;1372:29;1123:12716;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;3873:18:26;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;1303:62:17;;:::i;:::-;1123:12716:83;2838:8;1123:12716;;2834:41;;8220:22;1123:12716;8244:11;;1123:12716;;;-1:-1:-1;;;;;1123:12716:83;8244:11;:::i;2834:41::-;1123:12716;;-1:-1:-1;;;2855:20:83;;1123:12716;;2855:20;1123:12716;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;1558:3;1123:12716;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;9609:16;1123:12716;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;1033:12:30;1123:12716:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;3301:14:23;3347:34;;;;;;1123:12716:83;3346:108:23;;;;1123:12716:83;;;;-1:-1:-1;;1123:12716:83;;;;;;;3562:65:23;;1123:12716:83;-1:-1:-1;1123:12716:83;;-1:-1:-1;;;;;1123:12716:83;3665:22;3661:59;;-1:-1:-1;;;;;1123:12716:83;;;;;;;3821:12;1123:12716;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3821:12;1123:12716;;-1:-1:-1;;;;;1123:12716:83;;;;;3843:16;1123:12716;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3843:16;1123:12716;;3869:16;1123:12716;;;;;;;5366:69:23;1123:12716:83;;;;;;5366:69:23;;;:::i;:::-;;:::i;:::-;1195:12:17;929:10:34;1195:12:17;:::i;:::-;1123:12716:83;;;:::i;:::-;;5366:69:23;1123:12716:83;;;;;;5366:69:23;;;:::i;:::-;1123:12716:83;;-1:-1:-1;;;;;1123:12716:83;;;;;8623:13:26;1123:12716:83;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:26;1123:12716:83;;5366:69:23;1123:12716:83;;;;;;5366:69:23;;;:::i;:::-;;;;:::i;:::-;11951:34:83;1123:12716;;-1:-1:-1;;;;;;1123:12716:83;;;-1:-1:-1;;;;;1123:12716:83;;;;1694:2;11995:38;1123:12716;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:12716:83;;;;;;;3314:35:32;;;;1123:12716:83;;;;-1:-1:-1;;;1123:12716:83;3292:57:32;1123:12716:83;;;4287:252;;1123:12716;;4667:8;1123:12716;;4667:8;:::i;:::-;3647:99:23;;1123:12716:83;3647:99:23;1123:12716:83;;;;;;;3721:14:23;1123:12716:83;;;;;;3721:14:23;1123:12716:83;4287:252;-1:-1:-1;;;;;1123:12716:83;;;;;4428:15;1123:12716;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;;;;4485:43;;;4287:252;;;1123:12716;;;;-1:-1:-1;1123:12716:83;;;;;;;;;;8623:13:26;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:26;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:26;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;3843:16;1123:12716;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3843:16;1123:12716;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3843:16;1123:12716;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;-1:-1:-1;1123:12716:83;;;;;3821:12;1123:12716;;;;;-1:-1:-1;1123:12716:83;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;3821:12;1123:12716;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3821:12;1123:12716;;;;-1:-1:-1;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;-1:-1:-1;1123:12716:83;;;3661:59;1123:12716;;-1:-1:-1;;;3696:24:83;;1123:12716;;3696:24;3562:65:23;-1:-1:-1;;1123:12716:83;;;;;3562:65:23;;;1123:12716:83;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;3346:108:23;3426:4;;1713:19:33;:23;3387:66:23;;3346:108;3387:66;1123:12716:83;;;;;3436:17:23;3346:108;;3347:34;1123:12716:83;;;;;3365:16:23;3347:34;;1123:12716:83;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:12716:83;;;;929:10:34;13309:17:26;;1123:12716:83;;929:10:34;1123:12716:83;;13382:18:26;1123:12716:83;;;;;;;;;;13382:46:26;1123:12716:83;;;;;;;;;;;;;;;;;;;13382:46:26;1123:12716:83;;;;;;;13443:41:26;1123:12716:83;929:10:34;13443:41:26;;1123:12716:83;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;1337:29;;1123:12716;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;1513:6:17;1123:12716:83;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;1303:62:17;;:::i;:::-;8878:15:83;1123:12716;;-1:-1:-1;;1123:12716:83;8889:4;1123:12716;;;8925:10;8908:28;-1:-1:-1;;8908:28:83;1123:12716;;;;;;;-1:-1:-1;;1123:12716:83;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;1123:12716:83;2838:8;1123:12716;;2834:41;;1123:12716;;10816:15;10812:51;;10953:16;1123:12716;10953:16;1123:12716;;10953:16;:::i;:::-;1123:12716;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11118:40;;1123:12716;;;;;11118:40;;1123:12716;;;;11094:12;1123:12716;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;11343:54;1123:12716;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11118:40;1123:12716;;;;;;;;;;;;;;;;;;;;;;;;;11168:13;1123:12716;;;;;;;;;-1:-1:-1;;;;;;1123:12716:83;4930:10;1123:12716;;;;;;;;;-1:-1:-1;;;;;;;;;;;11305:23:83;1123:12716;;;;;;;;:::i;:::-;11305:23;;;1123:12716;;;;;;;;;;;;;;4930:10;1123:12716;;;;;;:::i;:::-;11343:54;;;1123:12716;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;11343:54;1123:12716;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;;;;;;10812:51;1123:12716;;-1:-1:-1;;;10840:23:83;;1123:12716;;10840:23;1123:12716;;;;;;-1:-1:-1;;1123:12716:83;;;;1303:62:17;;:::i;:::-;2758:6;1123:12716:83;;-1:-1:-1;;;;;;1123:12716:83;;;;;;;-1:-1:-1;;;;;1123:12716:83;2806:40:17;1123:12716:83;;2806:40:17;1123:12716:83;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:12716:83;;;;929:10:34;1080:23:29;;:66;;;;1123:12716:83;1059:159:29;;;:::i;:::-;12266:18:26;;12258:66;12266:18;;12258:66;:::i;:::-;12334:81;1123:12716:83;;;;12342:28:26;12334:81;:::i;:::-;1123:12716:83;;;;;;:::i;:::-;;1658:156:30;;1123:12716:83;;1896:3:30;1123:12716:83;;1880:14:30;;;;;1932:6;;;;:::i;:::-;1123:12716:83;1973:10:30;;;;:::i;:::-;1123:12716:83;;;;;2018:12:30;1123:12716:83;;;;;;;;2060:16:30;;;;1123:12716:83;;;1896:3:30;1123:12716:83;;;;;;;;;;;;;1896:3:30;:::i;:::-;1865:13;;1123:12716:83;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:12716:83;;;;-1:-1:-1;;;1123:12716:83;;;;;;;1880:14:30;;;;1123:12716:83;12581:3:26;1123:12716:83;;12565:14:26;;;;;12613:6;;12581:3;12613:6;;;:::i;:::-;1123:12716:83;12650:10:26;;;;:::i;:::-;1123:12716:83;;;;;12697:9:26;1123:12716:83;;;;;;;;;;;;;;;;;12738:21:26;12730:70;12738:21;;;;12730:70;:::i;:::-;1123:12716:83;;;;;;;;;;;;;;;;;12581:3:26;:::i;:::-;12550:13;;12565:14;;;-1:-1:-1;;;;;;;;;;;12924:55:26;1123:12716:83;12565:14:26;1123:12716:83;;929:10:34;;;;12924:55:26;;;:::i;:::-;;;;1123:12716:83;;;;:::i;1658:156:30:-;1701:13;1123:12716:83;1701:13:30;;;1732:3;1123:12716:83;;1716:14:30;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:12716:83;1768:6:30;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;1658:156;;1080:66:29;1123:12716:83;;;;3873:18:26;1123:12716:83;;;;;929:10:34;1123:12716:83;;;;1059:159:29;1123:12716:83;;;;;;1080:66:29;;;;1123:12716:83;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;1033:12:30;1123:12716:83;;;;;;;1229:44:30;;1123:12716:83;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;3146:29:26;1123:12716:83;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3347:3:26;1123:12716:83;;3326:19:26;;;;;3347:3;;3385:30;-1:-1:-1;;;;;3395:11:26;1123:12716:83;3395:11:26;;:::i;:::-;1123:12716:83;;3408:6:26;;;;:::i;:::-;1123:12716:83;3385:30:26;;:::i;:::-;3366:49;;;;:::i;:::-;1123:12716:83;3347:3:26;:::i;:::-;3311:13;;3326:19;;;;1123:12716:83;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;9110:13;1123:12716;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;1123:12716:83;2838:8;1123:12716;;2834:41;;8023:24;1123:12716;8023:24;;;:::i;1123:12716::-;;;;;;-1:-1:-1;;1123:12716:83;;;;-1:-1:-1;;;;;1123:12716:83;;:::i;:::-;;;;9270:15;1123:12716;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;2838:8;1123:12716;;2834:41;;1123:12716;;;5543:44;1123:12716;;;;:::i;:::-;;;;;:::i;:::-;5543:44;;:::i;1123:12716::-;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:12716:83;;;;929:10:34;4675:20:26;:60;;;;1123:12716:83;4654:153:26;;;:::i;:::-;6817:81;1123:12716:83;;;;6825:28:26;6817:81;:::i;:::-;1123:12716:83;;;6916:16:26;6908:66;6916:16;;6908:66;:::i;:::-;1123:12716:83;;;1662:18:30;1658:156;;1123:12716:83;1824:424:30;;1123:12716:83;;7134:3:26;1123:12716:83;;7118:14:26;;;;;7166:6;;7134:3;7166:6;;;:::i;:::-;1123:12716:83;7203:10:26;;;;;:::i;:::-;1123:12716:83;;;;;7250:9:26;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;7291:21:26;7283:76;7291:21;;;;7283:76;:::i;:::-;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7471:27:26;1123:12716:83;;;;;;7471:27:26;:::i;7134:3::-;7103:13;;7118:14;;;;;;;;;1123:12716:83;;;;-1:-1:-1;;;;;;;;;;;1123:12716:83;;;;;;929:10:34;;7524:47:26;929:10:34;;7524:47:26;;;:::i;:::-;;;;1713:19:33;;16774:580:26;;1123:12716:83;16774:580:26;1123:12716:83;;;;;;;;;;;16813:90:26;;;;929:10:34;1123:12716:83;16813:90:26;;1123:12716:83;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;16813:90:26;1123:12716:83;;16813:90:26;;;1123:12716:83;16813:90:26;1123:12716:83;16813:90:26;;1123:12716:83;;16813:90:26;;;16774:580;-1:-1:-1;16809:535:26;;;;1123:12716:83;16809:535:26;;:::i;:::-;;;;;;;;1123:12716:83;16809:535:26;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;1123:12716:83;;-1:-1:-1;;;17213:14:26;;1123:12716:83;;17213:14:26;;1123:12716:83;;;;;;;;;;;:::i;16809:535:26:-;-1:-1:-1;;;;;;1123:12716:83;16978:168:26;16809:535;16978:168;1123:12716:83;;-1:-1:-1;;;17077:50:26;;1123:12716:83;17077:50:26;1123:12716:83;17077:50:26;;;:::i;16813:90::-;;;;;1123:12716:83;16813:90:26;;;;;;;;;:::i;:::-;;;;;1824:424:30;1865:13;;;;1123:12716:83;1865:13:30;;;;;;1896:3;1123:12716:83;;1880:14:30;;;;;1932:6;;;;:::i;:::-;1123:12716:83;1973:10:30;;;;:::i;:::-;1123:12716:83;;;;;;2018:12:30;1123:12716:83;;;;;;2060:16:30;;;;1123:12716:83;;1896:3:30;1123:12716:83;;;;2018:12:30;1123:12716:83;;;;;;;;;1896:3:30;:::i;:::-;1865:13;;1123:12716:83;;;;-1:-1:-1;;;1123:12716:83;-1:-1:-1;;;;;;;;;;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;1880:14:30;;;;;;;;;;;;1824:424;;1658:156;1701:13;;;;;;;;;1123:12716:83;1732:3:30;1123:12716:83;;1716:14:30;;;;;1779:10;;1768:6;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:12716:83;1768:6:30;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;;1658:156;;4675:60:26;1123:12716:83;;;;;;3873:18:26;1123:12716:83;;;;;929:10:34;1123:12716:83;;;;4654:153:26;1123:12716:83;;;;;;4675:60:26;;;;1123:12716:83;;;;;;;:::i;:::-;;;2838:8;1123:12716;;2834:41;;1123:12716;;5312:7;1123:12716;;;;;;;:::i;:::-;5150:1;1123:12716;;;;;;;;;;;;;;:::i;:::-;5150:1;1123:12716;;;;;;;;5215:22;;;;:::i;:::-;1123:12716;5247:20;;;:::i;:::-;1123:12716;5312:7;:::i;:::-;1123:12716;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;2122:17:32;1123:12716:83;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;;;2163:30:32;2159:90;;1123:12716:83;-1:-1:-1;;;;;1123:12716:83;2296:23:32;;1123:12716:83;;;;;;;;;;;;;;;;;;;2756:5:32;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;2159:90:32;1123:12716:83;;;;;;:::i;:::-;2219:19:32;1123:12716:83;;;;;;;;;;;;2159:90:32;;1123:12716:83;;;;;;-1:-1:-1;;1123:12716:83;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;:::i;:::-;1303:62:17;;;;:::i;:::-;1123:12716:83;2838:8;1123:12716;;2834:41;;1123:12716;;;3128:12;1123:12716;;;;;;;3128:29;1123:12716;;;3128:29;1123:12716;;3127:30;3123:70;;1123:12716;;;;;;;;;;8537:31;1123:12716;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8664:24;;;1123:12716;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3123:70;1123:12716;;-1:-1:-1;;;3166:27:83;;1123:12716;3166:27;;1123:12716;;;;;3166:27;1123:12716;;;;;;;;;;;;;;;;;9826:12;1123:12716;;;;;;;9826:31;1123:12716;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;9874:26;:59;;;;;1123:12716;;;;;;;;;;;;;:::i;9874:59::-;1123:12716;;;;;;;;2440:4:26;1123:12716:83;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9874:59;;;1123:12716;;;;;2440:4:26;1123:12716:83;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;-1:-1:-1;1123:12716:83;;-1:-1:-1;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1303:62:17;;;:::i;:::-;1123:12716:83;2838:8;1123:12716;;2834:41;;-1:-1:-1;;;;;1123:12716:83;;7596:21;;7592:58;;1123:12716;7803:41;1123:12716;;;;7752:15;1123:12716;;7752:36;1123:12716;;;;;;;;;;;;;;;;;;;7752:36;1123:12716;;;;;;;7803:41;1123:12716;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;1304:27;;1123:12716;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10182:46:83;;;:97;;;;1123:12716;10182:150;;;;1123:12716;;;;;;;;;;10182:150;-1:-1:-1;;;1810:52:32;;;-1:-1:-1;1810:92:32;;;;10182:150:83;;;;;1810:92:32;-1:-1:-1;;;1759:52:26;;;-1:-1:-1;1759:131:26;;;;1810:92:32;1759:183:26;;;;1810:92:32;;;;;1759:183:26;-1:-1:-1;;;1168:51:36;;-1:-1:-1;1759:183:26;;;:131;-1:-1:-1;;;1827:63:26;;;-1:-1:-1;1759:131:26;;10182:97:83;-1:-1:-1;;;10232:47:83;;;-1:-1:-1;10182:97:83;;1123:12716;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;1599:130:17;1513:6;1123:12716:83;-1:-1:-1;;;;;1123:12716:83;929:10:34;1662:23:17;1123:12716:83;;1599:130:17:o;1123:12716:83:-;;;;;;;;;;;;;;;;;;;;;;;;;2666:187:17;2758:6;1123:12716:83;;-1:-1:-1;;;;;1123:12716:83;;;-1:-1:-1;;;;;;1123:12716:83;;;;;;;;;;2806:40:17;-1:-1:-1;;2806:40:17;2666:187::o;2593:227:26:-;-1:-1:-1;;;;;1123:12716:83;;2706:21:26;;1123:12716:83;;2725:1:26;1123:12716:83;2791:9:26;1123:12716:83;;;2725:1:26;1123:12716:83;;2725:1:26;1123:12716:83;;;;2725:1:26;1123:12716:83;;2593:227:26;:::o;1123:12716:83:-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;;1123:12716:83;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;1123:12716:83;;;;;;;;;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;:::o;17366:193:26:-;1123:12716:83;;;;;;:::i;:::-;17499:1:26;1123:12716:83;;;;;;;;17511:18:26;;;:::i;:::-;1123:12716:83;17366:193:26;:::o;1123:12716:83:-;;;;:::o;:::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;1123:12716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:12716:83;;;;;;;5866:1493;;;-1:-1:-1;;;;;1123:12716:83;;;;5866:1493;;6214:23;;6210:60;;1513:6:17;1123:12716:83;;6284:10;:21;;:53;;;5866:1493;6280:94;;1123:12716;;12433:21;12429:46;;1123:12716;;;;12489:35;12485:69;;1123:12716;;1558:3;;12568:33;;;;12564:97;;12677:13;1123:12716;12714:3;1123:12716;;12692:20;;;;;12737:12;;;;:::i;:::-;1123:12716;-1:-1:-1;;1123:12716:83;;;;;;;12753:16;;;;:::i;:::-;1123:12716;-1:-1:-1;12737:32:83;12733:87;;12714:3;;;:::i;:::-;12677:13;;12733:87;12807:12;1123:12716;12807:12;;;:::i;:::-;1123:12716;;;12778:42;;;;;;;;;1123:12716;12778:42;1123:12716;;;;;;;;;;;;12692:20;;;;;;;;1123:12716;6434:761;6476:3;1123:12716;;6454:20;;;;;6513:12;;;;:::i;:::-;1123:12716;;;;;6544:12;1123:12716;;;;;;;6544:28;1123:12716;;;6544:28;1123:12716;;6543:29;6539:68;;6625:11;;;;:::i;:::-;1123:12716;6625:16;6621:49;;1123:12716;;;6799:16;1123:12716;;;;6799:39;1123:12716;;;;6827:11;;;;:::i;:::-;1123:12716;6799:39;;:::i;:::-;1123:12716;;;;;;;;;;6921:32;;;6917:104;;1123:12716;6476:3;1123:12716;;;;;;;;;;;;6476:3;:::i;:::-;6439:13;;;;;;;6917:104;1123:12716;;;;;;6962:59;;;;;;;;;1123:12716;;;;;;;;;6962:59;6621:49;1123:12716;;-1:-1:-1;;;6650:20:83;;;;;6539:68;1123:12716;;-1:-1:-1;;;6581:26:83;;;;;1123:12716;;;;;6581:26;6454:20;;;;;;;;1123:12716;;;;;;;;:::i;:::-;;;;10313:81:26;1123:12716:83;;;;10321:28:26;10313:81;:::i;:::-;1123:12716:83;1732:3:30;1123:12716:83;;1716:14:30;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:12716:83;1768:6:30;;;;:::i;:::-;1123:12716:83;;;1755:12:30;1123:12716:83;;1755:34:30;1123:12716:83;;;;;;1755:34:30;:::i;1732:3::-;1701:13;;1716:14;;;;;1123:12716:83;10560:3:26;1123:12716:83;;10544:14:26;;;;;10604:10;;10560:3;10604:10;;;:::i;:::-;1123:12716:83;10589:6:26;;;;:::i;:::-;1123:12716:83;;;;10579:9:26;1123:12716:83;;;;;;;;;;10579:35:26;1123:12716:83;;;;;;10579:35:26;:::i;10560:3::-;10529:13;;10544:14;;;;;;;1123:12716:83;;;;-1:-1:-1;;;;;;;;;;;6284:10:83;10640:53:26;;;;;;;:::i;:::-;;;;1713:19:33;16774:580:26;;10524:101;5866:1493:83;;;;;;:::o;16774:580:26:-;1123:12716:83;;;;;;;;;;;;;;;;;;16813:90:26;;;;6284:10:83;16813:90:26;;;1123:12716:83;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;16813:90:26;;;;1123:12716:83;;16813:90:26;;;16774:580;-1:-1:-1;16809:535:26;;;;1123:12716:83;16809:535:26;;:::i;:::-;;;;;;;;;;16774:580;;;;;;;;16809:535;1123:12716:83;-1:-1:-1;;;17267:62:26;;1123:12716:83;17267:62:26;16813:90;17267:62;;;:::i;16809:535::-;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;1123:12716:83;;-1:-1:-1;;;17213:14:26;;1123:12716:83;16813:90:26;17213:14;;1123:12716:83;;;;;;;;;;;:::i;16809:535:26:-;-1:-1:-1;;;;;;1123:12716:83;16982:71:26;16978:168;;16809:535;;;16978:168;1123:12716:83;-1:-1:-1;;;17077:50:26;;1123:12716:83;17077:50:26;16813:90;17077:50;;;:::i;16813:90::-;;;;;1123:12716:83;16813:90:26;;;;;;;;;:::i;:::-;;;;;12564:97:83;1123:12716;;;;;12610:51;;;;;;;;;1123:12716;;;;;12610:51;12485:69;1123:12716;;-1:-1:-1;;;12533:21:83;;;;;12429:46;1123:12716;;-1:-1:-1;;;12463:12:83;;;;;6280:94;1123:12716;;-1:-1:-1;;;6346:28:83;;6284:10;6346:28;;;1123:12716;;;6346:28;6284:53;:10;;6235:1;1123:12716;6310:15;1123:12716;;;;6235:1;1123:12716;;;6309:28;6284:53;;1123:12716;;;;;;;;;;;;;-1:-1:-1;1123:12716:83;;;;;;;;-1:-1:-1;;1123:12716:83;;;;:::o;11643:484::-;-1:-1:-1;;;;;1123:12716:83;;;;11643:484;11740:23;;11736:60;;1558:3;11810:36;;11806:135;;1123:12716;;;;;;11951:34;;1123:12716;;;;;;;;;11995:38;1123:12716;1558:3;1123:12716;;;;;;1558:3;1123:12716;;;;;;;-1:-1:-1;;;;;1123:12716:83;;3131:33:32;2756:5;3131:33;;1123:12716:83;;;;3314:35:32;1123:12716:83;;;;;:::i;:::-;;;;3314:35:32;1123:12716:83;3292:57:32;1123:12716:83;;-1:-1:-1;;;;;;1123:12716:83;-1:-1:-1;;;;;1123:12716:83;;;;;;;;;;;3292:57:32;1123:12716:83;;;;;;;;;;;;11643:484::o;1123:12716::-;;;-1:-1:-1;;;1123:12716:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;1558:3:83;1123:12716;;;;;;11806:135;1123:12716;;-1:-1:-1;;;11869:61:83;;;;;1123:12716;;;1558:3;1123:12716;;;;;;11869:61","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","burn(address,uint256,uint256)":"f5298aca","burnBatch(address,uint256[],uint256[])":"6b20c454","createToken(string,uint256)":"72b3b620","disableContract()":"894ba833","disabled()":"ee070805","exists(uint256)":"4f558e79","init(string,string,string,address,address)":"a7eae21c","isApprovedForAll(address,address)":"e985e9c5","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintBatchTo(address,uint256[],uint256[])":"3512639c","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","royaltyInfo(uint256,uint256)":"2a55205a","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","setDefaultRoyaltyPercentage(uint256)":"e27a41bf","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","totalSupply(uint256)":"bd85b039","transferOwnership(address)":"f2fde38b","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RoyaltyPercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"burnBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBatchTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_percentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRoyaltyPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Clone-safe upgradeable-style implementation used behind minimal proxies. Token ids start at 1.\",\"errors\":{\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported percentage.\",\"supplied\":\"Percentage supplied by the caller.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"params\":{\"tokenId\":\"Token id that is not greater than the previous token id.\"}}]},\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,uint256,string)\":{\"params\":{\"creator\":\"RARE creator recorded for the token id.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createToken(string,uint256)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"exists(uint256)\":{\"details\":\"Indicates whether any token exist with a given id, or not.\"},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and ERC2981 royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintBatchTo(address,uint256[],uint256[])\":{\"details\":\"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.\",\"params\":{\"_amounts\":\"Quantities to mint for each token id.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenIds\":\"Existing token ids to mint.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"Minted token id.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"params\":{\"_percentage\":\"New royalty percentage, expressed as whole percentage points.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"details\":\"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.\",\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"totalSupply(uint256)\":{\"details\":\"Total amount of tokens in with a given id.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"stateVariables\":{\"MAX_BATCH_SIZE\":{\"return\":\"Maximum supported batch item count.\",\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"disabled\":{\"return\":\"True when disabled.\",\"returns\":{\"_0\":\"True when disabled.\"}},\"name\":{\"return\":\"Collection name.\",\"returns\":{\"_0\":\"Collection name.\"}},\"symbol\":{\"return\":\"Collection symbol.\",\"returns\":{\"_0\":\"Collection symbol.\"}}},\"title\":\"RareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"BatchLengthMismatch()\":[{\"notice\":\"Reverted when parallel batch arrays have different lengths.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"notice\":\"Reverted when the default royalty percentage is above 100%.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,uint256,string)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch mint operations.\"},\"createToken(string,uint256)\":{\"notice\":\"Creates a new token type.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintBatchTo(address,uint256[],uint256[])\":{\"notice\":\"Mints existing token ids to a receiver.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints one existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"notice\":\"Updates the collection-wide ERC2981 royalty percentage.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the collection-wide ERC2981 royalty receiver.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes collection-wide minter approval for an address.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Basic RARE Protocol ERC1155 collection with creator and royalty support.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/RareERC1155.sol\":\"RareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7\",\"dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol\":{\"keccak256\":\"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98\",\"dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8\",\"dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol\":{\"keccak256\":\"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9\",\"dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x423f16f31739668c0162422d91b2f9eea3769de9389d876d876928369b298976\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b942a7152ad01624065e302e75505c551348ddeca2bbb80d2ce556a0d15b0b2a\",\"dweb:/ipfs/QmQrtDpdLvntxFnh9tqFVUiRQPHQpf5BZjGp9PhM558gvJ\"]},\"src/token/ERC1155/RareERC1155.sol\":{\"keccak256\":\"0x55f6a6dfa9cca9ead5dca8c3a87dbca9ddf939c90f52df5ff2f5665337c6aea0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb631d06f6a0d9f23238b9b44a776e905eb0c3408ecf2fe8709378af57560f6f\",\"dweb:/ipfs/Qma1SKR78c6zh2VQMAGFaKKhmhqn9HvyCqXq3ruWjYqDqq\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[],"type":"error","name":"BatchLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"RoyaltyPercentageTooHigh"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"values","type":"uint256[]","indexed":false}],"type":"event","name":"TransferBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"TransferSingle","anonymous":false},{"inputs":[{"internalType":"string","name":"value","type":"string","indexed":false},{"internalType":"uint256","name":"id","type":"uint256","indexed":true}],"type":"event","name":"URI","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"burnBatch"},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"mintBatchTo"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyPercentage"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"createToken(string,uint256)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"exists(uint256)":{"details":"Indicates whether any token exist with a given id, or not."},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and ERC2981 royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedForAll(address,address)":{"details":"See {IERC1155-isApprovedForAll}."},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintBatchTo(address,uint256[],uint256[])":{"details":"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.","params":{"_amounts":"Quantities to mint for each token id.","_receiver":"Address that receives the minted tokens.","_tokenIds":"Existing token ids to mint."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"Minted token id."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"See {IERC1155-safeBatchTransferFrom}."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"See {IERC1155-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC1155-setApprovalForAll}."},"setDefaultRoyaltyPercentage(uint256)":{"params":{"_percentage":"New royalty percentage, expressed as whole percentage points."}},"setDefaultRoyaltyReceiver(address)":{"params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"details":"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.","params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"totalSupply(uint256)":{"details":"Total amount of tokens in with a given id."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch mint operations."},"createToken(string,uint256)":{"notice":"Creates a new token type."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintBatchTo(address,uint256[],uint256[])":{"notice":"Mints existing token ids to a receiver."},"mintTo(address,uint256,uint256)":{"notice":"Mints one existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"setDefaultRoyaltyPercentage(uint256)":{"notice":"Updates the collection-wide ERC2981 royalty percentage."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the collection-wide ERC2981 royalty receiver."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes collection-wide minter approval for an address."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/RareERC1155.sol":"RareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol":{"keccak256":"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856","urls":["bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7","dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"keccak256":"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b","urls":["bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce","dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol":{"keccak256":"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8","urls":["bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83","dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol":{"keccak256":"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7","urls":["bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98","dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"keccak256":"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e","urls":["bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8","dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"keccak256":"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448","urls":["bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9","dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol":{"keccak256":"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f","urls":["bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9","dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a","urls":["bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7","dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x423f16f31739668c0162422d91b2f9eea3769de9389d876d876928369b298976","urls":["bzz-raw://b942a7152ad01624065e302e75505c551348ddeca2bbb80d2ce556a0d15b0b2a","dweb:/ipfs/QmQrtDpdLvntxFnh9tqFVUiRQPHQpf5BZjGp9PhM558gvJ"],"license":"MIT"},"src/token/ERC1155/RareERC1155.sol":{"keccak256":"0x55f6a6dfa9cca9ead5dca8c3a87dbca9ddf939c90f52df5ff2f5665337c6aea0","urls":["bzz-raw://bb631d06f6a0d9f23238b9b44a776e905eb0c3408ecf2fe8709378af57560f6f","dweb:/ipfs/Qma1SKR78c6zh2VQMAGFaKKhmhqn9HvyCqXq3ruWjYqDqq"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":83} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBatch","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnBatch","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"},{"name":"_royaltyReceiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"exists","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintBatchTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyPercentage","inputs":[{"name":"_percentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyReceiverForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"_interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"royaltyReceiver","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"TransferBatch","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"values","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"TransferSingle","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"URI","inputs":[{"name":"value","type":"string","indexed":false,"internalType":"string"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"BatchLengthMismatch","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"RoyaltyPercentageTooHigh","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x60808060405234620000c6576000549060ff8260081c1662000074575060ff8082160362000038575b60405161345b9081620000cc8239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e146124a657806301ffc9a7146123ec57806306fdde031461235a5780630de54ba0146122d65780630e89341c146121545780631542bb9514611ec957806318e97fd114611d465780632a55205a14611c985780632baf2acb14611c275780632eb2c2d61461185f5780633512639c146117df5780633a3d146f1461179f5780633ebc82c51461176657806340c1a064146117315780634e1273f4146115935780634f558e79146115655780636b20c4541461131d578063715018a6146112c0578063894ba833146112715780638da5cb5b1461124857806395d89b4114611175578063a22cb4651461109e578063a7eae21c146109f3578063bd85b039146109c7578063c33ae88f1461099a578063cfdbf2541461097e578063e2200a0b146108ad578063e27a41bf1461085d578063e985e9c514610807578063ee070805146107e3578063f242432a1461044d578063f2fde38b146103c0578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101636020526020604060002054604051908152f35b600080fd5b346101be576101d136612626565b6001600160a01b0390921691903383148015610397575b6101f190612904565b8215926101fe8415612c1e565b61020782612bf9565b9161021184612bf9565b9460006040516102208161254e565b52610343575b60005b83518110156102c45761023c81856128f0565b5161024782886128f0565b51908060005260fb602081815260406000205492848410610280579061027b959493929160005252036040600020556128be565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020613406833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612c76565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a461034160405161254e565b005b929060005b835181101561038f578061035f61038a92886128f0565b5161036a82876128f0565b5160005260fb6020526103836040600020918254612a20565b90556128be565b610348565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103d96124cd565b6103e1612798565b6001600160a01b038116156103f957610341906127f0565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be576104666124cd565b61046e6124e3565b90608480356001600160401b0381116101be5761048f903690600401612719565b6001600160a01b039190838316331480156107b8575b6104ae90612904565b828516156104bc8115612967565b6104c7604435612bf9565b6104d2606435612bf9565b9185871615610778575b6106ca575b505060443560005260209460978652604060002084861660005286526040600020546105116064358210156129c1565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061055c6064358254612a20565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b6105a357005b60a060006105ed958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a483019061258a565b0393165af16000918161069b575b5061067157505060019061060d612b18565b6308c379a01461063c575b5061061f57005b60405162461bcd60e51b81528061063860048201612ba4565b0390fd5b610644612b36565b90816106505750610618565b61063860405192839262461bcd60e51b84526004840152602483019061258a565b6001600160e01b0319161490506103415760405162461bcd60e51b81528061063860048201612acf565b6106bc919250843d86116106c3575b6106b48183612569565b810190612aaf565b90846105fb565b503d6106aa565b92959194909360005b8451811015610769576106e681866128f0565b51906106f281886128f0565b518260005260fb602052604060002054818110610726576107219360005260fb602052036040600020556128be565b6106d3565b60405162461bcd60e51b81526020600482015260286024820152600080516020613406833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104e1565b959260009794919592975b86518110156107aa578061079a6107a5928b6128f0565b5161036a828a6128f0565b610783565b5092959691949093966104dc565b5082841660005260986020526040600020336000526020526104ae60ff6040600020541690506104a5565b346101be5760003660031901126101be57602060ff61016154166040519015158152f35b346101be5760403660031901126101be576108206124cd565b6108286124e3565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be57610876612798565b60ff610161541661089b576101675461034190600435906001600160a01b03166132fb565b604051637abbf1c960e01b8152600490fd5b346101be5760403660031901126101be576004356108c96124e3565b906108d2612798565b60ff610161541661089b578060005261016360205260ff6002604060002001541615610966576001600160a01b0382161561095457806000526101696020526040600020549160648302928084046064149015171561093e576001600160601b0361034193169161324e565b634e487b7160e01b600052601160045260246000fd5b604051637827912560e01b8152600490fd5b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760003660031901126101be57602060405160648152f35b346101be5760203660031901126101be576004356000526101666020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be57610a239036906004016125f9565b906024356001600160401b0381116101be57610a439036906004016125f9565b6044356001600160401b0381116101be57610a629036906004016125f9565b90929091906064356001600160a01b03811690036101be57608435956001600160a01b03871687036101be576000549560ff8760081c161596878098611091575b801561107a575b1561101e5760ff1981166001176000558761100c575b506064356001600160a01b031615610954576001600160401b038211610e14578190610aee61015f546124f9565b601f8111610f9e575b50600090601f8311600114610f1557600092610f0a575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610e1457610b3f610160546124f9565b601f8111610ea8575b50600090601f8311600114610e3557610bb39493929160009183610e2a575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ba360ff60005460081c16610b9e81612d22565b612d22565b610bac336127f0565b36916126d3565b91610bc960ff60005460081c16610b9e81612d22565b82516001600160401b038111610e1457610be46099546124f9565b601f8111610daf575b506020601f8211600114610d485781929394600092610d3d575b50508160011b916000199060031b1c1916176099555b610c3b60ff60005460081c16610c3281612d22565b610b9e81612d22565b61016780546001600160a01b0319166064356001600160a01b0316179055600a610168556040516103e890602090610c7281612533565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610ce5575b50610ca76064356127f0565b610cad57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101656020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610c9b565b015190508480610c07565b601f198216906099600052806000209160005b818110610d9757509583600195969710610d7e575b505050811b01609955610c1d565b015160001960f88460031b161c19169055848080610d70565b9192602060018192868b015181550194019201610d5b565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610e0a575b601f0160051c01905b818110610dfe5750610bed565b60008155600101610df1565b9091508190610de8565b634e487b7160e01b600052604160045260246000fd5b013590508780610b67565b61016060005260206000209160005b601f1985168110610e905750918391600193610bb3979695601f19811610610e76575b505050811b0161016055610b7e565b0135600019600384901b60f8161c19169055878080610e67565b90926020600181928686013581550194019101610e44565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610f03575b601f830160051c82018110610ef7575050610b48565b60008155600101610ee1565b5080610ee1565b013590508880610b0e565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610f86576001945083601f19811610610f6c575b505050811b0161015f55610b25565b0135600019600384901b60f8161c19169055888080610f5d565b81810135835560209485019460019093019201610f42565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510611005575b90849392915b601f830160051c82018110610ff6575050610af7565b60008155859450600101610fe0565b5080610fda565b61ffff19166101011760005588610ac0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610aaa5750600160ff821614610aaa565b50600160ff821610610aa3565b346101be576110ac366125ca565b6001600160a01b039091169033821461111e573360005260986020526040600020826000526020526110ee8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be5760405160009061016080549061119b826124f9565b90818452600192838116908160001461122057506001146111df575b6111db846111c781880382612569565b60405191829160208352602083019061258a565b0390f35b90935060005260209283600020916000925b82841061120d57505050816111db936111c792820101936111b7565b80548585018701529285019281016111f1565b6111db96506111c79450602092508593915060ff191682840152151560051b820101936111b7565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be5761128a612798565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760003660031901126101be576112d9612798565b603380546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101be5760603660031901126101be576113366124cd565b6024906001600160401b039082358281116101be576113599036906004016126b5565b9160449081359081116101be576113749036906004016126b5565b6001600160a01b0390921692338414801561153c575b61139390612904565b831561139f8115612c1e565b6113ac8251855114612a2d565b60006040516113ba8161254e565b52611504575b60005b815181101561145c576113d681836128f0565b516113e182866128f0565b51908060005260fb60208181526040600020549284841061141a5790611415959493929160005252036040600020556128be565b6113c3565b60405162461bcd60e51b8152600481018390526028818d0152600080516020613406833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b82518110156114d157806114796114cc92856128f0565b5161148482876128f0565b51908060005260976020908082526040600020876000528252604060002054926114b085851015612c76565b60005281526040600020908660005252036040600020556128be565b611462565b50906000805160206133c68339815191526114f6600094604051918291339583612a8a565b0390a461034160405161254e565b9260009491945b8451811015611532578061152261152d92866128f0565b5161036a82886128f0565b61150b565b50929390936113c0565b5083600052609860205260406000203360005260205261139360ff60406000205416905061138a565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be578160040135906115d082612650565b926115de6040519485612569565b82845260209260248486019160051b830101913683116101be57602401905b828210611712575050506024359081116101be5761161f9036906004016126b5565b82518151036116bb5782519261163484612650565b936116426040519586612569565b808552611651601f1991612650565b01368486013760005b81518110156116a45761169f9061168f6001600160a01b0361167c83866128f0565b511661168883876128f0565b5190612839565b61169982886128f0565b526128be565b61165a565b5050506111db604051928284938452830190612764565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115fd565b346101be5760203660031901126101be57600435600052610164602052602060018060a01b0360406000205416604051908152f35b346101be5760203660031901126101be5761177f6124cd565b611787612798565b60ff610161541661089b5761016854610341916132fb565b346101be5760203660031901126101be576001600160a01b036117c06124cd565b16600052610165602052602060ff604060002054166040519015158152f35b346101be5760603660031901126101be576117f86124cd565b6001600160401b03906024358281116101be57611819903690600401612734565b926044359081116101be57611832903690600401612734565b919060ff610161541661089b5761185161185992610341963691612667565b923691612667565b91612d82565b346101be5760031960a0368201126101be576118796124cd565b906118826124e3565b6044908135926001600160401b03938481116101be576118a69036906004016126b5565b606480358681116101be576118bf9036906004016126b5565b9460849687359081116101be576118da903690600401612719565b6001600160a01b039489861633148015611bfc575b6118f890612904565b6119058551895114612a2d565b858716156119138115612967565b868b1615611bb9575b611b04575b60005b85518110156119b9578061193b6119b492886128f0565b518c611947838d6128f0565b519180600052609790838c6020948486526040600020828216600052865260406000205491611978848410156129c1565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c16600052526103836040600020918254612a20565b611924565b50888a989796949789604051886000805160206133c683398151915289808d16941692806119e987339583612a8a565b0390a4873b6119f457005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a48701611a2891612764565b90848783030190870152611a3b91612764565b918483030190840152611a4d9161258a565b03921691815a602094600091f160009181611ae4575b50611abc5750506001611a74612b18565b6308c379a014611a85575b61061f57005b611a8d612b36565b80611a985750611a7f565b60405162461bcd60e51b81526020600482015290819061063890602483019061258a565b6001600160e01b031916146103415760405162461bcd60e51b81528061063860048201612acf565b611afd91925060203d81116106c3576106b48183612569565b9083611a63565b9796949060009993999692965b8551811015611ba957611b2481876128f0565b51611b2f82896128f0565b519080600052602060fb815260406000205491838310611b6857611b639493929160fb9160005252036040600020556128be565b611b11565b508b9067616c537570706c7960c01b8f6000805160206134068339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b5090949697989298959195611921565b99969498959392919060005b8a51811015611bed57808b61036a82611be1611be8958f6128f0565b51926128f0565b611bc5565b5090919293959894969961191c565b50858a1660005260986020526040600020336000526020526118f860ff6040600020541690506118ef565b346101be57611c3536612626565b9160ff610161541661089b57602092611c909160405190611c5582612533565b6001825285368184013760405192611c6c84612533565b6001845286368186013785611c80846128cd565b52611c8a846128cd565b52612d82565b604051908152f35b346101be5760403660031901126101be5760243560043560005261012e60205260406000209060405191611ccb83612533565b546001600160a01b0380821680855260a09290921c6020850152929015611d23575b6001600160601b036020820151169182810292818404149015171561093e57604092612710915116918351928352046020820152f35b50604051611d3081612533565b61012d54838116825260a01c6020820152611ced565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611d7a9036906004016125f9565b9190611d84612798565b60ff610161541661089b57836000526101639160209280845260ff6002604060002001541615611eb057856000528352600180604060002001918511610e1457611dd885611dd284546124f9565b84612cce565b6000601f8611600114611e39579185806000805160206133e683398151915297969593611e2995600093611e2e575b501b906000198760031b1c19161790555b6040519383859485528401916131ce565b0390a2005b85013592508a611e07565b601f1986169083600052856000209160005b818110611e9b57509187969593916000805160206133e683398151915298611e29969410611e81575b505085811b019055611e18565b840135600019600389901b60f8161c191690558880611e74565b86830135845592840192918701918701611e4b565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576001600160401b036004358181116101be57611efa9036906004016125f9565b6044356001600160a01b0381169190602435908381036101be57611f1c612798565b60ff610161541661089b5781156121425783156109545761016294611f4186546128be565b809655604051966060880188811082821117610e1457604052838852611f683686846126d3565b9760209889820190815260408201906001938483528a6000526101638c526040600020935184558484019151948551918211610e1457611fb282611fac85546124f9565b85612cce565b8c8d601f84116001146120d05750918080926002969594611ffd996000946120c5575b50501b916000199060031b1c19161790555b51151591019060ff801983541691151516179055565b60008681526101648852604080822080546001600160a01b03191633179055610168546101698a529120819055606480820294918015908604909114171561093e576120767fc07473765c308da8ff95c4974c60af7332d93777f002550fa063b77064a6f7b2936001600160601b03899616908661324e565b836000805160206133e68339815191526040518a81528061209a8c82018a886131ce565b0390a26120ba604051928392835260408a840152339660408401916131ce565b0390a4604051908152f35b015192503880611fd5565b9193949596601f1984168660005283600020936000905b82821061212b57505091611ffd989795939185600298969410612112575b505050811b019055611fe7565b015160001960f88460031b161c191690558e8080612105565b8088869782949787015181550196019401906120e7565b604051631dd0e19360e01b8152600490fd5b346101be576020806003193601126101be57600435600052610163815260018060406000200190826040518093600090805490612190826124f9565b808552918681169081156122b55750600114612274575b50506121b592500383612569565b8151156121d35750905b6111db60405192828493845283019061258a565b90506040519060009083609954916121ea836124f9565b9283865285828216918260001461225457505060011461221a575b50505081612214910382612569565b906121bf565b91909250609960005282600020916000925b82841061224157505050820101818385612205565b805486850186015292840192810161222c565b60ff19168482015293151560051b84019092019350859150869050612205565b9091506000528260002090846000925b82841061229e57505050916121b5928201018592876121a7565b805488850187015287945092850192869101612284565b9150506121b594925060ff191682840152151560051b8201018592876121a7565b346101be576122e4366125ca565b906122ed612798565b60ff610161541661089b576001600160a01b03169081156109545760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b59183600052610165825261234f8160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be5760405160009061015f805490612380826124f9565b90818452600192838116908160001461122057506001146123ab576111db846111c781880382612569565b90935060005260209283600020916000925b8284106123d957505050816111db936111c792820101936111b7565b80548585018701529285019281016123bd565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be57602090635a08b45360e11b8114908115612495575b8115612438575b506040519015158152f35b63152a902d60e11b811491508115612452575b508261242d565b636cdb3d1360e11b811491508115612484575b8115612473575b508261244b565b6301ffc9a760e01b1490508261246c565b6303a24d0760e21b81149150612465565b631030681960e21b81149150612426565b346101be5760403660031901126101be576020611c906124c46124cd565b60243590612839565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c92168015612529575b602083101461251357565b634e487b7160e01b600052602260045260246000fd5b91607f1691612508565b604081019081106001600160401b03821117610e1457604052565b602081019081106001600160401b03821117610e1457604052565b90601f801991011681019081106001600160401b03821117610e1457604052565b919082519283825260005b8481106125b6575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612595565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610e145760051b60200190565b929161267282612650565b916126806040519384612569565b829481845260208094019160051b81019283116101be57905b8282106126a65750505050565b81358152908301908301612699565b9080601f830112156101be578160206126d093359101612667565b90565b9291926001600160401b038211610e1457604051916126fc601f8201601f191660200184612569565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be578160206126d0933591016126d3565b9181601f840112156101be578235916001600160401b0383116101be576020808501948460051b0101116101be57565b90815180825260208080930193019160005b828110612784575050505090565b835185529381019392810192600101612776565b6033546001600160a01b031633036127ac57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561286657600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b600019811461093e5760010190565b8051156128da5760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156128da5760209160051b010190565b1561290b57565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561296e57565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b156129c857565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9190820180921161093e57565b15612a3457565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612aa16126d093604084526040840190612764565b916020818403910152612764565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612b2557565b905060046000803e60005160e01c90565b600060443d106126d057604051600319913d83016004833e81516001600160401b03918282113d602484011117612b9357818401948551938411612b9b573d85010160208487010111612b9357506126d092910160200190612569565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612c0682612533565b6001825260203681840137612c1a826128cd565b5290565b15612c2557565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612c7d57565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612cdc57505050565b600091825260208220906020601f850160051c83019410612d18575b601f0160051c01915b828110612d0d57505050565b818155600101612d01565b9092508290612cf8565b15612d2957565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b0380831692919083156109545760335416331415806131b4575b61319c5783511561318a5783518151036131785783519260649384811161315a575060015b8551811015612e4057612ddd81876128f0565b516000198201828111612e2b57612df490886128f0565b511015612e0957612e04906128be565b612dca565b612e15602491876128f0565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612f3257612e5e86846128f0565b519586600052610163602081815260409060ff60028360002001541615612f1a57612e8984896128f0565b5115612f09578960005261016690818152612eb38360002054612eac878c6128f0565b5190612a20565b938b60005281528260002054808511612ee75750612edd95969798999a60005252600020556128be565b9493929190612e4b565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612f488761254e565b60008752612f598651855114612a2d565b60005b8651811015612f9b5780612f73612f9692876128f0565b51612f7e828a6128f0565b5160005260fb60205261038388600020918254612a20565b612f5c565b5090919560005b8651811015612fec5780612fb9612fe792876128f0565b51612fc4828a6128f0565b5160005260206097815288600020908c6000525261038388600020918254612a20565b612fa2565b50919690939581600088516000805160206133c68339815191523391806130148a8d83612a8a565b0390a43b613025575b505050505050565b613078600060209461308789519788968795869461306563bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a4880190612764565b9060031994858884030190880152612764565b9184830301608485015261258a565b03925af16000918161313a575b5061310e57505060016130a5612b18565b6308c379a0146130d8575b6130c157505b38808080808061301d565b5162461bcd60e51b81528061063860048201612ba4565b6130e0612b36565b806130eb57506130b0565b825162461bcd60e51b81526020600482015290819061063890602483019061258a565b6001600160e01b0319160361312357506130b6565b5162461bcd60e51b81528061063860048201612acf565b61315391925060203d81116106c3576106b48183612569565b9038613094565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016560205260ff6040600020541615612da5565b908060209392818452848401376000828201840152601f01601f1916010190565b156131f657565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b916001600160601b0316906132676127108311156131ef565b6001600160a01b039081169283156132b6576040519361328685612533565b84526020808501938452600091825261012e9052604090209251915160a01b6001600160a01b0319169116179055565b60405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b6001600160a01b039081169190821561095457606482116133a55760018060a01b0319926101678185825416179055826101685560648302928084046064149015171561093e57613393906001600160601b03841661335e6127108211156131ef565b602060405161336c81612533565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a264697066735822122001030b56bac864e3c45775298dbf75a049d5a3f7a1d8935274d02f6fee2ad0f764736f6c63430008120033","sourceMap":"1123:14024:15:-:0;;;;;;;6007:13:2;1123:14024:15;;;;;;;;;;;;;;6078:31:2;6074:139;;-1:-1:-1;1123:14024:15;;;;;;;;;6074:139:2;1123:14024:15;;;;;;6007:13:2;1123:14024:15;6174:28:2;1123:14024:15;;;;;;6174:28:2;6074:139;;;1123:14024:15;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c8062fdd58e146124a657806301ffc9a7146123ec57806306fdde031461235a5780630de54ba0146122d65780630e89341c146121545780631542bb9514611ec957806318e97fd114611d465780632a55205a14611c985780632baf2acb14611c275780632eb2c2d61461185f5780633512639c146117df5780633a3d146f1461179f5780633ebc82c51461176657806340c1a064146117315780634e1273f4146115935780634f558e79146115655780636b20c4541461131d578063715018a6146112c0578063894ba833146112715780638da5cb5b1461124857806395d89b4114611175578063a22cb4651461109e578063a7eae21c146109f3578063bd85b039146109c7578063c33ae88f1461099a578063cfdbf2541461097e578063e2200a0b146108ad578063e27a41bf1461085d578063e985e9c514610807578063ee070805146107e3578063f242432a1461044d578063f2fde38b146103c0578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101636020526020604060002054604051908152f35b600080fd5b346101be576101d136612626565b6001600160a01b0390921691903383148015610397575b6101f190612904565b8215926101fe8415612c1e565b61020782612bf9565b9161021184612bf9565b9460006040516102208161254e565b52610343575b60005b83518110156102c45761023c81856128f0565b5161024782886128f0565b51908060005260fb602081815260406000205492848410610280579061027b959493929160005252036040600020556128be565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020613406833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612c76565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a461034160405161254e565b005b929060005b835181101561038f578061035f61038a92886128f0565b5161036a82876128f0565b5160005260fb6020526103836040600020918254612a20565b90556128be565b610348565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103d96124cd565b6103e1612798565b6001600160a01b038116156103f957610341906127f0565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be576104666124cd565b61046e6124e3565b90608480356001600160401b0381116101be5761048f903690600401612719565b6001600160a01b039190838316331480156107b8575b6104ae90612904565b828516156104bc8115612967565b6104c7604435612bf9565b6104d2606435612bf9565b9185871615610778575b6106ca575b505060443560005260209460978652604060002084861660005286526040600020546105116064358210156129c1565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061055c6064358254612a20565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b6105a357005b60a060006105ed958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a483019061258a565b0393165af16000918161069b575b5061067157505060019061060d612b18565b6308c379a01461063c575b5061061f57005b60405162461bcd60e51b81528061063860048201612ba4565b0390fd5b610644612b36565b90816106505750610618565b61063860405192839262461bcd60e51b84526004840152602483019061258a565b6001600160e01b0319161490506103415760405162461bcd60e51b81528061063860048201612acf565b6106bc919250843d86116106c3575b6106b48183612569565b810190612aaf565b90846105fb565b503d6106aa565b92959194909360005b8451811015610769576106e681866128f0565b51906106f281886128f0565b518260005260fb602052604060002054818110610726576107219360005260fb602052036040600020556128be565b6106d3565b60405162461bcd60e51b81526020600482015260286024820152600080516020613406833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104e1565b959260009794919592975b86518110156107aa578061079a6107a5928b6128f0565b5161036a828a6128f0565b610783565b5092959691949093966104dc565b5082841660005260986020526040600020336000526020526104ae60ff6040600020541690506104a5565b346101be5760003660031901126101be57602060ff61016154166040519015158152f35b346101be5760403660031901126101be576108206124cd565b6108286124e3565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be57610876612798565b60ff610161541661089b576101675461034190600435906001600160a01b03166132fb565b604051637abbf1c960e01b8152600490fd5b346101be5760403660031901126101be576004356108c96124e3565b906108d2612798565b60ff610161541661089b578060005261016360205260ff6002604060002001541615610966576001600160a01b0382161561095457806000526101696020526040600020549160648302928084046064149015171561093e576001600160601b0361034193169161324e565b634e487b7160e01b600052601160045260246000fd5b604051637827912560e01b8152600490fd5b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760003660031901126101be57602060405160648152f35b346101be5760203660031901126101be576004356000526101666020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be57610a239036906004016125f9565b906024356001600160401b0381116101be57610a439036906004016125f9565b6044356001600160401b0381116101be57610a629036906004016125f9565b90929091906064356001600160a01b03811690036101be57608435956001600160a01b03871687036101be576000549560ff8760081c161596878098611091575b801561107a575b1561101e5760ff1981166001176000558761100c575b506064356001600160a01b031615610954576001600160401b038211610e14578190610aee61015f546124f9565b601f8111610f9e575b50600090601f8311600114610f1557600092610f0a575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610e1457610b3f610160546124f9565b601f8111610ea8575b50600090601f8311600114610e3557610bb39493929160009183610e2a575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ba360ff60005460081c16610b9e81612d22565b612d22565b610bac336127f0565b36916126d3565b91610bc960ff60005460081c16610b9e81612d22565b82516001600160401b038111610e1457610be46099546124f9565b601f8111610daf575b506020601f8211600114610d485781929394600092610d3d575b50508160011b916000199060031b1c1916176099555b610c3b60ff60005460081c16610c3281612d22565b610b9e81612d22565b61016780546001600160a01b0319166064356001600160a01b0316179055600a610168556040516103e890602090610c7281612533565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610ce5575b50610ca76064356127f0565b610cad57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101656020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610c9b565b015190508480610c07565b601f198216906099600052806000209160005b818110610d9757509583600195969710610d7e575b505050811b01609955610c1d565b015160001960f88460031b161c19169055848080610d70565b9192602060018192868b015181550194019201610d5b565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610e0a575b601f0160051c01905b818110610dfe5750610bed565b60008155600101610df1565b9091508190610de8565b634e487b7160e01b600052604160045260246000fd5b013590508780610b67565b61016060005260206000209160005b601f1985168110610e905750918391600193610bb3979695601f19811610610e76575b505050811b0161016055610b7e565b0135600019600384901b60f8161c19169055878080610e67565b90926020600181928686013581550194019101610e44565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610f03575b601f830160051c82018110610ef7575050610b48565b60008155600101610ee1565b5080610ee1565b013590508880610b0e565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610f86576001945083601f19811610610f6c575b505050811b0161015f55610b25565b0135600019600384901b60f8161c19169055888080610f5d565b81810135835560209485019460019093019201610f42565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510611005575b90849392915b601f830160051c82018110610ff6575050610af7565b60008155859450600101610fe0565b5080610fda565b61ffff19166101011760005588610ac0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610aaa5750600160ff821614610aaa565b50600160ff821610610aa3565b346101be576110ac366125ca565b6001600160a01b039091169033821461111e573360005260986020526040600020826000526020526110ee8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be5760405160009061016080549061119b826124f9565b90818452600192838116908160001461122057506001146111df575b6111db846111c781880382612569565b60405191829160208352602083019061258a565b0390f35b90935060005260209283600020916000925b82841061120d57505050816111db936111c792820101936111b7565b80548585018701529285019281016111f1565b6111db96506111c79450602092508593915060ff191682840152151560051b820101936111b7565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be5761128a612798565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760003660031901126101be576112d9612798565b603380546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101be5760603660031901126101be576113366124cd565b6024906001600160401b039082358281116101be576113599036906004016126b5565b9160449081359081116101be576113749036906004016126b5565b6001600160a01b0390921692338414801561153c575b61139390612904565b831561139f8115612c1e565b6113ac8251855114612a2d565b60006040516113ba8161254e565b52611504575b60005b815181101561145c576113d681836128f0565b516113e182866128f0565b51908060005260fb60208181526040600020549284841061141a5790611415959493929160005252036040600020556128be565b6113c3565b60405162461bcd60e51b8152600481018390526028818d0152600080516020613406833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b82518110156114d157806114796114cc92856128f0565b5161148482876128f0565b51908060005260976020908082526040600020876000528252604060002054926114b085851015612c76565b60005281526040600020908660005252036040600020556128be565b611462565b50906000805160206133c68339815191526114f6600094604051918291339583612a8a565b0390a461034160405161254e565b9260009491945b8451811015611532578061152261152d92866128f0565b5161036a82886128f0565b61150b565b50929390936113c0565b5083600052609860205260406000203360005260205261139360ff60406000205416905061138a565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be578160040135906115d082612650565b926115de6040519485612569565b82845260209260248486019160051b830101913683116101be57602401905b828210611712575050506024359081116101be5761161f9036906004016126b5565b82518151036116bb5782519261163484612650565b936116426040519586612569565b808552611651601f1991612650565b01368486013760005b81518110156116a45761169f9061168f6001600160a01b0361167c83866128f0565b511661168883876128f0565b5190612839565b61169982886128f0565b526128be565b61165a565b5050506111db604051928284938452830190612764565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115fd565b346101be5760203660031901126101be57600435600052610164602052602060018060a01b0360406000205416604051908152f35b346101be5760203660031901126101be5761177f6124cd565b611787612798565b60ff610161541661089b5761016854610341916132fb565b346101be5760203660031901126101be576001600160a01b036117c06124cd565b16600052610165602052602060ff604060002054166040519015158152f35b346101be5760603660031901126101be576117f86124cd565b6001600160401b03906024358281116101be57611819903690600401612734565b926044359081116101be57611832903690600401612734565b919060ff610161541661089b5761185161185992610341963691612667565b923691612667565b91612d82565b346101be5760031960a0368201126101be576118796124cd565b906118826124e3565b6044908135926001600160401b03938481116101be576118a69036906004016126b5565b606480358681116101be576118bf9036906004016126b5565b9460849687359081116101be576118da903690600401612719565b6001600160a01b039489861633148015611bfc575b6118f890612904565b6119058551895114612a2d565b858716156119138115612967565b868b1615611bb9575b611b04575b60005b85518110156119b9578061193b6119b492886128f0565b518c611947838d6128f0565b519180600052609790838c6020948486526040600020828216600052865260406000205491611978848410156129c1565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c16600052526103836040600020918254612a20565b611924565b50888a989796949789604051886000805160206133c683398151915289808d16941692806119e987339583612a8a565b0390a4873b6119f457005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a48701611a2891612764565b90848783030190870152611a3b91612764565b918483030190840152611a4d9161258a565b03921691815a602094600091f160009181611ae4575b50611abc5750506001611a74612b18565b6308c379a014611a85575b61061f57005b611a8d612b36565b80611a985750611a7f565b60405162461bcd60e51b81526020600482015290819061063890602483019061258a565b6001600160e01b031916146103415760405162461bcd60e51b81528061063860048201612acf565b611afd91925060203d81116106c3576106b48183612569565b9083611a63565b9796949060009993999692965b8551811015611ba957611b2481876128f0565b51611b2f82896128f0565b519080600052602060fb815260406000205491838310611b6857611b639493929160fb9160005252036040600020556128be565b611b11565b508b9067616c537570706c7960c01b8f6000805160206134068339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b5090949697989298959195611921565b99969498959392919060005b8a51811015611bed57808b61036a82611be1611be8958f6128f0565b51926128f0565b611bc5565b5090919293959894969961191c565b50858a1660005260986020526040600020336000526020526118f860ff6040600020541690506118ef565b346101be57611c3536612626565b9160ff610161541661089b57602092611c909160405190611c5582612533565b6001825285368184013760405192611c6c84612533565b6001845286368186013785611c80846128cd565b52611c8a846128cd565b52612d82565b604051908152f35b346101be5760403660031901126101be5760243560043560005261012e60205260406000209060405191611ccb83612533565b546001600160a01b0380821680855260a09290921c6020850152929015611d23575b6001600160601b036020820151169182810292818404149015171561093e57604092612710915116918351928352046020820152f35b50604051611d3081612533565b61012d54838116825260a01c6020820152611ced565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611d7a9036906004016125f9565b9190611d84612798565b60ff610161541661089b57836000526101639160209280845260ff6002604060002001541615611eb057856000528352600180604060002001918511610e1457611dd885611dd284546124f9565b84612cce565b6000601f8611600114611e39579185806000805160206133e683398151915297969593611e2995600093611e2e575b501b906000198760031b1c19161790555b6040519383859485528401916131ce565b0390a2005b85013592508a611e07565b601f1986169083600052856000209160005b818110611e9b57509187969593916000805160206133e683398151915298611e29969410611e81575b505085811b019055611e18565b840135600019600389901b60f8161c191690558880611e74565b86830135845592840192918701918701611e4b565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576001600160401b036004358181116101be57611efa9036906004016125f9565b6044356001600160a01b0381169190602435908381036101be57611f1c612798565b60ff610161541661089b5781156121425783156109545761016294611f4186546128be565b809655604051966060880188811082821117610e1457604052838852611f683686846126d3565b9760209889820190815260408201906001938483528a6000526101638c526040600020935184558484019151948551918211610e1457611fb282611fac85546124f9565b85612cce565b8c8d601f84116001146120d05750918080926002969594611ffd996000946120c5575b50501b916000199060031b1c19161790555b51151591019060ff801983541691151516179055565b60008681526101648852604080822080546001600160a01b03191633179055610168546101698a529120819055606480820294918015908604909114171561093e576120767fc07473765c308da8ff95c4974c60af7332d93777f002550fa063b77064a6f7b2936001600160601b03899616908661324e565b836000805160206133e68339815191526040518a81528061209a8c82018a886131ce565b0390a26120ba604051928392835260408a840152339660408401916131ce565b0390a4604051908152f35b015192503880611fd5565b9193949596601f1984168660005283600020936000905b82821061212b57505091611ffd989795939185600298969410612112575b505050811b019055611fe7565b015160001960f88460031b161c191690558e8080612105565b8088869782949787015181550196019401906120e7565b604051631dd0e19360e01b8152600490fd5b346101be576020806003193601126101be57600435600052610163815260018060406000200190826040518093600090805490612190826124f9565b808552918681169081156122b55750600114612274575b50506121b592500383612569565b8151156121d35750905b6111db60405192828493845283019061258a565b90506040519060009083609954916121ea836124f9565b9283865285828216918260001461225457505060011461221a575b50505081612214910382612569565b906121bf565b91909250609960005282600020916000925b82841061224157505050820101818385612205565b805486850186015292840192810161222c565b60ff19168482015293151560051b84019092019350859150869050612205565b9091506000528260002090846000925b82841061229e57505050916121b5928201018592876121a7565b805488850187015287945092850192869101612284565b9150506121b594925060ff191682840152151560051b8201018592876121a7565b346101be576122e4366125ca565b906122ed612798565b60ff610161541661089b576001600160a01b03169081156109545760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b59183600052610165825261234f8160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be5760405160009061015f805490612380826124f9565b90818452600192838116908160001461122057506001146123ab576111db846111c781880382612569565b90935060005260209283600020916000925b8284106123d957505050816111db936111c792820101936111b7565b80548585018701529285019281016123bd565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be57602090635a08b45360e11b8114908115612495575b8115612438575b506040519015158152f35b63152a902d60e11b811491508115612452575b508261242d565b636cdb3d1360e11b811491508115612484575b8115612473575b508261244b565b6301ffc9a760e01b1490508261246c565b6303a24d0760e21b81149150612465565b631030681960e21b81149150612426565b346101be5760403660031901126101be576020611c906124c46124cd565b60243590612839565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c92168015612529575b602083101461251357565b634e487b7160e01b600052602260045260246000fd5b91607f1691612508565b604081019081106001600160401b03821117610e1457604052565b602081019081106001600160401b03821117610e1457604052565b90601f801991011681019081106001600160401b03821117610e1457604052565b919082519283825260005b8481106125b6575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612595565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610e145760051b60200190565b929161267282612650565b916126806040519384612569565b829481845260208094019160051b81019283116101be57905b8282106126a65750505050565b81358152908301908301612699565b9080601f830112156101be578160206126d093359101612667565b90565b9291926001600160401b038211610e1457604051916126fc601f8201601f191660200184612569565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be578160206126d0933591016126d3565b9181601f840112156101be578235916001600160401b0383116101be576020808501948460051b0101116101be57565b90815180825260208080930193019160005b828110612784575050505090565b835185529381019392810192600101612776565b6033546001600160a01b031633036127ac57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561286657600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b600019811461093e5760010190565b8051156128da5760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156128da5760209160051b010190565b1561290b57565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561296e57565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b156129c857565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9190820180921161093e57565b15612a3457565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612aa16126d093604084526040840190612764565b916020818403910152612764565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612b2557565b905060046000803e60005160e01c90565b600060443d106126d057604051600319913d83016004833e81516001600160401b03918282113d602484011117612b9357818401948551938411612b9b573d85010160208487010111612b9357506126d092910160200190612569565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612c0682612533565b6001825260203681840137612c1a826128cd565b5290565b15612c2557565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612c7d57565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612cdc57505050565b600091825260208220906020601f850160051c83019410612d18575b601f0160051c01915b828110612d0d57505050565b818155600101612d01565b9092508290612cf8565b15612d2957565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b0380831692919083156109545760335416331415806131b4575b61319c5783511561318a5783518151036131785783519260649384811161315a575060015b8551811015612e4057612ddd81876128f0565b516000198201828111612e2b57612df490886128f0565b511015612e0957612e04906128be565b612dca565b612e15602491876128f0565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612f3257612e5e86846128f0565b519586600052610163602081815260409060ff60028360002001541615612f1a57612e8984896128f0565b5115612f09578960005261016690818152612eb38360002054612eac878c6128f0565b5190612a20565b938b60005281528260002054808511612ee75750612edd95969798999a60005252600020556128be565b9493929190612e4b565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612f488761254e565b60008752612f598651855114612a2d565b60005b8651811015612f9b5780612f73612f9692876128f0565b51612f7e828a6128f0565b5160005260fb60205261038388600020918254612a20565b612f5c565b5090919560005b8651811015612fec5780612fb9612fe792876128f0565b51612fc4828a6128f0565b5160005260206097815288600020908c6000525261038388600020918254612a20565b612fa2565b50919690939581600088516000805160206133c68339815191523391806130148a8d83612a8a565b0390a43b613025575b505050505050565b613078600060209461308789519788968795869461306563bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a4880190612764565b9060031994858884030190880152612764565b9184830301608485015261258a565b03925af16000918161313a575b5061310e57505060016130a5612b18565b6308c379a0146130d8575b6130c157505b38808080808061301d565b5162461bcd60e51b81528061063860048201612ba4565b6130e0612b36565b806130eb57506130b0565b825162461bcd60e51b81526020600482015290819061063890602483019061258a565b6001600160e01b0319160361312357506130b6565b5162461bcd60e51b81528061063860048201612acf565b61315391925060203d81116106c3576106b48183612569565b9038613094565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016560205260ff6040600020541615612da5565b908060209392818452848401376000828201840152601f01601f1916010190565b156131f657565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b916001600160601b0316906132676127108311156131ef565b6001600160a01b039081169283156132b6576040519361328685612533565b84526020808501938452600091825261012e9052604090209251915160a01b6001600160a01b0319169116179055565b60405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b6001600160a01b039081169190821561095457606482116133a55760018060a01b0319926101678185825416179055826101685560648302928084046064149015171561093e57613393906001600160601b03841661335e6127108211156131ef565b602060405161336c81612533565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a264697066735822122001030b56bac864e3c45775298dbf75a049d5a3f7a1d8935274d02f6fee2ad0f764736f6c63430008120033","sourceMap":"1123:14024:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;9893:12;1123:14024;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;;;;929:10:11;764:23:6;;:66;;;;1123:14024:15;743:159:6;;;:::i;:::-;11246:18:3;;;11238:66;11246:18;;11238:66;:::i;:::-;11379:21;;;:::i;:::-;11437:25;;;;:::i;:::-;1123:14024:15;;;;;;;:::i;:::-;;1658:156:7;;1123:14024:15;;1896:3:7;1123:14024:15;;1880:14:7;;;;;1932:6;;;;:::i;:::-;1123:14024:15;1973:10:7;;;;:::i;:::-;1123:14024:15;;;;;2018:12:7;1123:14024:15;;;;;;;;2060:16:7;;;;1123:14024:15;;;1896:3:7;1123:14024:15;;;;;;;;;;;;;1896:3:7;:::i;:::-;1865:13;;1123:14024:15;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14024:15;;;;-1:-1:-1;;;1123:14024:15;;;;;;;1880:14:7;1123:14024:15;1880:14:7;;;1123:14024:15;;;11572:9:3;1123:14024:15;;;;;;;;;;;;;;;11601:70:3;11609:21;;;;11601:70;:::i;:::-;1123:14024:15;;;11572:9:3;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;11773:54:3;1123:14024:15;929:10:11;11773:54:3;;1123:14024:15;;;;:::i;:::-;;1658:156:7;1701:13;;1123:14024:15;1732:3:7;1123:14024:15;;1716:14:7;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14024:15;1768:6:7;;;;:::i;:::-;1123:14024:15;;;1755:12:7;1123:14024:15;;1755:34:7;1123:14024:15;;;;;;1755:34:7;:::i;:::-;1123:14024:15;;1732:3:7;:::i;:::-;1701:13;;1716:14;;;;1658:156;;764:66:6;1123:14024:15;;;;3873:18:3;1123:14024:15;;;;;929:10:11;1123:14024:15;;;;743:159:6;1123:14024:15;;;;;;764:66:6;;;;1123:14024:15;;;;;;-1:-1:-1;;1123:14024:15;;;;;;:::i;:::-;1303:62:0;;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;2402:22:0;1123:14024:15;;2496:8:0;;;:::i;1123:14024:15:-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;;;;929:10:11;4184:20:3;:60;;;;1123:14024:15;4163:153:3;;;:::i;:::-;1123:14024:15;;;5507:16:3;5499:66;5507:16;;5499:66;:::i;:::-;5640:21;1123:14024:15;;5640:21:3;:::i;:::-;5698:25;1123:14024:15;;5698:25:3;:::i;:::-;1123:14024:15;;;;1662:18:7;1658:156;;1123:14024:15;1824:424:7;;1123:14024:15;;;;;;;;;5827:9:3;1123:14024:15;;;;;;;;;;;;;;;;5856:76:3;1123:14024:15;;5864:21:3;;;5856:76;:::i;:::-;1123:14024:15;;;;5827:9:3;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;5827:9:3;1123:14024:15;;;;;;;;;;;;;;;6028:27:3;1123:14024:15;;;;6028:27:3;:::i;:::-;1123:14024:15;;;;;;;;;;;;;;;;;;;;;929:10:11;6071:46:3;1123:14024:15;929:10:11;6071:46:3;;1713:19:10;;15996:538:3;;1123:14024:15;15996:538:3;1123:14024:15;;;;;;;;;;;;;;;;;;;16035:83:3;;;;929:10:11;1123:14024:15;16035:83:3;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16035:83:3;1123:14024:15;;16035:83:3;;1123:14024:15;;16035:83:3;;;15996:538;-1:-1:-1;16031:493:3;;;;1123:14024:15;16031:493:3;;;:::i;:::-;;;;;;;;;1123:14024:15;16031:493:3;1123:14024:15;;-1:-1:-1;;;16447:62:3;;1123:14024:15;16447:62:3;1123:14024:15;16447:62:3;;;:::i;:::-;;;;16031:493;16341:81;;:::i;:::-;;;;;16031:493;;;16341:81;1123:14024:15;;;;;;;;;16393:14:3;;1123:14024:15;16393:14:3;;1123:14024:15;;;;;;:::i;16031:493:3:-;-1:-1:-1;;;;;;1123:14024:15;16163:163:3;;-1:-1:-1;16031:493:3;16163:163;1123:14024:15;;-1:-1:-1;;;16257:50:3;;1123:14024:15;16257:50:3;1123:14024:15;16257:50:3;;;:::i;16035:83::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1824:424:7;1865:13;;;;;;1123:14024:15;1896:3:7;1123:14024:15;;1880:14:7;;;;;1932:6;;;;:::i;:::-;1123:14024:15;1973:10:7;;;;;:::i;:::-;1123:14024:15;;;;2018:12:7;1123:14024:15;;;;;;2060:16:7;;;1123:14024:15;;1896:3:7;1123:14024:15;;;2018:12:7;1123:14024:15;;;;;;;1896:3:7;:::i;:::-;1865:13;;1123:14024:15;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14024:15;;;;-1:-1:-1;;;1123:14024:15;;;;;;;1880:14:7;;;;;;;;;1824:424;;;;1658:156;1701:13;;1123:14024:15;1701:13:7;;;;;;1732:3;1123:14024:15;;1716:14:7;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14024:15;1768:6:7;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;1658:156;;4184:60:3;1123:14024:15;;;;;;3873:18:3;1123:14024:15;;;;;929:10:11;1123:14024:15;;;;4163:153:3;1123:14024:15;;;;;;4184:60:3;;;;1123:14024:15;;;;;;-1:-1:-1;;1123:14024:15;;;;;;1372:29;1123:14024;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;3873:18:3;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;1303:62:0;;:::i;:::-;1123:14024:15;2987:8;1123:14024;;2983:41;;8413:22;1123:14024;8437:11;;1123:14024;;;-1:-1:-1;;;;;1123:14024:15;8437:11;:::i;2983:41::-;1123:14024;;-1:-1:-1;;;3004:20:15;;1123:14024;;3004:20;1123:14024;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;:::i;:::-;1303:62:0;;;:::i;:::-;1123:14024:15;2987:8;1123:14024;;2983:41;;1123:14024;;;3277:12;1123:14024;;;3277:29;1123:14024;;;3277:29;1123:14024;;3276:30;3272:70;;-1:-1:-1;;;;;1123:14024:15;;13254:23;13250:60;;1123:14024;;;13366:23;1123:14024;;;;;;;1558:3;1123:14024;;;;;;1558:3;1123:14024;;;;;;;-1:-1:-1;;;;;13359:68:15;1123:14024;;13359:68;;:::i;1123:14024::-;;;;;;;;;;;;13250:60;1123:14024;;-1:-1:-1;;;13286:24:15;;1123:14024;;13286:24;3272:70;1123:14024;;;;3315:27;;;;;;1123:14024;3315:27;;1123:14024;3315:27;1123:14024;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;1558:3;1123:14024;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;10067:16;1123:14024;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;1033:12:7;1123:14024:15;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;3301:14:2;3347:34;;;;;;1123:14024:15;3346:108:2;;;;1123:14024:15;;;;-1:-1:-1;;1123:14024:15;;;;;;;3562:65:2;;1123:14024:15;-1:-1:-1;1123:14024:15;;-1:-1:-1;;;;;1123:14024:15;3814:22;3810:59;;-1:-1:-1;;;;;1123:14024:15;;;;;;;3970:12;1123:14024;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:12;1123:14024;;-1:-1:-1;;;;;1123:14024:15;;;;;3992:16;1123:14024;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:16;1123:14024;;4018:16;1123:14024;;;;;;;5366:69:2;1123:14024:15;;;;;;5366:69:2;;;:::i;:::-;;:::i;:::-;1195:12:0;929:10:11;1195:12:0;:::i;:::-;1123:14024:15;;;:::i;:::-;;5366:69:2;1123:14024:15;;;;;;5366:69:2;;;:::i;:::-;1123:14024:15;;-1:-1:-1;;;;;1123:14024:15;;;;;8623:13:3;1123:14024:15;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:3;1123:14024:15;;5366:69:2;1123:14024:15;;;;;;5366:69:2;;;:::i;:::-;;;;:::i;:::-;12793:34:15;1123:14024;;-1:-1:-1;;;;;;1123:14024:15;;;-1:-1:-1;;;;;1123:14024:15;;;;1694:2;12837:38;1123:14024;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;;;;;;3314:35:9;;;;1123:14024:15;;;;-1:-1:-1;;;1123:14024:15;3292:57:9;1123:14024:15;;;4436:252;;1123:14024;;4816:8;1123:14024;;4816:8;:::i;:::-;3647:99:2;;1123:14024:15;3647:99:2;1123:14024:15;;;;;;;3721:14:2;1123:14024:15;;;;;;3721:14:2;1123:14024:15;4436:252;-1:-1:-1;;;;;1123:14024:15;;;;;4577:15;1123:14024;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;;;;4634:43;;;4436:252;;;1123:14024;;;;-1:-1:-1;1123:14024:15;;;;;;;;;;8623:13:3;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:3;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:3;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;3992:16;1123:14024;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:16;1123:14024;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:16;1123:14024;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;;-1:-1:-1;1123:14024:15;;;;;3970:12;1123:14024;;;;;-1:-1:-1;1123:14024:15;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;3970:12;1123:14024;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:12;1123:14024;;;;-1:-1:-1;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;-1:-1:-1;1123:14024:15;;;3562:65:2;-1:-1:-1;;1123:14024:15;;;;;3562:65:2;;;1123:14024:15;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;3346:108:2;3426:4;;1713:19:10;:23;3387:66:2;;3346:108;3387:66;1123:14024:15;;;;;3436:17:2;3346:108;;3347:34;1123:14024:15;;;;;3365:16:2;3347:34;;1123:14024:15;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;;;929:10:11;13309:17:3;;1123:14024:15;;929:10:11;1123:14024:15;;13382:18:3;1123:14024:15;;;;;;;;;;13382:46:3;1123:14024:15;;;;;;;;;;;;;;;;;;;13382:46:3;1123:14024:15;;;;;;;13443:41:3;1123:14024:15;929:10:11;13443:41:3;;1123:14024:15;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;1337:29;;1123:14024;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;1513:6:0;1123:14024:15;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;1303:62:0;;:::i;:::-;9336:15:15;1123:14024;;-1:-1:-1;;1123:14024:15;9347:4;1123:14024;;;9383:10;9366:28;-1:-1:-1;;9366:28:15;1123:14024;;;;;;;-1:-1:-1;;1123:14024:15;;;;1303:62:0;;:::i;:::-;2758:6;1123:14024:15;;-1:-1:-1;;;;;;1123:14024:15;;;;;;;-1:-1:-1;;;;;1123:14024:15;2806:40:0;1123:14024:15;;2806:40:0;1123:14024:15;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;;;929:10:11;1080:23:6;;:66;;;;1123:14024:15;1059:159:6;;;:::i;:::-;12266:18:3;;12258:66;12266:18;;12258:66;:::i;:::-;12334:81;1123:14024:15;;;;12342:28:3;12334:81;:::i;:::-;1123:14024:15;;;;;;:::i;:::-;;1658:156:7;;1123:14024:15;;1896:3:7;1123:14024:15;;1880:14:7;;;;;1932:6;;;;:::i;:::-;1123:14024:15;1973:10:7;;;;:::i;:::-;1123:14024:15;;;;;2018:12:7;1123:14024:15;;;;;;;;2060:16:7;;;;1123:14024:15;;;1896:3:7;1123:14024:15;;;;;;;;;;;;;1896:3:7;:::i;:::-;1865:13;;1123:14024:15;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14024:15;;;;-1:-1:-1;;;1123:14024:15;;;;;;;1880:14:7;;;;1123:14024:15;12581:3:3;1123:14024:15;;12565:14:3;;;;;12613:6;;12581:3;12613:6;;;:::i;:::-;1123:14024:15;12650:10:3;;;;:::i;:::-;1123:14024:15;;;;;12697:9:3;1123:14024:15;;;;;;;;;;;;;;;;;12738:21:3;12730:70;12738:21;;;;12730:70;:::i;:::-;1123:14024:15;;;;;;;;;;;;;;;;;12581:3:3;:::i;:::-;12550:13;;12565:14;;;-1:-1:-1;;;;;;;;;;;12924:55:3;1123:14024:15;12565:14:3;1123:14024:15;;929:10:11;;;;12924:55:3;;;:::i;:::-;;;;1123:14024:15;;;;:::i;1658:156:7:-;1701:13;1123:14024:15;1701:13:7;;;1732:3;1123:14024:15;;1716:14:7;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14024:15;1768:6:7;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;1658:156;;1080:66:6;1123:14024:15;;;;3873:18:3;1123:14024:15;;;;;929:10:11;1123:14024:15;;;;1059:159:6;1123:14024:15;;;;;;1080:66:6;;;;1123:14024:15;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;1033:12:7;1123:14024:15;;;;;;;1229:44:7;;1123:14024:15;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;3146:29:3;1123:14024:15;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3347:3:3;1123:14024:15;;3326:19:3;;;;;3347:3;;3385:30;-1:-1:-1;;;;;3395:11:3;1123:14024:15;3395:11:3;;:::i;:::-;1123:14024:15;;3408:6:3;;;;:::i;:::-;1123:14024:15;3385:30:3;;:::i;:::-;3366:49;;;;:::i;:::-;1123:14024:15;3347:3:3;:::i;:::-;3311:13;;3326:19;;;;1123:14024:15;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;9568:13;1123:14024;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;:::i;:::-;1303:62:0;;:::i;:::-;1123:14024:15;2987:8;1123:14024;;2983:41;;8216:24;1123:14024;8216:24;;;:::i;1123:14024::-;;;;;;-1:-1:-1;;1123:14024:15;;;;-1:-1:-1;;;;;1123:14024:15;;:::i;:::-;;;;9728:15;1123:14024;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;2987:8;1123:14024;;2983:41;;1123:14024;;;5736:44;1123:14024;;;;:::i;:::-;;;;;:::i;:::-;5736:44;;:::i;1123:14024::-;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;;;929:10:11;4675:20:3;:60;;;;1123:14024:15;4654:153:3;;;:::i;:::-;6817:81;1123:14024:15;;;;6825:28:3;6817:81;:::i;:::-;1123:14024:15;;;6916:16:3;6908:66;6916:16;;6908:66;:::i;:::-;1123:14024:15;;;1662:18:7;1658:156;;1123:14024:15;1824:424:7;;1123:14024:15;;7134:3:3;1123:14024:15;;7118:14:3;;;;;7166:6;;7134:3;7166:6;;;:::i;:::-;1123:14024:15;7203:10:3;;;;;:::i;:::-;1123:14024:15;;;;;7250:9:3;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;7291:21:3;7283:76;7291:21;;;;7283:76;:::i;:::-;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7471:27:3;1123:14024:15;;;;;;7471:27:3;:::i;7134:3::-;7103:13;;7118:14;;;;;;;;;1123:14024:15;;;;-1:-1:-1;;;;;;;;;;;1123:14024:15;;;;;;929:10:11;;7524:47:3;929:10:11;;7524:47:3;;;:::i;:::-;;;;1713:19:10;;16774:580:3;;1123:14024:15;16774:580:3;1123:14024:15;;;;;;;;;;;16813:90:3;;;;929:10:11;1123:14024:15;16813:90:3;;1123:14024:15;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;16813:90:3;1123:14024:15;;16813:90:3;;;1123:14024:15;16813:90:3;1123:14024:15;16813:90:3;;1123:14024:15;;16813:90:3;;;16774:580;-1:-1:-1;16809:535:3;;;;1123:14024:15;16809:535:3;;:::i;:::-;;;;;;;;1123:14024:15;16809:535:3;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;1123:14024:15;;-1:-1:-1;;;17213:14:3;;1123:14024:15;;17213:14:3;;1123:14024:15;;;;;;;;;;;:::i;16809:535:3:-;-1:-1:-1;;;;;;1123:14024:15;16978:168:3;16809:535;16978:168;1123:14024:15;;-1:-1:-1;;;17077:50:3;;1123:14024:15;17077:50:3;1123:14024:15;17077:50:3;;;:::i;16813:90::-;;;;;1123:14024:15;16813:90:3;;;;;;;;;:::i;:::-;;;;;1824:424:7;1865:13;;;;1123:14024:15;1865:13:7;;;;;;1896:3;1123:14024:15;;1880:14:7;;;;;1932:6;;;;:::i;:::-;1123:14024:15;1973:10:7;;;;:::i;:::-;1123:14024:15;;;;;;2018:12:7;1123:14024:15;;;;;;2060:16:7;;;;1123:14024:15;;1896:3:7;1123:14024:15;;;;2018:12:7;1123:14024:15;;;;;;;;;1896:3:7;:::i;:::-;1865:13;;1123:14024:15;;;;-1:-1:-1;;;1123:14024:15;-1:-1:-1;;;;;;;;;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;1880:14:7;;;;;;;;;;;;1824:424;;1658:156;1701:13;;;;;;;;;1123:14024:15;1732:3:7;1123:14024:15;;1716:14:7;;;;;1779:10;;1768:6;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14024:15;1768:6:7;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;;1658:156;;4675:60:3;1123:14024:15;;;;;;3873:18:3;1123:14024:15;;;;;929:10:11;1123:14024:15;;;;4654:153:3;1123:14024:15;;;;;;4675:60:3;;;;1123:14024:15;;;;;;;:::i;:::-;;;2987:8;1123:14024;;2983:41;;1123:14024;;5505:7;1123:14024;;;;;;;:::i;:::-;5343:1;1123:14024;;;;;;;;;;;;;;:::i;:::-;5343:1;1123:14024;;;;;;;;5408:22;;;;:::i;:::-;1123:14024;5440:20;;;:::i;:::-;1123:14024;5505:7;:::i;:::-;1123:14024;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;2122:17:9;1123:14024:15;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;;;2163:30:9;2159:90;;1123:14024:15;-1:-1:-1;;;;;1123:14024:15;2296:23:9;;1123:14024:15;;;;;;;;;;;;;;;;;;;2756:5:9;1123:14024:15;;;;;;;;;;;;;;;2159:90:9;1123:14024:15;;;;;;:::i;:::-;2219:19:9;1123:14024:15;;;;;;;;;;;;2159:90:9;;1123:14024:15;;;;;;-1:-1:-1;;1123:14024:15;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;:::i;:::-;1303:62:0;;;;:::i;:::-;1123:14024:15;2987:8;1123:14024;;2983:41;;1123:14024;;;3277:12;1123:14024;;;;;;;3277:29;1123:14024;;;3277:29;1123:14024;;3276:30;3272:70;;1123:14024;;;;;;;;;;8995:31;1123:14024;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9122:24;;;1123:14024;;;;;;-1:-1:-1;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3272:70;1123:14024;;-1:-1:-1;;;3315:27:15;;1123:14024;3315:27;;1123:14024;;;;;3315:27;1123:14024;;;;;;-1:-1:-1;;1123:14024:15;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;1303:62:0;;:::i;:::-;1123:14024:15;2987:8;1123:14024;;2983:41;;11395:15;;11391:51;;11456:30;;11452:67;;11609:16;1123:14024;11609:16;1123:14024;;11609:16;:::i;:::-;1123:14024;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;11774:40;;;;1123:14024;;;;11774:40;;1123:14024;;;;;;;;;11750:12;1123:14024;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11824:13;1123:14024;;;;;;;;-1:-1:-1;;;;;;1123:14024:15;5105:10;1123:14024;;;11902:24;1123:14024;11867:23;1123:14024;;;;;;;1558:3;1123:14024;;;;;;;;;;;;;;;;;11980:59;12182:72;1123:14024;-1:-1:-1;;;;;1123:14024:15;;;11980:59;;;:::i;:::-;1123:14024;-1:-1:-1;;;;;;;;;;;1123:14024:15;;;;;;;;;;;;;:::i;:::-;12144:23;;;1946:3;1123:14024;;;;;;;;1946:3;;;;5105:10;1946:3;1123:14024;1946:3;;;;:::i;:::-;12182:72;;;1123:14024;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11391:51;1123:14024;;-1:-1:-1;;;11419:23:15;;1123:14024;;11419:23;1123:14024;;;;;;;;;;;;;;;;;10284:12;1123:14024;;;;;;;10284:31;1123:14024;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;10332:26;:59;;;;;1123:14024;;;;;;;;;;;;;:::i;10332:59::-;1123:14024;;;;;;;;2440:4:3;1123:14024:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10332:59;;;1123:14024;;;;;2440:4:3;1123:14024:15;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;-1:-1:-1;1123:14024:15;;-1:-1:-1;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1303:62:0;;;:::i;:::-;1123:14024:15;2987:8;1123:14024;;2983:41;;-1:-1:-1;;;;;1123:14024:15;;7789:21;;7785:58;;1123:14024;7996:41;1123:14024;;;;7945:15;1123:14024;;7945:36;1123:14024;;;;;;;;;;;;;;;;;;;7945:36;1123:14024;;;;;;;7996:41;1123:14024;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;1304:27;;1123:14024;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10640:46:15;;;:97;;;;1123:14024;10640:150;;;;1123:14024;;;;;;;;;;10640:150;-1:-1:-1;;;1810:52:9;;;-1:-1:-1;1810:92:9;;;;10640:150:15;;;;;1810:92:9;-1:-1:-1;;;1759:52:3;;;-1:-1:-1;1759:131:3;;;;1810:92:9;1759:183:3;;;;1810:92:9;;;;;1759:183:3;-1:-1:-1;;;1168:51:12;;-1:-1:-1;1759:183:3;;;:131;-1:-1:-1;;;1827:63:3;;;-1:-1:-1;1759:131:3;;10640:97:15;-1:-1:-1;;;10690:47:15;;;-1:-1:-1;10640:97:15;;1123:14024;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;1599:130:0;1513:6;1123:14024:15;-1:-1:-1;;;;;1123:14024:15;929:10:11;1662:23:0;1123:14024:15;;1599:130:0:o;1123:14024:15:-;;;;;;;;;;;;;;;;;;;;;;;;;2666:187:0;2758:6;1123:14024:15;;-1:-1:-1;;;;;1123:14024:15;;;-1:-1:-1;;;;;;1123:14024:15;;;;;;;;;;2806:40:0;-1:-1:-1;;2806:40:0;2666:187::o;2593:227:3:-;-1:-1:-1;;;;;1123:14024:15;;2706:21:3;;1123:14024:15;;2725:1:3;1123:14024:15;2791:9:3;1123:14024:15;;;2725:1:3;1123:14024:15;;2725:1:3;1123:14024:15;;;;2725:1:3;1123:14024:15;;2593:227:3;:::o;1123:14024:15:-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;;1123:14024:15;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;:::o;17366:193:3:-;1123:14024:15;;;;;;:::i;:::-;17499:1:3;1123:14024:15;;;;;;;;17511:18:3;;;:::i;:::-;1123:14024:15;17366:193:3;:::o;1123:14024:15:-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;6059:1493;;;-1:-1:-1;;;;;1123:14024:15;;;;6059:1493;;6407:23;;6403:60;;1513:6:0;1123:14024:15;;6477:10;:21;;:53;;;6059:1493;6473:94;;1123:14024;;13741:21;13737:46;;1123:14024;;;;13797:35;13793:69;;1123:14024;;1558:3;;13876:33;;;;13872:97;;13985:13;1123:14024;14022:3;1123:14024;;14000:20;;;;;14045:12;;;;:::i;:::-;1123:14024;-1:-1:-1;;1123:14024:15;;;;;;;14061:16;;;;:::i;:::-;1123:14024;-1:-1:-1;14045:32:15;14041:87;;14022:3;;;:::i;:::-;13985:13;;14041:87;14115:12;1123:14024;14115:12;;;:::i;:::-;1123:14024;;;14086:42;;;;;;;;;1123:14024;14086:42;1123:14024;;;;;;;;;;;;14000:20;;;;;;;;1123:14024;6627:761;6669:3;1123:14024;;6647:20;;;;;6706:12;;;;:::i;:::-;1123:14024;;;;;6737:12;1123:14024;;;;;;;6737:28;1123:14024;;;6737:28;1123:14024;;6736:29;6732:68;;6818:11;;;;:::i;:::-;1123:14024;6818:16;6814:49;;1123:14024;;;6992:16;1123:14024;;;;6992:39;1123:14024;;;;7020:11;;;;:::i;:::-;1123:14024;6992:39;;:::i;:::-;1123:14024;;;;;;;;;;7114:32;;;7110:104;;1123:14024;6669:3;1123:14024;;;;;;;;;;;;6669:3;:::i;:::-;6632:13;;;;;;;7110:104;1123:14024;;;;;;7155:59;;;;;;;;;1123:14024;;;;;;;;;7155:59;6814:49;1123:14024;;-1:-1:-1;;;6843:20:15;;;;;6732:68;1123:14024;;-1:-1:-1;;;6774:26:15;;;;;1123:14024;;;;;6774:26;6647:20;;;;;;;;1123:14024;;;;;;;;:::i;:::-;;;;10313:81:3;1123:14024:15;;;;10321:28:3;10313:81;:::i;:::-;1123:14024:15;1732:3:7;1123:14024:15;;1716:14:7;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14024:15;1768:6:7;;;;:::i;:::-;1123:14024:15;;;1755:12:7;1123:14024:15;;1755:34:7;1123:14024:15;;;;;;1755:34:7;:::i;1732:3::-;1701:13;;1716:14;;;;;1123:14024:15;10560:3:3;1123:14024:15;;10544:14:3;;;;;10604:10;;10560:3;10604:10;;;:::i;:::-;1123:14024:15;10589:6:3;;;;:::i;:::-;1123:14024:15;;;;10579:9:3;1123:14024:15;;;;;;;;;;10579:35:3;1123:14024:15;;;;;;10579:35:3;:::i;10560:3::-;10529:13;;10544:14;;;;;;;1123:14024:15;;;;-1:-1:-1;;;;;;;;;;;6477:10:15;10640:53:3;;;;;;;:::i;:::-;;;;1713:19:10;16774:580:3;;10524:101;6059:1493:15;;;;;;:::o;16774:580:3:-;1123:14024:15;;;;;;;;;;;;;;;;;;16813:90:3;;;;6477:10:15;16813:90:3;;;1123:14024:15;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;16813:90:3;;;;1123:14024:15;;16813:90:3;;;16774:580;-1:-1:-1;16809:535:3;;;;1123:14024:15;16809:535:3;;:::i;:::-;;;;;;;;;;16774:580;;;;;;;;16809:535;1123:14024:15;-1:-1:-1;;;17267:62:3;;1123:14024:15;17267:62:3;16813:90;17267:62;;;:::i;16809:535::-;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;1123:14024:15;;-1:-1:-1;;;17213:14:3;;1123:14024:15;16813:90:3;17213:14;;1123:14024:15;;;;;;;;;;;:::i;16809:535:3:-;-1:-1:-1;;;;;;1123:14024:15;16982:71:3;16978:168;;16809:535;;;16978:168;1123:14024:15;-1:-1:-1;;;17077:50:3;;1123:14024:15;17077:50:3;16813:90;17077:50;;;:::i;16813:90::-;;;;;1123:14024:15;16813:90:3;;;;;;;;;:::i;:::-;;;;;13872:97:15;1123:14024;;;;;13918:51;;;;;;;;;1123:14024;;;;;13918:51;13793:69;1123:14024;;-1:-1:-1;;;13841:21:15;;;;;13737:46;1123:14024;;-1:-1:-1;;;13771:12:15;;;;;6473:94;1123:14024;;-1:-1:-1;;;6539:28:15;;6477:10;6539:28;;;1123:14024;;;6539:28;6477:53;:10;;6428:1;1123:14024;6503:15;1123:14024;;;;6428:1;1123:14024;;;6502:28;6477:53;;1123:14024;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;;;-1:-1:-1;;1123:14024:15;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;3790:351:9;;-1:-1:-1;;;;;1123:14024:15;3907:33:9;3899:88;2756:5;3907:33;;;3899:88;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;;;4005:22:9;;1123:14024:15;;;;;;;;:::i;:::-;;;4099:35:9;;;;1123:14024:15;;;-1:-1:-1;1123:14024:15;;;4070:17:9;1123:14024:15;;;;;;;;;;;-1:-1:-1;;;;;;1123:14024:15;;;;;;3790:351:9:o;1123:14024:15:-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;12485:484;-1:-1:-1;;;;;1123:14024:15;;;;12485:484;12582:23;;12578:60;;1558:3;12652:36;;12648:135;;1123:14024;;;;;;12793:34;;1123:14024;;;;;;;;;12837:38;1123:14024;1558:3;1123:14024;;;;;;1558:3;1123:14024;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;3123:88:9;2756:5;3131:33;;;3123:88;:::i;:::-;3314:35;1123:14024:15;;;;;:::i;:::-;;;;3314:35:9;1123:14024:15;3292:57:9;1123:14024:15;;-1:-1:-1;;;;;;1123:14024:15;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;3292:57:9;1123:14024:15;;;;;;;;;;;;12485:484::o;12648:135::-;1123:14024;;-1:-1:-1;;;12711:61:15;;;;;1123:14024;;;1558:3;1123:14024;;;;;;12711:61","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","burn(address,uint256,uint256)":"f5298aca","burnBatch(address,uint256[],uint256[])":"6b20c454","createToken(string,uint256,address)":"1542bb95","disableContract()":"894ba833","disabled()":"ee070805","exists(uint256)":"4f558e79","init(string,string,string,address,address)":"a7eae21c","isApprovedForAll(address,address)":"e985e9c5","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintBatchTo(address,uint256[],uint256[])":"3512639c","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","royaltyInfo(uint256,uint256)":"2a55205a","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","setDefaultRoyaltyPercentage(uint256)":"e27a41bf","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","setRoyaltyReceiverForToken(uint256,address)":"e2200a0b","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","totalSupply(uint256)":"bd85b039","transferOwnership(address)":"f2fde38b","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RoyaltyPercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"royaltyReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"burnBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_royaltyReceiver\",\"type\":\"address\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBatchTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_percentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRoyaltyPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setRoyaltyReceiverForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Clone-safe upgradeable-style implementation used behind minimal proxies. Token ids start at 1.\",\"errors\":{\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported percentage.\",\"supplied\":\"Percentage supplied by the caller.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"params\":{\"tokenId\":\"Token id that is not greater than the previous token id.\"}}]},\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,address,uint256,string)\":{\"params\":{\"creator\":\"RARE creator recorded for the token id.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"royaltyReceiver\":\"ERC2981 royalty receiver configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createToken(string,uint256,address)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_royaltyReceiver\":\"ERC2981 royalty receiver for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"exists(uint256)\":{\"details\":\"Indicates whether any token exist with a given id, or not.\"},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and ERC2981 royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintBatchTo(address,uint256[],uint256[])\":{\"details\":\"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.\",\"params\":{\"_amounts\":\"Quantities to mint for each token id.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenIds\":\"Existing token ids to mint.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"Minted token id.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"details\":\"Tokens created before this update keep their token-specific royalty percentage.\",\"params\":{\"_percentage\":\"New royalty percentage, expressed as whole percentage points.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"details\":\"Token-specific royalty receivers take precedence over this value.\",\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"details\":\"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.\",\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"setRoyaltyReceiverForToken(uint256,address)\":{\"details\":\"The token's existing royalty percentage is preserved.\",\"params\":{\"_receiver\":\"New token-specific royalty receiver.\",\"_tokenId\":\"Token id whose royalty receiver is updated.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"totalSupply(uint256)\":{\"details\":\"Total amount of tokens in with a given id.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"stateVariables\":{\"MAX_BATCH_SIZE\":{\"return\":\"Maximum supported batch item count.\",\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"disabled\":{\"return\":\"True when disabled.\",\"returns\":{\"_0\":\"True when disabled.\"}},\"name\":{\"return\":\"Collection name.\",\"returns\":{\"_0\":\"Collection name.\"}},\"symbol\":{\"return\":\"Collection symbol.\",\"returns\":{\"_0\":\"Collection symbol.\"}}},\"title\":\"RareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"BatchLengthMismatch()\":[{\"notice\":\"Reverted when parallel batch arrays have different lengths.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"notice\":\"Reverted when the default royalty percentage is above 100%.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,address,uint256,string)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch mint operations.\"},\"createToken(string,uint256,address)\":{\"notice\":\"Creates a new token type.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintBatchTo(address,uint256[],uint256[])\":{\"notice\":\"Mints existing token ids to a receiver.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints one existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"notice\":\"Updates the fallback ERC2981 royalty percentage.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the fallback ERC2981 royalty receiver.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes collection-wide minter approval for an address.\"},\"setRoyaltyReceiverForToken(uint256,address)\":{\"notice\":\"Updates the ERC2981 royalty receiver for one token id.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Basic RARE Protocol ERC1155 collection with creator and royalty support.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/RareERC1155.sol\":\"RareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7\",\"dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol\":{\"keccak256\":\"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98\",\"dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8\",\"dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol\":{\"keccak256\":\"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9\",\"dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e\",\"dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC\"]},\"src/token/ERC1155/RareERC1155.sol\":{\"keccak256\":\"0xf4d45ba8ed3c2f029b7fe5bad4a25f231ca7716bd1b9ca2fbcf0f0bf155f6ed5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36e0a65dfe63ab5c9dcffa99fa0490a23b6f36d972dc85e4177e3ea5aa6c1534\",\"dweb:/ipfs/QmRNEoTBijseaA5cGx3tDmPxf2nU9opfqc4RGP9cBsTfd7\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[],"type":"error","name":"BatchLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"RoyaltyPercentageTooHigh"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"address","name":"royaltyReceiver","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"values","type":"uint256[]","indexed":false}],"type":"event","name":"TransferBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"TransferSingle","anonymous":false},{"inputs":[{"internalType":"string","name":"value","type":"string","indexed":false},{"internalType":"uint256","name":"id","type":"uint256","indexed":true}],"type":"event","name":"URI","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"burnBatch"},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"address","name":"_royaltyReceiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"mintBatchTo"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyPercentage"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyReceiverForToken"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"createToken(string,uint256,address)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_royaltyReceiver":"ERC2981 royalty receiver for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"exists(uint256)":{"details":"Indicates whether any token exist with a given id, or not."},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and ERC2981 royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedForAll(address,address)":{"details":"See {IERC1155-isApprovedForAll}."},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintBatchTo(address,uint256[],uint256[])":{"details":"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.","params":{"_amounts":"Quantities to mint for each token id.","_receiver":"Address that receives the minted tokens.","_tokenIds":"Existing token ids to mint."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"Minted token id."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"See {IERC1155-safeBatchTransferFrom}."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"See {IERC1155-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC1155-setApprovalForAll}."},"setDefaultRoyaltyPercentage(uint256)":{"details":"Tokens created before this update keep their token-specific royalty percentage.","params":{"_percentage":"New royalty percentage, expressed as whole percentage points."}},"setDefaultRoyaltyReceiver(address)":{"details":"Token-specific royalty receivers take precedence over this value.","params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"details":"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.","params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"setRoyaltyReceiverForToken(uint256,address)":{"details":"The token's existing royalty percentage is preserved.","params":{"_receiver":"New token-specific royalty receiver.","_tokenId":"Token id whose royalty receiver is updated."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"totalSupply(uint256)":{"details":"Total amount of tokens in with a given id."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch mint operations."},"createToken(string,uint256,address)":{"notice":"Creates a new token type."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintBatchTo(address,uint256[],uint256[])":{"notice":"Mints existing token ids to a receiver."},"mintTo(address,uint256,uint256)":{"notice":"Mints one existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"setDefaultRoyaltyPercentage(uint256)":{"notice":"Updates the fallback ERC2981 royalty percentage."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the fallback ERC2981 royalty receiver."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes collection-wide minter approval for an address."},"setRoyaltyReceiverForToken(uint256,address)":{"notice":"Updates the ERC2981 royalty receiver for one token id."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/RareERC1155.sol":"RareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol":{"keccak256":"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856","urls":["bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7","dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"keccak256":"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b","urls":["bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce","dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol":{"keccak256":"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8","urls":["bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83","dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol":{"keccak256":"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7","urls":["bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98","dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"keccak256":"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e","urls":["bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8","dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"keccak256":"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448","urls":["bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9","dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol":{"keccak256":"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f","urls":["bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9","dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a","urls":["bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7","dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052","urls":["bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e","dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC"],"license":"MIT"},"src/token/ERC1155/RareERC1155.sol":{"keccak256":"0xf4d45ba8ed3c2f029b7fe5bad4a25f231ca7716bd1b9ca2fbcf0f0bf155f6ed5","urls":["bzz-raw://36e0a65dfe63ab5c9dcffa99fa0490a23b6f36d972dc85e4177e3ea5aa6c1534","dweb:/ipfs/QmRNEoTBijseaA5cGx3tDmPxf2nU9opfqc4RGP9cBsTfd7"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":15} \ No newline at end of file diff --git a/src/test/marketplace/RareERC1155Listings.t.sol b/src/test/marketplace/RareERC1155Listings.t.sol index 472005a..3a32dbc 100644 --- a/src/test/marketplace/RareERC1155Listings.t.sol +++ b/src/test/marketplace/RareERC1155Listings.t.sol @@ -190,7 +190,7 @@ contract RareERC1155ListingsTest is Test { token = RareERC1155(tokenFactory.createRareERC1155Contract("Rare Editions", "RED", "ipfs://base/{id}.json")); vm.prank(seller); - tokenId = token.createToken("ipfs://token/1.json", 20); + tokenId = token.createToken("ipfs://token/1.json", 20, seller); vm.etch(marketplaceSettings, address(market).code); vm.etch(stakingSettings, address(market).code); @@ -631,7 +631,7 @@ contract RareERC1155ListingsTest is Test { uint256 otherTokenId; vm.prank(seller); - otherTokenId = token.createToken("ipfs://token/2.json", 20); + otherTokenId = token.createToken("ipfs://token/2.json", 20, seller); _prepareDirectSale(address(0), 0, block.timestamp, 0); _prepareDirectSaleForToken(otherTokenId, address(0), 0, block.timestamp, 0); @@ -731,7 +731,7 @@ contract RareERC1155ListingsTest is Test { uint256 price = 1 ether; vm.prank(seller); - paidTokenId = token.createToken("ipfs://token/2.json", 20); + paidTokenId = token.createToken("ipfs://token/2.json", 20, seller); _prepareDirectSale(address(0), 0, block.timestamp, 0); _prepareDirectSaleForToken(paidTokenId, address(0), price, block.timestamp, 0); @@ -773,7 +773,7 @@ contract RareERC1155ListingsTest is Test { uint256 price = 33; vm.prank(seller); - otherTokenId = token.createToken("ipfs://token/2.json", 20); + otherTokenId = token.createToken("ipfs://token/2.json", 20, seller); _prepareDirectSale(address(0), price, block.timestamp, 0); _prepareDirectSaleForToken(otherTokenId, address(0), price, block.timestamp, 0); @@ -800,7 +800,7 @@ contract RareERC1155ListingsTest is Test { uint256 otherTokenId; vm.prank(seller); - otherTokenId = token.createToken("ipfs://token/2.json", 20); + otherTokenId = token.createToken("ipfs://token/2.json", 20, seller); _prepareDirectSale(address(0), 0, block.timestamp, 0); _prepareDirectSaleForToken(otherTokenId, address(0), 0, block.timestamp, 0); @@ -1015,7 +1015,7 @@ contract RareERC1155ListingsTest is Test { uint256 price = 1 ether; vm.prank(seller); - otherTokenId = token.createToken("ipfs://token/2.json", 20); + otherTokenId = token.createToken("ipfs://token/2.json", 20, seller); uint256[] memory tokenIds = new uint256[](2); uint256[] memory mintAmounts = new uint256[](2); diff --git a/src/test/token/ERC1155/RareERC1155.t.sol b/src/test/token/ERC1155/RareERC1155.t.sol index 17861d3..bd8bf24 100644 --- a/src/test/token/ERC1155/RareERC1155.t.sol +++ b/src/test/token/ERC1155/RareERC1155.t.sol @@ -53,7 +53,7 @@ contract RareERC1155Test is Test { function testCreateTokenMintAndRoyalty() public { vm.prank(owner); - uint256 tokenId = token.createToken("ipfs://token/1.json", 10); + uint256 tokenId = token.createToken("ipfs://token/1.json", 10, royaltyReceiver); assertEq(tokenId, 1); assertEq(token.uri(tokenId), "ipfs://token/1.json"); @@ -71,19 +71,19 @@ contract RareERC1155Test is Test { assertEq(token.totalMintedForToken(tokenId), 4); (address receiver, uint256 royaltyAmount) = token.royaltyInfo(tokenId, 1 ether); - assertEq(receiver, owner); + assertEq(receiver, royaltyReceiver); assertEq(royaltyAmount, 0.1 ether); } - function testOwnerCanUpdateDefaultRoyaltyReceiverAndPercentage() public { + function testDefaultRoyaltyUpdatesDoNotOverrideExistingTokenRoyalty() public { vm.prank(owner); - uint256 tokenId = token.createToken("ipfs://token/1.json", 10); + uint256 tokenId = token.createToken("ipfs://token/1.json", 10, owner); vm.prank(owner); token.setDefaultRoyaltyReceiver(royaltyReceiver); (address receiverAfterReceiverUpdate, uint256 amountAfterReceiverUpdate) = token.royaltyInfo(tokenId, 1 ether); - assertEq(receiverAfterReceiverUpdate, royaltyReceiver); + assertEq(receiverAfterReceiverUpdate, owner); assertEq(amountAfterReceiverUpdate, 0.1 ether); vm.prank(owner); @@ -91,8 +91,34 @@ contract RareERC1155Test is Test { (address receiverAfterPercentageUpdate, uint256 amountAfterPercentageUpdate) = token.royaltyInfo(tokenId, 1 ether); - assertEq(receiverAfterPercentageUpdate, royaltyReceiver); - assertEq(amountAfterPercentageUpdate, 0.15 ether); + assertEq(receiverAfterPercentageUpdate, owner); + assertEq(amountAfterPercentageUpdate, 0.1 ether); + + (address fallbackReceiver, uint256 fallbackAmount) = token.royaltyInfo(999, 1 ether); + assertEq(fallbackReceiver, royaltyReceiver); + assertEq(fallbackAmount, 0.15 ether); + + vm.prank(owner); + uint256 secondTokenId = token.createToken("ipfs://token/2.json", 10, owner); + + (address secondTokenReceiver, uint256 secondTokenAmount) = token.royaltyInfo(secondTokenId, 1 ether); + assertEq(secondTokenReceiver, owner); + assertEq(secondTokenAmount, 0.15 ether); + } + + function testOwnerCanUpdateTokenRoyaltyReceiver() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 10, owner); + + vm.prank(owner); + token.setDefaultRoyaltyPercentage(15); + + vm.prank(owner); + token.setRoyaltyReceiverForToken(tokenId, royaltyReceiver); + + (address receiver, uint256 royaltyAmount) = token.royaltyInfo(tokenId, 1 ether); + assertEq(receiver, royaltyReceiver); + assertEq(royaltyAmount, 0.1 ether); } function testSetDefaultRoyaltyRejectsInvalidConfig() public { @@ -105,9 +131,28 @@ contract RareERC1155Test is Test { token.setDefaultRoyaltyPercentage(101); } + function testCreateTokenRejectsZeroRoyaltyReceiver() public { + vm.prank(owner); + vm.expectRevert(IRareERC1155.ZeroAddressUnsupported.selector); + token.createToken("ipfs://token/1.json", 10, address(0)); + } + + function testSetTokenRoyaltyReceiverRejectsInvalidConfig() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 10, owner); + + vm.prank(owner); + vm.expectRevert(IRareERC1155.ZeroAddressUnsupported.selector); + token.setRoyaltyReceiverForToken(tokenId, address(0)); + + vm.prank(owner); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155.TokenDoesNotExist.selector, tokenId + 1)); + token.setRoyaltyReceiverForToken(tokenId + 1, royaltyReceiver); + } + function testMaxSupplyEnforced() public { vm.prank(owner); - uint256 tokenId = token.createToken("ipfs://token/1.json", 2); + uint256 tokenId = token.createToken("ipfs://token/1.json", 2, owner); vm.prank(minter); _mintBatchTo(collector, tokenId, 2); @@ -119,7 +164,7 @@ contract RareERC1155Test is Test { function testBurnDoesNotResetMaxSupply() public { vm.prank(owner); - uint256 tokenId = token.createToken("ipfs://token/1.json", 2); + uint256 tokenId = token.createToken("ipfs://token/1.json", 2, owner); vm.prank(minter); _mintBatchTo(collector, tokenId, 2); @@ -138,7 +183,7 @@ contract RareERC1155Test is Test { function testOnlyOwnerOrApprovedMinterCanMint() public { vm.prank(owner); - uint256 tokenId = token.createToken("ipfs://token/1.json", 5); + uint256 tokenId = token.createToken("ipfs://token/1.json", 5, owner); vm.prank(collector); vm.expectRevert(abi.encodeWithSelector(IRareERC1155.CallerCannotMint.selector, collector)); @@ -155,7 +200,7 @@ contract RareERC1155Test is Test { function testBurnAndDisable() public { vm.prank(owner); - uint256 tokenId = token.createToken("ipfs://token/1.json", 5); + uint256 tokenId = token.createToken("ipfs://token/1.json", 5, owner); vm.prank(minter); _mintBatchTo(collector, tokenId, 3); @@ -176,7 +221,7 @@ contract RareERC1155Test is Test { function testDisableFreezesOwnerManagedWrites() public { vm.prank(owner); - uint256 tokenId = token.createToken("ipfs://token/1.json", 5); + uint256 tokenId = token.createToken("ipfs://token/1.json", 5, owner); vm.prank(owner); token.disableContract(); @@ -193,6 +238,10 @@ contract RareERC1155Test is Test { vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); token.setDefaultRoyaltyPercentage(15); + vm.prank(owner); + vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); + token.setRoyaltyReceiverForToken(tokenId, royaltyReceiver); + vm.prank(owner); vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); token.updateTokenURI(tokenId, "ipfs://token/updated.json"); @@ -200,8 +249,8 @@ contract RareERC1155Test is Test { function testMintBatchToMultipleTokenIds() public { vm.startPrank(owner); - uint256 tokenIdA = token.createToken("ipfs://token/1.json", 10); - uint256 tokenIdB = token.createToken("ipfs://token/2.json", 10); + uint256 tokenIdA = token.createToken("ipfs://token/1.json", 10, owner); + uint256 tokenIdB = token.createToken("ipfs://token/2.json", 10, owner); vm.stopPrank(); uint256[] memory tokenIds = new uint256[](2); @@ -222,7 +271,7 @@ contract RareERC1155Test is Test { function testMintToWrapsBatchMinting() public { vm.prank(owner); - uint256 tokenId = token.createToken("ipfs://token/1.json", 10); + uint256 tokenId = token.createToken("ipfs://token/1.json", 10, owner); vm.prank(minter); uint256 mintedTokenId = token.mintTo(collector, tokenId, 4); diff --git a/src/token/ERC1155/IRareERC1155.sol b/src/token/ERC1155/IRareERC1155.sol index 4add49c..3636db0 100644 --- a/src/token/ERC1155/IRareERC1155.sol +++ b/src/token/ERC1155/IRareERC1155.sol @@ -27,9 +27,16 @@ interface IRareERC1155 is ITokenCreator, IERC2981Upgradeable { /// @notice Emitted when the owner creates a token type. /// @param tokenId Newly created token id. /// @param creator RARE creator recorded for the token id. + /// @param royaltyReceiver ERC2981 royalty receiver configured for the token id. /// @param maxSupply Maximum supply configured for the token id. /// @param tokenURI Token-specific metadata URI. - event TokenCreated(uint256 indexed tokenId, address indexed creator, uint256 maxSupply, string tokenURI); + event TokenCreated( + uint256 indexed tokenId, + address indexed creator, + address indexed royaltyReceiver, + uint256 maxSupply, + string tokenURI + ); /// @notice Emitted when owner changes minter approval. /// @param minter Address whose approval changed. @@ -116,8 +123,11 @@ interface IRareERC1155 is ITokenCreator, IERC2981Upgradeable { /// @notice Creates a new token type. /// @param _tokenURI Metadata URI returned for the new token id. /// @param _maxSupply Maximum supply that may ever be minted for the new token id. + /// @param _royaltyReceiver ERC2981 royalty receiver for the new token id. /// @return The newly created token id. - function createToken(string calldata _tokenURI, uint256 _maxSupply) external returns (uint256); + function createToken(string calldata _tokenURI, uint256 _maxSupply, address _royaltyReceiver) + external + returns (uint256); /// @notice Mints one existing token id to a receiver. /// @dev Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting. @@ -146,14 +156,22 @@ interface IRareERC1155 is ITokenCreator, IERC2981Upgradeable { /// @param _isMinter Whether the address should be allowed to mint. function setMinterApproval(address _minter, bool _isMinter) external; - /// @notice Updates the collection-wide ERC2981 royalty receiver. + /// @notice Updates the fallback ERC2981 royalty receiver. + /// @dev Token-specific royalty receivers take precedence over this value. /// @param _receiver New default royalty receiver. function setDefaultRoyaltyReceiver(address _receiver) external; - /// @notice Updates the collection-wide ERC2981 royalty percentage. + /// @notice Updates the fallback ERC2981 royalty percentage. + /// @dev Tokens created before this update keep their token-specific royalty percentage. /// @param _percentage New royalty percentage, expressed as whole percentage points. function setDefaultRoyaltyPercentage(uint256 _percentage) external; + /// @notice Updates the ERC2981 royalty receiver for one token id. + /// @dev The token's existing royalty percentage is preserved. + /// @param _tokenId Token id whose royalty receiver is updated. + /// @param _receiver New token-specific royalty receiver. + function setRoyaltyReceiverForToken(uint256 _tokenId, address _receiver) external; + /// @notice Updates the token-specific metadata URI for an existing token id. /// @param _tokenId Token id whose URI is updated. /// @param _tokenURI New token-specific metadata URI. diff --git a/src/token/ERC1155/RareERC1155.sol b/src/token/ERC1155/RareERC1155.sol index 58fb512..94c5b0b 100644 --- a/src/token/ERC1155/RareERC1155.sol +++ b/src/token/ERC1155/RareERC1155.sol @@ -58,12 +58,15 @@ contract RareERC1155 is /// @notice Lifetime minted quantity by token id. mapping(uint256 => uint256) private tokenTotalMinted; - /// @notice Collection-wide ERC2981 royalty receiver. + /// @notice Fallback ERC2981 royalty receiver. address private defaultRoyaltyReceiver; - /// @notice Collection-wide ERC2981 royalty percentage, expressed as whole percentage points. + /// @notice Fallback ERC2981 royalty percentage, expressed as whole percentage points. uint256 private defaultRoyaltyPercentage; + /// @notice Token-specific ERC2981 royalty percentage, expressed as whole percentage points. + mapping(uint256 => uint256) private tokenRoyaltyPercentages; + /// @notice Ensures the collection has not been disabled. modifier ifNotDisabled() { // Atomic guard: disabled collections reject owner-managed writes before any state changes. @@ -121,13 +124,13 @@ contract RareERC1155 is } /// @inheritdoc IRareERC1155 - function createToken(string calldata _tokenURI, uint256 _maxSupply) + function createToken(string calldata _tokenURI, uint256 _maxSupply, address _royaltyReceiver) external onlyOwner ifNotDisabled returns (uint256) { - return _createToken(_tokenURI, _maxSupply, msg.sender); + return _createToken(_tokenURI, _maxSupply, msg.sender, _royaltyReceiver); } /// @inheritdoc IRareERC1155 @@ -198,6 +201,16 @@ contract RareERC1155 is _setDefaultRoyaltyConfig(defaultRoyaltyReceiver, _percentage); } + /// @inheritdoc IRareERC1155 + function setRoyaltyReceiverForToken(uint256 _tokenId, address _receiver) + external + onlyOwner + ifNotDisabled + tokenExists(_tokenId) + { + _setTokenRoyaltyReceiver(_tokenId, _receiver); + } + /// @inheritdoc IRareERC1155 function updateTokenURI(uint256 _tokenId, string calldata _tokenURI) external @@ -260,10 +273,15 @@ contract RareERC1155 is /// @param _tokenURI Token-specific metadata URI. /// @param _maxSupply Maximum supply for the token id. /// @param _creator RARE creator recorded for the token id. + /// @param _royaltyReceiver ERC2981 royalty receiver for the token id. /// @return tokenId Newly created token id. - function _createToken(string calldata _tokenURI, uint256 _maxSupply, address _creator) internal returns (uint256) { + function _createToken(string calldata _tokenURI, uint256 _maxSupply, address _creator, address _royaltyReceiver) + internal + returns (uint256) + { // Atomic guard: token ids must be mintable. if (_maxSupply == 0) revert MaxSupplyCannotBeZero(); + if (_royaltyReceiver == address(0)) revert ZeroAddressUnsupported(); // State write: advance the monotonically increasing token id counter. tokenIdCounter++; @@ -272,15 +290,17 @@ contract RareERC1155 is // State writes: register token constraints and creator lookup. tokenConfigs[tokenId] = TokenConfig(_maxSupply, _tokenURI, true); tokenCreators[tokenId] = _creator; + tokenRoyaltyPercentages[tokenId] = defaultRoyaltyPercentage; + _setTokenRoyalty(tokenId, _royaltyReceiver, uint96(defaultRoyaltyPercentage * BASIS_POINTS_PER_PERCENT)); // Metadata and domain events: expose the new URI and token config to indexers. emit URI(_tokenURI, tokenId); - emit TokenCreated(tokenId, _creator, _maxSupply, _tokenURI); + emit TokenCreated(tokenId, _creator, _royaltyReceiver, _maxSupply, _tokenURI); return tokenId; } - /// @notice Updates collection-wide default ERC2981 royalty config. + /// @notice Updates fallback ERC2981 royalty config. /// @param _receiver Royalty receiver address. /// @param _percentage Royalty percentage, expressed as whole percentage points. function _setDefaultRoyaltyConfig(address _receiver, uint256 _percentage) internal { @@ -294,6 +314,15 @@ contract RareERC1155 is _setDefaultRoyalty(_receiver, uint96(_percentage * BASIS_POINTS_PER_PERCENT)); } + /// @notice Updates a token-specific ERC2981 royalty receiver. + /// @param _tokenId Token id whose receiver should be updated. + /// @param _receiver Royalty receiver address. + function _setTokenRoyaltyReceiver(uint256 _tokenId, address _receiver) internal { + if (_receiver == address(0)) revert ZeroAddressUnsupported(); + + _setTokenRoyalty(_tokenId, _receiver, uint96(tokenRoyaltyPercentages[_tokenId] * BASIS_POINTS_PER_PERCENT)); + } + /// @notice Validates batch mint input shape and token id ordering. /// @param _tokenIds Token ids requested by the caller. /// @param _amounts Amounts requested by the caller. From 7449b329763c5e787785a4c5318864d082c4e10f Mon Sep 17 00:00:00 2001 From: Keegan Date: Sat, 30 May 2026 20:59:31 -0400 Subject: [PATCH 08/17] Polish ERC1155 gas and inheritance style --- src/marketplace/RareERC1155Listings.sol | 9 +-------- src/token/ERC1155/RareERC1155.sol | 12 ++++++++++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/marketplace/RareERC1155Listings.sol b/src/marketplace/RareERC1155Listings.sol index 20fcbd1..6d4e629 100644 --- a/src/marketplace/RareERC1155Listings.sol +++ b/src/marketplace/RareERC1155Listings.sol @@ -5,7 +5,6 @@ import {IERC20} from "openzeppelin-contracts/token/ERC20/IERC20.sol"; import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; import {ERC165Checker} from "openzeppelin-contracts/utils/introspection/ERC165Checker.sol"; import {OwnableUpgradeable} from "openzeppelin-contracts-upgradeable/access/OwnableUpgradeable.sol"; -import {Initializable} from "openzeppelin-contracts-upgradeable/proxy/utils/Initializable.sol"; import {ReentrancyGuardUpgradeable} from "openzeppelin-contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; import {UUPSUpgradeable} from "openzeppelin-contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import {SafeERC20} from "openzeppelin-contracts/token/ERC20/utils/SafeERC20.sol"; @@ -19,13 +18,7 @@ import {IERC1155ApprovalManager} from "../v2/approver/ERC1155/IERC1155ApprovalMa /// @title RareERC1155Listings /// @notice Primary mint sales for RARE Protocol ERC1155 tokens and fixed-price resale listings for ERC1155 tokens. /// @dev UUPS-upgradeable marketplace that keeps ERC1155 sale semantics separate from ERC721 marketplace logic. -contract RareERC1155Listings is - Initializable, - IRareERC1155Listings, - OwnableUpgradeable, - ReentrancyGuardUpgradeable, - UUPSUpgradeable -{ +contract RareERC1155Listings is IRareERC1155Listings, OwnableUpgradeable, ReentrancyGuardUpgradeable, UUPSUpgradeable { using SafeERC20 for IERC20; using MarketConfigV2 for MarketConfigV2.Config; diff --git a/src/token/ERC1155/RareERC1155.sol b/src/token/ERC1155/RareERC1155.sol index 94c5b0b..dc4a235 100644 --- a/src/token/ERC1155/RareERC1155.sol +++ b/src/token/ERC1155/RareERC1155.sol @@ -163,7 +163,7 @@ contract RareERC1155 is if (msg.sender != owner() && !minterAddresses[msg.sender]) revert CallerCannotMint(msg.sender); _validateMintBatch(_tokenIds, _amounts); - for (uint256 i = 0; i < _tokenIds.length; i++) { + for (uint256 i = 0; i < _tokenIds.length;) { uint256 tokenId = _tokenIds[i]; if (!tokenConfigs[tokenId].exists) revert TokenDoesNotExist(tokenId); if (_amounts[i] == 0) revert AmountCannotBeZero(); @@ -175,6 +175,10 @@ contract RareERC1155 is // State write: record lifetime minted supply before the ERC1155 receiver hook can run. tokenTotalMinted[tokenId] = requestedTotalMinted; + + unchecked { + ++i; + } } // Token mint: OpenZeppelin ERC1155 updates balances, total supply, and emits TransferBatch. @@ -331,8 +335,12 @@ contract RareERC1155 is if (_tokenIds.length != _amounts.length) revert BatchLengthMismatch(); if (_tokenIds.length > MAX_BATCH_SIZE) revert BatchSizeExceeded(_tokenIds.length, MAX_BATCH_SIZE); - for (uint256 i = 1; i < _tokenIds.length; i++) { + for (uint256 i = 1; i < _tokenIds.length;) { if (_tokenIds[i] <= _tokenIds[i - 1]) revert TokenIdsNotStrictlyAscending(_tokenIds[i]); + + unchecked { + ++i; + } } } From 488b82b1b21c92d19ef4428b2d7dd7715acfb8a8 Mon Sep 17 00:00:00 2001 From: Keegan Date: Sun, 31 May 2026 12:15:31 -0400 Subject: [PATCH 09/17] Refactor ERC1155 marketplace settlement --- .../RareERC1155ListingsDeploy.s.sol | 61 - .../RareERC1155ListingsLogicUpdate.s.sol | 29 - .../RareERC1155MarketplaceDeploy.s.sol | 63 + .../RareERC1155MarketplaceLogicUpdate.s.sol | 24 + .../RareERC1155SettlementUpdate.s.sol | 25 + src/marketplace/IRareERC1155Listings.sol | 730 ------- src/marketplace/IRareERC1155Marketplace.sol | 157 ++ .../IRareERC1155MarketplaceTypes.sol | 309 +++ src/marketplace/IRareERC1155Settlement.sol | 41 + src/marketplace/RareERC1155Listings.sol | 1350 ------------- src/marketplace/RareERC1155Marketplace.sol | 575 ++++++ .../RareERC1155MarketplacePayments.sol | 266 +++ .../RareERC1155MarketplaceStorage.sol | 139 ++ src/marketplace/RareERC1155Settlement.sol | 917 +++++++++ .../marketplace/RareERC1155Listings.t.sol | 1736 ----------------- .../RareERC1155MarketplaceSettlement.t.sol | 801 ++++++++ 16 files changed, 3317 insertions(+), 3906 deletions(-) delete mode 100644 script/marketplace/RareERC1155ListingsDeploy.s.sol delete mode 100644 script/marketplace/RareERC1155ListingsLogicUpdate.s.sol create mode 100644 script/marketplace/RareERC1155MarketplaceDeploy.s.sol create mode 100644 script/marketplace/RareERC1155MarketplaceLogicUpdate.s.sol create mode 100644 script/marketplace/RareERC1155SettlementUpdate.s.sol delete mode 100644 src/marketplace/IRareERC1155Listings.sol create mode 100644 src/marketplace/IRareERC1155Marketplace.sol create mode 100644 src/marketplace/IRareERC1155MarketplaceTypes.sol create mode 100644 src/marketplace/IRareERC1155Settlement.sol delete mode 100644 src/marketplace/RareERC1155Listings.sol create mode 100644 src/marketplace/RareERC1155Marketplace.sol create mode 100644 src/marketplace/RareERC1155MarketplacePayments.sol create mode 100644 src/marketplace/RareERC1155MarketplaceStorage.sol create mode 100644 src/marketplace/RareERC1155Settlement.sol delete mode 100644 src/test/marketplace/RareERC1155Listings.t.sol create mode 100644 src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol diff --git a/script/marketplace/RareERC1155ListingsDeploy.s.sol b/script/marketplace/RareERC1155ListingsDeploy.s.sol deleted file mode 100644 index c3d665c..0000000 --- a/script/marketplace/RareERC1155ListingsDeploy.s.sol +++ /dev/null @@ -1,61 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "forge-std/Script.sol"; -import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; - -import "../../src/marketplace/RareERC1155Listings.sol"; - -/// @title RareERC1155ListingsDeploy -/// @notice Forge deployment script for the ERC1155 marketplace implementation and ERC1967 proxy. -/// @dev Reads market config addresses from environment variables and initializes the proxy in the same broadcast. -contract RareERC1155ListingsDeploy is Script { - /// @notice Deploys marketplace logic, deploys proxy, and initializes the proxied marketplace. - function run() external { - // Environment read: select deployer key for broadcast signing. - uint256 privateKey = vm.envUint("PRIVATE_KEY"); - - // Broadcast boundary: following operations are submitted as deployer transactions. - vm.startBroadcast(privateKey); - - // Address derivation: default network beneficiary to deployer when no env override is provided. - address addr = vm.addr(privateKey); - - // Environment reads: collect required marketplace dependency addresses. - address networkBeneficiary = vm.envOr("NETWORK_BENEFICIARY", addr); - address marketplaceSettings = vm.envAddress("SETTINGS_ADDRESS"); - address spaceOperatorRegistry = vm.envAddress("SPACE_OPERATOR_REGISTRY"); - address royaltyEngine = vm.envAddress("ROYALTY_ENGINE"); - address payments = vm.envAddress("PAYMENTS"); - address approvedTokenRegistry = vm.envAddress("TOKEN_REGISTRY"); - address stakingSettings = vm.envAddress("STAKING_SETTINGS"); - address stakingRegistry = vm.envAddress("STAKING_REGISTRY"); - address erc20ApprovalManager = vm.envAddress("ERC20_APPROVAL_MANAGER"); - address erc721ApprovalManager = vm.envAddress("ERC721_APPROVAL_MANAGER"); - address erc1155ApprovalManager = vm.envAddress("ERC1155_APPROVAL_MANAGER"); - - // Deployment operation: deploy UUPS implementation logic. - RareERC1155Listings marketplace = new RareERC1155Listings(); - - bytes memory initData = abi.encodeWithSelector( - RareERC1155Listings.initialize.selector, - networkBeneficiary, - marketplaceSettings, - spaceOperatorRegistry, - royaltyEngine, - payments, - approvedTokenRegistry, - stakingSettings, - stakingRegistry, - erc20ApprovalManager, - erc721ApprovalManager, - erc1155ApprovalManager - ); - - // Deployment operation: deploy ERC1967 proxy and initialize it atomically. - new ERC1967Proxy(address(marketplace), initData); - - // Broadcast boundary: stop submitting transactions. - vm.stopBroadcast(); - } -} diff --git a/script/marketplace/RareERC1155ListingsLogicUpdate.s.sol b/script/marketplace/RareERC1155ListingsLogicUpdate.s.sol deleted file mode 100644 index f559782..0000000 --- a/script/marketplace/RareERC1155ListingsLogicUpdate.s.sol +++ /dev/null @@ -1,29 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "forge-std/Script.sol"; - -import "../../src/marketplace/RareERC1155Listings.sol"; - -/// @title RareERC1155ListingsLogicUpdate -/// @notice Forge script for upgrading an existing ERC1155 marketplace proxy to a new implementation. -/// @dev Reads `PRIVATE_KEY` and `RARE_ERC1155_LISTINGS` from the environment. -contract RareERC1155ListingsLogicUpdate is Script { - /// @notice Deploys new marketplace logic and calls `upgradeTo` on the configured proxy. - function run() external { - // Broadcast boundary: following operations are submitted as deployer transactions. - vm.startBroadcast(vm.envUint("PRIVATE_KEY")); - - // Environment read: proxy address to upgrade. - address marketplaceProxy = vm.envAddress("RARE_ERC1155_LISTINGS"); - - // Deployment operation: deploy replacement UUPS implementation. - RareERC1155Listings marketplace = new RareERC1155Listings(); - - // Upgrade transaction: proxy owner must authorize the implementation change. - RareERC1155Listings(marketplaceProxy).upgradeTo(address(marketplace)); - - // Broadcast boundary: stop submitting transactions. - vm.stopBroadcast(); - } -} diff --git a/script/marketplace/RareERC1155MarketplaceDeploy.s.sol b/script/marketplace/RareERC1155MarketplaceDeploy.s.sol new file mode 100644 index 0000000..98cd6fa --- /dev/null +++ b/script/marketplace/RareERC1155MarketplaceDeploy.s.sol @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {Script, console} from "forge-std/Script.sol"; +import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; + +import {ERC20ApprovalManager} from "../../src/v2/approver/ERC20/ERC20ApprovalManager.sol"; +import {ERC1155ApprovalManager} from "../../src/v2/approver/ERC1155/ERC1155ApprovalManager.sol"; +import {RareERC1155Marketplace} from "../../src/marketplace/RareERC1155Marketplace.sol"; +import {RareERC1155Settlement} from "../../src/marketplace/RareERC1155Settlement.sol"; + +/// @title RareERC1155MarketplaceDeploy +/// @notice Deploys the ERC1155 marketplace implementation, settlement module, and ERC1967 marketplace proxy. +contract RareERC1155MarketplaceDeploy is Script { + function run() external { + uint256 privateKey = vm.envUint("PRIVATE_KEY"); + + vm.startBroadcast(privateKey); + + address deployer = vm.addr(privateKey); + address networkBeneficiary = vm.envOr("NETWORK_BENEFICIARY", deployer); + address marketplaceSettings = vm.envAddress("SETTINGS_ADDRESS"); + address spaceOperatorRegistry = vm.envAddress("SPACE_OPERATOR_REGISTRY"); + address royaltyEngine = vm.envAddress("ROYALTY_ENGINE"); + address payments = vm.envAddress("PAYMENTS"); + address approvedTokenRegistry = vm.envAddress("TOKEN_REGISTRY"); + address stakingSettings = vm.envAddress("STAKING_SETTINGS"); + address stakingRegistry = vm.envAddress("STAKING_REGISTRY"); + address erc20ApprovalManager = vm.envAddress("ERC20_APPROVAL_MANAGER"); + address erc721ApprovalManager = vm.envAddress("ERC721_APPROVAL_MANAGER"); + address erc1155ApprovalManager = vm.envAddress("ERC1155_APPROVAL_MANAGER"); + + RareERC1155Settlement settlement = new RareERC1155Settlement(); + RareERC1155Marketplace marketplaceImplementation = new RareERC1155Marketplace(); + + bytes memory initData = abi.encodeWithSelector( + RareERC1155Marketplace.initialize.selector, + networkBeneficiary, + marketplaceSettings, + spaceOperatorRegistry, + royaltyEngine, + payments, + approvedTokenRegistry, + stakingSettings, + stakingRegistry, + erc20ApprovalManager, + erc721ApprovalManager, + erc1155ApprovalManager, + address(settlement) + ); + + ERC1967Proxy marketplaceProxy = new ERC1967Proxy(address(marketplaceImplementation), initData); + + ERC20ApprovalManager(erc20ApprovalManager).grantOperatorRole(address(marketplaceProxy)); + ERC1155ApprovalManager(erc1155ApprovalManager).grantOperatorRole(address(marketplaceProxy)); + + console.log("RareERC1155Settlement deployed at:", address(settlement)); + console.log("RareERC1155Marketplace implementation deployed at:", address(marketplaceImplementation)); + console.log("RareERC1155Marketplace proxy deployed at:", address(marketplaceProxy)); + + vm.stopBroadcast(); + } +} diff --git a/script/marketplace/RareERC1155MarketplaceLogicUpdate.s.sol b/script/marketplace/RareERC1155MarketplaceLogicUpdate.s.sol new file mode 100644 index 0000000..e99ceaf --- /dev/null +++ b/script/marketplace/RareERC1155MarketplaceLogicUpdate.s.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {Script, console} from "forge-std/Script.sol"; + +import {RareERC1155Marketplace} from "../../src/marketplace/RareERC1155Marketplace.sol"; + +/// @title RareERC1155MarketplaceLogicUpdate +/// @notice Deploys a new marketplace implementation and upgrades an existing marketplace proxy. +contract RareERC1155MarketplaceLogicUpdate is Script { + function run() external { + vm.startBroadcast(vm.envUint("PRIVATE_KEY")); + + address marketplaceProxy = vm.envAddress("RARE_ERC1155_MARKETPLACE"); + RareERC1155Marketplace marketplaceImplementation = new RareERC1155Marketplace(); + + RareERC1155Marketplace(marketplaceProxy).upgradeTo(address(marketplaceImplementation)); + + console.log("RareERC1155Marketplace implementation deployed at:", address(marketplaceImplementation)); + console.log("RareERC1155Marketplace proxy upgraded at:", marketplaceProxy); + + vm.stopBroadcast(); + } +} diff --git a/script/marketplace/RareERC1155SettlementUpdate.s.sol b/script/marketplace/RareERC1155SettlementUpdate.s.sol new file mode 100644 index 0000000..c9fc017 --- /dev/null +++ b/script/marketplace/RareERC1155SettlementUpdate.s.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {Script, console} from "forge-std/Script.sol"; + +import {RareERC1155Marketplace} from "../../src/marketplace/RareERC1155Marketplace.sol"; +import {RareERC1155Settlement} from "../../src/marketplace/RareERC1155Settlement.sol"; + +/// @title RareERC1155SettlementUpdate +/// @notice Deploys a new settlement module and points an existing marketplace proxy at it. +contract RareERC1155SettlementUpdate is Script { + function run() external { + vm.startBroadcast(vm.envUint("PRIVATE_KEY")); + + address marketplaceProxy = vm.envAddress("RARE_ERC1155_MARKETPLACE"); + RareERC1155Settlement settlement = new RareERC1155Settlement(); + + RareERC1155Marketplace(marketplaceProxy).setSettlement(address(settlement)); + + console.log("RareERC1155Settlement deployed at:", address(settlement)); + console.log("RareERC1155Marketplace proxy updated at:", marketplaceProxy); + + vm.stopBroadcast(); + } +} diff --git a/src/marketplace/IRareERC1155Listings.sol b/src/marketplace/IRareERC1155Listings.sol deleted file mode 100644 index d2cfc53..0000000 --- a/src/marketplace/IRareERC1155Listings.sol +++ /dev/null @@ -1,730 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; - -/// @author SuperRare Labs Inc. -/// @title IRareERC1155Listings -/// @notice Interface for RARE Protocol ERC1155 primary mint sales and ERC1155 fixed-price secondary sales. -/// @dev Primary sales are configured per `(collection, tokenId)`. Secondary listings are approval-based and keyed by `(collection, tokenId, seller)`. -/// Secondary listings remain fillable until sold, cancelled, expired, or made invalid by seller balance, -/// ERC1155 approval, or currency policy. -interface IRareERC1155Listings { - /// @notice Primary payout data captured before an external collection mint. - /// @dev Used by implementations to preserve payout inputs across external calls. - struct PrimaryPayoutContext { - /// @notice Token id being minted. - uint256 tokenId; - /// @notice Gross sale amount before marketplace fee or platform commission. - uint256 grossAmount; - /// @notice Buyer-paid marketplace fee calculated for `grossAmount`. - uint256 marketplaceFee; - /// @notice Primary seller that receives proceeds after marketplace and platform fees. - address seller; - /// @notice Recipients that split seller proceeds. - address payable[] splitRecipients; - /// @notice Percentages corresponding to `splitRecipients`. - uint8[] splitRatios; - } - - /// @notice Secondary payout data captured before a listing is decremented or deleted. - /// @dev Used by implementations to preserve payout inputs across external calls and storage mutation. - struct SecondaryPayoutContext { - /// @notice Token id being purchased. - uint256 tokenId; - /// @notice Gross sale amount before marketplace fee or royalties. - uint256 grossAmount; - /// @notice Buyer-paid marketplace fee calculated for `grossAmount`. - uint256 marketplaceFee; - /// @notice Recipients that split seller proceeds. - address payable[] splitRecipients; - /// @notice Percentages corresponding to `splitRecipients`. - uint8[] splitRatios; - } - - /// @notice Primary mint sale configuration for a collection token id. - struct DirectSaleConfig { - /// @notice Seller/creator that owns the primary sale and receives sale proceeds. - address seller; - /// @notice Currency used for the sale. Zero address indicates ETH. - address currencyAddress; - /// @notice Unit price per ERC1155 token. - uint256 price; - /// @notice Timestamp when minting may begin. - uint256 startTime; - /// @notice Max quantity allowed per mint transaction. Zero means unlimited per transaction. - uint256 maxMints; - /// @notice Recipients that split seller proceeds after seller-side fee deductions. - address payable[] splitRecipients; - /// @notice Percentages corresponding to `splitRecipients`. Must total 100. - uint8[] splitRatios; - } - - /// @notice Merkle allowlist configuration for a token id. - struct AllowListConfig { - /// @notice Merkle root for allowed minters. Zero root disables allowlist enforcement. - bytes32 root; - /// @notice Timestamp when allowlist enforcement expires. - uint256 endTimestamp; - } - - /// @notice Secondary fixed-price listing for an ERC1155 token id. - /// @dev `expirationTime == 0` means no expiration. Nonzero expiration timestamps are exclusive end times. - /// Listings persist until filled, cancelled, expired, or invalidated by balance, approval, or currency approval changes. - struct SalePrice { - /// @notice Currency accepted by the seller. Zero address indicates ETH. - address currencyAddress; - /// @notice Unit price per ERC1155 token. - uint256 price; - /// @notice Remaining quantity available for purchase. Allows for partial fills. - uint256 quantity; - /// @notice Timestamp when the listing can no longer be filled. Zero means no expiration. - uint256 expirationTime; - /// @notice Recipients that split seller proceeds after seller-side fee deductions. - address payable[] splitRecipients; - /// @notice Percentages corresponding to `splitRecipients`. Must total 100. - uint8[] splitRatios; - } - - /// @notice Primary sale setup input for one token id in a batch. - struct DirectSaleRequest { - /// @notice Token id to configure. - uint256 tokenId; - /// @notice Unit price per ERC1155 token. - uint256 price; - /// @notice Timestamp when minting may begin. - uint256 startTime; - /// @notice Max quantity allowed per mint transaction. Zero means unlimited per transaction. - uint256 maxMints; - } - - /// @notice Primary mint input for one token id in a batch. - struct MintRequest { - /// @notice Token id to mint. - uint256 tokenId; - /// @notice Unit price expected by the buyer. - uint256 price; - /// @notice Quantity to mint. - uint256 quantity; - /// @notice Merkle proof for active allowlist sales. - bytes32[] proof; - } - - /// @notice Allowlist setup input for one token id in a batch. - struct AllowListConfigRequest { - /// @notice Token id controlled by the allowlist. - uint256 tokenId; - /// @notice Merkle root for allowed minters. Zero root disables allowlist enforcement. - bytes32 root; - /// @notice Timestamp when allowlist enforcement expires. - uint256 endTimestamp; - } - - /// @notice Limit setup input for one token id in a batch. - struct TokenLimitRequest { - /// @notice Token id controlled by the limit. - uint256 tokenId; - /// @notice New limit value. Zero disables the limit. - uint256 limit; - } - - /// @notice Secondary listing setup input for one token id in a batch. - struct SalePriceRequest { - /// @notice Token id to list. - uint256 tokenId; - /// @notice Unit price per ERC1155 token. - uint256 price; - /// @notice Quantity listed. - uint256 quantity; - /// @notice Timestamp when the listing can no longer be filled. Zero means no expiration. - uint256 expirationTime; - } - - /// @notice Secondary buy input for one token id in a batch. - struct BuyRequest { - /// @notice Token id to buy. - uint256 tokenId; - /// @notice Unit price expected by the buyer. - uint256 price; - /// @notice Quantity to buy. - uint256 quantity; - } - - /// @notice Emitted when a creator configures a primary mint sale. - /// @param contractAddress ERC1155 collection address. - /// @param tokenId Token id sold by the primary sale. - /// @param seller Creator/seller that receives sale proceeds. - /// @param currency Sale currency. Zero address indicates ETH. - /// @param price Unit price per token. - /// @param startTime Timestamp when minting may begin. - /// @param maxMints Max quantity per transaction. Zero means unlimited. - /// @param splitRecipients Recipients that split seller proceeds. - /// @param splitRatios Percentages for `splitRecipients`. - event PrepareMintDirectSale( - address indexed contractAddress, - uint256 indexed tokenId, - address indexed seller, - address currency, - uint256 price, - uint256 startTime, - uint256 maxMints, - address payable[] splitRecipients, - uint8[] splitRatios - ); - - /// @notice Emitted when a buyer mints through a primary sale. - /// @param contractAddress ERC1155 collection address. - /// @param tokenId Minted token id. - /// @param buyer Address that paid for and received the mint. - /// @param seller Creator/seller that received proceeds. - /// @param quantity Quantity minted. - /// @param currency Sale currency. Zero address indicates ETH. - /// @param price Unit price paid. - event MintDirectSale( - address indexed contractAddress, - uint256 indexed tokenId, - address indexed buyer, - address seller, - uint256 quantity, - address currency, - uint256 price - ); - - /// @notice Emitted when a token allowlist config is set. - /// @param contractAddress ERC1155 collection address. - /// @param tokenId Token id controlled by the allowlist. - /// @param root Merkle root for allowlisted buyers. - /// @param endTimestamp Timestamp when allowlist enforcement expires. - event SetTokenAllowListConfig( - address indexed contractAddress, uint256 indexed tokenId, bytes32 root, uint256 endTimestamp - ); - - /// @notice Emitted when a per-address mint limit is set for a token id. - /// @param contractAddress ERC1155 collection address. - /// @param tokenId Token id controlled by the limit. - /// @param limit Max quantity each address may mint while the limit is enabled. Zero disables the limit. - event TokenMintLimitSet(address indexed contractAddress, uint256 indexed tokenId, uint256 limit); - - /// @notice Emitted when a per-address transaction limit is set for a token id. - /// @param contractAddress ERC1155 collection address. - /// @param tokenId Token id controlled by the limit. - /// @param limit Max mint transactions each address may submit while the limit is enabled. Zero disables the limit. - event TokenTxLimitSet(address indexed contractAddress, uint256 indexed tokenId, uint256 limit); - - /// @notice Emitted when a seller creates or replaces a secondary fixed-price listing. - /// @param seller Seller that owns the listed ERC1155 balance. - /// @param contractAddress ERC1155 collection address. - /// @param tokenId Listed token id. - /// @param currency Listing currency. Zero address indicates ETH. - /// @param price Unit price per token. - /// @param quantity Quantity listed. - /// @param expirationTime Timestamp when the listing can no longer be filled. Zero means no expiration. - /// @param splitRecipients Recipients that split seller proceeds. - /// @param splitRatios Percentages for `splitRecipients`. - event SalePriceSet( - address indexed seller, - address indexed contractAddress, - uint256 indexed tokenId, - address currency, - uint256 price, - uint256 quantity, - uint256 expirationTime, - address payable[] splitRecipients, - uint8[] splitRatios - ); - - /// @notice Emitted when a seller cancels a secondary listing. - /// @param seller Seller that cancelled the listing. - /// @param contractAddress ERC1155 collection address. - /// @param tokenId Token id whose listing was cancelled. - event SalePriceCancelled(address indexed seller, address indexed contractAddress, uint256 indexed tokenId); - - /// @notice Emitted when a buyer fills a secondary fixed-price listing. - /// @param seller Seller that transferred the ERC1155 tokens. - /// @param buyer Buyer that paid and received the ERC1155 tokens. - /// @param contractAddress ERC1155 collection address. - /// @param tokenId Purchased token id. - /// @param currency Purchase currency. Zero address indicates ETH. - /// @param price Unit price paid. - /// @param quantity Quantity purchased. - event Sold( - address indexed seller, - address indexed buyer, - address indexed contractAddress, - uint256 tokenId, - address currency, - uint256 price, - uint256 quantity - ); - - /// @notice Emitted when an owner updates a critical marketplace dependency. - /// @param field Config field that was updated. - /// @param dependency New dependency address. - event MarketplaceDependencyUpdated(bytes32 indexed field, address indexed dependency); - - /// @notice Emitted when an owner updates marketplace pause state. - /// @param isPaused True when marketplace writes are paused. - event ContractPausedUpdated(bool isPaused); - - /// @notice Reverted when a write function is called while the marketplace is paused. - error ContractPaused(); - - /// @notice Reverted when a batch operation receives no items. - error EmptyBatch(); - - /// @notice Reverted when a batch exceeds the supported item count. - /// @param supplied Number of items supplied. - /// @param max Maximum supported item count. - error BatchSizeExceeded(uint256 supplied, uint256 max); - - /// @notice Reverted when token ids are not strictly ascending. - /// @param index Index of the token id that is not greater than the previous token id. - /// @param previousTokenId Token id at `index - 1`. - /// @param tokenId Token id at `index`. - error TokenIdsNotStrictlyAscending(uint256 index, uint256 previousTokenId, uint256 tokenId); - - /// @notice Reverted when a caller is not the owner of a collection. - /// @param _contractAddress Collection address whose owner was checked. - /// @param _account Account that failed the owner check. - error NotContractOwner(address _contractAddress, address _account); - - /// @notice Reverted when a token id has not been created on a collection. - /// @param _contractAddress Collection address. - /// @param _tokenId Missing token id. - error TokenNotFound(address _contractAddress, uint256 _tokenId); - - /// @notice Reverted when a primary mint is attempted before sale configuration exists. - /// @param _contractAddress Collection address. - /// @param _tokenId Token id missing a primary sale config. - error DirectSaleNotConfigured(address _contractAddress, uint256 _tokenId); - - /// @notice Reverted when a quantity argument is zero. - error QuantityCannotBeZero(); - - /// @notice Reverted when a mint would exceed a buyer's per-address mint limit for a token id. - /// @param _contractAddress Collection address. - /// @param _tokenId Token id being minted. - /// @param _account Buyer account. - /// @param _requestedQuantity Requested mint quantity. - /// @param _mintedQuantity Quantity already minted by the account. - /// @param _limit Configured mint limit. - error MintLimitExceeded( - address _contractAddress, - uint256 _tokenId, - address _account, - uint256 _requestedQuantity, - uint256 _mintedQuantity, - uint256 _limit - ); - - /// @notice Reverted when a mint would exceed a buyer's per-address transaction limit for a token id. - /// @param _contractAddress Collection address. - /// @param _tokenId Token id being minted. - /// @param _account Buyer account. - /// @param _usedTransactions Transactions already used by the account. - /// @param _limit Configured transaction limit. - error TransactionLimitExceeded( - address _contractAddress, uint256 _tokenId, address _account, uint256 _usedTransactions, uint256 _limit - ); - - /// @notice Reverted when a mint quantity exceeds the sale's per-transaction max. - /// @param _requestedQuantity Requested mint quantity. - /// @param _maxMints Configured max quantity per transaction. - error MaxMintExceeded(uint256 _requestedQuantity, uint256 _maxMints); - - /// @notice Reverted when a primary mint is attempted before the start time. - /// @param _startTime Configured sale start timestamp. - error SaleNotStarted(uint256 _startTime); - - /// @notice Reverted when a currency is neither ETH nor approved by the token registry. - /// @param _currencyAddress Currency that failed approval. - error CurrencyNotApproved(address _currencyAddress); - - /// @notice Reverted when an ETH purchase sends the wrong `msg.value`. - /// @param _requiredAmount Amount required by the marketplace. - /// @param _suppliedAmount Amount supplied as `msg.value`. - error IncorrectETHAmount(uint256 _requiredAmount, uint256 _suppliedAmount); - - /// @notice Reverted when ETH is supplied for an ERC20 purchase. - error MsgValueUnsupportedForERC20(); - - /// @notice Reverted when an ERC20 transfer receives less or more than expected. - /// @param _currencyAddress ERC20 token address. - /// @param _expectedAmount Amount expected by the marketplace. - /// @param _receivedAmount Amount actually received by the marketplace. - error ERC20FeeOnTransferUnsupported(address _currencyAddress, uint256 _expectedAmount, uint256 _receivedAmount); - - /// @notice Reverted when a caller-supplied price does not match the configured price. - /// @param _suppliedPrice Price supplied by the caller. - /// @param _configuredPrice Price stored in marketplace configuration. - error PriceMismatch(uint256 _suppliedPrice, uint256 _configuredPrice); - - /// @notice Reverted when a caller-supplied currency does not match the configured currency. - /// @param _suppliedCurrency Currency supplied by the caller. - /// @param _configuredCurrency Currency stored in marketplace configuration. - error CurrencyMismatch(address _suppliedCurrency, address _configuredCurrency); - - /// @notice Reverted when a free mint includes ETH. - error MsgValueMustBeZero(); - - /// @notice Reverted when a secondary listing price is zero. - error SalePriceCannotBeZero(); - - /// @notice Reverted when a secondary listing expiration is nonzero and not in the future. - /// @param _expirationTime Expiration supplied for the listing. - /// @param _currentTime Current block timestamp. - error SalePriceExpirationInvalid(uint256 _expirationTime, uint256 _currentTime); - - /// @notice Reverted when a secondary collection is not a deployed ERC1155 contract. - /// @param _contractAddress Collection address that failed validation. - error InvalidERC1155Contract(address _contractAddress); - - /// @notice Reverted when a buyer tries to fill their own secondary listing. - /// @param _seller Seller whose listing was targeted. - error SelfPurchaseUnsupported(address _seller); - - /// @notice Reverted when a seller does not have enough ERC1155 balance for a listing or purchase. - /// @param _account Account whose balance was checked. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id whose balance was checked. - /// @param _requestedQuantity Quantity required by the operation. - /// @param _availableQuantity Quantity available at check time. - error InsufficientTokenBalance( - address _account, - address _contractAddress, - uint256 _tokenId, - uint256 _requestedQuantity, - uint256 _availableQuantity - ); - - /// @notice Reverted when the marketplace is not approved to transfer a seller's ERC1155 tokens. - /// @param _account ERC1155 owner that must approve the marketplace. - /// @param _contractAddress ERC1155 collection address. - error MarketplaceNotApproved(address _account, address _contractAddress); - - /// @notice Reverted when no secondary listing exists for a seller and token id. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id requested. - /// @param _seller Seller whose listing was requested. - error SalePriceDoesNotExist(address _contractAddress, uint256 _tokenId, address _seller); - - /// @notice Reverted when a buyer tries to fill an expired secondary listing. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id requested. - /// @param _seller Seller whose listing was requested. - /// @param _expirationTime Stored listing expiration timestamp. - error SalePriceExpired(address _contractAddress, uint256 _tokenId, address _seller, uint256 _expirationTime); - - /// @notice Reverted when a purchase quantity exceeds listed quantity. - /// @param _requestedQuantity Quantity requested by the buyer. - /// @param _availableQuantity Quantity currently listed. - error QuantityExceedsSalePriceQuantity(uint256 _requestedQuantity, uint256 _availableQuantity); - - /// @notice Reverted when an ERC1155 transfer completes without exact seller and buyer balance deltas. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id transferred. - /// @param _seller Seller whose balance should decrease. - /// @param _buyer Buyer whose balance should increase. - /// @param _quantity Quantity that should be transferred. - error InvalidERC1155Transfer( - address _contractAddress, uint256 _tokenId, address _seller, address _buyer, uint256 _quantity - ); - - /// @notice Reverted when royalties returned by the royalty engine exceed sale proceeds. - /// @param _royalties Total royalties returned by the royalty engine. - /// @param _saleAmount Gross sale amount before royalty deduction. - error RoyaltiesExceedSaleAmount(uint256 _royalties, uint256 _saleAmount); - - /// @notice Reverted when the staking fee exceeds the buyer-paid marketplace fee. - /// @param _marketplaceFee Total marketplace fee collected from the buyer. - /// @param _stakingFee Staking portion requested by staking settings. - error StakingFeeExceedsMarketplaceFee(uint256 _marketplaceFee, uint256 _stakingFee); - - /// @notice Reverted when primary platform commission exceeds 100%. - /// @param _platformCommission Supplied primary platform commission percentage. - /// @param _maxPlatformCommission Maximum supported platform commission percentage. - error PlatformCommissionExceeded(uint256 _platformCommission, uint256 _maxPlatformCommission); - - /// @notice Reverted when a sale config has no split recipients. - error SplitRecipientsRequired(); - - /// @notice Reverted when a sale config has more split recipients than supported. - /// @param _recipientsLength Supplied recipient count. - /// @param _maxRecipients Maximum supported recipient count. - error SplitRecipientsExceededMax(uint256 _recipientsLength, uint256 _maxRecipients); - - /// @notice Reverted when split recipient and ratio arrays have different lengths. - /// @param _recipientsLength Supplied recipient count. - /// @param _ratiosLength Supplied ratio count. - error SplitLengthMismatch(uint256 _recipientsLength, uint256 _ratiosLength); - - /// @notice Reverted when a split recipient is the zero address. - /// @param _index Index of the invalid split recipient. - error SplitRecipientCannotBeZero(uint256 _index); - - /// @notice Reverted when a split ratio is zero. - /// @param _index Index of the invalid split ratio. - error SplitRatioCannotBeZero(uint256 _index); - - /// @notice Reverted when split ratios do not total 100. - /// @param _totalRatio Supplied ratio total. - /// @param _requiredTotal Required ratio total. - error SplitTotalInvalid(uint256 _totalRatio, uint256 _requiredTotal); - - /// @notice Reverted when ETH payout through the Payments contract fails. - /// @param _revertData Raw revert data returned by the failed payout call. - error PayoutFailed(bytes _revertData); - - /// @notice Reverted when payout recipients and amounts have different lengths. - /// @param _recipientsLength Number of payout recipients supplied. - /// @param _amountsLength Number of payout amounts supplied. - error PayoutLengthMismatch(uint256 _recipientsLength, uint256 _amountsLength); - - /// @notice Reverted when payout amounts do not sum to the expected batch amount. - /// @param _expectedAmount Amount expected to be paid by the batch. - /// @param _actualAmount Sum of supplied payout amounts. - error PayoutTotalMismatch(uint256 _expectedAmount, uint256 _actualAmount); - - /// @notice Reverted when a buyer is not included in an active allowlist. - /// @param _account Buyer account that failed allowlist verification. - error AddressNotAllowlisted(address _account); - - /// @notice Reverted when ownership cannot be read from a collection. - /// @param _contractAddress Contract that did not expose a valid `owner()`. - error ContractHasNoOwner(address _contractAddress); - - /// @notice Reverted when an approval manager address is zero. - error ApprovalManagerCannotBeZero(); - - /// @notice Reverted when a required market config dependency address is zero. - /// @param _field Name of the dependency field that was zero. - error MarketConfigAddressCannotBeZero(bytes32 _field); - - /// @notice Initializes the UUPS marketplace implementation behind a proxy. - /// @param _networkBeneficiary Address receiving network marketplace fees. - /// @param _marketplaceSettings Marketplace settings contract. - /// @param _spaceOperatorRegistry Space operator registry contract. - /// @param _royaltyEngine Royalty engine contract. - /// @param _payments Payments contract used for ETH fan-out. - /// @param _approvedTokenRegistry Registry of approved ERC20 currencies. - /// @param _stakingSettings Staking fee settings contract. - /// @param _stakingRegistry Staking registry contract. - /// @param _erc20ApprovalManager ERC20 transfer manager for buyer currency approvals. - /// @param _erc721ApprovalManager ERC721 transfer manager kept in shared V2 market config. - /// @param _erc1155ApprovalManager ERC1155 transfer manager for seller token approvals. - function initialize( - address _networkBeneficiary, - address _marketplaceSettings, - address _spaceOperatorRegistry, - address _royaltyEngine, - address _payments, - address _approvedTokenRegistry, - address _stakingSettings, - address _stakingRegistry, - address _erc20ApprovalManager, - address _erc721ApprovalManager, - address _erc1155ApprovalManager - ) external; - - /// @notice Maximum number of token ids accepted by public batch operations. - /// @return Maximum supported batch item count. - function MAX_BATCH_SIZE() external pure returns (uint256); - - /// @notice Configures or replaces primary mint sales for token ids. - /// @dev Request token ids must be strictly ascending. A one-token sale is represented by a one-item batch. - /// @param _contractAddress ERC1155 collection address. - /// @param _currencyAddress Sale currency. Zero address indicates ETH. - /// @param _requests Sale configs to apply. - /// @param _splitRecipients Recipients that split seller proceeds. - /// @param _splitRatios Percentages for `splitRecipients`, totaling 100. - function prepareMintDirectSales( - address _contractAddress, - address _currencyAddress, - DirectSaleRequest[] calldata _requests, - address payable[] calldata _splitRecipients, - uint8[] calldata _splitRatios - ) external; - - /// @notice Mints tokens from configured primary sales. - /// @dev Request token ids must be strictly ascending. Each token id included in a batch consumes one - /// transaction against that token's tx limit when the token tx limit is enabled. - /// @param _contractAddress ERC1155 collection address. - /// @param _currencyAddress Currency expected by the buyer. - /// @param _requests Mint requests to execute. - function mintDirectSaleBatch(address _contractAddress, address _currencyAddress, MintRequest[] calldata _requests) - external - payable; - - /// @notice Sets token id allowlist configurations. - /// @dev Request token ids must be strictly ascending. - /// @param _contractAddress ERC1155 collection address. - /// @param _requests Allowlist configs to apply. - function setTokenAllowListConfigs(address _contractAddress, AllowListConfigRequest[] calldata _requests) external; - - /// @notice Sets the max quantity each address may mint for token ids while the limit is enabled. - /// @dev Request token ids must be strictly ascending. - /// @param _contractAddress ERC1155 collection address. - /// @param _requests Mint limits to apply. Zero disables a token id's limit and disabled periods are not counted. - function setTokenMintLimits(address _contractAddress, TokenLimitRequest[] calldata _requests) external; - - /// @notice Sets the max number of mint transactions each address may submit for token ids while the limit is enabled. - /// @dev Request token ids must be strictly ascending. - /// @param _contractAddress ERC1155 collection address. - /// @param _requests Transaction limits to apply. Zero disables a token id's limit and disabled periods are not counted. - function setTokenTxLimits(address _contractAddress, TokenLimitRequest[] calldata _requests) external; - - /// @notice Creates or replaces secondary fixed-price listings. - /// @dev Request token ids must be strictly ascending. `expirationTime == 0` means no expiration. - /// Listings can be cancelled by the seller with `cancelSalePrices`. - /// @param _contractAddress ERC1155 collection address. - /// @param _currencyAddress Listing currency. Zero address indicates ETH. - /// @param _requests Listing configs to apply. - /// @param _splitRecipients Recipients that split seller proceeds. - /// @param _splitRatios Percentages for `splitRecipients`, totaling 100. - function setSalePrices( - address _contractAddress, - address _currencyAddress, - SalePriceRequest[] calldata _requests, - address payable[] calldata _splitRecipients, - uint8[] calldata _splitRatios - ) external; - - /// @notice Cancels the caller's secondary listings for token ids. - /// @dev Token ids must be strictly ascending. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenIds Listed token ids. - function cancelSalePrices(address _contractAddress, uint256[] calldata _tokenIds) external; - - /// @notice Buys tokens from a seller's secondary fixed-price listings. - /// @dev Request token ids must be strictly ascending. A one-token buy is represented by a one-item batch. - /// @param _contractAddress ERC1155 collection address. - /// @param _seller Seller whose listing is being filled. - /// @param _currencyAddress Currency expected by the buyer. - /// @param _requests Buy requests to execute. - function buyBatch( - address _contractAddress, - address _seller, - address _currencyAddress, - BuyRequest[] calldata _requests - ) external payable; - - /// @notice Returns the primary mint sale config for a token id. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to inspect. - /// @return Primary sale config for the token id. - function getDirectSaleConfig(address _contractAddress, uint256 _tokenId) - external - view - returns (DirectSaleConfig memory); - - /// @notice Returns the allowlist config for a token id. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to inspect. - /// @return Allowlist config for the token id. - function getTokenAllowListConfig(address _contractAddress, uint256 _tokenId) - external - view - returns (AllowListConfig memory); - - /// @notice Returns the per-address mint quantity limit for a token id. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to inspect. - /// @return Mint quantity limit. Zero means disabled/unlimited. - function getTokenMintLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256); - - /// @notice Returns quantity minted by an address for a token id while the mint limit was enabled. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to inspect. - /// @param _address Address whose minted quantity is returned. - /// @return Quantity minted by `_address` during enabled mint-limit periods. - function getTokenMintsPerAddress(address _contractAddress, uint256 _tokenId, address _address) - external - view - returns (uint256); - - /// @notice Returns the per-address transaction limit for a token id. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to inspect. - /// @return Transaction limit. Zero means disabled/unlimited. - function getTokenTxLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256); - - /// @notice Returns mint transactions used by an address for a token id while the tx limit was enabled. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to inspect. - /// @param _address Address whose transaction count is returned. - /// @return Number of mint transactions used by `_address` during enabled tx-limit periods. - function getTokenTxsPerAddress(address _contractAddress, uint256 _tokenId, address _address) - external - view - returns (uint256); - - /// @notice Returns a seller's secondary fixed-price listing. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id to inspect. - /// @param _seller Seller whose listing is returned. - /// @return Secondary fixed-price listing for the seller and token id. - function getSalePrice(address _contractAddress, uint256 _tokenId, address _seller) - external - view - returns (SalePrice memory); - - /// @notice Returns the marketplace dependency configuration. - /// @return Current market config struct. - function getMarketConfig() external view returns (MarketConfigV2.Config memory); - - /// @notice Returns the ERC1155 approval manager used for secondary transfers. - /// @return Current ERC1155 approval manager address. - function getERC1155ApprovalManager() external view returns (address); - - /// @notice Returns whether marketplace writes are paused. - /// @return True when paused. - function isPaused() external view returns (bool); - - /// @notice Updates the network beneficiary address. - /// @param _networkBeneficiary New network beneficiary. - function setNetworkBeneficiary(address _networkBeneficiary) external; - - /// @notice Updates the marketplace settings contract address. - /// @param _marketplaceSettings New marketplace settings contract. - function setMarketplaceSettings(address _marketplaceSettings) external; - - /// @notice Updates the space operator registry address. - /// @param _spaceOperatorRegistry New space operator registry contract. - function setSpaceOperatorRegistry(address _spaceOperatorRegistry) external; - - /// @notice Updates the royalty engine address. - /// @param _royaltyEngine New royalty engine contract. - function setRoyaltyEngine(address _royaltyEngine) external; - - /// @notice Updates the Payments contract address used for ETH fan-out. - /// @param _payments New payments contract. - function setPayments(address _payments) external; - - /// @notice Updates the approved token registry address. - /// @param _approvedTokenRegistry New approved token registry contract. - function setApprovedTokenRegistry(address _approvedTokenRegistry) external; - - /// @notice Updates the staking settings address. - /// @param _stakingSettings New staking settings contract. - function setStakingSettings(address _stakingSettings) external; - - /// @notice Updates the staking registry address. - /// @param _stakingRegistry New staking registry contract. - function setStakingRegistry(address _stakingRegistry) external; - - /// @notice Updates the ERC20 approval manager address. - /// @param _erc20ApprovalManager New ERC20 approval manager contract. - function setERC20ApprovalManager(address _erc20ApprovalManager) external; - - /// @notice Updates the ERC721 approval manager address retained by the shared V2 market config. - /// @param _erc721ApprovalManager New ERC721 approval manager contract. - function setERC721ApprovalManager(address _erc721ApprovalManager) external; - - /// @notice Updates the ERC1155 approval manager address. - /// @param _erc1155ApprovalManager New ERC1155 approval manager contract. - function setERC1155ApprovalManager(address _erc1155ApprovalManager) external; - - /// @notice Pauses or unpauses marketplace write operations. - /// @param _isPaused New pause state. - function setContractPaused(bool _isPaused) external; -} diff --git a/src/marketplace/IRareERC1155Marketplace.sol b/src/marketplace/IRareERC1155Marketplace.sol new file mode 100644 index 0000000..5ae3612 --- /dev/null +++ b/src/marketplace/IRareERC1155Marketplace.sol @@ -0,0 +1,157 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; +import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; + +/// @author SuperRare Labs Inc. +/// @title IRareERC1155Marketplace +/// @notice Interface for ERC1155 marketplace state creation, escrow, configuration, and settlement proxying. +interface IRareERC1155Marketplace is IRareERC1155MarketplaceTypes { + /// @notice Initializes the UUPS marketplace proxy. + function initialize( + address _networkBeneficiary, + address _marketplaceSettings, + address _spaceOperatorRegistry, + address _royaltyEngine, + address _payments, + address _approvedTokenRegistry, + address _stakingSettings, + address _stakingRegistry, + address _erc20ApprovalManager, + address _erc721ApprovalManager, + address _erc1155ApprovalManager, + address _settlement + ) external; + + /// @notice Configures or replaces primary mint sales for token ids. + /// @dev Request token ids must be strictly ascending. + function prepareMintDirectSales( + address _contractAddress, + address _currencyAddress, + DirectSaleRequest[] calldata _requests, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external; + + /// @notice Sets token id allowlist configurations. + /// @dev Request token ids must be strictly ascending. + function setTokenAllowListConfigs(address _contractAddress, AllowListConfigRequest[] calldata _requests) external; + + /// @notice Sets max quantity each address may mint for token ids while a limit is enabled. + /// @dev Request token ids must be strictly ascending. + function setTokenMintLimits(address _contractAddress, TokenLimitRequest[] calldata _requests) external; + + /// @notice Sets max mint transactions each address may submit for token ids while a limit is enabled. + /// @dev Request token ids must be strictly ascending. + function setTokenTxLimits(address _contractAddress, TokenLimitRequest[] calldata _requests) external; + + /// @notice Creates or replaces secondary fixed-price listings. + /// @dev Request token ids must be strictly ascending. + function setSalePrices( + address _contractAddress, + address _currencyAddress, + SalePriceRequest[] calldata _requests, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external; + + /// @notice Cancels the caller's secondary listings for token ids. + /// @dev Token ids must be strictly ascending. + function cancelSalePrices(address _contractAddress, uint256[] calldata _tokenIds) external; + + /// @notice Creates or replaces a token-level ERC1155 offer. + function makeOffer( + address _contractAddress, + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + uint256 _expirationTime + ) external payable; + + /// @notice Cancels the caller's offer for one token id and currency. + function cancelOffer(address _contractAddress, uint256 _tokenId, address _currencyAddress) external; + + /// @notice Mints tokens from configured primary sales through the settlement module. + function mintDirectSaleBatch(address _contractAddress, address _currencyAddress, MintRequest[] calldata _requests) + external + payable; + + /// @notice Buys tokens from a seller's secondary fixed-price listings through the settlement module. + function buyBatch( + address _contractAddress, + address _seller, + address _currencyAddress, + BuyRequest[] calldata _requests + ) external payable; + + /// @notice Accepts all or part of an ERC1155 token offer through the settlement module. + function acceptOffer( + address _contractAddress, + uint256 _tokenId, + address _buyer, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external; + + /// @notice Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases. + /// @dev Validation-only failures skip individual items. At least one item must fill. + function checkout(CheckoutItem[] calldata _items) external payable returns (CheckoutSummary memory); + + function getDirectSaleConfig(address _contractAddress, uint256 _tokenId) + external + view + returns (DirectSaleConfig memory); + + function getTokenAllowListConfig(address _contractAddress, uint256 _tokenId) + external + view + returns (AllowListConfig memory); + + function getTokenMintLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256); + + function getTokenMintsPerAddress(address _contractAddress, uint256 _tokenId, address _account) + external + view + returns (uint256); + + function getTokenTxLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256); + + function getTokenTxsPerAddress(address _contractAddress, uint256 _tokenId, address _account) + external + view + returns (uint256); + + function getSalePrice(address _contractAddress, uint256 _tokenId, address _seller) + external + view + returns (SalePrice memory); + + function getOffer(address _contractAddress, uint256 _tokenId, address _buyer, address _currencyAddress) + external + view + returns (Offer memory); + + function getMarketConfig() external view returns (MarketConfigV2.Config memory); + function getERC1155ApprovalManager() external view returns (address); + function getSettlement() external view returns (address); + function isPaused() external view returns (bool); + + function setNetworkBeneficiary(address _networkBeneficiary) external; + function setMarketplaceSettings(address _marketplaceSettings) external; + function setSpaceOperatorRegistry(address _spaceOperatorRegistry) external; + function setRoyaltyEngine(address _royaltyEngine) external; + function setPayments(address _payments) external; + function setApprovedTokenRegistry(address _approvedTokenRegistry) external; + function setStakingSettings(address _stakingSettings) external; + function setStakingRegistry(address _stakingRegistry) external; + function setERC20ApprovalManager(address _erc20ApprovalManager) external; + function setERC721ApprovalManager(address _erc721ApprovalManager) external; + function setERC1155ApprovalManager(address _erc1155ApprovalManager) external; + function setSettlement(address _settlement) external; + function setContractPaused(bool _isPaused) external; +} diff --git a/src/marketplace/IRareERC1155MarketplaceTypes.sol b/src/marketplace/IRareERC1155MarketplaceTypes.sol new file mode 100644 index 0000000..8ecc58a --- /dev/null +++ b/src/marketplace/IRareERC1155MarketplaceTypes.sol @@ -0,0 +1,309 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +/// @author SuperRare Labs Inc. +/// @title IRareERC1155MarketplaceTypes +/// @notice Shared structs, events, and errors for the ERC1155 marketplace. +interface IRareERC1155MarketplaceTypes { + /// @notice Primary mint sale configuration for a collection token id. + struct DirectSaleConfig { + address seller; + address currencyAddress; + uint256 price; + uint256 startTime; + uint256 maxMints; + address payable[] splitRecipients; + uint8[] splitRatios; + } + + /// @notice Merkle allowlist configuration for a token id. + struct AllowListConfig { + bytes32 root; + uint256 endTimestamp; + } + + /// @notice Secondary fixed-price listing for an ERC1155 token id. + /// @dev `expirationTime == 0` means no expiration. Listings allow partial fills. + struct SalePrice { + address currencyAddress; + uint256 price; + uint256 quantity; + uint256 expirationTime; + address payable[] splitRecipients; + uint8[] splitRatios; + } + + /// @notice Token-level ERC1155 offer state. + /// @dev Offers are escrowed and keyed by `(collection, tokenId, buyer, currency)`. + struct Offer { + address currencyAddress; + uint256 price; + uint256 quantity; + uint256 marketplaceFeeRemaining; + uint256 expirationTime; + } + + /// @notice Primary sale setup input for one token id in a batch. + struct DirectSaleRequest { + uint256 tokenId; + uint256 price; + uint256 startTime; + uint256 maxMints; + } + + /// @notice Primary mint input for one token id in a batch. + struct MintRequest { + uint256 tokenId; + uint256 price; + uint256 quantity; + bytes32[] proof; + } + + /// @notice Allowlist setup input for one token id in a batch. + struct AllowListConfigRequest { + uint256 tokenId; + bytes32 root; + uint256 endTimestamp; + } + + /// @notice Limit setup input for one token id in a batch. + struct TokenLimitRequest { + uint256 tokenId; + uint256 limit; + } + + /// @notice Secondary listing setup input for one token id in a batch. + struct SalePriceRequest { + uint256 tokenId; + uint256 price; + uint256 quantity; + uint256 expirationTime; + } + + /// @notice Secondary buy input for one token id in a batch. + struct BuyRequest { + uint256 tokenId; + uint256 price; + uint256 quantity; + } + + enum CheckoutItemKind { + DIRECT_SALE_MINT, + LISTING_BUY + } + + /// @notice Buyer cart item for primary mint sales and secondary fixed-price listings. + /// @dev `itemKind` uses `CheckoutItemKind` values and is kept as uint8 so unknown future kinds can be skipped. + struct CheckoutItem { + uint8 itemKind; + address contractAddress; + address seller; + address currencyAddress; + uint256 tokenId; + uint256 price; + uint256 quantity; + bytes32[] proof; + } + + struct CheckoutSummary { + uint256 filledCount; + uint256 skippedCount; + uint256 ethSpent; + uint256 ethRefunded; + } + + event MarketplaceDependencyUpdated(bytes32 indexed field, address indexed dependency); + event ContractPausedUpdated(bool isPaused); + + event PrepareMintDirectSale( + address indexed contractAddress, + uint256 indexed tokenId, + address indexed seller, + address currency, + uint256 price, + uint256 startTime, + uint256 maxMints, + address payable[] splitRecipients, + uint8[] splitRatios + ); + + event MintDirectSale( + address indexed contractAddress, + uint256 indexed tokenId, + address indexed buyer, + address seller, + uint256 quantity, + address currency, + uint256 price + ); + + event SetTokenAllowListConfig( + address indexed contractAddress, uint256 indexed tokenId, bytes32 root, uint256 endTimestamp + ); + + event TokenMintLimitSet(address indexed contractAddress, uint256 indexed tokenId, uint256 limit); + event TokenTxLimitSet(address indexed contractAddress, uint256 indexed tokenId, uint256 limit); + + event SalePriceSet( + address indexed seller, + address indexed contractAddress, + uint256 indexed tokenId, + address currency, + uint256 price, + uint256 quantity, + uint256 expirationTime, + address payable[] splitRecipients, + uint8[] splitRatios + ); + + event SalePriceCancelled(address indexed seller, address indexed contractAddress, uint256 indexed tokenId); + + event Sold( + address indexed seller, + address indexed buyer, + address indexed contractAddress, + uint256 tokenId, + address currency, + uint256 price, + uint256 quantity + ); + + event OfferMade( + address indexed buyer, + address indexed contractAddress, + uint256 indexed tokenId, + address currency, + uint256 price, + uint256 quantity, + uint256 marketplaceFee, + uint256 expirationTime + ); + + event OfferCancelled( + address indexed buyer, + address indexed contractAddress, + uint256 indexed tokenId, + address currency, + uint256 price, + uint256 quantity, + uint256 marketplaceFeeRemaining + ); + + event OfferAccepted( + address indexed seller, + address indexed buyer, + address indexed contractAddress, + uint256 tokenId, + address currency, + uint256 price, + uint256 quantity + ); + + event CheckoutItemFilled( + uint256 indexed itemIndex, + uint8 indexed itemKind, + address indexed contractAddress, + uint256 tokenId, + address seller, + address currency, + uint256 price, + uint256 quantity, + uint256 totalPaid + ); + + event CheckoutItemSkipped( + uint256 indexed itemIndex, + uint8 indexed itemKind, + address indexed contractAddress, + uint256 tokenId, + bytes4 reason + ); + + event CheckoutCompleted( + address indexed buyer, uint256 filledCount, uint256 skippedCount, uint256 ethSpent, uint256 ethRefunded + ); + + error ContractPaused(); + error EmptyBatch(); + error BatchSizeExceeded(uint256 supplied, uint256 max); + error TokenIdsNotStrictlyAscending(uint256 index, uint256 previousTokenId, uint256 tokenId); + error NotContractOwner(address _contractAddress, address _account); + error TokenNotFound(address _contractAddress, uint256 _tokenId); + error DirectSaleNotConfigured(address _contractAddress, uint256 _tokenId); + error QuantityCannotBeZero(); + error MintLimitExceeded( + address _contractAddress, + uint256 _tokenId, + address _account, + uint256 _requestedQuantity, + uint256 _mintedQuantity, + uint256 _limit + ); + error TransactionLimitExceeded( + address _contractAddress, uint256 _tokenId, address _account, uint256 _usedTransactions, uint256 _limit + ); + error MaxMintExceeded(uint256 _requestedQuantity, uint256 _maxMints); + error SaleNotStarted(uint256 _startTime); + error PriceMismatch(uint256 _suppliedPrice, uint256 _configuredPrice); + error CurrencyMismatch(address _suppliedCurrency, address _configuredCurrency); + error SalePriceCannotBeZero(); + error SalePriceExpirationInvalid(uint256 _expirationTime, uint256 _currentTime); + error InvalidERC1155Contract(address _contractAddress); + error SelfPurchaseUnsupported(address _seller); + error InsufficientTokenBalance( + address _account, + address _contractAddress, + uint256 _tokenId, + uint256 _requestedQuantity, + uint256 _availableQuantity + ); + error MarketplaceNotApproved(address _account, address _contractAddress); + error SalePriceDoesNotExist(address _contractAddress, uint256 _tokenId, address _seller); + error SalePriceExpired(address _contractAddress, uint256 _tokenId, address _seller, uint256 _expirationTime); + error QuantityExceedsSalePriceQuantity(uint256 _requestedQuantity, uint256 _availableQuantity); + error InvalidERC1155Transfer( + address _contractAddress, uint256 _tokenId, address _seller, address _buyer, uint256 _quantity + ); + error AddressNotAllowlisted(address _account); + error ContractHasNoOwner(address _contractAddress); + error ApprovalManagerCannotBeZero(); + error MarketConfigAddressCannotBeZero(bytes32 _field); + error SettlementCannotBeZero(); + error DirectSettlementCallUnsupported(); + error SettlementDelegateCallFailed(bytes _revertData); + error UnsupportedCheckoutItemKind(uint8 _itemKind); + error CheckoutRequiresSuccessfulFill(); + error CheckoutSellerMismatch(address _suppliedSeller, address _configuredSeller); + error InsufficientCheckoutETH(uint256 _requiredAmount, uint256 _availableAmount); + error InsufficientCheckoutERC20Balance(address _currencyAddress, uint256 _requiredAmount, uint256 _availableAmount); + error InsufficientCheckoutERC20Allowance( + address _currencyAddress, uint256 _requiredAmount, uint256 _availableAmount + ); + error OfferPriceCannotBeZero(); + error OfferExpirationInvalid(uint256 _expirationTime, uint256 _currentTime); + error SelfOfferAcceptanceUnsupported(address _buyer); + error OfferDoesNotExist(address _contractAddress, uint256 _tokenId, address _buyer, address _currencyAddress); + error OfferExpired( + address _contractAddress, uint256 _tokenId, address _buyer, address _currencyAddress, uint256 _expirationTime + ); + error QuantityExceedsOfferQuantity(uint256 _requestedQuantity, uint256 _availableQuantity); + + error CurrencyNotApproved(address _currencyAddress); + error IncorrectETHAmount(uint256 _requiredAmount, uint256 _suppliedAmount); + error MsgValueUnsupportedForERC20(); + error ERC20FeeOnTransferUnsupported(address _currencyAddress, uint256 _expectedAmount, uint256 _receivedAmount); + error MsgValueMustBeZero(); + error RoyaltiesExceedSaleAmount(uint256 _royalties, uint256 _saleAmount); + error StakingFeeExceedsMarketplaceFee(uint256 _marketplaceFee, uint256 _stakingFee); + error PlatformCommissionExceeded(uint256 _platformCommission, uint256 _maxPlatformCommission); + error SplitRecipientsRequired(); + error SplitRecipientsExceededMax(uint256 _recipientsLength, uint256 _maxRecipients); + error SplitLengthMismatch(uint256 _recipientsLength, uint256 _ratiosLength); + error SplitRecipientCannotBeZero(uint256 _index); + error SplitRatioCannotBeZero(uint256 _index); + error SplitTotalInvalid(uint256 _totalRatio, uint256 _requiredTotal); + error PayoutFailed(bytes _revertData); + error RefundFailed(bytes _revertData); + error PayoutLengthMismatch(uint256 _recipientsLength, uint256 _amountsLength); + error PayoutTotalMismatch(uint256 _expectedAmount, uint256 _actualAmount); +} diff --git a/src/marketplace/IRareERC1155Settlement.sol b/src/marketplace/IRareERC1155Settlement.sol new file mode 100644 index 0000000..ae055c8 --- /dev/null +++ b/src/marketplace/IRareERC1155Settlement.sol @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; + +/// @author SuperRare Labs Inc. +/// @title IRareERC1155Settlement +/// @notice Settlement entrypoints executed through `RareERC1155Marketplace` delegatecalls. +interface IRareERC1155Settlement is IRareERC1155MarketplaceTypes { + /// @notice Mints tokens from configured primary sales. + /// @dev Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert. + function mintDirectSaleBatch(address _contractAddress, address _currencyAddress, MintRequest[] calldata _requests) + external + payable; + + /// @notice Buys tokens from a seller's secondary fixed-price listings. + /// @dev Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert. + function buyBatch( + address _contractAddress, + address _seller, + address _currencyAddress, + BuyRequest[] calldata _requests + ) external payable; + + /// @notice Accepts all or part of an ERC1155 token offer. + /// @dev Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert. + function acceptOffer( + address _contractAddress, + uint256 _tokenId, + address _buyer, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external; + + /// @notice Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases. + /// @dev Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert. + function checkout(CheckoutItem[] calldata _items) external payable returns (CheckoutSummary memory); +} diff --git a/src/marketplace/RareERC1155Listings.sol b/src/marketplace/RareERC1155Listings.sol deleted file mode 100644 index 6d4e629..0000000 --- a/src/marketplace/RareERC1155Listings.sol +++ /dev/null @@ -1,1350 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.18; - -import {IERC20} from "openzeppelin-contracts/token/ERC20/IERC20.sol"; -import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; -import {ERC165Checker} from "openzeppelin-contracts/utils/introspection/ERC165Checker.sol"; -import {OwnableUpgradeable} from "openzeppelin-contracts-upgradeable/access/OwnableUpgradeable.sol"; -import {ReentrancyGuardUpgradeable} from "openzeppelin-contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; -import {UUPSUpgradeable} from "openzeppelin-contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; -import {SafeERC20} from "openzeppelin-contracts/token/ERC20/utils/SafeERC20.sol"; - -import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; -import {IRareERC1155} from "../token/ERC1155/IRareERC1155.sol"; -import {IRareERC1155Listings} from "./IRareERC1155Listings.sol"; -import {IERC1155ApprovalManager} from "../v2/approver/ERC1155/IERC1155ApprovalManager.sol"; - -/// @author SuperRare Labs Inc. -/// @title RareERC1155Listings -/// @notice Primary mint sales for RARE Protocol ERC1155 tokens and fixed-price resale listings for ERC1155 tokens. -/// @dev UUPS-upgradeable marketplace that keeps ERC1155 sale semantics separate from ERC721 marketplace logic. -contract RareERC1155Listings is IRareERC1155Listings, OwnableUpgradeable, ReentrancyGuardUpgradeable, UUPSUpgradeable { - using SafeERC20 for IERC20; - using MarketConfigV2 for MarketConfigV2.Config; - - /// @notice Market config field label for zero-address validation. - bytes32 private constant NETWORK_BENEFICIARY_FIELD = "NETWORK_BENEFICIARY"; - - /// @notice Market config field label for zero-address validation. - bytes32 private constant MARKETPLACE_SETTINGS_FIELD = "MARKETPLACE_SETTINGS"; - - /// @notice Market config field label for zero-address validation. - bytes32 private constant SPACE_OPERATOR_REGISTRY_FIELD = "SPACE_OPERATOR_REGISTRY"; - - /// @notice Market config field label for zero-address validation. - bytes32 private constant ROYALTY_ENGINE_FIELD = "ROYALTY_ENGINE"; - - /// @notice Market config field label for zero-address validation. - bytes32 private constant PAYMENTS_FIELD = "PAYMENTS"; - - /// @notice Market config field label for zero-address validation. - bytes32 private constant APPROVED_TOKEN_REGISTRY_FIELD = "APPROVED_TOKEN_REGISTRY"; - - /// @notice Market config field label for zero-address validation. - bytes32 private constant STAKING_SETTINGS_FIELD = "STAKING_SETTINGS"; - - /// @notice Market config field label for zero-address validation. - bytes32 private constant STAKING_REGISTRY_FIELD = "STAKING_REGISTRY"; - - /// @notice Market config field label for ERC20 approval manager updates. - bytes32 private constant ERC20_APPROVAL_MANAGER_FIELD = "ERC20_APPROVAL_MANAGER"; - - /// @notice Market config field label for ERC721 approval manager updates. - bytes32 private constant ERC721_APPROVAL_MANAGER_FIELD = "ERC721_APPROVAL_MANAGER"; - - /// @notice Config field label for ERC1155 approval manager updates. - bytes32 private constant ERC1155_APPROVAL_MANAGER_FIELD = "ERC1155_APPROVAL_MANAGER"; - - /// @inheritdoc IRareERC1155Listings - uint256 public constant MAX_BATCH_SIZE = 100; - - /// @notice ERC-7201 namespaced storage for the marketplace. - /// @dev Pins all contract-owned state to a fixed hashed slot so it cannot collide with inherited - /// upgradeable base contracts and can be extended in future upgrades without reserving storage gaps. - /// @custom:storage-location erc7201:superrare.storage.RareERC1155Listings - struct ListingsStorage { - // --- config --- - /// @notice RARE Protocol marketplace dependency bundle. - MarketConfigV2.Config marketConfig; - /// @notice ERC1155 transfer manager approved by sellers and callable by this marketplace. - IERC1155ApprovalManager erc1155ApprovalManager; - // --- Direct sales state --- - /// @notice Primary mint sale configuration by collection and token id. - mapping(address => mapping(uint256 => IRareERC1155Listings.DirectSaleConfig)) directSaleConfigs; - /// @notice Allowlist configuration by collection and token id. - mapping(address => mapping(uint256 => IRareERC1155Listings.AllowListConfig)) tokenAllowlistRoots; - /// @notice Per-address mint quantity limit by collection and token id. - mapping(address => mapping(uint256 => uint256)) tokenMintLimit; - /// @notice Quantity minted per buyer by collection and token id. - mapping(address => mapping(uint256 => mapping(address => uint256))) tokenMintsPerAddress; - /// @notice Per-address mint transaction limit by collection and token id. - mapping(address => mapping(uint256 => uint256)) tokenTxLimit; - /// @notice Mint transaction count per buyer by collection and token id. - mapping(address => mapping(uint256 => mapping(address => uint256))) tokenTxsPerAddress; - // --- Secondary sales state --- - /// @notice Secondary fixed-price listings by collection, token id, and seller. - /// @dev `expirationTime == 0` means no expiration. Buys revalidate expiration, balance, approval, currency, price, - /// and quantity. - mapping(address => mapping(uint256 => mapping(address => IRareERC1155Listings.SalePrice))) salePrices; - /// @notice Whether marketplace value-moving and listing-creation operations are paused. - bool paused; - } - - /// @dev keccak256(abi.encode(uint256(keccak256("superrare.storage.RareERC1155Listings")) - 1)) & ~bytes32(uint256(0xff)) - bytes32 private constant LISTINGS_STORAGE_LOCATION = - 0x094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1300; - - /// @notice Resolves the ERC-7201 namespaced storage pointer for this contract. - /// @return $ Storage pointer to the `ListingsStorage` struct. - function _listingsStorage() private pure returns (ListingsStorage storage $) { - assembly { - $.slot := LISTINGS_STORAGE_LOCATION - } - } - - /// @notice Ensures marketplace actions that create listings or move value are not paused. - modifier notPaused() { - // Atomic guard: pause state blocks marketplace writes before any mutation or transfer. - if (_listingsStorage().paused) revert ContractPaused(); - _; - } - - /// @custom:oz-upgrades-unsafe-allow constructor - constructor() { - _disableInitializers(); - } - - /// @inheritdoc IRareERC1155Listings - function initialize( - address _networkBeneficiary, - address _marketplaceSettings, - address _spaceOperatorRegistry, - address _royaltyEngine, - address _payments, - address _approvedTokenRegistry, - address _stakingSettings, - address _stakingRegistry, - address _erc20ApprovalManager, - address _erc721ApprovalManager, - address _erc1155ApprovalManager - ) external initializer { - // Atomic guards: required config dependencies must be concrete before they are stored. - _validateMarketConfigAddress(_networkBeneficiary, NETWORK_BENEFICIARY_FIELD); - _validateMarketConfigAddress(_marketplaceSettings, MARKETPLACE_SETTINGS_FIELD); - _validateMarketConfigAddress(_spaceOperatorRegistry, SPACE_OPERATOR_REGISTRY_FIELD); - _validateMarketConfigAddress(_royaltyEngine, ROYALTY_ENGINE_FIELD); - _validateMarketConfigAddress(_payments, PAYMENTS_FIELD); - _validateMarketConfigAddress(_approvedTokenRegistry, APPROVED_TOKEN_REGISTRY_FIELD); - _validateMarketConfigAddress(_stakingSettings, STAKING_SETTINGS_FIELD); - _validateMarketConfigAddress(_stakingRegistry, STAKING_REGISTRY_FIELD); - _validateApprovalManager(_erc20ApprovalManager); - _validateApprovalManager(_erc721ApprovalManager); - _validateApprovalManager(_erc1155ApprovalManager); - - // State write: persist all marketplace dependency addresses in the shared config struct. - ListingsStorage storage $ = _listingsStorage(); - $.marketConfig = MarketConfigV2.generateMarketConfig( - _networkBeneficiary, - _marketplaceSettings, - _spaceOperatorRegistry, - _royaltyEngine, - _payments, - _approvedTokenRegistry, - _stakingSettings, - _stakingRegistry, - _erc20ApprovalManager, - _erc721ApprovalManager - ); - $.erc1155ApprovalManager = IERC1155ApprovalManager(_erc1155ApprovalManager); - - // Initializer calls: set up ownership, reentrancy guard, and UUPS storage for the proxy. - __Ownable_init(); - __ReentrancyGuard_init(); - __UUPSUpgradeable_init(); - } - - /// @notice Authorizes UUPS implementation upgrades. - /// @dev Restricted to the marketplace owner by `onlyOwner`. - /// @param _newImplementation New implementation address requested by the proxy upgrade flow. - function _authorizeUpgrade(address _newImplementation) internal view override onlyOwner { - // Authorization hook: the presence of onlyOwner is the atomic upgrade permission check. - _newImplementation; - } - - /// @inheritdoc IRareERC1155Listings - function prepareMintDirectSales( - address _contractAddress, - address _currencyAddress, - IRareERC1155Listings.DirectSaleRequest[] calldata _requests, - address payable[] calldata _splitRecipients, - uint8[] calldata _splitRatios - ) external nonReentrant notPaused { - // Atomic ownership check: only the collection owner can configure primary mint sales. - if (!_isContractOwner(_contractAddress, msg.sender)) { - revert NotContractOwner(_contractAddress, msg.sender); - } - - // Atomic config checks: batch shape, sale currency, and seller split config must be valid before storage writes. - _validateDirectSaleRequests(_requests); - _checkIfCurrencyIsApproved(_currencyAddress); - _checkSplits(_splitRecipients, _splitRatios); - - for (uint256 i = 0; i < _requests.length; i++) { - uint256 tokenId = _requests[i].tokenId; - _revertIfTokenNotFound(_contractAddress, tokenId); - - // State write: replace the primary sale config for this collection and token id. - _listingsStorage().directSaleConfigs[_contractAddress][tokenId] = IRareERC1155Listings.DirectSaleConfig( - msg.sender, - _currencyAddress, - _requests[i].price, - _requests[i].startTime, - _requests[i].maxMints, - _splitRecipients, - _splitRatios - ); - - emit PrepareMintDirectSale( - _contractAddress, - tokenId, - msg.sender, - _currencyAddress, - _requests[i].price, - _requests[i].startTime, - _requests[i].maxMints, - _splitRecipients, - _splitRatios - ); - } - } - - /// @inheritdoc IRareERC1155Listings - function mintDirectSaleBatch( - address _contractAddress, - address _currencyAddress, - IRareERC1155Listings.MintRequest[] calldata _requests - ) external payable nonReentrant notPaused { - _validateMintRequests(_requests); - _checkIfCurrencyIsApproved(_currencyAddress); - - ListingsStorage storage $ = _listingsStorage(); - uint256 requestCount = _requests.length; - uint256[] memory tokenIds = new uint256[](requestCount); - uint256[] memory amounts = new uint256[](requestCount); - IRareERC1155Listings.PrimaryPayoutContext[] memory payoutContexts = - new IRareERC1155Listings.PrimaryPayoutContext[](requestCount); - uint256 buyerTotal = 0; - - for (uint256 i = 0; i < requestCount;) { - payoutContexts[i] = - _validateMintDirectSaleRequest(_contractAddress, _currencyAddress, msg.sender, _requests[i]); - if (payoutContexts[i].grossAmount != 0) { - payoutContexts[i].marketplaceFee = - $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContexts[i].grossAmount); - buyerTotal += payoutContexts[i].grossAmount + payoutContexts[i].marketplaceFee; - } - - tokenIds[i] = payoutContexts[i].tokenId; - amounts[i] = _requests[i].quantity; - - unchecked { - ++i; - } - } - - // Payment pull: collect aggregate sale amount plus per-line marketplace fees before minting. - _checkBatchPayment(_currencyAddress, buyerTotal); - - for (uint256 i = 0; i < requestCount;) { - uint256 tokenId = _requests[i].tokenId; - - if ($.tokenMintLimit[_contractAddress][tokenId] > 0) { - // State write: record quantity minted while this token's mint limit is enabled. - $.tokenMintsPerAddress[_contractAddress][tokenId][msg.sender] += _requests[i].quantity; - } - - if ($.tokenTxLimit[_contractAddress][tokenId] > 0) { - // State write: record this token id as one transaction while its tx limit is enabled. - $.tokenTxsPerAddress[_contractAddress][tokenId][msg.sender] += 1; - } - - unchecked { - ++i; - } - } - - // External mint: collection must have approved this marketplace as minter. - IRareERC1155(_contractAddress).mintBatchTo(msg.sender, tokenIds, amounts); - - for (uint256 i = 0; i < requestCount;) { - // Payout fan-out: distribute collected primary sale funds after successful mint. - if (payoutContexts[i].grossAmount != 0) { - _payoutPrimary( - _contractAddress, - _currencyAddress, - payoutContexts[i].grossAmount, - payoutContexts[i].marketplaceFee, - payoutContexts[i].seller, - payoutContexts[i].splitRecipients, - payoutContexts[i].splitRatios - ); - } - - emit MintDirectSale( - _contractAddress, - payoutContexts[i].tokenId, - msg.sender, - payoutContexts[i].seller, - _requests[i].quantity, - _currencyAddress, - _requests[i].price - ); - - unchecked { - ++i; - } - } - } - - /// @inheritdoc IRareERC1155Listings - function setTokenAllowListConfigs( - address _contractAddress, - IRareERC1155Listings.AllowListConfigRequest[] calldata _requests - ) external nonReentrant { - // Atomic ownership check: only the collection owner can change token allowlist settings. - if (!_isContractOwner(_contractAddress, msg.sender)) revert NotContractOwner(_contractAddress, msg.sender); - _validateAllowListConfigRequests(_requests); - - for (uint256 i = 0; i < _requests.length; i++) { - uint256 tokenId = _requests[i].tokenId; - _revertIfTokenNotFound(_contractAddress, tokenId); - - // State write: replace allowlist root and expiry for the token id. - _listingsStorage().tokenAllowlistRoots[_contractAddress][tokenId] = - IRareERC1155Listings.AllowListConfig(_requests[i].root, _requests[i].endTimestamp); - emit SetTokenAllowListConfig(_contractAddress, tokenId, _requests[i].root, _requests[i].endTimestamp); - } - } - - /// @inheritdoc IRareERC1155Listings - function setTokenMintLimits(address _contractAddress, IRareERC1155Listings.TokenLimitRequest[] calldata _requests) - external - nonReentrant - { - // Atomic ownership check: only the collection owner can change mint limits. - if (!_isContractOwner(_contractAddress, msg.sender)) revert NotContractOwner(_contractAddress, msg.sender); - _validateTokenLimitRequests(_requests); - - for (uint256 i = 0; i < _requests.length; i++) { - uint256 tokenId = _requests[i].tokenId; - _revertIfTokenNotFound(_contractAddress, tokenId); - - // State write: replace per-address quantity limit for the token id. - _listingsStorage().tokenMintLimit[_contractAddress][tokenId] = _requests[i].limit; - emit TokenMintLimitSet(_contractAddress, tokenId, _requests[i].limit); - } - } - - /// @inheritdoc IRareERC1155Listings - function setTokenTxLimits(address _contractAddress, IRareERC1155Listings.TokenLimitRequest[] calldata _requests) - external - nonReentrant - { - // Atomic ownership check: only the collection owner can change transaction limits. - if (!_isContractOwner(_contractAddress, msg.sender)) revert NotContractOwner(_contractAddress, msg.sender); - _validateTokenLimitRequests(_requests); - - for (uint256 i = 0; i < _requests.length; i++) { - uint256 tokenId = _requests[i].tokenId; - _revertIfTokenNotFound(_contractAddress, tokenId); - - // State write: replace per-address transaction limit for the token id. - _listingsStorage().tokenTxLimit[_contractAddress][tokenId] = _requests[i].limit; - emit TokenTxLimitSet(_contractAddress, tokenId, _requests[i].limit); - } - } - - /// @inheritdoc IRareERC1155Listings - function setSalePrices( - address _contractAddress, - address _currencyAddress, - IRareERC1155Listings.SalePriceRequest[] calldata _requests, - address payable[] calldata _splitRecipients, - uint8[] calldata _splitRatios - ) external nonReentrant notPaused { - // Atomic config checks: batch shape, listing currency, split recipients, price, quantity, and expiration must be valid. - _validateSalePriceRequests(_requests); - _checkIfCurrencyIsApproved(_currencyAddress); - _checkSplits(_splitRecipients, _splitRatios); - _validateERC1155Contract(_contractAddress); - - // External read: one collection-level transfer approval supports every token id in the batch. - IERC1155 erc1155 = IERC1155(_contractAddress); - if (!erc1155.isApprovedForAll(msg.sender, address(_listingsStorage().erc1155ApprovalManager))) { - revert MarketplaceNotApproved(msg.sender, _contractAddress); - } - - for (uint256 i = 0; i < _requests.length; i++) { - uint256 tokenId = _requests[i].tokenId; - uint256 price = _requests[i].price; - uint256 quantity = _requests[i].quantity; - uint256 expirationTime = _requests[i].expirationTime; - - if (price == 0) revert SalePriceCannotBeZero(); - if (quantity == 0) revert QuantityCannotBeZero(); - if (expirationTime != 0 && expirationTime <= block.timestamp) { - revert SalePriceExpirationInvalid(expirationTime, block.timestamp); - } - - // External reads: verify seller balance at list time. - uint256 sellerBalance = erc1155.balanceOf(msg.sender, tokenId); - if (sellerBalance < quantity) { - revert InsufficientTokenBalance(msg.sender, _contractAddress, tokenId, quantity, sellerBalance); - } - - // State write: create or replace seller's approval-based fixed-price listing. - _listingsStorage().salePrices[_contractAddress][tokenId][msg.sender] = IRareERC1155Listings.SalePrice( - _currencyAddress, price, quantity, expirationTime, _splitRecipients, _splitRatios - ); - - emit SalePriceSet( - msg.sender, - _contractAddress, - tokenId, - _currencyAddress, - price, - quantity, - expirationTime, - _splitRecipients, - _splitRatios - ); - } - } - - /// @inheritdoc IRareERC1155Listings - function cancelSalePrices(address _contractAddress, uint256[] calldata _tokenIds) external nonReentrant { - _validateTokenIds(_tokenIds); - - for (uint256 i = 0; i < _tokenIds.length; i++) { - uint256 tokenId = _tokenIds[i]; - ListingsStorage storage $ = _listingsStorage(); - if ($.salePrices[_contractAddress][tokenId][msg.sender].quantity == 0) { - continue; - } - - // State delete: remove caller's active listing for this collection and token id. - delete $.salePrices[_contractAddress][tokenId][msg.sender]; - - emit SalePriceCancelled(msg.sender, _contractAddress, tokenId); - } - } - - /// @inheritdoc IRareERC1155Listings - function buyBatch( - address _contractAddress, - address _seller, - address _currencyAddress, - IRareERC1155Listings.BuyRequest[] calldata _requests - ) external payable nonReentrant notPaused { - _validateBuyRequests(_requests); - if (msg.sender == _seller) revert SelfPurchaseUnsupported(_seller); - - // Atomic currency check: rejected currencies cannot be used even for stale listings. - _checkIfCurrencyIsApproved(_currencyAddress); - _validateERC1155Contract(_contractAddress); - - // External read: recheck seller approval at buy time because listings are not escrowed. - ListingsStorage storage $ = _listingsStorage(); - IERC1155 erc1155 = IERC1155(_contractAddress); - if (!erc1155.isApprovedForAll(_seller, address($.erc1155ApprovalManager))) { - revert MarketplaceNotApproved(_seller, _contractAddress); - } - - uint256 requestCount = _requests.length; - uint256[] memory tokenIds = new uint256[](requestCount); - uint256[] memory amounts = new uint256[](requestCount); - address[] memory balanceAccounts = new address[](requestCount * 2); - uint256[] memory balanceTokenIds = new uint256[](requestCount * 2); - IRareERC1155Listings.SecondaryPayoutContext[] memory payoutContexts = - new IRareERC1155Listings.SecondaryPayoutContext[](requestCount); - uint256 buyerTotal = 0; - - for (uint256 i = 0; i < requestCount;) { - payoutContexts[i] = _validateSecondaryBuyRequest(_contractAddress, _seller, _currencyAddress, _requests[i]); - - tokenIds[i] = _requests[i].tokenId; - amounts[i] = _requests[i].quantity; - - uint256 sellerBalance = erc1155.balanceOf(_seller, tokenIds[i]); - if (sellerBalance < amounts[i]) { - revert InsufficientTokenBalance(_seller, _contractAddress, tokenIds[i], amounts[i], sellerBalance); - } - - payoutContexts[i].marketplaceFee = - $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContexts[i].grossAmount); - buyerTotal += payoutContexts[i].grossAmount + payoutContexts[i].marketplaceFee; - - uint256 balanceIndex = i * 2; - balanceAccounts[balanceIndex] = _seller; - balanceAccounts[balanceIndex + 1] = msg.sender; - balanceTokenIds[balanceIndex] = tokenIds[i]; - balanceTokenIds[balanceIndex + 1] = tokenIds[i]; - - unchecked { - ++i; - } - } - - // Payment pull: collect aggregate sale amount plus per-line marketplace fees before moving the ERC1155 batch. - _checkBatchPayment(_currencyAddress, buyerTotal); - - for (uint256 i = 0; i < requestCount;) { - IRareERC1155Listings.SalePrice storage salePrice = - $.salePrices[_contractAddress][_requests[i].tokenId][_seller]; - - // State write: decrement listed quantity before the external ERC1155 batch transfer. - salePrice.quantity -= _requests[i].quantity; - if (salePrice.quantity == 0) { - // State delete: clear listing storage once the final listed quantity is sold. - delete $.salePrices[_contractAddress][_requests[i].tokenId][_seller]; - } - - unchecked { - ++i; - } - } - - uint256[] memory balancesBeforeTransfer = erc1155.balanceOfBatch(balanceAccounts, balanceTokenIds); - for (uint256 i = 0; i < requestCount;) { - uint256 sellerBalanceIndex = i * 2; - if (balancesBeforeTransfer[sellerBalanceIndex] < amounts[i]) { - revert InsufficientTokenBalance( - _seller, _contractAddress, tokenIds[i], amounts[i], balancesBeforeTransfer[sellerBalanceIndex] - ); - } - - unchecked { - ++i; - } - } - - // External transfer: move ERC1155 tokens through the approved transfer manager. - $.erc1155ApprovalManager.safeBatchTransferFrom(_contractAddress, _seller, msg.sender, tokenIds, amounts, ""); - - uint256[] memory balancesAfterTransfer = erc1155.balanceOfBatch(balanceAccounts, balanceTokenIds); - for (uint256 i = 0; i < requestCount;) { - uint256 balanceIndex = i * 2; - if ( - balancesAfterTransfer[balanceIndex] != balancesBeforeTransfer[balanceIndex] - amounts[i] - || balancesAfterTransfer[balanceIndex + 1] != balancesBeforeTransfer[balanceIndex + 1] + amounts[i] - ) { - revert InvalidERC1155Transfer(_contractAddress, tokenIds[i], _seller, msg.sender, amounts[i]); - } - - unchecked { - ++i; - } - } - - for (uint256 i = 0; i < requestCount;) { - // Payout fan-out: distribute collected secondary sale funds after token transfer. - _payoutSecondary( - _contractAddress, - payoutContexts[i].tokenId, - _currencyAddress, - payoutContexts[i].grossAmount, - payoutContexts[i].marketplaceFee, - _seller, - payoutContexts[i].splitRecipients, - payoutContexts[i].splitRatios - ); - - emit Sold( - _seller, - msg.sender, - _contractAddress, - payoutContexts[i].tokenId, - _currencyAddress, - _requests[i].price, - _requests[i].quantity - ); - - unchecked { - ++i; - } - } - } - - /// @inheritdoc IRareERC1155Listings - function getDirectSaleConfig(address _contractAddress, uint256 _tokenId) - external - view - returns (IRareERC1155Listings.DirectSaleConfig memory) - { - return _listingsStorage().directSaleConfigs[_contractAddress][_tokenId]; - } - - /// @inheritdoc IRareERC1155Listings - function getTokenAllowListConfig(address _contractAddress, uint256 _tokenId) - external - view - returns (IRareERC1155Listings.AllowListConfig memory) - { - return _listingsStorage().tokenAllowlistRoots[_contractAddress][_tokenId]; - } - - /// @inheritdoc IRareERC1155Listings - function getTokenMintLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256) { - return _listingsStorage().tokenMintLimit[_contractAddress][_tokenId]; - } - - /// @inheritdoc IRareERC1155Listings - function getTokenMintsPerAddress(address _contractAddress, uint256 _tokenId, address _address) - external - view - returns (uint256) - { - return _listingsStorage().tokenMintsPerAddress[_contractAddress][_tokenId][_address]; - } - - /// @inheritdoc IRareERC1155Listings - function getTokenTxLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256) { - return _listingsStorage().tokenTxLimit[_contractAddress][_tokenId]; - } - - /// @inheritdoc IRareERC1155Listings - function getTokenTxsPerAddress(address _contractAddress, uint256 _tokenId, address _address) - external - view - returns (uint256) - { - return _listingsStorage().tokenTxsPerAddress[_contractAddress][_tokenId][_address]; - } - - /// @inheritdoc IRareERC1155Listings - function getSalePrice(address _contractAddress, uint256 _tokenId, address _seller) - external - view - returns (IRareERC1155Listings.SalePrice memory) - { - return _listingsStorage().salePrices[_contractAddress][_tokenId][_seller]; - } - - /// @inheritdoc IRareERC1155Listings - function getMarketConfig() external view returns (MarketConfigV2.Config memory) { - return _listingsStorage().marketConfig; - } - - /// @inheritdoc IRareERC1155Listings - function getERC1155ApprovalManager() external view returns (address) { - return address(_listingsStorage().erc1155ApprovalManager); - } - - /// @inheritdoc IRareERC1155Listings - function isPaused() external view returns (bool) { - return _listingsStorage().paused; - } - - /// @inheritdoc IRareERC1155Listings - function setNetworkBeneficiary(address _networkBeneficiary) external onlyOwner { - // Atomic guard: network beneficiary must remain payable by marketplace fee flows. - _validateMarketConfigAddress(_networkBeneficiary, NETWORK_BENEFICIARY_FIELD); - - // State write: delegate config mutation to the shared MarketConfig library. - _listingsStorage().marketConfig.updateNetworkBeneficiary(_networkBeneficiary); - - emit MarketplaceDependencyUpdated(NETWORK_BENEFICIARY_FIELD, _networkBeneficiary); - } - - /// @inheritdoc IRareERC1155Listings - function setMarketplaceSettings(address _marketplaceSettings) external onlyOwner { - // Atomic guard: marketplace fee calculations must retain a concrete settings contract. - _validateMarketConfigAddress(_marketplaceSettings, MARKETPLACE_SETTINGS_FIELD); - - // State write: delegate config mutation to the shared MarketConfig library. - _listingsStorage().marketConfig.updateMarketplaceSettings(_marketplaceSettings); - - emit MarketplaceDependencyUpdated(MARKETPLACE_SETTINGS_FIELD, _marketplaceSettings); - } - - /// @inheritdoc IRareERC1155Listings - function setSpaceOperatorRegistry(address _spaceOperatorRegistry) external onlyOwner { - // Atomic guard: primary platform-fee resolution must retain a concrete registry. - _validateMarketConfigAddress(_spaceOperatorRegistry, SPACE_OPERATOR_REGISTRY_FIELD); - - // State write: delegate config mutation to the shared MarketConfig library. - _listingsStorage().marketConfig.updateSpaceOperatorRegistry(_spaceOperatorRegistry); - - emit MarketplaceDependencyUpdated(SPACE_OPERATOR_REGISTRY_FIELD, _spaceOperatorRegistry); - } - - /// @inheritdoc IRareERC1155Listings - function setRoyaltyEngine(address _royaltyEngine) external onlyOwner { - // Atomic guard: secondary royalty resolution must retain a concrete engine. - _validateMarketConfigAddress(_royaltyEngine, ROYALTY_ENGINE_FIELD); - - // State write: delegate config mutation to the shared MarketConfig library. - _listingsStorage().marketConfig.updateRoyaltyEngine(_royaltyEngine); - - emit MarketplaceDependencyUpdated(ROYALTY_ENGINE_FIELD, _royaltyEngine); - } - - /// @inheritdoc IRareERC1155Listings - function setPayments(address _payments) external onlyOwner { - // Atomic guard: ETH payout fan-out must retain a concrete Payments contract. - _validateMarketConfigAddress(_payments, PAYMENTS_FIELD); - - // State write: delegate config mutation to the shared MarketConfig library. - _listingsStorage().marketConfig.updatePayments(_payments); - - emit MarketplaceDependencyUpdated(PAYMENTS_FIELD, _payments); - } - - /// @inheritdoc IRareERC1155Listings - function setApprovedTokenRegistry(address _approvedTokenRegistry) external onlyOwner { - // Atomic guard: currency approval checks must retain a concrete registry. - _validateMarketConfigAddress(_approvedTokenRegistry, APPROVED_TOKEN_REGISTRY_FIELD); - - // State write: delegate config mutation to the shared MarketConfig library. - _listingsStorage().marketConfig.updateApprovedTokenRegistry(_approvedTokenRegistry); - - emit MarketplaceDependencyUpdated(APPROVED_TOKEN_REGISTRY_FIELD, _approvedTokenRegistry); - } - - /// @inheritdoc IRareERC1155Listings - function setStakingSettings(address _stakingSettings) external onlyOwner { - // Atomic guard: marketplace fee split math must retain concrete settings. - _validateMarketConfigAddress(_stakingSettings, STAKING_SETTINGS_FIELD); - - // State write: delegate config mutation to the shared MarketConfig library. - _listingsStorage().marketConfig.updateStakingSettings(_stakingSettings); - - emit MarketplaceDependencyUpdated(STAKING_SETTINGS_FIELD, _stakingSettings); - } - - /// @inheritdoc IRareERC1155Listings - function setStakingRegistry(address _stakingRegistry) external onlyOwner { - // Atomic guard: marketplace fee split recipients must retain a concrete registry. - _validateMarketConfigAddress(_stakingRegistry, STAKING_REGISTRY_FIELD); - - // State write: delegate config mutation to the shared MarketConfig library. - _listingsStorage().marketConfig.updateStakingRegistry(_stakingRegistry); - - emit MarketplaceDependencyUpdated(STAKING_REGISTRY_FIELD, _stakingRegistry); - } - - /// @inheritdoc IRareERC1155Listings - function setERC20ApprovalManager(address _erc20ApprovalManager) external onlyOwner { - // Atomic guard: ERC20 purchases must retain a concrete transfer manager. - _validateApprovalManager(_erc20ApprovalManager); - - // State write: delegate config mutation to the shared MarketConfig library. - _listingsStorage().marketConfig.updateERC20ApprovalManager(_erc20ApprovalManager); - - emit MarketplaceDependencyUpdated(ERC20_APPROVAL_MANAGER_FIELD, _erc20ApprovalManager); - } - - /// @inheritdoc IRareERC1155Listings - function setERC721ApprovalManager(address _erc721ApprovalManager) external onlyOwner { - // Atomic guard: shared V2 config must retain a concrete ERC721 approval manager. - _validateApprovalManager(_erc721ApprovalManager); - - // State write: delegate config mutation to the shared MarketConfig library. - _listingsStorage().marketConfig.updateERC721ApprovalManager(_erc721ApprovalManager); - - emit MarketplaceDependencyUpdated(ERC721_APPROVAL_MANAGER_FIELD, _erc721ApprovalManager); - } - - /// @inheritdoc IRareERC1155Listings - function setERC1155ApprovalManager(address _erc1155ApprovalManager) external onlyOwner { - // Atomic guard: secondary ERC1155 transfers must retain a concrete approval manager. - _validateApprovalManager(_erc1155ApprovalManager); - - // State write: replace the manager used for seller approval checks and transfers. - _listingsStorage().erc1155ApprovalManager = IERC1155ApprovalManager(_erc1155ApprovalManager); - - emit MarketplaceDependencyUpdated(ERC1155_APPROVAL_MANAGER_FIELD, _erc1155ApprovalManager); - } - - /// @inheritdoc IRareERC1155Listings - function setContractPaused(bool _isPaused) external onlyOwner { - // State write: set pause flag consumed by the notPaused modifier. - _listingsStorage().paused = _isPaused; - - emit ContractPausedUpdated(_isPaused); - } - - /// @notice Distributes proceeds for a primary mint sale. - /// @dev Marketplace fee is paid on top by the buyer; platform fee is deducted from seller proceeds. - /// @param _contractAddress ERC1155 collection address. - /// @param _currencyAddress Currency being paid. Zero address indicates ETH. - /// @param _amount Gross sale amount before platform fee. - /// @param _marketplaceFee Buyer-paid marketplace fee already calculated for `_amount`. - /// @param _seller Primary sale seller. - /// @param _splitRecipients Seller proceed recipients. - /// @param _splitRatios Seller proceed split ratios. - function _payoutPrimary( - address _contractAddress, - address _currencyAddress, - uint256 _amount, - uint256 _marketplaceFee, - address _seller, - address payable[] memory _splitRecipients, - uint8[] memory _splitRatios - ) internal { - // Accounting state: track seller proceeds remaining after primary platform commission. - ListingsStorage storage $ = _listingsStorage(); - uint256 remainingAmount = _amount; - - // Payout operation: distribute the buyer-paid marketplace fee through the configured fee split. - _payoutMarketplaceFee(_currencyAddress, _amount, _marketplaceFee, _seller); - - // External reads: choose primary commission from approved space operator or marketplace settings. - uint256 platformCommission = $.marketConfig.spaceOperatorRegistry.isApprovedSpaceOperator(_seller) - ? $.marketConfig.spaceOperatorRegistry.getPlatformCommission(_seller) - : $.marketConfig.marketplaceSettings.getERC721ContractPrimarySaleFeePercentage(_contractAddress); - if (platformCommission > 100) { - revert PlatformCommissionExceeded(platformCommission, 100); - } - - // Accounting operation: convert commission percentage to an amount. - uint256 platformFee = (_amount * platformCommission) / 100; - if (platformFee > 0) { - // Accounting state: remove platform fee from seller proceeds before split payout. - remainingAmount -= platformFee; - - // Memory setup: represent single-recipient platform fee as a payout batch. - address payable[] memory platformRecipients = new address payable[](1); - platformRecipients[0] = payable($.marketConfig.networkBeneficiary); - uint256[] memory platformAmounts = new uint256[](1); - platformAmounts[0] = platformFee; - - // Payout operation: send primary platform fee to the network beneficiary. - _performPayouts(_currencyAddress, platformFee, platformRecipients, platformAmounts); - } - - // Payout operation: split remaining seller proceeds across configured recipients. - _payoutSplits(_currencyAddress, remainingAmount, _splitRecipients, _splitRatios); - } - - /// @notice Distributes proceeds for a secondary fixed-price sale. - /// @dev Marketplace fee is paid on top by the buyer; royalties are deducted from seller proceeds. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Sold token id. - /// @param _currencyAddress Currency being paid. Zero address indicates ETH. - /// @param _amount Gross sale amount before royalty deduction. - /// @param _marketplaceFee Buyer-paid marketplace fee already calculated for `_amount`. - /// @param _seller Secondary seller. - /// @param _splitRecipients Seller proceed recipients. - /// @param _splitRatios Seller proceed split ratios. - function _payoutSecondary( - address _contractAddress, - uint256 _tokenId, - address _currencyAddress, - uint256 _amount, - uint256 _marketplaceFee, - address _seller, - address payable[] memory _splitRecipients, - uint8[] memory _splitRatios - ) internal { - // Accounting state: track seller proceeds remaining after royalties. - uint256 remainingAmount = _amount; - - // Payout operation: distribute the buyer-paid marketplace fee through the configured fee split. - _payoutMarketplaceFee(_currencyAddress, _amount, _marketplaceFee, _seller); - - // External read: resolve royalties through the configured royalty engine. - (address payable[] memory receivers, uint256[] memory royalties) = - _listingsStorage().marketConfig.royaltyEngine.getRoyalty(_contractAddress, _tokenId, _amount); - - // Accounting operation: aggregate royalty amounts before paying them. - uint256 totalRoyalties = 0; - for (uint256 i = 0; i < royalties.length; i++) { - totalRoyalties += royalties[i]; - } - - // Atomic guard: royalties cannot consume more than gross sale amount. - if (totalRoyalties > remainingAmount) revert RoyaltiesExceedSaleAmount(totalRoyalties, remainingAmount); - - if (totalRoyalties > 0) { - // Accounting state: remove royalty amount from seller proceeds before split payout. - remainingAmount -= totalRoyalties; - - // Payout operation: send royalties to royalty engine recipients. - _performPayouts(_currencyAddress, totalRoyalties, receivers, royalties); - } - - // Payout operation: split remaining seller proceeds across configured recipients. - _payoutSplits(_currencyAddress, remainingAmount, _splitRecipients, _splitRatios); - } - - /// @notice Distributes marketplace fee between network beneficiary and seller staking rewards. - /// @param _currencyAddress Currency being paid. Zero address indicates ETH. - /// @param _amount Gross sale amount used for fee calculation. - /// @param _marketplaceFee Buyer-paid marketplace fee already calculated for `_amount`. - /// @param _seller Seller whose staking reward accumulator may receive staking fees. - function _payoutMarketplaceFee(address _currencyAddress, uint256 _amount, uint256 _marketplaceFee, address _seller) - internal - { - if (_marketplaceFee == 0) { - return; - } - - // External read: calculate staking fee from staking settings and send the collected remainder to network. - ListingsStorage storage $ = _listingsStorage(); - uint256 stakingFee = $.marketConfig.stakingSettings.calculateStakingFee(_amount); - if (stakingFee > _marketplaceFee) { - revert StakingFeeExceedsMarketplaceFee(_marketplaceFee, stakingFee); - } - - // Memory setup: recipient 0 is network, recipient 1 is seller staking reward accumulator or network fallback. - address payable[] memory recipients = new address payable[](2); - recipients[0] = payable($.marketConfig.networkBeneficiary); - recipients[1] = payable($.marketConfig.stakingRegistry.getRewardAccumulatorAddressForUser(_seller)); - recipients[1] = recipients[1] == address(0) ? payable($.marketConfig.networkBeneficiary) : recipients[1]; - - // Memory setup: distribute the buyer-paid marketplace fee between network and staking recipients. - uint256[] memory amounts = new uint256[](2); - amounts[0] = _marketplaceFee - stakingFee; - amounts[1] = stakingFee; - - // Payout operation: distribute the marketplace fee batch. - _performPayouts(_currencyAddress, _marketplaceFee, recipients, amounts); - } - - /// @notice Validates that a currency is ETH or an approved ERC20. - /// @param _currencyAddress Currency to validate. Zero address indicates ETH. - function _checkIfCurrencyIsApproved(address _currencyAddress) internal view { - // External read: non-ETH currencies must be approved by the token registry. - if ( - _currencyAddress != address(0) - && !_listingsStorage().marketConfig.approvedTokenRegistry.isApprovedToken(_currencyAddress) - ) { - revert CurrencyNotApproved(_currencyAddress); - } - } - - /// @notice Validates that a secondary collection is a deployed ERC1155 contract. - /// @param _contractAddress ERC1155 collection address. - function _validateERC1155Contract(address _contractAddress) internal view { - if ( - _contractAddress.code.length == 0 - || !ERC165Checker.supportsInterface(_contractAddress, type(IERC1155).interfaceId) - ) { - revert InvalidERC1155Contract(_contractAddress); - } - } - - /// @notice Reverts when a Rare ERC1155 token id has not been created. - /// @param _contractAddress Rare ERC1155 collection address. - /// @param _tokenId Token id to validate. - function _revertIfTokenNotFound(address _contractAddress, uint256 _tokenId) internal view { - // External read: created Rare ERC1155 token ids always have a non-zero configured max supply. - if (IRareERC1155(_contractAddress).maxSupplyForToken(_tokenId) == 0) { - revert TokenNotFound(_contractAddress, _tokenId); - } - } - - /// @notice Validates one primary mint request and snapshots payout state. - /// @param _contractAddress ERC1155 collection address. - /// @param _currencyAddress Currency expected by the buyer. - /// @param _buyer Buyer executing the batch. - /// @param _request Mint request to validate. - /// @return payoutContext Payout data copied before the external batch mint. - function _validateMintDirectSaleRequest( - address _contractAddress, - address _currencyAddress, - address _buyer, - IRareERC1155Listings.MintRequest calldata _request - ) internal view returns (IRareERC1155Listings.PrimaryPayoutContext memory payoutContext) { - ListingsStorage storage $ = _listingsStorage(); - uint256 tokenId = _request.tokenId; - uint256 quantity = _request.quantity; - IRareERC1155Listings.DirectSaleConfig memory directSaleConfig = $.directSaleConfigs[_contractAddress][tokenId]; - - // Atomic guards: ensure sale existence, current seller ownership, allowlist membership, and non-zero quantity. - if (directSaleConfig.seller == address(0)) revert DirectSaleNotConfigured(_contractAddress, tokenId); - if (!_isContractOwner(_contractAddress, directSaleConfig.seller)) { - revert NotContractOwner(_contractAddress, directSaleConfig.seller); - } - _enforceTokenAllowList(_contractAddress, tokenId, _buyer, _request.proof); - if (quantity == 0) revert QuantityCannotBeZero(); - - // Atomic mint-limit check: validate requested quantity against buyer's enabled-period mint count. - uint256 mintLimit = $.tokenMintLimit[_contractAddress][tokenId]; - uint256 currentMints = $.tokenMintsPerAddress[_contractAddress][tokenId][_buyer]; - if (mintLimit != 0 && currentMints + quantity > mintLimit) { - revert MintLimitExceeded(_contractAddress, tokenId, _buyer, quantity, currentMints, mintLimit); - } - - // Atomic tx-limit check: each touched token id consumes one transaction when its tx limit is enabled. - uint256 txLimit = $.tokenTxLimit[_contractAddress][tokenId]; - uint256 currentTxs = $.tokenTxsPerAddress[_contractAddress][tokenId][_buyer]; - if (txLimit != 0 && currentTxs + 1 > txLimit) { - revert TransactionLimitExceeded(_contractAddress, tokenId, _buyer, currentTxs, txLimit); - } - - // Atomic sale-parameter checks: buyer-supplied price and currency must match the stored config. - if (directSaleConfig.maxMints != 0 && quantity > directSaleConfig.maxMints) { - revert MaxMintExceeded(quantity, directSaleConfig.maxMints); - } - if (directSaleConfig.startTime > block.timestamp) revert SaleNotStarted(directSaleConfig.startTime); - if (_request.price != directSaleConfig.price) revert PriceMismatch(_request.price, directSaleConfig.price); - if (directSaleConfig.currencyAddress != _currencyAddress) { - revert CurrencyMismatch(_currencyAddress, directSaleConfig.currencyAddress); - } - - payoutContext = IRareERC1155Listings.PrimaryPayoutContext( - tokenId, - quantity * _request.price, - 0, - directSaleConfig.seller, - directSaleConfig.splitRecipients, - directSaleConfig.splitRatios - ); - } - - /// @notice Validates one secondary buy request and snapshots payout state. - /// @param _contractAddress ERC1155 collection address. - /// @param _seller Seller whose listing is being filled. - /// @param _currencyAddress Currency expected by the buyer. - /// @param _request Buy request to validate. - /// @return payoutContext Payout data copied before listings may be decremented or deleted. - function _validateSecondaryBuyRequest( - address _contractAddress, - address _seller, - address _currencyAddress, - IRareERC1155Listings.BuyRequest calldata _request - ) internal view returns (IRareERC1155Listings.SecondaryPayoutContext memory payoutContext) { - uint256 tokenId = _request.tokenId; - uint256 quantity = _request.quantity; - if (quantity == 0) revert QuantityCannotBeZero(); - - // Storage pointer: mutate seller listing quantity only after all buy-time checks pass. - IRareERC1155Listings.SalePrice storage salePrice = - _listingsStorage().salePrices[_contractAddress][tokenId][_seller]; - - // Atomic listing checks: listing must exist and match buyer-supplied terms. - if (salePrice.quantity == 0) revert SalePriceDoesNotExist(_contractAddress, tokenId, _seller); - if (salePrice.expirationTime != 0 && salePrice.expirationTime <= block.timestamp) { - revert SalePriceExpired(_contractAddress, tokenId, _seller, salePrice.expirationTime); - } - if (salePrice.currencyAddress != _currencyAddress) { - revert CurrencyMismatch(_currencyAddress, salePrice.currencyAddress); - } - if (salePrice.price != _request.price) revert PriceMismatch(_request.price, salePrice.price); - if (salePrice.quantity < quantity) revert QuantityExceedsSalePriceQuantity(quantity, salePrice.quantity); - - payoutContext = IRareERC1155Listings.SecondaryPayoutContext( - tokenId, quantity * _request.price, 0, salePrice.splitRecipients, salePrice.splitRatios - ); - } - - /// @notice Validates plain token id batch shape and ordering. - /// @param _tokenIds Token ids supplied by the caller. - function _validateTokenIds(uint256[] calldata _tokenIds) internal pure { - _validateBatchSize(_tokenIds.length); - for (uint256 i = 1; i < _tokenIds.length; i++) { - if (_tokenIds[i] <= _tokenIds[i - 1]) { - revert TokenIdsNotStrictlyAscending(i, _tokenIds[i - 1], _tokenIds[i]); - } - } - } - - /// @notice Validates primary sale config request batch shape and ordering. - /// @param _requests Requests supplied by the caller. - function _validateDirectSaleRequests(IRareERC1155Listings.DirectSaleRequest[] calldata _requests) internal pure { - _validateBatchSize(_requests.length); - for (uint256 i = 1; i < _requests.length; i++) { - if (_requests[i].tokenId <= _requests[i - 1].tokenId) { - revert TokenIdsNotStrictlyAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); - } - } - } - - /// @notice Validates primary mint request batch shape and ordering. - /// @param _requests Requests supplied by the caller. - function _validateMintRequests(IRareERC1155Listings.MintRequest[] calldata _requests) internal pure { - _validateBatchSize(_requests.length); - for (uint256 i = 1; i < _requests.length; i++) { - if (_requests[i].tokenId <= _requests[i - 1].tokenId) { - revert TokenIdsNotStrictlyAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); - } - } - } - - /// @notice Validates allowlist config request batch shape and ordering. - /// @param _requests Requests supplied by the caller. - function _validateAllowListConfigRequests(IRareERC1155Listings.AllowListConfigRequest[] calldata _requests) - internal - pure - { - _validateBatchSize(_requests.length); - for (uint256 i = 1; i < _requests.length; i++) { - if (_requests[i].tokenId <= _requests[i - 1].tokenId) { - revert TokenIdsNotStrictlyAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); - } - } - } - - /// @notice Validates token limit request batch shape and ordering. - /// @param _requests Requests supplied by the caller. - function _validateTokenLimitRequests(IRareERC1155Listings.TokenLimitRequest[] calldata _requests) internal pure { - _validateBatchSize(_requests.length); - for (uint256 i = 1; i < _requests.length; i++) { - if (_requests[i].tokenId <= _requests[i - 1].tokenId) { - revert TokenIdsNotStrictlyAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); - } - } - } - - /// @notice Validates secondary listing request batch shape and ordering. - /// @param _requests Requests supplied by the caller. - function _validateSalePriceRequests(IRareERC1155Listings.SalePriceRequest[] calldata _requests) internal pure { - _validateBatchSize(_requests.length); - for (uint256 i = 1; i < _requests.length; i++) { - if (_requests[i].tokenId <= _requests[i - 1].tokenId) { - revert TokenIdsNotStrictlyAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); - } - } - } - - /// @notice Validates secondary buy request batch shape and ordering. - /// @param _requests Requests supplied by the caller. - function _validateBuyRequests(IRareERC1155Listings.BuyRequest[] calldata _requests) internal pure { - _validateBatchSize(_requests.length); - for (uint256 i = 1; i < _requests.length; i++) { - if (_requests[i].tokenId <= _requests[i - 1].tokenId) { - revert TokenIdsNotStrictlyAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); - } - } - } - - /// @notice Validates common batch size constraints. - /// @param _length Number of batch items supplied by the caller. - function _validateBatchSize(uint256 _length) internal pure { - if (_length == 0) revert EmptyBatch(); - if (_length > MAX_BATCH_SIZE) revert BatchSizeExceeded(_length, MAX_BATCH_SIZE); - } - - /// @notice Validates aggregate payment amount and pulls ERC20 funds when needed. - /// @param _currencyAddress Currency to collect. Zero address indicates ETH. - /// @param _amount Total amount to collect, including all buyer-paid marketplace fees. - function _checkBatchPayment(address _currencyAddress, uint256 _amount) internal { - if (_amount == 0) { - // Atomic free-batch guard: free batches must not leave ETH stuck in the marketplace. - if (msg.value != 0) revert MsgValueMustBeZero(); - return; - } - - _checkAmountAndTransfer(_currencyAddress, _amount); - } - - /// @notice Validates payment amount and pulls ERC20 funds when needed. - /// @dev For ETH payments, funds are already present in `msg.value`; for ERC20 payments, this function transfers tokens in. - /// @param _currencyAddress Currency to collect. Zero address indicates ETH. - /// @param _amount Total amount to collect, including any buyer-paid marketplace fee. - function _checkAmountAndTransfer(address _currencyAddress, uint256 _amount) internal { - if (_currencyAddress == address(0)) { - // Atomic ETH check: exact value is required so no ETH is left over or underpaid. - if (msg.value != _amount) revert IncorrectETHAmount(_amount, msg.value); - return; - } - - // Atomic ERC20 check: ERC20 purchases cannot also send ETH. - if (msg.value != 0) revert MsgValueUnsupportedForERC20(); - - IERC20 erc20 = IERC20(_currencyAddress); - - // Balance snapshot: used to reject fee-on-transfer or rebasing behavior during transfer. - uint256 balanceBefore = erc20.balanceOf(address(this)); - - // External transfer: pull exact payment amount through the approved ERC20 transfer manager. - _listingsStorage().marketConfig.erc20ApprovalManager - .transferFrom(_currencyAddress, msg.sender, address(this), _amount); - - // Atomic transfer check: marketplace must receive the exact amount requested. - uint256 receivedAmount = erc20.balanceOf(address(this)) - balanceBefore; - if (receivedAmount != _amount) { - revert ERC20FeeOnTransferUnsupported(_currencyAddress, _amount, receivedAmount); - } - } - - /// @notice Validates seller split recipients and ratios. - /// @param _splitRecipients Addresses that receive seller proceeds. - /// @param _splitRatios Percentages corresponding to `_splitRecipients`. - function _checkSplits(address payable[] calldata _splitRecipients, uint8[] calldata _splitRatios) internal pure { - // Atomic split checks: every sale needs 1-5 recipients and matching ratio data. - if (_splitRecipients.length == 0) revert SplitRecipientsRequired(); - if (_splitRecipients.length > 5) revert SplitRecipientsExceededMax(_splitRecipients.length, 5); - if (_splitRecipients.length != _splitRatios.length) { - revert SplitLengthMismatch(_splitRecipients.length, _splitRatios.length); - } - - // Accounting operation: ratios must total exactly 100 percent. - uint256 totalRatio = 0; - for (uint256 i = 0; i < _splitRatios.length; i++) { - if (_splitRecipients[i] == address(0)) revert SplitRecipientCannotBeZero(i); - if (_splitRatios[i] == 0) revert SplitRatioCannotBeZero(i); - totalRatio += _splitRatios[i]; - } - - if (totalRatio != 100) revert SplitTotalInvalid(totalRatio, 100); - } - - /// @notice Splits seller proceeds across configured recipients. - /// @param _currencyAddress Currency to pay. Zero address indicates ETH. - /// @param _amount Total seller proceeds to split. - /// @param _splitRecipients Addresses that receive seller proceeds. - /// @param _splitRatios Percentages corresponding to `_splitRecipients`. - function _payoutSplits( - address _currencyAddress, - uint256 _amount, - address payable[] memory _splitRecipients, - uint8[] memory _splitRatios - ) internal { - // Atomic guard: payout split arrays must remain paired. - if (_splitRecipients.length != _splitRatios.length) { - revert SplitLengthMismatch(_splitRecipients.length, _splitRatios.length); - } - - // Memory setup: convert split percentages into absolute payout amounts. - uint256[] memory amounts = new uint256[](_splitRecipients.length); - uint256 remainingPayout = _amount; - - for (uint256 i = 0; i < _splitRecipients.length; i++) { - if (i == _splitRecipients.length - 1) { - // Accounting operation: assign rounding dust to the final recipient so the full amount is paid. - amounts[i] = remainingPayout; - } else { - // Accounting operation: integer division rounds intermediate recipients down. - amounts[i] = (_amount * _splitRatios[i]) / 100; - remainingPayout -= amounts[i]; - } - } - - // Payout operation: send the full split amount to recipients. - _performPayouts(_currencyAddress, _amount, _splitRecipients, amounts); - } - - /// @notice Pays recipients in ETH or ERC20. - /// @dev ETH payouts are delegated to the Payments contract; ERC20 payouts transfer from marketplace balance directly. - /// @param _currencyAddress Currency to pay. Zero address indicates ETH. - /// @param _amount Total amount paid through this batch. - /// @param _recipients Addresses receiving funds. - /// @param _amounts Amount per recipient. - function _performPayouts( - address _currencyAddress, - uint256 _amount, - address payable[] memory _recipients, - uint256[] memory _amounts - ) internal { - // Atomic guard: recipients and amount arrays must be paired before any payout transfer. - if (_recipients.length != _amounts.length) { - revert PayoutLengthMismatch(_recipients.length, _amounts.length); - } - - // Accounting operation: validate the batch pays exactly the amount it claims to pay. - uint256 totalAmount = 0; - for (uint256 i = 0; i < _amounts.length; i++) { - totalAmount += _amounts[i]; - } - if (totalAmount != _amount) revert PayoutTotalMismatch(_amount, totalAmount); - - if (_currencyAddress == address(0)) { - // External call: send ETH to Payments so it can fan out to each recipient. - MarketConfigV2.Config storage marketConfig = _listingsStorage().marketConfig; - (bool success, bytes memory data) = address(marketConfig.payments).call{value: _amount}( - abi.encodeWithSelector(marketConfig.payments.payout.selector, _recipients, _amounts) - ); - - // Atomic payout check: bubble raw failure data through a named marketplace error. - if (!success) revert PayoutFailed(data); - return; - } - - IERC20 erc20 = IERC20(_currencyAddress); - for (uint256 i = 0; i < _recipients.length; i++) { - // External transfer: pay each ERC20 recipient from marketplace balance. - erc20.safeTransfer(_recipients[i], _amounts[i]); - } - } - - /// @notice Validates a required market config dependency address. - /// @param _address Address to validate. - /// @param _field Field label used in the named error. - function _validateMarketConfigAddress(address _address, bytes32 _field) internal pure { - // Atomic guard: zero config dependencies are rejected before storage writes or external calls. - if (_address == address(0)) revert MarketConfigAddressCannotBeZero(_field); - } - - /// @notice Validates an approval manager address. - /// @param _approvalManager Approval manager address to validate. - function _validateApprovalManager(address _approvalManager) internal pure { - // Atomic guard: approval manager dependencies are required for ERC20 pulls and ERC1155 transfers. - if (_approvalManager == address(0)) revert ApprovalManagerCannotBeZero(); - } - - /// @notice Enforces an active Merkle allowlist for a primary sale. - /// @param _contractAddress ERC1155 collection address. - /// @param _tokenId Token id being minted. - /// @param _address Buyer address to verify. - /// @param _proof Merkle proof supplied by the buyer. - function _enforceTokenAllowList( - address _contractAddress, - uint256 _tokenId, - address _address, - bytes32[] calldata _proof - ) internal view { - // Storage read: load allowlist config for the token id. - IRareERC1155Listings.AllowListConfig memory allowListConfig = - _listingsStorage().tokenAllowlistRoots[_contractAddress][_tokenId]; - - if (allowListConfig.root == bytes32(0) || block.timestamp >= allowListConfig.endTimestamp) { - return; - } - - // Atomic proof check: active allowlists require the buyer leaf to resolve to the stored root. - if (!_verifyProof(keccak256(abi.encodePacked(_address)), allowListConfig.root, _proof)) { - revert AddressNotAllowlisted(_address); - } - } - - /// @notice Verifies a sorted Merkle proof. - /// @param _leaf Leaf to prove. - /// @param _root Expected Merkle root. - /// @param _proof Proof siblings from leaf to root. - /// @return True when the proof resolves to `_root`. - function _verifyProof(bytes32 _leaf, bytes32 _root, bytes32[] calldata _proof) internal pure returns (bool) { - // Memory state: iteratively fold proof siblings into the current hash. - bytes32 currentHash = _leaf; - - for (uint256 i = 0; i < _proof.length; i++) { - // Hash operation: combine the current node with the next proof sibling in sorted order. - currentHash = _parentHash(currentHash, _proof[i]); - } - - return currentHash == _root; - } - - /// @notice Computes a sorted Merkle parent hash. - /// @param a First child hash. - /// @param b Second child hash. - /// @return Parent hash for the two children. - function _parentHash(bytes32 a, bytes32 b) internal pure returns (bytes32) { - return a <= b ? keccak256(abi.encodePacked(a, b)) : keccak256(abi.encodePacked(b, a)); - } - - /// @notice Checks whether an account owns a collection through an `owner()` staticcall. - /// @param _contractAddress Contract exposing an `owner()` function. - /// @param _account Account to compare against the returned owner. - /// @return True when `_account` is the collection owner. - function _isContractOwner(address _contractAddress, address _account) internal view returns (bool) { - // External staticcall: support Ownable-compatible collections without requiring a shared interface. - (bool success, bytes memory data) = _contractAddress.staticcall(abi.encodeWithSignature("owner()")); - - // Atomic ownership-read check: owner() must return a full address word. - if (!success || data.length < 32) revert ContractHasNoOwner(_contractAddress); - return abi.decode(data, (address)) == _account; - } -} diff --git a/src/marketplace/RareERC1155Marketplace.sol b/src/marketplace/RareERC1155Marketplace.sol new file mode 100644 index 0000000..9b0bead --- /dev/null +++ b/src/marketplace/RareERC1155Marketplace.sol @@ -0,0 +1,575 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; +import {OwnableUpgradeable} from "openzeppelin-contracts-upgradeable/access/OwnableUpgradeable.sol"; +import {ReentrancyGuardUpgradeable} from "openzeppelin-contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; +import {UUPSUpgradeable} from "openzeppelin-contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; + +import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; +import {IERC1155ApprovalManager} from "../v2/approver/ERC1155/IERC1155ApprovalManager.sol"; +import {IRareERC1155Marketplace} from "./IRareERC1155Marketplace.sol"; +import {IRareERC1155Settlement} from "./IRareERC1155Settlement.sol"; +import {RareERC1155MarketplacePayments} from "./RareERC1155MarketplacePayments.sol"; +import {RareERC1155MarketplaceStorage} from "./RareERC1155MarketplaceStorage.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155Marketplace +/// @notice ERC1155 marketplace state, escrow, configuration, and settlement entrypoint. +/// @dev The marketplace is the UUPS proxy-facing contract and owns all marketplace storage. Settlement execution is +/// routed through delegatecall so settlement reads and writes the marketplace proxy's ERC-7201 storage namespace. +contract RareERC1155Marketplace is + IRareERC1155Marketplace, + RareERC1155MarketplaceStorage, + OwnableUpgradeable, + ReentrancyGuardUpgradeable, + UUPSUpgradeable +{ + using MarketConfigV2 for MarketConfigV2.Config; + using RareERC1155MarketplacePayments for MarketConfigV2.Config; + + modifier notPaused() { + _notPaused(); + _; + } + + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + + function initialize( + address _networkBeneficiary, + address _marketplaceSettings, + address _spaceOperatorRegistry, + address _royaltyEngine, + address _payments, + address _approvedTokenRegistry, + address _stakingSettings, + address _stakingRegistry, + address _erc20ApprovalManager, + address _erc721ApprovalManager, + address _erc1155ApprovalManager, + address _settlement + ) external initializer { + _validateMarketConfigAddress(_networkBeneficiary, NETWORK_BENEFICIARY_FIELD); + _validateMarketConfigAddress(_marketplaceSettings, MARKETPLACE_SETTINGS_FIELD); + _validateMarketConfigAddress(_spaceOperatorRegistry, SPACE_OPERATOR_REGISTRY_FIELD); + _validateMarketConfigAddress(_royaltyEngine, ROYALTY_ENGINE_FIELD); + _validateMarketConfigAddress(_payments, PAYMENTS_FIELD); + _validateMarketConfigAddress(_approvedTokenRegistry, APPROVED_TOKEN_REGISTRY_FIELD); + _validateMarketConfigAddress(_stakingSettings, STAKING_SETTINGS_FIELD); + _validateMarketConfigAddress(_stakingRegistry, STAKING_REGISTRY_FIELD); + _validateApprovalManager(_erc20ApprovalManager); + _validateApprovalManager(_erc721ApprovalManager); + _validateApprovalManager(_erc1155ApprovalManager); + _validateSettlement(_settlement); + + MarketplaceStorage storage $ = _marketplaceStorage(); + $.marketConfig = MarketConfigV2.generateMarketConfig( + _networkBeneficiary, + _marketplaceSettings, + _spaceOperatorRegistry, + _royaltyEngine, + _payments, + _approvedTokenRegistry, + _stakingSettings, + _stakingRegistry, + _erc20ApprovalManager, + _erc721ApprovalManager + ); + $.erc1155ApprovalManager = IERC1155ApprovalManager(_erc1155ApprovalManager); + $.settlement = _settlement; + + __Ownable_init(); + __ReentrancyGuard_init(); + __UUPSUpgradeable_init(); + } + + function _authorizeUpgrade(address _newImplementation) internal view override onlyOwner { + _newImplementation; + } + + function prepareMintDirectSales( + address _contractAddress, + address _currencyAddress, + DirectSaleRequest[] calldata _requests, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external nonReentrant notPaused { + if (!_isContractOwner(_contractAddress, msg.sender)) { + revert NotContractOwner(_contractAddress, msg.sender); + } + _validateDirectSaleRequests(_requests); + _marketplaceStorage().marketConfig.checkIfCurrencyIsApproved(_currencyAddress); + RareERC1155MarketplacePayments.checkSplits(_splitRecipients, _splitRatios); + + for (uint256 i = 0; i < _requests.length; i++) { + uint256 tokenId = _requests[i].tokenId; + _revertIfTokenNotFound(_contractAddress, tokenId); + + _marketplaceStorage().directSaleConfigs[_contractAddress][tokenId] = DirectSaleConfig({ + seller: msg.sender, + currencyAddress: _currencyAddress, + price: _requests[i].price, + startTime: _requests[i].startTime, + maxMints: _requests[i].maxMints, + splitRecipients: _splitRecipients, + splitRatios: _splitRatios + }); + + emit PrepareMintDirectSale( + _contractAddress, + tokenId, + msg.sender, + _currencyAddress, + _requests[i].price, + _requests[i].startTime, + _requests[i].maxMints, + _splitRecipients, + _splitRatios + ); + } + } + + function setTokenAllowListConfigs(address _contractAddress, AllowListConfigRequest[] calldata _requests) + external + nonReentrant + { + if (!_isContractOwner(_contractAddress, msg.sender)) { + revert NotContractOwner(_contractAddress, msg.sender); + } + _validateAllowListConfigRequests(_requests); + + for (uint256 i = 0; i < _requests.length; i++) { + uint256 tokenId = _requests[i].tokenId; + _revertIfTokenNotFound(_contractAddress, tokenId); + _marketplaceStorage().tokenAllowlistRoots[_contractAddress][tokenId] = + AllowListConfig({root: _requests[i].root, endTimestamp: _requests[i].endTimestamp}); + emit SetTokenAllowListConfig(_contractAddress, tokenId, _requests[i].root, _requests[i].endTimestamp); + } + } + + function setTokenMintLimits(address _contractAddress, TokenLimitRequest[] calldata _requests) + external + nonReentrant + { + if (!_isContractOwner(_contractAddress, msg.sender)) { + revert NotContractOwner(_contractAddress, msg.sender); + } + _validateTokenLimitRequests(_requests); + + for (uint256 i = 0; i < _requests.length; i++) { + uint256 tokenId = _requests[i].tokenId; + _revertIfTokenNotFound(_contractAddress, tokenId); + _marketplaceStorage().tokenMintLimit[_contractAddress][tokenId] = _requests[i].limit; + emit TokenMintLimitSet(_contractAddress, tokenId, _requests[i].limit); + } + } + + function setTokenTxLimits(address _contractAddress, TokenLimitRequest[] calldata _requests) external nonReentrant { + if (!_isContractOwner(_contractAddress, msg.sender)) revert NotContractOwner(_contractAddress, msg.sender); + _validateTokenLimitRequests(_requests); + + for (uint256 i = 0; i < _requests.length; i++) { + uint256 tokenId = _requests[i].tokenId; + _revertIfTokenNotFound(_contractAddress, tokenId); + _marketplaceStorage().tokenTxLimit[_contractAddress][tokenId] = _requests[i].limit; + emit TokenTxLimitSet(_contractAddress, tokenId, _requests[i].limit); + } + } + + function setSalePrices( + address _contractAddress, + address _currencyAddress, + SalePriceRequest[] calldata _requests, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external nonReentrant notPaused { + _validateSalePriceRequests(_requests); + _marketplaceStorage().marketConfig.checkIfCurrencyIsApproved(_currencyAddress); + RareERC1155MarketplacePayments.checkSplits(_splitRecipients, _splitRatios); + _validateERC1155Contract(_contractAddress); + + IERC1155 erc1155 = IERC1155(_contractAddress); + if (!erc1155.isApprovedForAll(msg.sender, address(_marketplaceStorage().erc1155ApprovalManager))) { + revert MarketplaceNotApproved(msg.sender, _contractAddress); + } + + for (uint256 i = 0; i < _requests.length; i++) { + uint256 tokenId = _requests[i].tokenId; + uint256 price = _requests[i].price; + uint256 quantity = _requests[i].quantity; + uint256 expirationTime = _requests[i].expirationTime; + + if (price == 0) revert SalePriceCannotBeZero(); + if (quantity == 0) revert QuantityCannotBeZero(); + if (expirationTime != 0 && expirationTime <= block.timestamp) { + revert SalePriceExpirationInvalid(expirationTime, block.timestamp); + } + + uint256 sellerBalance = erc1155.balanceOf(msg.sender, tokenId); + if (sellerBalance < quantity) { + revert InsufficientTokenBalance(msg.sender, _contractAddress, tokenId, quantity, sellerBalance); + } + + _marketplaceStorage().salePrices[_contractAddress][tokenId][msg.sender] = SalePrice({ + currencyAddress: _currencyAddress, + price: price, + quantity: quantity, + expirationTime: expirationTime, + splitRecipients: _splitRecipients, + splitRatios: _splitRatios + }); + + emit SalePriceSet( + msg.sender, + _contractAddress, + tokenId, + _currencyAddress, + price, + quantity, + expirationTime, + _splitRecipients, + _splitRatios + ); + } + } + + function cancelSalePrices(address _contractAddress, uint256[] calldata _tokenIds) external nonReentrant { + _validateTokenIds(_tokenIds); + + for (uint256 i = 0; i < _tokenIds.length; i++) { + uint256 tokenId = _tokenIds[i]; + if (_marketplaceStorage().salePrices[_contractAddress][tokenId][msg.sender].quantity == 0) { + continue; + } + + delete _marketplaceStorage().salePrices[_contractAddress][tokenId][msg.sender]; + emit SalePriceCancelled(msg.sender, _contractAddress, tokenId); + } + } + + function makeOffer( + address _contractAddress, + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + uint256 _expirationTime + ) external payable nonReentrant notPaused { + _validateERC1155Contract(_contractAddress); + MarketplaceStorage storage $ = _marketplaceStorage(); + $.marketConfig.checkIfCurrencyIsApproved(_currencyAddress); + if (_price == 0) revert OfferPriceCannotBeZero(); + if (_quantity == 0) revert QuantityCannotBeZero(); + if (_expirationTime != 0 && _expirationTime <= block.timestamp) { + revert OfferExpirationInvalid(_expirationTime, block.timestamp); + } + + uint256 grossAmount = _price * _quantity; + uint256 marketplaceFee = $.marketConfig.marketplaceSettings.calculateMarketplaceFee(grossAmount); + $.marketConfig.checkAmountAndTransfer(_currencyAddress, grossAmount + marketplaceFee); + + Offer memory previousOffer = $.offers[_contractAddress][_tokenId][msg.sender][_currencyAddress]; + $.offers[_contractAddress][_tokenId][msg.sender][_currencyAddress] = Offer({ + currencyAddress: _currencyAddress, + price: _price, + quantity: _quantity, + marketplaceFeeRemaining: marketplaceFee, + expirationTime: _expirationTime + }); + + emit OfferMade( + msg.sender, _contractAddress, _tokenId, _currencyAddress, _price, _quantity, marketplaceFee, _expirationTime + ); + + $.marketConfig + .refundRemainingOffer( + _currencyAddress, + msg.sender, + previousOffer.price, + previousOffer.quantity, + previousOffer.marketplaceFeeRemaining + ); + } + + function cancelOffer(address _contractAddress, uint256 _tokenId, address _currencyAddress) external nonReentrant { + MarketplaceStorage storage $ = _marketplaceStorage(); + Offer memory offer = $.offers[_contractAddress][_tokenId][msg.sender][_currencyAddress]; + if (offer.quantity == 0) return; + + delete $.offers[_contractAddress][_tokenId][msg.sender][_currencyAddress]; + + emit OfferCancelled( + msg.sender, + _contractAddress, + _tokenId, + _currencyAddress, + offer.price, + offer.quantity, + offer.marketplaceFeeRemaining + ); + + $.marketConfig + .refundRemainingOffer( + _currencyAddress, msg.sender, offer.price, offer.quantity, offer.marketplaceFeeRemaining + ); + } + + function mintDirectSaleBatch(address _contractAddress, address _currencyAddress, MintRequest[] calldata _requests) + external + payable + nonReentrant + notPaused + { + _delegateToSettlement( + abi.encodeWithSelector( + IRareERC1155Settlement.mintDirectSaleBatch.selector, _contractAddress, _currencyAddress, _requests + ) + ); + } + + function buyBatch( + address _contractAddress, + address _seller, + address _currencyAddress, + BuyRequest[] calldata _requests + ) external payable nonReentrant notPaused { + _delegateToSettlement( + abi.encodeWithSelector( + IRareERC1155Settlement.buyBatch.selector, _contractAddress, _seller, _currencyAddress, _requests + ) + ); + } + + function acceptOffer( + address _contractAddress, + uint256 _tokenId, + address _buyer, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external nonReentrant notPaused { + _delegateToSettlement( + abi.encodeWithSelector( + IRareERC1155Settlement.acceptOffer.selector, + _contractAddress, + _tokenId, + _buyer, + _currencyAddress, + _price, + _quantity, + _splitRecipients, + _splitRatios + ) + ); + } + + function checkout(CheckoutItem[] calldata _items) + external + payable + nonReentrant + notPaused + returns (CheckoutSummary memory) + { + return abi.decode( + _delegateToSettlement(abi.encodeWithSelector(IRareERC1155Settlement.checkout.selector, _items)), + (CheckoutSummary) + ); + } + + function getDirectSaleConfig(address _contractAddress, uint256 _tokenId) + external + view + returns (DirectSaleConfig memory) + { + return _marketplaceStorage().directSaleConfigs[_contractAddress][_tokenId]; + } + + function getTokenAllowListConfig(address _contractAddress, uint256 _tokenId) + external + view + returns (AllowListConfig memory) + { + return _marketplaceStorage().tokenAllowlistRoots[_contractAddress][_tokenId]; + } + + function getTokenMintLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256) { + return _marketplaceStorage().tokenMintLimit[_contractAddress][_tokenId]; + } + + function getTokenMintsPerAddress(address _contractAddress, uint256 _tokenId, address _account) + external + view + returns (uint256) + { + return _marketplaceStorage().tokenMintsPerAddress[_contractAddress][_tokenId][_account]; + } + + function getTokenTxLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256) { + return _marketplaceStorage().tokenTxLimit[_contractAddress][_tokenId]; + } + + function getTokenTxsPerAddress(address _contractAddress, uint256 _tokenId, address _account) + external + view + returns (uint256) + { + return _marketplaceStorage().tokenTxsPerAddress[_contractAddress][_tokenId][_account]; + } + + function getSalePrice(address _contractAddress, uint256 _tokenId, address _seller) + external + view + returns (SalePrice memory) + { + return _marketplaceStorage().salePrices[_contractAddress][_tokenId][_seller]; + } + + function getOffer(address _contractAddress, uint256 _tokenId, address _buyer, address _currencyAddress) + external + view + returns (Offer memory) + { + return _marketplaceStorage().offers[_contractAddress][_tokenId][_buyer][_currencyAddress]; + } + + function getMarketConfig() external view returns (MarketConfigV2.Config memory) { + return _marketplaceStorage().marketConfig; + } + + function getERC1155ApprovalManager() external view returns (address) { + return address(_marketplaceStorage().erc1155ApprovalManager); + } + + function getSettlement() external view returns (address) { + return _marketplaceStorage().settlement; + } + + function isPaused() external view returns (bool) { + return _marketplaceStorage().paused; + } + + function setNetworkBeneficiary(address _networkBeneficiary) external onlyOwner { + _validateMarketConfigAddress(_networkBeneficiary, NETWORK_BENEFICIARY_FIELD); + _marketplaceStorage().marketConfig.updateNetworkBeneficiary(_networkBeneficiary); + emit MarketplaceDependencyUpdated(NETWORK_BENEFICIARY_FIELD, _networkBeneficiary); + } + + function setMarketplaceSettings(address _marketplaceSettings) external onlyOwner { + _validateMarketConfigAddress(_marketplaceSettings, MARKETPLACE_SETTINGS_FIELD); + _marketplaceStorage().marketConfig.updateMarketplaceSettings(_marketplaceSettings); + emit MarketplaceDependencyUpdated(MARKETPLACE_SETTINGS_FIELD, _marketplaceSettings); + } + + function setSpaceOperatorRegistry(address _spaceOperatorRegistry) external onlyOwner { + _validateMarketConfigAddress(_spaceOperatorRegistry, SPACE_OPERATOR_REGISTRY_FIELD); + _marketplaceStorage().marketConfig.updateSpaceOperatorRegistry(_spaceOperatorRegistry); + emit MarketplaceDependencyUpdated(SPACE_OPERATOR_REGISTRY_FIELD, _spaceOperatorRegistry); + } + + function setRoyaltyEngine(address _royaltyEngine) external onlyOwner { + _validateMarketConfigAddress(_royaltyEngine, ROYALTY_ENGINE_FIELD); + _marketplaceStorage().marketConfig.updateRoyaltyEngine(_royaltyEngine); + emit MarketplaceDependencyUpdated(ROYALTY_ENGINE_FIELD, _royaltyEngine); + } + + function setPayments(address _payments) external onlyOwner { + _validateMarketConfigAddress(_payments, PAYMENTS_FIELD); + _marketplaceStorage().marketConfig.updatePayments(_payments); + emit MarketplaceDependencyUpdated(PAYMENTS_FIELD, _payments); + } + + function setApprovedTokenRegistry(address _approvedTokenRegistry) external onlyOwner { + _validateMarketConfigAddress(_approvedTokenRegistry, APPROVED_TOKEN_REGISTRY_FIELD); + _marketplaceStorage().marketConfig.updateApprovedTokenRegistry(_approvedTokenRegistry); + emit MarketplaceDependencyUpdated(APPROVED_TOKEN_REGISTRY_FIELD, _approvedTokenRegistry); + } + + function setStakingSettings(address _stakingSettings) external onlyOwner { + _validateMarketConfigAddress(_stakingSettings, STAKING_SETTINGS_FIELD); + _marketplaceStorage().marketConfig.updateStakingSettings(_stakingSettings); + emit MarketplaceDependencyUpdated(STAKING_SETTINGS_FIELD, _stakingSettings); + } + + function setStakingRegistry(address _stakingRegistry) external onlyOwner { + _validateMarketConfigAddress(_stakingRegistry, STAKING_REGISTRY_FIELD); + _marketplaceStorage().marketConfig.updateStakingRegistry(_stakingRegistry); + emit MarketplaceDependencyUpdated(STAKING_REGISTRY_FIELD, _stakingRegistry); + } + + function setERC20ApprovalManager(address _erc20ApprovalManager) external onlyOwner { + _validateApprovalManager(_erc20ApprovalManager); + _marketplaceStorage().marketConfig.updateERC20ApprovalManager(_erc20ApprovalManager); + emit MarketplaceDependencyUpdated(ERC20_APPROVAL_MANAGER_FIELD, _erc20ApprovalManager); + } + + function setERC721ApprovalManager(address _erc721ApprovalManager) external onlyOwner { + _validateApprovalManager(_erc721ApprovalManager); + _marketplaceStorage().marketConfig.updateERC721ApprovalManager(_erc721ApprovalManager); + emit MarketplaceDependencyUpdated(ERC721_APPROVAL_MANAGER_FIELD, _erc721ApprovalManager); + } + + function setERC1155ApprovalManager(address _erc1155ApprovalManager) external onlyOwner { + _validateApprovalManager(_erc1155ApprovalManager); + _marketplaceStorage().erc1155ApprovalManager = IERC1155ApprovalManager(_erc1155ApprovalManager); + emit MarketplaceDependencyUpdated(ERC1155_APPROVAL_MANAGER_FIELD, _erc1155ApprovalManager); + } + + function setSettlement(address _settlement) external onlyOwner { + _validateSettlement(_settlement); + _marketplaceStorage().settlement = _settlement; + emit MarketplaceDependencyUpdated(SETTLEMENT_FIELD, _settlement); + } + + function setContractPaused(bool _isPaused) external onlyOwner { + _marketplaceStorage().paused = _isPaused; + emit ContractPausedUpdated(_isPaused); + } + + function _delegateToSettlement(bytes memory _callData) private returns (bytes memory) { + (bool success, bytes memory data) = _marketplaceStorage().settlement.delegatecall(_callData); + if (!success) { + if (data.length == 0) revert SettlementDelegateCallFailed(data); + assembly { + revert(add(data, 32), mload(data)) + } + } + return data; + } + + function _notPaused() internal view { + if (_marketplaceStorage().paused) revert ContractPaused(); + } + + function _validateDirectSaleRequests(DirectSaleRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + _validateStrictAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } + + function _validateAllowListConfigRequests(AllowListConfigRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + _validateStrictAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } + + function _validateTokenLimitRequests(TokenLimitRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + _validateStrictAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } + + function _validateSalePriceRequests(SalePriceRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + _validateStrictAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } +} diff --git a/src/marketplace/RareERC1155MarketplacePayments.sol b/src/marketplace/RareERC1155MarketplacePayments.sol new file mode 100644 index 0000000..495ea63 --- /dev/null +++ b/src/marketplace/RareERC1155MarketplacePayments.sol @@ -0,0 +1,266 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IERC20} from "openzeppelin-contracts/token/ERC20/IERC20.sol"; +import {SafeERC20} from "openzeppelin-contracts/token/ERC20/utils/SafeERC20.sol"; + +import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; +import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155MarketplacePayments +/// @notice Shared payment, refund, royalty, staking fee, and split payout helpers for ERC1155 marketplaces. +library RareERC1155MarketplacePayments { + using SafeERC20 for IERC20; + + function checkIfCurrencyIsApproved(MarketConfigV2.Config storage _config, address _currencyAddress) public view { + if (_currencyAddress != address(0) && !_config.approvedTokenRegistry.isApprovedToken(_currencyAddress)) { + revert IRareERC1155MarketplaceTypes.CurrencyNotApproved(_currencyAddress); + } + } + + function checkBatchPayment(MarketConfigV2.Config storage _config, address _currencyAddress, uint256 _amount) + public + { + if (_amount == 0) { + if (msg.value != 0) revert IRareERC1155MarketplaceTypes.MsgValueMustBeZero(); + return; + } + + checkAmountAndTransfer(_config, _currencyAddress, _amount); + } + + function checkAmountAndTransfer(MarketConfigV2.Config storage _config, address _currencyAddress, uint256 _amount) + public + { + if (_currencyAddress == address(0)) { + if (msg.value != _amount) revert IRareERC1155MarketplaceTypes.IncorrectETHAmount(_amount, msg.value); + return; + } + + if (msg.value != 0) revert IRareERC1155MarketplaceTypes.MsgValueUnsupportedForERC20(); + + IERC20 erc20 = IERC20(_currencyAddress); + uint256 balanceBefore = erc20.balanceOf(address(this)); + + _config.erc20ApprovalManager.transferFrom(_currencyAddress, msg.sender, address(this), _amount); + + uint256 receivedAmount = erc20.balanceOf(address(this)) - balanceBefore; + if (receivedAmount != _amount) { + revert IRareERC1155MarketplaceTypes.ERC20FeeOnTransferUnsupported(_currencyAddress, _amount, receivedAmount); + } + } + + function checkSplits(address payable[] calldata _splitRecipients, uint8[] calldata _splitRatios) public pure { + if (_splitRecipients.length == 0) revert IRareERC1155MarketplaceTypes.SplitRecipientsRequired(); + if (_splitRecipients.length > 5) { + revert IRareERC1155MarketplaceTypes.SplitRecipientsExceededMax(_splitRecipients.length, 5); + } + if (_splitRecipients.length != _splitRatios.length) { + revert IRareERC1155MarketplaceTypes.SplitLengthMismatch(_splitRecipients.length, _splitRatios.length); + } + + uint256 totalRatio = 0; + for (uint256 i = 0; i < _splitRatios.length; i++) { + if (_splitRecipients[i] == address(0)) { + revert IRareERC1155MarketplaceTypes.SplitRecipientCannotBeZero(i); + } + if (_splitRatios[i] == 0) revert IRareERC1155MarketplaceTypes.SplitRatioCannotBeZero(i); + totalRatio += _splitRatios[i]; + } + + if (totalRatio != 100) revert IRareERC1155MarketplaceTypes.SplitTotalInvalid(totalRatio, 100); + } + + function payoutPrimary( + MarketConfigV2.Config storage _config, + address _contractAddress, + address _currencyAddress, + uint256 _amount, + uint256 _marketplaceFee, + address _seller, + address payable[] memory _splitRecipients, + uint8[] memory _splitRatios + ) public { + uint256 remainingAmount = _amount; + + payoutMarketplaceFee(_config, _currencyAddress, _amount, _marketplaceFee, _seller); + + uint256 platformCommission = _config.spaceOperatorRegistry.isApprovedSpaceOperator(_seller) + ? _config.spaceOperatorRegistry.getPlatformCommission(_seller) + : _config.marketplaceSettings.getERC721ContractPrimarySaleFeePercentage(_contractAddress); + if (platformCommission > 100) { + revert IRareERC1155MarketplaceTypes.PlatformCommissionExceeded(platformCommission, 100); + } + + uint256 platformFee = (_amount * platformCommission) / 100; + if (platformFee > 0) { + remainingAmount -= platformFee; + + address payable[] memory platformRecipients = new address payable[](1); + platformRecipients[0] = payable(_config.networkBeneficiary); + uint256[] memory platformAmounts = new uint256[](1); + platformAmounts[0] = platformFee; + + performPayouts(_config, _currencyAddress, platformFee, platformRecipients, platformAmounts); + } + + payoutSplits(_config, _currencyAddress, remainingAmount, _splitRecipients, _splitRatios); + } + + function payoutSecondary( + MarketConfigV2.Config storage _config, + address _contractAddress, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + uint256 _marketplaceFee, + address _seller, + address payable[] memory _splitRecipients, + uint8[] memory _splitRatios + ) public { + uint256 remainingAmount = _amount; + + payoutMarketplaceFee(_config, _currencyAddress, _amount, _marketplaceFee, _seller); + + (address payable[] memory receivers, uint256[] memory royalties) = + _config.royaltyEngine.getRoyalty(_contractAddress, _tokenId, _amount); + + uint256 totalRoyalties = 0; + for (uint256 i = 0; i < royalties.length; i++) { + totalRoyalties += royalties[i]; + } + + if (totalRoyalties > remainingAmount) { + revert IRareERC1155MarketplaceTypes.RoyaltiesExceedSaleAmount(totalRoyalties, remainingAmount); + } + + if (totalRoyalties > 0) { + remainingAmount -= totalRoyalties; + performPayouts(_config, _currencyAddress, totalRoyalties, receivers, royalties); + } + + payoutSplits(_config, _currencyAddress, remainingAmount, _splitRecipients, _splitRatios); + } + + function payoutMarketplaceFee( + MarketConfigV2.Config storage _config, + address _currencyAddress, + uint256 _amount, + uint256 _marketplaceFee, + address _seller + ) public { + if (_marketplaceFee == 0) { + return; + } + + uint256 stakingFee = _config.stakingSettings.calculateStakingFee(_amount); + if (stakingFee > _marketplaceFee) { + revert IRareERC1155MarketplaceTypes.StakingFeeExceedsMarketplaceFee(_marketplaceFee, stakingFee); + } + + address payable[] memory recipients = new address payable[](2); + recipients[0] = payable(_config.networkBeneficiary); + recipients[1] = payable(_config.stakingRegistry.getRewardAccumulatorAddressForUser(_seller)); + recipients[1] = recipients[1] == address(0) ? payable(_config.networkBeneficiary) : recipients[1]; + + uint256[] memory amounts = new uint256[](2); + amounts[0] = _marketplaceFee - stakingFee; + amounts[1] = stakingFee; + + performPayouts(_config, _currencyAddress, _marketplaceFee, recipients, amounts); + } + + function refundRemainingOffer( + MarketConfigV2.Config storage _config, + address _currencyAddress, + address _buyer, + uint256 _price, + uint256 _quantity, + uint256 _marketplaceFeeRemaining + ) public { + if (_quantity == 0) { + return; + } + + refund(_config, _currencyAddress, payable(_buyer), (_price * _quantity) + _marketplaceFeeRemaining); + } + + function refund( + MarketConfigV2.Config storage _config, + address _currencyAddress, + address payable _recipient, + uint256 _amount + ) public { + if (_amount == 0) { + return; + } + + if (_currencyAddress == address(0)) { + (bool success, bytes memory data) = address(_config.payments).call{value: _amount}( + abi.encodeWithSelector(_config.payments.refund.selector, _recipient, _amount) + ); + if (!success) revert IRareERC1155MarketplaceTypes.RefundFailed(data); + return; + } + + IERC20(_currencyAddress).safeTransfer(_recipient, _amount); + } + + function payoutSplits( + MarketConfigV2.Config storage _config, + address _currencyAddress, + uint256 _amount, + address payable[] memory _splitRecipients, + uint8[] memory _splitRatios + ) public { + if (_splitRecipients.length != _splitRatios.length) { + revert IRareERC1155MarketplaceTypes.SplitLengthMismatch(_splitRecipients.length, _splitRatios.length); + } + + uint256[] memory amounts = new uint256[](_splitRecipients.length); + uint256 remainingPayout = _amount; + + for (uint256 i = 0; i < _splitRecipients.length; i++) { + if (i == _splitRecipients.length - 1) { + amounts[i] = remainingPayout; + } else { + amounts[i] = (_amount * _splitRatios[i]) / 100; + remainingPayout -= amounts[i]; + } + } + + performPayouts(_config, _currencyAddress, _amount, _splitRecipients, amounts); + } + + function performPayouts( + MarketConfigV2.Config storage _config, + address _currencyAddress, + uint256 _amount, + address payable[] memory _recipients, + uint256[] memory _amounts + ) public { + if (_recipients.length != _amounts.length) { + revert IRareERC1155MarketplaceTypes.PayoutLengthMismatch(_recipients.length, _amounts.length); + } + + uint256 totalAmount = 0; + for (uint256 i = 0; i < _amounts.length; i++) { + totalAmount += _amounts[i]; + } + if (totalAmount != _amount) revert IRareERC1155MarketplaceTypes.PayoutTotalMismatch(_amount, totalAmount); + + if (_currencyAddress == address(0)) { + (bool success, bytes memory data) = address(_config.payments).call{value: _amount}( + abi.encodeWithSelector(_config.payments.payout.selector, _recipients, _amounts) + ); + if (!success) revert IRareERC1155MarketplaceTypes.PayoutFailed(data); + return; + } + + IERC20 erc20 = IERC20(_currencyAddress); + for (uint256 i = 0; i < _recipients.length; i++) { + erc20.safeTransfer(_recipients[i], _amounts[i]); + } + } +} diff --git a/src/marketplace/RareERC1155MarketplaceStorage.sol b/src/marketplace/RareERC1155MarketplaceStorage.sol new file mode 100644 index 0000000..87447af --- /dev/null +++ b/src/marketplace/RareERC1155MarketplaceStorage.sol @@ -0,0 +1,139 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; +import {ERC165Checker} from "openzeppelin-contracts/utils/introspection/ERC165Checker.sol"; + +import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; +import {IRareERC1155} from "../token/ERC1155/IRareERC1155.sol"; +import {IERC1155ApprovalManager} from "../v2/approver/ERC1155/IERC1155ApprovalManager.sol"; +import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155MarketplaceStorage +/// @notice ERC-7201 storage namespace and validation helpers for the ERC1155 marketplace. +/// @dev This is not a deployable marketplace. `RareERC1155Marketplace` owns this storage behind the proxy, and +/// `RareERC1155Settlement` uses the same namespace when executed through delegatecall from the marketplace. +abstract contract RareERC1155MarketplaceStorage is IRareERC1155MarketplaceTypes { + uint256 public constant MAX_BATCH_SIZE = 100; + + bytes32 internal constant NETWORK_BENEFICIARY_FIELD = "NETWORK_BENEFICIARY"; + bytes32 internal constant MARKETPLACE_SETTINGS_FIELD = "MARKETPLACE_SETTINGS"; + bytes32 internal constant SPACE_OPERATOR_REGISTRY_FIELD = "SPACE_OPERATOR_REGISTRY"; + bytes32 internal constant ROYALTY_ENGINE_FIELD = "ROYALTY_ENGINE"; + bytes32 internal constant PAYMENTS_FIELD = "PAYMENTS"; + bytes32 internal constant APPROVED_TOKEN_REGISTRY_FIELD = "APPROVED_TOKEN_REGISTRY"; + bytes32 internal constant STAKING_SETTINGS_FIELD = "STAKING_SETTINGS"; + bytes32 internal constant STAKING_REGISTRY_FIELD = "STAKING_REGISTRY"; + bytes32 internal constant ERC20_APPROVAL_MANAGER_FIELD = "ERC20_APPROVAL_MANAGER"; + bytes32 internal constant ERC721_APPROVAL_MANAGER_FIELD = "ERC721_APPROVAL_MANAGER"; + bytes32 internal constant ERC1155_APPROVAL_MANAGER_FIELD = "ERC1155_APPROVAL_MANAGER"; + bytes32 internal constant SETTLEMENT_FIELD = "SETTLEMENT"; + + /// @custom:storage-location erc7201:superrare.storage.RareERC1155Marketplace + /// @dev Append new fields to the end. Marketplace and settlement implementations must share this exact layout because + /// settlement runs against marketplace proxy storage through delegatecall. + struct MarketplaceStorage { + /// @notice Shared V2 marketplace dependency bundle. + MarketConfigV2.Config marketConfig; + /// @notice ERC1155 approval manager used for seller token transfers. + IERC1155ApprovalManager erc1155ApprovalManager; + /// @notice Delegatecall target used for settlement entrypoints. + address settlement; + /// @notice Primary mint sale configs keyed by collection and token id. + mapping(address => mapping(uint256 => DirectSaleConfig)) directSaleConfigs; + /// @notice Active mint allowlist configs keyed by collection and token id. + mapping(address => mapping(uint256 => AllowListConfig)) tokenAllowlistRoots; + /// @notice Per-address mint quantity limits keyed by collection and token id. + mapping(address => mapping(uint256 => uint256)) tokenMintLimit; + /// @notice Mint quantity consumed by account while a token's mint limit is enabled. + mapping(address => mapping(uint256 => mapping(address => uint256))) tokenMintsPerAddress; + /// @notice Per-address mint transaction limits keyed by collection and token id. + mapping(address => mapping(uint256 => uint256)) tokenTxLimit; + /// @notice Mint transactions consumed by account while a token's tx limit is enabled. + mapping(address => mapping(uint256 => mapping(address => uint256))) tokenTxsPerAddress; + /// @notice Secondary fixed-price listings keyed by collection, token id, and seller. + mapping(address => mapping(uint256 => mapping(address => SalePrice))) salePrices; + /// @notice Escrowed offers keyed by collection, token id, buyer, and currency. + mapping(address => mapping(uint256 => mapping(address => mapping(address => Offer)))) offers; + /// @notice Pauses marketplace writes and settlement entrypoints. + bool paused; + } + + /// @dev cast index-erc7201 superrare.storage.RareERC1155Marketplace + bytes32 internal constant MARKETPLACE_STORAGE_LOCATION = + 0x5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d500; + + function _marketplaceStorage() internal pure returns (MarketplaceStorage storage $) { + assembly { + $.slot := MARKETPLACE_STORAGE_LOCATION + } + } + + function _validateMarketConfigAddress(address _address, bytes32 _field) internal pure { + if (_address == address(0)) revert MarketConfigAddressCannotBeZero(_field); + } + + function _validateApprovalManager(address _approvalManager) internal pure { + if (_approvalManager == address(0)) revert ApprovalManagerCannotBeZero(); + } + + function _validateSettlement(address _settlement) internal pure { + if (_settlement == address(0)) revert SettlementCannotBeZero(); + } + + function _validateERC1155Contract(address _contractAddress) internal view { + if ( + _contractAddress.code.length == 0 + || !ERC165Checker.supportsInterface(_contractAddress, type(IERC1155).interfaceId) + ) { + revert InvalidERC1155Contract(_contractAddress); + } + } + + function _revertIfTokenNotFound(address _contractAddress, uint256 _tokenId) internal view { + if (IRareERC1155(_contractAddress).maxSupplyForToken(_tokenId) == 0) { + revert TokenNotFound(_contractAddress, _tokenId); + } + } + + function _isContractOwner(address _contractAddress, address _account) internal view returns (bool) { + (bool success, bytes memory data) = _contractAddress.staticcall(abi.encodeWithSignature("owner()")); + if (!success || data.length < 32) revert ContractHasNoOwner(_contractAddress); + return abi.decode(data, (address)) == _account; + } + + function _validateTokenIds(uint256[] calldata _tokenIds) internal pure { + _validateBatchSize(_tokenIds.length); + for (uint256 i = 1; i < _tokenIds.length; i++) { + if (_tokenIds[i] <= _tokenIds[i - 1]) { + revert TokenIdsNotStrictlyAscending(i, _tokenIds[i - 1], _tokenIds[i]); + } + } + } + + function _validateBatchSize(uint256 _length) internal pure { + if (_length == 0) revert EmptyBatch(); + if (_length > MAX_BATCH_SIZE) revert BatchSizeExceeded(_length, MAX_BATCH_SIZE); + } + + function _validateStrictAscending(uint256 _index, uint256 _previousTokenId, uint256 _tokenId) internal pure { + if (_tokenId <= _previousTokenId) { + revert TokenIdsNotStrictlyAscending(_index, _previousTokenId, _tokenId); + } + } + + function _verifyProof(bytes32 _leaf, bytes32 _root, bytes32[] calldata _proof) internal pure returns (bool) { + bytes32 currentHash = _leaf; + + for (uint256 i = 0; i < _proof.length; i++) { + currentHash = _parentHash(currentHash, _proof[i]); + } + + return currentHash == _root; + } + + function _parentHash(bytes32 a, bytes32 b) internal pure returns (bytes32) { + return a <= b ? keccak256(abi.encodePacked(a, b)) : keccak256(abi.encodePacked(b, a)); + } +} diff --git a/src/marketplace/RareERC1155Settlement.sol b/src/marketplace/RareERC1155Settlement.sol new file mode 100644 index 0000000..49840f2 --- /dev/null +++ b/src/marketplace/RareERC1155Settlement.sol @@ -0,0 +1,917 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; +import {IERC20} from "openzeppelin-contracts/token/ERC20/IERC20.sol"; +import {ERC165Checker} from "openzeppelin-contracts/utils/introspection/ERC165Checker.sol"; + +import {IRareERC1155} from "../token/ERC1155/IRareERC1155.sol"; +import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; +import {IRareERC1155Settlement} from "./IRareERC1155Settlement.sol"; +import {RareERC1155MarketplacePayments} from "./RareERC1155MarketplacePayments.sol"; +import {RareERC1155MarketplaceStorage} from "./RareERC1155MarketplaceStorage.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155Settlement +/// @notice Delegatecall-only settlement module for the ERC1155 marketplace. +/// @dev Direct calls revert because this contract has no standalone marketplace state or escrow. It must run through +/// `RareERC1155Marketplace` so `address(this)`, `msg.sender`, `msg.value`, and storage all resolve to the marketplace proxy. +contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155MarketplaceStorage { + using RareERC1155MarketplacePayments for MarketConfigV2.Config; + + address private immutable SELF = address(this); + + struct PrimaryPayoutContext { + uint256 tokenId; + uint256 grossAmount; + uint256 marketplaceFee; + address seller; + address payable[] splitRecipients; + uint8[] splitRatios; + } + + struct SecondaryPayoutContext { + uint256 tokenId; + uint256 grossAmount; + uint256 marketplaceFee; + address payable[] splitRecipients; + uint8[] splitRatios; + } + + struct AcceptOfferInput { + address contractAddress; + uint256 tokenId; + address buyer; + address currencyAddress; + uint256 price; + uint256 quantity; + } + + struct CheckoutFillContext { + address seller; + uint256 grossAmount; + uint256 marketplaceFee; + address payable[] splitRecipients; + uint8[] splitRatios; + } + + modifier onlyDelegateCall() { + _onlyDelegateCall(); + _; + } + + function _onlyDelegateCall() internal view { + if (address(this) == SELF) revert DirectSettlementCallUnsupported(); + } + + function mintDirectSaleBatch(address _contractAddress, address _currencyAddress, MintRequest[] calldata _requests) + external + payable + onlyDelegateCall + { + _validateMintRequests(_requests); + MarketplaceStorage storage $ = _marketplaceStorage(); + $.marketConfig.checkIfCurrencyIsApproved(_currencyAddress); + + uint256 requestCount = _requests.length; + uint256[] memory tokenIds = new uint256[](requestCount); + uint256[] memory amounts = new uint256[](requestCount); + PrimaryPayoutContext[] memory payoutContexts = new PrimaryPayoutContext[](requestCount); + uint256 buyerTotal = 0; + + for (uint256 i = 0; i < requestCount;) { + payoutContexts[i] = + _validateMintDirectSaleRequest(_contractAddress, _currencyAddress, msg.sender, _requests[i]); + if (payoutContexts[i].grossAmount != 0) { + payoutContexts[i].marketplaceFee = + $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContexts[i].grossAmount); + buyerTotal += payoutContexts[i].grossAmount + payoutContexts[i].marketplaceFee; + } + + tokenIds[i] = payoutContexts[i].tokenId; + amounts[i] = _requests[i].quantity; + + unchecked { + ++i; + } + } + + $.marketConfig.checkBatchPayment(_currencyAddress, buyerTotal); + + for (uint256 i = 0; i < requestCount;) { + uint256 tokenId = _requests[i].tokenId; + + if ($.tokenMintLimit[_contractAddress][tokenId] > 0) { + $.tokenMintsPerAddress[_contractAddress][tokenId][msg.sender] += _requests[i].quantity; + } + + if ($.tokenTxLimit[_contractAddress][tokenId] > 0) { + $.tokenTxsPerAddress[_contractAddress][tokenId][msg.sender] += 1; + } + + unchecked { + ++i; + } + } + + IRareERC1155(_contractAddress).mintBatchTo(msg.sender, tokenIds, amounts); + + for (uint256 i = 0; i < requestCount;) { + if (payoutContexts[i].grossAmount != 0) { + $.marketConfig + .payoutPrimary( + _contractAddress, + _currencyAddress, + payoutContexts[i].grossAmount, + payoutContexts[i].marketplaceFee, + payoutContexts[i].seller, + payoutContexts[i].splitRecipients, + payoutContexts[i].splitRatios + ); + } + + emit MintDirectSale( + _contractAddress, + payoutContexts[i].tokenId, + msg.sender, + payoutContexts[i].seller, + _requests[i].quantity, + _currencyAddress, + _requests[i].price + ); + + unchecked { + ++i; + } + } + } + + function buyBatch( + address _contractAddress, + address _seller, + address _currencyAddress, + BuyRequest[] calldata _requests + ) external payable onlyDelegateCall { + _validateBuyRequests(_requests); + if (msg.sender == _seller) revert SelfPurchaseUnsupported(_seller); + + MarketplaceStorage storage $ = _marketplaceStorage(); + $.marketConfig.checkIfCurrencyIsApproved(_currencyAddress); + _validateERC1155Contract(_contractAddress); + + IERC1155 erc1155 = IERC1155(_contractAddress); + if (!erc1155.isApprovedForAll(_seller, address($.erc1155ApprovalManager))) { + revert MarketplaceNotApproved(_seller, _contractAddress); + } + + uint256 requestCount = _requests.length; + uint256[] memory tokenIds = new uint256[](requestCount); + uint256[] memory amounts = new uint256[](requestCount); + SecondaryPayoutContext[] memory payoutContexts = new SecondaryPayoutContext[](requestCount); + uint256 buyerTotal = 0; + + for (uint256 i = 0; i < requestCount;) { + payoutContexts[i] = _validateSecondaryBuyRequest(_contractAddress, _seller, _currencyAddress, _requests[i]); + + tokenIds[i] = _requests[i].tokenId; + amounts[i] = _requests[i].quantity; + + uint256 sellerBalance = erc1155.balanceOf(_seller, tokenIds[i]); + if (sellerBalance < amounts[i]) { + revert InsufficientTokenBalance(_seller, _contractAddress, tokenIds[i], amounts[i], sellerBalance); + } + + payoutContexts[i].marketplaceFee = + $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContexts[i].grossAmount); + buyerTotal += payoutContexts[i].grossAmount + payoutContexts[i].marketplaceFee; + + unchecked { + ++i; + } + } + + $.marketConfig.checkBatchPayment(_currencyAddress, buyerTotal); + + for (uint256 i = 0; i < requestCount;) { + SalePrice storage salePrice = $.salePrices[_contractAddress][_requests[i].tokenId][_seller]; + salePrice.quantity -= _requests[i].quantity; + if (salePrice.quantity == 0) { + delete $.salePrices[_contractAddress][_requests[i].tokenId][_seller]; + } + + unchecked { + ++i; + } + } + + _safeBatchTransferFrom(_contractAddress, _seller, msg.sender, tokenIds, amounts); + + for (uint256 i = 0; i < requestCount;) { + $.marketConfig + .payoutSecondary( + _contractAddress, + payoutContexts[i].tokenId, + _currencyAddress, + payoutContexts[i].grossAmount, + payoutContexts[i].marketplaceFee, + _seller, + payoutContexts[i].splitRecipients, + payoutContexts[i].splitRatios + ); + + emit Sold( + _seller, + msg.sender, + _contractAddress, + payoutContexts[i].tokenId, + _currencyAddress, + _requests[i].price, + _requests[i].quantity + ); + + unchecked { + ++i; + } + } + } + + function acceptOffer( + address _contractAddress, + uint256 _tokenId, + address _buyer, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external onlyDelegateCall { + AcceptOfferInput memory input = AcceptOfferInput({ + contractAddress: _contractAddress, + tokenId: _tokenId, + buyer: _buyer, + currencyAddress: _currencyAddress, + price: _price, + quantity: _quantity + }); + _acceptOffer(input, _splitRecipients, _splitRatios); + } + + function checkout(CheckoutItem[] calldata _items) + external + payable + onlyDelegateCall + returns (CheckoutSummary memory summary) + { + _validateBatchSize(_items.length); + + uint256 remainingEth = msg.value; + for (uint256 i = 0; i < _items.length;) { + (bool filled, bytes4 reason, uint256 totalPaid, uint256 newRemainingEth) = + _checkoutItem(i, _items[i], remainingEth); + + if (filled) { + remainingEth = newRemainingEth; + summary.filledCount += 1; + if (_items[i].currencyAddress == address(0)) { + summary.ethSpent += totalPaid; + } + } else { + summary.skippedCount += 1; + emit CheckoutItemSkipped(i, _items[i].itemKind, _items[i].contractAddress, _items[i].tokenId, reason); + } + + unchecked { + ++i; + } + } + + if (summary.filledCount == 0) revert CheckoutRequiresSuccessfulFill(); + + summary.ethRefunded = remainingEth; + if (remainingEth != 0) { + _marketplaceStorage().marketConfig.refund(address(0), payable(msg.sender), remainingEth); + } + + emit CheckoutCompleted( + msg.sender, summary.filledCount, summary.skippedCount, summary.ethSpent, summary.ethRefunded + ); + } + + function _acceptOffer( + AcceptOfferInput memory _input, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) internal { + if (msg.sender == _input.buyer) { + revert SelfOfferAcceptanceUnsupported(_input.buyer); + } + _validateERC1155Contract(_input.contractAddress); + _marketplaceStorage().marketConfig.checkIfCurrencyIsApproved(_input.currencyAddress); + RareERC1155MarketplacePayments.checkSplits(_splitRecipients, _splitRatios); + if (_input.quantity == 0) revert QuantityCannotBeZero(); + + (uint256 grossAmount, uint256 marketplaceFee) = _validateAndApplyOfferFill(_input); + + MarketplaceStorage storage $ = _marketplaceStorage(); + IERC1155 erc1155 = IERC1155(_input.contractAddress); + if (!erc1155.isApprovedForAll(msg.sender, address($.erc1155ApprovalManager))) { + revert MarketplaceNotApproved(msg.sender, _input.contractAddress); + } + + _safeTransferFrom(_input.contractAddress, msg.sender, _input.buyer, _input.tokenId, _input.quantity); + + $.marketConfig + .payoutSecondary( + _input.contractAddress, + _input.tokenId, + _input.currencyAddress, + grossAmount, + marketplaceFee, + msg.sender, + _splitRecipients, + _splitRatios + ); + + emit OfferAccepted( + msg.sender, + _input.buyer, + _input.contractAddress, + _input.tokenId, + _input.currencyAddress, + _input.price, + _input.quantity + ); + } + + function _checkoutItem(uint256 _itemIndex, CheckoutItem calldata _item, uint256 _remainingEth) + internal + returns (bool filled, bytes4 reason, uint256 totalPaid, uint256 newRemainingEth) + { + if (_item.itemKind == uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { + return _checkoutDirectSaleMint(_itemIndex, _item, _remainingEth); + } + if (_item.itemKind == uint8(CheckoutItemKind.LISTING_BUY)) { + return _checkoutListingBuy(_itemIndex, _item, _remainingEth); + } + + return (false, UnsupportedCheckoutItemKind.selector, 0, _remainingEth); + } + + function _checkoutDirectSaleMint(uint256 _itemIndex, CheckoutItem calldata _item, uint256 _remainingEth) + internal + returns (bool filled, bytes4 reason, uint256 totalPaid, uint256 newRemainingEth) + { + newRemainingEth = _remainingEth; + MarketplaceStorage storage $ = _marketplaceStorage(); + + if (!_checkoutCurrencyApproved($.marketConfig, _item.currencyAddress)) { + return (false, CurrencyNotApproved.selector, 0, _remainingEth); + } + + (bool valid, bytes4 skipReason, CheckoutFillContext memory context) = _validateCheckoutDirectSaleMint($, _item); + if (!valid) { + return (false, skipReason, 0, _remainingEth); + } + + totalPaid = context.grossAmount + context.marketplaceFee; + reason = _validateCheckoutPayment($.marketConfig, _item.currencyAddress, totalPaid, _remainingEth); + if (reason != bytes4(0)) { + return (false, reason, 0, _remainingEth); + } + + if (_item.currencyAddress == address(0)) { + newRemainingEth = _remainingEth - totalPaid; + } else { + _collectCheckoutErc20($.marketConfig, _item.currencyAddress, totalPaid); + } + + if ($.tokenMintLimit[_item.contractAddress][_item.tokenId] > 0) { + $.tokenMintsPerAddress[_item.contractAddress][_item.tokenId][msg.sender] += _item.quantity; + } + if ($.tokenTxLimit[_item.contractAddress][_item.tokenId] > 0) { + $.tokenTxsPerAddress[_item.contractAddress][_item.tokenId][msg.sender] += 1; + } + + IRareERC1155(_item.contractAddress) + .mintBatchTo(msg.sender, _singleUintArray(_item.tokenId), _singleUintArray(_item.quantity)); + + if (context.grossAmount != 0) { + $.marketConfig + .payoutPrimary( + _item.contractAddress, + _item.currencyAddress, + context.grossAmount, + context.marketplaceFee, + context.seller, + context.splitRecipients, + context.splitRatios + ); + } + + emit MintDirectSale( + _item.contractAddress, + _item.tokenId, + msg.sender, + context.seller, + _item.quantity, + _item.currencyAddress, + _item.price + ); + emit CheckoutItemFilled( + _itemIndex, + _item.itemKind, + _item.contractAddress, + _item.tokenId, + context.seller, + _item.currencyAddress, + _item.price, + _item.quantity, + totalPaid + ); + + return (true, bytes4(0), totalPaid, newRemainingEth); + } + + function _checkoutListingBuy(uint256 _itemIndex, CheckoutItem calldata _item, uint256 _remainingEth) + internal + returns (bool filled, bytes4 reason, uint256 totalPaid, uint256 newRemainingEth) + { + newRemainingEth = _remainingEth; + MarketplaceStorage storage $ = _marketplaceStorage(); + + if (!_checkoutCurrencyApproved($.marketConfig, _item.currencyAddress)) { + return (false, CurrencyNotApproved.selector, 0, _remainingEth); + } + + (bool valid, bytes4 skipReason, CheckoutFillContext memory context) = _validateCheckoutListingBuy($, _item); + if (!valid) { + return (false, skipReason, 0, _remainingEth); + } + + totalPaid = context.grossAmount + context.marketplaceFee; + reason = _validateCheckoutPayment($.marketConfig, _item.currencyAddress, totalPaid, _remainingEth); + if (reason != bytes4(0)) { + return (false, reason, 0, _remainingEth); + } + + if (_item.currencyAddress == address(0)) { + newRemainingEth = _remainingEth - totalPaid; + } else { + _collectCheckoutErc20($.marketConfig, _item.currencyAddress, totalPaid); + } + + SalePrice storage salePrice = $.salePrices[_item.contractAddress][_item.tokenId][_item.seller]; + salePrice.quantity -= _item.quantity; + if (salePrice.quantity == 0) { + delete $.salePrices[_item.contractAddress][_item.tokenId][_item.seller]; + } + + _safeTransferFrom(_item.contractAddress, _item.seller, msg.sender, _item.tokenId, _item.quantity); + + $.marketConfig + .payoutSecondary( + _item.contractAddress, + _item.tokenId, + _item.currencyAddress, + context.grossAmount, + context.marketplaceFee, + _item.seller, + context.splitRecipients, + context.splitRatios + ); + + emit Sold( + _item.seller, + msg.sender, + _item.contractAddress, + _item.tokenId, + _item.currencyAddress, + _item.price, + _item.quantity + ); + emit CheckoutItemFilled( + _itemIndex, + _item.itemKind, + _item.contractAddress, + _item.tokenId, + _item.seller, + _item.currencyAddress, + _item.price, + _item.quantity, + totalPaid + ); + + return (true, bytes4(0), totalPaid, newRemainingEth); + } + + function _validateCheckoutDirectSaleMint(MarketplaceStorage storage $, CheckoutItem calldata _item) + internal + view + returns (bool valid, bytes4 reason, CheckoutFillContext memory context) + { + DirectSaleConfig memory directSaleConfig = $.directSaleConfigs[_item.contractAddress][_item.tokenId]; + if (directSaleConfig.seller == address(0)) return (false, DirectSaleNotConfigured.selector, context); + if (_item.seller != directSaleConfig.seller) return (false, CheckoutSellerMismatch.selector, context); + if (!_checkoutIsContractOwner(_item.contractAddress, directSaleConfig.seller)) { + return (false, NotContractOwner.selector, context); + } + if (!_checkoutAllowlisted(_item.contractAddress, _item.tokenId, msg.sender, _item.proof)) { + return (false, AddressNotAllowlisted.selector, context); + } + if (_item.quantity == 0) return (false, QuantityCannotBeZero.selector, context); + + uint256 mintLimit = $.tokenMintLimit[_item.contractAddress][_item.tokenId]; + uint256 currentMints = $.tokenMintsPerAddress[_item.contractAddress][_item.tokenId][msg.sender]; + if (mintLimit != 0 && currentMints + _item.quantity > mintLimit) { + return (false, MintLimitExceeded.selector, context); + } + + uint256 txLimit = $.tokenTxLimit[_item.contractAddress][_item.tokenId]; + uint256 currentTxs = $.tokenTxsPerAddress[_item.contractAddress][_item.tokenId][msg.sender]; + if (txLimit != 0 && currentTxs + 1 > txLimit) { + return (false, TransactionLimitExceeded.selector, context); + } + + if (directSaleConfig.maxMints != 0 && _item.quantity > directSaleConfig.maxMints) { + return (false, MaxMintExceeded.selector, context); + } + if (directSaleConfig.startTime > block.timestamp) return (false, SaleNotStarted.selector, context); + if (_item.price != directSaleConfig.price) return (false, PriceMismatch.selector, context); + if (directSaleConfig.currencyAddress != _item.currencyAddress) { + return (false, CurrencyMismatch.selector, context); + } + + context = CheckoutFillContext({ + seller: directSaleConfig.seller, + grossAmount: _item.quantity * _item.price, + marketplaceFee: 0, + splitRecipients: directSaleConfig.splitRecipients, + splitRatios: directSaleConfig.splitRatios + }); + if (context.grossAmount != 0) { + context.marketplaceFee = $.marketConfig.marketplaceSettings.calculateMarketplaceFee(context.grossAmount); + } + + return (true, bytes4(0), context); + } + + function _validateCheckoutListingBuy(MarketplaceStorage storage $, CheckoutItem calldata _item) + internal + view + returns (bool valid, bytes4 reason, CheckoutFillContext memory context) + { + if (msg.sender == _item.seller) return (false, SelfPurchaseUnsupported.selector, context); + if (!_checkoutValidErc1155Contract(_item.contractAddress)) { + return (false, InvalidERC1155Contract.selector, context); + } + if (_item.quantity == 0) return (false, QuantityCannotBeZero.selector, context); + + SalePrice storage salePrice = $.salePrices[_item.contractAddress][_item.tokenId][_item.seller]; + if (salePrice.quantity == 0) return (false, SalePriceDoesNotExist.selector, context); + if (salePrice.expirationTime != 0 && salePrice.expirationTime <= block.timestamp) { + return (false, SalePriceExpired.selector, context); + } + if (salePrice.currencyAddress != _item.currencyAddress) return (false, CurrencyMismatch.selector, context); + if (salePrice.price != _item.price) return (false, PriceMismatch.selector, context); + if (salePrice.quantity < _item.quantity) return (false, QuantityExceedsSalePriceQuantity.selector, context); + + IERC1155 erc1155 = IERC1155(_item.contractAddress); + try erc1155.isApprovedForAll(_item.seller, address($.erc1155ApprovalManager)) returns (bool isApproved) { + if (!isApproved) return (false, MarketplaceNotApproved.selector, context); + } catch { + return (false, MarketplaceNotApproved.selector, context); + } + + try erc1155.balanceOf(_item.seller, _item.tokenId) returns (uint256 sellerBalance) { + if (sellerBalance < _item.quantity) return (false, InsufficientTokenBalance.selector, context); + } catch { + return (false, InsufficientTokenBalance.selector, context); + } + + context = CheckoutFillContext({ + seller: _item.seller, + grossAmount: _item.quantity * _item.price, + marketplaceFee: $.marketConfig.marketplaceSettings.calculateMarketplaceFee(_item.quantity * _item.price), + splitRecipients: salePrice.splitRecipients, + splitRatios: salePrice.splitRatios + }); + + return (true, bytes4(0), context); + } + + function _validateCheckoutPayment( + MarketConfigV2.Config storage _config, + address _currencyAddress, + uint256 _amount, + uint256 _remainingEth + ) internal view returns (bytes4 reason) { + if (_amount == 0) return bytes4(0); + if (_currencyAddress == address(0)) { + return _remainingEth >= _amount ? bytes4(0) : InsufficientCheckoutETH.selector; + } + + IERC20 erc20 = IERC20(_currencyAddress); + try erc20.balanceOf(msg.sender) returns (uint256 balance) { + if (balance < _amount) return InsufficientCheckoutERC20Balance.selector; + } catch { + return InsufficientCheckoutERC20Balance.selector; + } + + try erc20.allowance(msg.sender, address(_config.erc20ApprovalManager)) returns (uint256 allowance) { + if (allowance < _amount) return InsufficientCheckoutERC20Allowance.selector; + } catch { + return InsufficientCheckoutERC20Allowance.selector; + } + + return bytes4(0); + } + + function _collectCheckoutErc20(MarketConfigV2.Config storage _config, address _currencyAddress, uint256 _amount) + internal + { + if (_amount == 0) return; + + IERC20 erc20 = IERC20(_currencyAddress); + uint256 balanceBefore = erc20.balanceOf(address(this)); + + _config.erc20ApprovalManager.transferFrom(_currencyAddress, msg.sender, address(this), _amount); + + uint256 receivedAmount = erc20.balanceOf(address(this)) - balanceBefore; + if (receivedAmount != _amount) { + revert ERC20FeeOnTransferUnsupported(_currencyAddress, _amount, receivedAmount); + } + } + + function _checkoutCurrencyApproved(MarketConfigV2.Config storage _config, address _currencyAddress) + internal + view + returns (bool) + { + if (_currencyAddress == address(0)) return true; + + try _config.approvedTokenRegistry.isApprovedToken(_currencyAddress) returns (bool approved) { + return approved; + } catch { + return false; + } + } + + function _checkoutValidErc1155Contract(address _contractAddress) internal view returns (bool) { + return _contractAddress.code.length != 0 + && ERC165Checker.supportsInterface(_contractAddress, type(IERC1155).interfaceId); + } + + function _checkoutIsContractOwner(address _contractAddress, address _account) internal view returns (bool) { + (bool success, bytes memory data) = _contractAddress.staticcall(abi.encodeWithSignature("owner()")); + return success && data.length >= 32 && abi.decode(data, (address)) == _account; + } + + function _checkoutAllowlisted( + address _contractAddress, + uint256 _tokenId, + address _account, + bytes32[] calldata _proof + ) internal view returns (bool) { + AllowListConfig memory allowListConfig = _marketplaceStorage().tokenAllowlistRoots[_contractAddress][_tokenId]; + if (allowListConfig.root == bytes32(0) || block.timestamp >= allowListConfig.endTimestamp) return true; + return _verifyProof(keccak256(abi.encodePacked(_account)), allowListConfig.root, _proof); + } + + function _singleUintArray(uint256 _value) internal pure returns (uint256[] memory values) { + values = new uint256[](1); + values[0] = _value; + } + + function _validateMintDirectSaleRequest( + address _contractAddress, + address _currencyAddress, + address _buyer, + MintRequest calldata _request + ) internal view returns (PrimaryPayoutContext memory payoutContext) { + MarketplaceStorage storage $ = _marketplaceStorage(); + uint256 tokenId = _request.tokenId; + uint256 quantity = _request.quantity; + DirectSaleConfig memory directSaleConfig = $.directSaleConfigs[_contractAddress][tokenId]; + + if (directSaleConfig.seller == address(0)) revert DirectSaleNotConfigured(_contractAddress, tokenId); + if (!_isContractOwner(_contractAddress, directSaleConfig.seller)) { + revert NotContractOwner(_contractAddress, directSaleConfig.seller); + } + _enforceTokenAllowList(_contractAddress, tokenId, _buyer, _request.proof); + if (quantity == 0) revert QuantityCannotBeZero(); + + uint256 mintLimit = $.tokenMintLimit[_contractAddress][tokenId]; + uint256 currentMints = $.tokenMintsPerAddress[_contractAddress][tokenId][_buyer]; + if (mintLimit != 0 && currentMints + quantity > mintLimit) { + revert MintLimitExceeded(_contractAddress, tokenId, _buyer, quantity, currentMints, mintLimit); + } + + uint256 txLimit = $.tokenTxLimit[_contractAddress][tokenId]; + uint256 currentTxs = $.tokenTxsPerAddress[_contractAddress][tokenId][_buyer]; + if (txLimit != 0 && currentTxs + 1 > txLimit) { + revert TransactionLimitExceeded(_contractAddress, tokenId, _buyer, currentTxs, txLimit); + } + + if (directSaleConfig.maxMints != 0 && quantity > directSaleConfig.maxMints) { + revert MaxMintExceeded(quantity, directSaleConfig.maxMints); + } + if (directSaleConfig.startTime > block.timestamp) revert SaleNotStarted(directSaleConfig.startTime); + if (_request.price != directSaleConfig.price) revert PriceMismatch(_request.price, directSaleConfig.price); + if (directSaleConfig.currencyAddress != _currencyAddress) { + revert CurrencyMismatch(_currencyAddress, directSaleConfig.currencyAddress); + } + + payoutContext = PrimaryPayoutContext({ + tokenId: tokenId, + grossAmount: quantity * _request.price, + marketplaceFee: 0, + seller: directSaleConfig.seller, + splitRecipients: directSaleConfig.splitRecipients, + splitRatios: directSaleConfig.splitRatios + }); + } + + function _validateSecondaryBuyRequest( + address _contractAddress, + address _seller, + address _currencyAddress, + BuyRequest calldata _request + ) internal view returns (SecondaryPayoutContext memory payoutContext) { + uint256 tokenId = _request.tokenId; + uint256 quantity = _request.quantity; + if (quantity == 0) revert QuantityCannotBeZero(); + + SalePrice storage salePrice = _marketplaceStorage().salePrices[_contractAddress][tokenId][_seller]; + if (salePrice.quantity == 0) revert SalePriceDoesNotExist(_contractAddress, tokenId, _seller); + if (salePrice.expirationTime != 0 && salePrice.expirationTime <= block.timestamp) { + revert SalePriceExpired(_contractAddress, tokenId, _seller, salePrice.expirationTime); + } + if (salePrice.currencyAddress != _currencyAddress) { + revert CurrencyMismatch(_currencyAddress, salePrice.currencyAddress); + } + if (salePrice.price != _request.price) revert PriceMismatch(_request.price, salePrice.price); + if (salePrice.quantity < quantity) revert QuantityExceedsSalePriceQuantity(quantity, salePrice.quantity); + + payoutContext = SecondaryPayoutContext({ + tokenId: tokenId, + grossAmount: quantity * _request.price, + marketplaceFee: 0, + splitRecipients: salePrice.splitRecipients, + splitRatios: salePrice.splitRatios + }); + } + + function _validateAndApplyOfferFill(AcceptOfferInput memory _input) + internal + returns (uint256 grossAmount, uint256 marketplaceFee) + { + Offer storage offer = _marketplaceStorage() + .offers[_input.contractAddress][_input.tokenId][_input.buyer][_input.currencyAddress]; + + if (offer.quantity == 0) { + revert OfferDoesNotExist(_input.contractAddress, _input.tokenId, _input.buyer, _input.currencyAddress); + } + if (offer.expirationTime != 0 && offer.expirationTime <= block.timestamp) { + revert OfferExpired( + _input.contractAddress, _input.tokenId, _input.buyer, _input.currencyAddress, offer.expirationTime + ); + } + if (offer.currencyAddress != _input.currencyAddress) { + revert CurrencyMismatch(_input.currencyAddress, offer.currencyAddress); + } + if (offer.price != _input.price) revert PriceMismatch(_input.price, offer.price); + if (_input.quantity > offer.quantity) revert QuantityExceedsOfferQuantity(_input.quantity, offer.quantity); + + grossAmount = _input.price * _input.quantity; + marketplaceFee = _allocateMarketplaceFee(offer, _input.quantity); + } + + function _allocateMarketplaceFee(Offer storage _offer, uint256 _quantity) + internal + returns (uint256 marketplaceFee) + { + uint256 remainingQuantity = _offer.quantity; + if (_quantity == remainingQuantity) { + marketplaceFee = _offer.marketplaceFeeRemaining; + delete _offer.currencyAddress; + delete _offer.price; + delete _offer.quantity; + delete _offer.marketplaceFeeRemaining; + delete _offer.expirationTime; + return marketplaceFee; + } + + marketplaceFee = (_offer.marketplaceFeeRemaining * _quantity) / remainingQuantity; + _offer.quantity = remainingQuantity - _quantity; + _offer.marketplaceFeeRemaining -= marketplaceFee; + } + + function _safeTransferFrom( + address _contractAddress, + address _seller, + address _buyer, + uint256 _tokenId, + uint256 _amount + ) internal { + IERC1155 erc1155 = IERC1155(_contractAddress); + uint256 sellerBalanceBefore = erc1155.balanceOf(_seller, _tokenId); + if (sellerBalanceBefore < _amount) { + revert InsufficientTokenBalance(_seller, _contractAddress, _tokenId, _amount, sellerBalanceBefore); + } + uint256 buyerBalanceBefore = erc1155.balanceOf(_buyer, _tokenId); + + _marketplaceStorage().erc1155ApprovalManager + .safeTransferFrom(_contractAddress, _seller, _buyer, _tokenId, _amount, ""); + + uint256 sellerBalanceAfter = erc1155.balanceOf(_seller, _tokenId); + uint256 buyerBalanceAfter = erc1155.balanceOf(_buyer, _tokenId); + if (sellerBalanceAfter != sellerBalanceBefore - _amount || buyerBalanceAfter != buyerBalanceBefore + _amount) { + revert InvalidERC1155Transfer(_contractAddress, _tokenId, _seller, _buyer, _amount); + } + } + + function _safeBatchTransferFrom( + address _contractAddress, + address _seller, + address _buyer, + uint256[] memory _tokenIds, + uint256[] memory _amounts + ) internal { + IERC1155 erc1155 = IERC1155(_contractAddress); + uint256 requestCount = _tokenIds.length; + address[] memory balanceAccounts = new address[](requestCount * 2); + uint256[] memory balanceTokenIds = new uint256[](requestCount * 2); + + for (uint256 i = 0; i < requestCount;) { + uint256 balanceIndex = i * 2; + balanceAccounts[balanceIndex] = _seller; + balanceAccounts[balanceIndex + 1] = _buyer; + balanceTokenIds[balanceIndex] = _tokenIds[i]; + balanceTokenIds[balanceIndex + 1] = _tokenIds[i]; + + unchecked { + ++i; + } + } + + uint256[] memory balancesBeforeTransfer = erc1155.balanceOfBatch(balanceAccounts, balanceTokenIds); + for (uint256 i = 0; i < requestCount;) { + uint256 sellerBalanceIndex = i * 2; + if (balancesBeforeTransfer[sellerBalanceIndex] < _amounts[i]) { + revert InsufficientTokenBalance( + _seller, _contractAddress, _tokenIds[i], _amounts[i], balancesBeforeTransfer[sellerBalanceIndex] + ); + } + + unchecked { + ++i; + } + } + + _marketplaceStorage().erc1155ApprovalManager + .safeBatchTransferFrom(_contractAddress, _seller, _buyer, _tokenIds, _amounts, ""); + + uint256[] memory balancesAfterTransfer = erc1155.balanceOfBatch(balanceAccounts, balanceTokenIds); + for (uint256 i = 0; i < requestCount;) { + uint256 balanceIndex = i * 2; + if ( + balancesAfterTransfer[balanceIndex] != balancesBeforeTransfer[balanceIndex] - _amounts[i] + || balancesAfterTransfer[balanceIndex + 1] != balancesBeforeTransfer[balanceIndex + 1] + _amounts[i] + ) { + revert InvalidERC1155Transfer(_contractAddress, _tokenIds[i], _seller, _buyer, _amounts[i]); + } + + unchecked { + ++i; + } + } + } + + function _enforceTokenAllowList( + address _contractAddress, + uint256 _tokenId, + address _address, + bytes32[] calldata _proof + ) internal view { + AllowListConfig memory allowListConfig = _marketplaceStorage().tokenAllowlistRoots[_contractAddress][_tokenId]; + if (allowListConfig.root == bytes32(0) || block.timestamp >= allowListConfig.endTimestamp) return; + + if (!_verifyProof(keccak256(abi.encodePacked(_address)), allowListConfig.root, _proof)) { + revert AddressNotAllowlisted(_address); + } + } + + function _validateMintRequests(MintRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + _validateStrictAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } + + function _validateBuyRequests(BuyRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + _validateStrictAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } +} diff --git a/src/test/marketplace/RareERC1155Listings.t.sol b/src/test/marketplace/RareERC1155Listings.t.sol deleted file mode 100644 index 3a32dbc..0000000 --- a/src/test/marketplace/RareERC1155Listings.t.sol +++ /dev/null @@ -1,1736 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-only -pragma solidity ^0.8.0; - -import "forge-std/Test.sol"; - -import {ERC20} from "openzeppelin-contracts/token/ERC20/ERC20.sol"; -import {ERC1155} from "openzeppelin-contracts/token/ERC1155/ERC1155.sol"; -import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; -import {IERC165} from "openzeppelin-contracts/utils/introspection/IERC165.sol"; -import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; - -import {IApprovedTokenRegistry} from "../../registry/interfaces/IApprovedTokenRegistry.sol"; -import {IRareStakingRegistry} from "../../staking/registry/IRareStakingRegistry.sol"; -import {IStakingSettings} from "../../marketplace/IStakingSettings.sol"; -import {IMarketplaceSettings} from "../../marketplace/IMarketplaceSettings.sol"; -import {Payments} from "../../payments/Payments.sol"; -import {RareERC1155} from "../../token/ERC1155/RareERC1155.sol"; -import {RareERC1155ContractFactory} from "../../token/ERC1155/RareERC1155ContractFactory.sol"; -import {RareERC1155Listings} from "../../marketplace/RareERC1155Listings.sol"; -import {IRareERC1155Listings} from "../../marketplace/IRareERC1155Listings.sol"; -import {ERC20ApprovalManager} from "../../v2/approver/ERC20/ERC20ApprovalManager.sol"; -import {ERC721ApprovalManager} from "../../v2/approver/ERC721/ERC721ApprovalManager.sol"; -import {ERC1155ApprovalManager} from "../../v2/approver/ERC1155/ERC1155ApprovalManager.sol"; -import {ISpaceOperatorRegistry} from "../../registry/interfaces/ISpaceOperatorRegistry.sol"; -import {IRoyaltyEngineV1} from "royalty-registry/IRoyaltyEngineV1.sol"; - -contract TestERC1155Currency is ERC20 { - constructor() ERC20("Currency", "CUR") { - _mint(msg.sender, 1_000_000_000 ether); - } -} - -contract TestOpenERC1155 is ERC1155 { - constructor() ERC1155("ipfs://open/{id}.json") {} - - function mint(address _to, uint256 _tokenId, uint256 _amount) external { - _mint(_to, _tokenId, _amount, ""); - } -} - -contract TestNonERC165ERC1155Like { - mapping(address => mapping(uint256 => uint256)) private balances; - mapping(address => mapping(address => bool)) private operatorApprovals; - - function setBalance(address _account, uint256 _tokenId, uint256 _amount) external { - balances[_account][_tokenId] = _amount; - } - - function balanceOf(address _account, uint256 _tokenId) external view returns (uint256) { - return balances[_account][_tokenId]; - } - - function isApprovedForAll(address _account, address _operator) external view returns (bool) { - return operatorApprovals[_account][_operator]; - } - - function setApprovalForAll(address _operator, bool _approved) external { - operatorApprovals[msg.sender][_operator] = _approved; - } - - function safeTransferFrom(address, address, uint256, uint256, bytes calldata) external {} -} - -contract TestNoOpERC1155 is IERC1155 { - mapping(address => mapping(uint256 => uint256)) private balances; - mapping(address => mapping(address => bool)) private operatorApprovals; - - function supportsInterface(bytes4 _interfaceId) external pure override returns (bool) { - return _interfaceId == type(IERC165).interfaceId || _interfaceId == type(IERC1155).interfaceId; - } - - function setBalance(address _account, uint256 _tokenId, uint256 _amount) external { - balances[_account][_tokenId] = _amount; - } - - function balanceOf(address _account, uint256 _tokenId) external view override returns (uint256) { - return balances[_account][_tokenId]; - } - - function balanceOfBatch(address[] calldata _accounts, uint256[] calldata _ids) - external - view - override - returns (uint256[] memory) - { - uint256[] memory batchBalances = new uint256[](_accounts.length); - for (uint256 i = 0; i < _accounts.length; i++) { - batchBalances[i] = balances[_accounts[i]][_ids[i]]; - } - return batchBalances; - } - - function setApprovalForAll(address _operator, bool _approved) external override { - operatorApprovals[msg.sender][_operator] = _approved; - } - - function isApprovedForAll(address _account, address _operator) external view override returns (bool) { - return operatorApprovals[_account][_operator]; - } - - function safeTransferFrom(address, address, uint256, uint256, bytes calldata) external override {} - - function safeBatchTransferFrom(address, address, uint256[] calldata, uint256[] calldata, bytes calldata) - external - override - {} -} - -contract RareERC1155ListingsTest is Test { - event MarketplaceDependencyUpdated(bytes32 indexed field, address indexed dependency); - event ContractPausedUpdated(bool isPaused); - event SalePriceSet( - address indexed seller, - address indexed contractAddress, - uint256 indexed tokenId, - address currency, - uint256 price, - uint256 quantity, - uint256 expirationTime, - address payable[] splitRecipients, - uint8[] splitRatios - ); - - RareERC1155Listings private market; - RareERC1155 private token; - TestERC1155Currency private currency; - ERC20ApprovalManager private erc20ApprovalManager; - ERC721ApprovalManager private erc721ApprovalManager; - ERC1155ApprovalManager private erc1155ApprovalManager; - - address private deployer = address(0x1000); - address private seller = address(0x2000); - address private buyer = address(0x3000); - address private nextOwner = address(0x3500); - address private royaltyReceiver = address(0x4000); - address private networkBeneficiary = address(0x5000); - address private rewardAccumulator = address(0x6000); - address payable private splitRecipientA = payable(address(0x6100)); - address payable private splitRecipientB = payable(address(0x6200)); - - address private stakingSettings = address(0x7100); - address private marketplaceSettings = address(0x7200); - address private royaltyEngine = address(0x7300); - address private spaceOperatorRegistry = address(0x7400); - address private approvedTokenRegistry = address(0x7500); - address private stakingRegistry = address(0x7600); - - uint256 private tokenId; - bytes32[] private emptyProof; - bytes32 private constant MARKETPLACE_DEPENDENCY_UPDATED_TOPIC = - keccak256("MarketplaceDependencyUpdated(bytes32,address)"); - - receive() external payable {} - - function setUp() public { - deal(deployer, 100 ether); - deal(seller, 100 ether); - deal(buyer, 100 ether); - - vm.startPrank(deployer); - currency = new TestERC1155Currency(); - currency.transfer(buyer, 1_000_000 ether); - erc20ApprovalManager = new ERC20ApprovalManager(); - erc721ApprovalManager = new ERC721ApprovalManager(); - erc1155ApprovalManager = new ERC1155ApprovalManager(); - - RareERC1155Listings implementation = new RareERC1155Listings(); - market = RareERC1155Listings(address(new ERC1967Proxy(address(implementation), ""))); - market.initialize( - networkBeneficiary, - marketplaceSettings, - spaceOperatorRegistry, - royaltyEngine, - address(new Payments()), - approvedTokenRegistry, - stakingSettings, - stakingRegistry, - address(erc20ApprovalManager), - address(erc721ApprovalManager), - address(erc1155ApprovalManager) - ); - erc20ApprovalManager.grantOperatorRole(address(market)); - erc1155ApprovalManager.grantOperatorRole(address(market)); - - RareERC1155ContractFactory tokenFactory = new RareERC1155ContractFactory(); - tokenFactory.setDefaultMinter(address(market)); - vm.stopPrank(); - - vm.prank(seller); - token = RareERC1155(tokenFactory.createRareERC1155Contract("Rare Editions", "RED", "ipfs://base/{id}.json")); - - vm.prank(seller); - tokenId = token.createToken("ipfs://token/1.json", 20, seller); - - vm.etch(marketplaceSettings, address(market).code); - vm.etch(stakingSettings, address(market).code); - vm.etch(stakingRegistry, address(market).code); - vm.etch(royaltyEngine, address(market).code); - vm.etch(spaceOperatorRegistry, address(market).code); - vm.etch(approvedTokenRegistry, address(market).code); - } - - function testImplementationCannotBeInitialized() public { - RareERC1155Listings directImplementation = new RareERC1155Listings(); - Payments payments = new Payments(); - - vm.expectRevert("Initializable: contract is already initialized"); - directImplementation.initialize( - networkBeneficiary, - marketplaceSettings, - spaceOperatorRegistry, - royaltyEngine, - address(payments), - approvedTokenRegistry, - stakingSettings, - stakingRegistry, - address(erc20ApprovalManager), - address(erc721ApprovalManager), - address(erc1155ApprovalManager) - ); - } - - function testMaxBatchSize() public { - assertEq(market.MAX_BATCH_SIZE(), 100); - } - - function testPrepareAndMintDirectSaleERC20() public { - uint256 price = 1 ether; - uint256 quantity = 2; - uint256 totalPrice = price * quantity; - - _mockApprovedCurrency(true); - _mockPrimaryPayout(totalPrice, seller); - - _prepareDirectSale(address(currency), price, block.timestamp, 0); - - vm.prank(buyer); - currency.approve(address(erc20ApprovalManager), totalPrice + ((totalPrice * 3) / 100)); - - uint256 buyerBalanceBefore = currency.balanceOf(buyer); - uint256 sellerBalanceBefore = currency.balanceOf(seller); - uint256 networkBalanceBefore = currency.balanceOf(networkBeneficiary); - uint256 rewardBalanceBefore = currency.balanceOf(rewardAccumulator); - - vm.prank(buyer); - _mintDirectSale(tokenId, address(currency), price, quantity, emptyProof, 0); - - assertEq(token.balanceOf(buyer, tokenId), quantity); - assertEq(buyerBalanceBefore - currency.balanceOf(buyer), totalPrice + ((totalPrice * 3) / 100)); - assertEq(currency.balanceOf(seller) - sellerBalanceBefore, (totalPrice * 85) / 100); - assertEq( - currency.balanceOf(networkBeneficiary) - networkBalanceBefore, - ((totalPrice * 2) / 100) + ((totalPrice * 15) / 100) - ); - assertEq(currency.balanceOf(rewardAccumulator) - rewardBalanceBefore, (totalPrice * 1) / 100); - } - - function testMintDirectSaleERC20SplitRoundingPaysFullAmount() public { - uint256 price = 101; - uint256 marketplaceFee = 3; - - address payable[] memory splitRecipients = new address payable[](3); - uint8[] memory splitRatios = new uint8[](3); - splitRecipients[0] = payable(seller); - splitRecipients[1] = splitRecipientA; - splitRecipients[2] = splitRecipientB; - splitRatios[0] = 33; - splitRatios[1] = 33; - splitRatios[2] = 34; - - _mockApprovedCurrency(true); - _mockPrimaryPayout(price, seller); - _prepareDirectSaleWithSplits(address(currency), price, block.timestamp, 0, splitRecipients, splitRatios); - - vm.prank(buyer); - currency.approve(address(erc20ApprovalManager), price + marketplaceFee); - - uint256 buyerBalanceBefore = currency.balanceOf(buyer); - uint256 networkBalanceBefore = currency.balanceOf(networkBeneficiary); - uint256 rewardBalanceBefore = currency.balanceOf(rewardAccumulator); - - vm.prank(buyer); - _mintDirectSale(tokenId, address(currency), price, 1, emptyProof, 0); - - assertEq(buyerBalanceBefore - currency.balanceOf(buyer), price + marketplaceFee); - assertEq(currency.balanceOf(seller), 28); - assertEq(currency.balanceOf(splitRecipientA), 28); - assertEq(currency.balanceOf(splitRecipientB), 30); - assertEq(currency.balanceOf(networkBeneficiary) - networkBalanceBefore, 17); - assertEq(currency.balanceOf(rewardAccumulator) - rewardBalanceBefore, 1); - assertEq(currency.balanceOf(address(market)), 0); - } - - function testMintDirectSaleETH() public { - uint256 price = 1 ether; - uint256 quantity = 2; - uint256 totalPrice = price * quantity; - - _mockPrimaryPayout(totalPrice, seller); - _prepareDirectSale(address(0), price, block.timestamp, 0); - - uint256 sellerBalanceBefore = seller.balance; - uint256 networkBalanceBefore = networkBeneficiary.balance; - uint256 rewardBalanceBefore = rewardAccumulator.balance; - - vm.prank(buyer); - _mintDirectSale(tokenId, address(0), price, quantity, emptyProof, totalPrice + ((totalPrice * 3) / 100)); - - assertEq(token.balanceOf(buyer, tokenId), quantity); - assertEq(seller.balance - sellerBalanceBefore, (totalPrice * 85) / 100); - assertEq( - networkBeneficiary.balance - networkBalanceBefore, ((totalPrice * 2) / 100) + ((totalPrice * 15) / 100) - ); - assertEq(rewardAccumulator.balance - rewardBalanceBefore, (totalPrice * 1) / 100); - } - - function testMintDirectSaleFree() public { - _prepareDirectSale(address(0), 0, block.timestamp, 0); - - vm.prank(buyer); - _mintDirectSale(tokenId, address(0), 0, 3, emptyProof, 0); - - assertEq(token.balanceOf(buyer, tokenId), 3); - } - - function testPrepareMintDirectSaleRevertsForZeroSplitRecipient() public { - address payable[] memory splitRecipients = new address payable[](2); - uint8[] memory splitRatios = new uint8[](2); - splitRecipients[0] = payable(address(0)); - splitRecipients[1] = payable(seller); - splitRatios[0] = 50; - splitRatios[1] = 50; - - vm.prank(seller); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.SplitRecipientCannotBeZero.selector, 0)); - market.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(tokenId, 1 ether, block.timestamp, 0), - splitRecipients, - splitRatios - ); - } - - function testPrepareMintDirectSaleRevertsForZeroSplitRatio() public { - address payable[] memory splitRecipients = new address payable[](2); - uint8[] memory splitRatios = new uint8[](2); - splitRecipients[0] = payable(seller); - splitRecipients[1] = splitRecipientA; - splitRatios[0] = 0; - splitRatios[1] = 100; - - vm.prank(seller); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.SplitRatioCannotBeZero.selector, 0)); - market.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(tokenId, 1 ether, block.timestamp, 0), - splitRecipients, - splitRatios - ); - } - - function testMintDirectSaleRevertsAfterCollectionOwnershipChanges() public { - uint256 price = 1 ether; - _prepareDirectSale(address(0), price, block.timestamp, 0); - - vm.prank(seller); - token.transferOwnership(nextOwner); - - vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.NotContractOwner.selector, address(token), seller)); - _mintDirectSale(tokenId, address(0), price, 1, emptyProof, price + ((price * 3) / 100)); - - assertEq(token.balanceOf(buyer, tokenId), 0); - } - - function testMintDirectSaleDerivesNetworkFeeFromMarketplaceFee() public { - uint256 price = 101; - _prepareDirectSale(address(0), price, block.timestamp, 0); - _mockInconsistentMarketplaceFee(price, seller); - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, seller), - abi.encode(false) - ); - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector( - IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, address(token) - ), - abi.encode(15) - ); - - uint256 sellerBalanceBefore = seller.balance; - uint256 networkBalanceBefore = networkBeneficiary.balance; - uint256 rewardBalanceBefore = rewardAccumulator.balance; - - vm.prank(buyer); - _mintDirectSale(tokenId, address(0), price, 1, emptyProof, 104); - - assertEq(token.balanceOf(buyer, tokenId), 1); - assertEq(seller.balance - sellerBalanceBefore, 86); - assertEq(networkBeneficiary.balance - networkBalanceBefore, 17); - assertEq(rewardAccumulator.balance - rewardBalanceBefore, 1); - assertEq(address(market).balance, 0); - } - - function testMintDirectSaleRevertsWhenStakingFeeExceedsMarketplaceFee() public { - uint256 price = 101; - _prepareDirectSale(address(0), price, block.timestamp, 0); - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, price), - abi.encode(3) - ); - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, seller), - abi.encode(rewardAccumulator) - ); - vm.mockCall( - stakingSettings, abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, price), abi.encode(4) - ); - - vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.StakingFeeExceedsMarketplaceFee.selector, 3, 4)); - _mintDirectSale(tokenId, address(0), price, 1, emptyProof, 104); - - assertEq(token.balanceOf(buyer, tokenId), 0); - assertEq(address(market).balance, 0); - } - - function testMintDirectSaleSkipsStakingFeeWhenMarketplaceFeeIsZero() public { - uint256 price = 100; - _prepareDirectSale(address(0), price, block.timestamp, 0); - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, price), - abi.encode(0) - ); - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, seller), - abi.encode(false) - ); - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector( - IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, address(token) - ), - abi.encode(15) - ); - vm.mockCall( - stakingSettings, abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, price), abi.encode(1) - ); - - uint256 sellerBalanceBefore = seller.balance; - uint256 networkBalanceBefore = networkBeneficiary.balance; - uint256 rewardBalanceBefore = rewardAccumulator.balance; - - vm.prank(buyer); - _mintDirectSale(tokenId, address(0), price, 1, emptyProof, price); - - assertEq(token.balanceOf(buyer, tokenId), 1); - assertEq(seller.balance - sellerBalanceBefore, 85); - assertEq(networkBeneficiary.balance - networkBalanceBefore, 15); - assertEq(rewardAccumulator.balance - rewardBalanceBefore, 0); - assertEq(address(market).balance, 0); - } - - function testMintDirectSaleRevertsWhenSettingsPlatformCommissionExceedsMax() public { - uint256 price = 1 ether; - _prepareDirectSale(address(0), price, block.timestamp, 0); - _mockMarketplaceFee(price, seller); - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, seller), - abi.encode(false) - ); - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector( - IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, address(token) - ), - abi.encode(101) - ); - - vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.PlatformCommissionExceeded.selector, 101, 100)); - _mintDirectSale(tokenId, address(0), price, 1, emptyProof, price + ((price * 3) / 100)); - - assertEq(token.balanceOf(buyer, tokenId), 0); - assertEq(address(market).balance, 0); - } - - function testMintDirectSaleRevertsWhenSpaceOperatorPlatformCommissionExceedsMax() public { - uint256 price = 1 ether; - _prepareDirectSale(address(0), price, block.timestamp, 0); - _mockMarketplaceFee(price, seller); - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, seller), - abi.encode(true) - ); - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.getPlatformCommission.selector, seller), - abi.encode(101) - ); - - vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.PlatformCommissionExceeded.selector, 101, 100)); - _mintDirectSale(tokenId, address(0), price, 1, emptyProof, price + ((price * 3) / 100)); - - assertEq(token.balanceOf(buyer, tokenId), 0); - assertEq(address(market).balance, 0); - } - - function testMintDirectSaleAllowListAndLimits() public { - uint256 price = 1 ether; - bytes32 root = keccak256(abi.encodePacked(buyer)); - - _prepareDirectSale(address(0), price, block.timestamp, 2); - - vm.prank(seller); - _setTokenAllowListConfig(tokenId, root, block.timestamp + 1 days); - - vm.prank(seller); - _setTokenMintLimit(tokenId, 2); - - _mockPrimaryPayout(price * 2, seller); - vm.prank(buyer); - _mintDirectSale(tokenId, address(0), price, 2, emptyProof, (price * 2) + (((price * 2) * 3) / 100)); - - vm.prank(buyer); - vm.expectRevert( - abi.encodeWithSelector( - IRareERC1155Listings.MintLimitExceeded.selector, address(token), tokenId, buyer, 1, 2, 2 - ) - ); - _mintDirectSale(tokenId, address(0), price, 1, emptyProof, price + ((price * 3) / 100)); - } - - function testMintDirectSaleAllowListRejectsNonMember() public { - uint256 price = 1 ether; - bytes32 root = keccak256(abi.encodePacked(address(0x9999))); - - _prepareDirectSale(address(0), price, block.timestamp, 0); - - vm.prank(seller); - _setTokenAllowListConfig(tokenId, root, block.timestamp + 1 days); - - vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.AddressNotAllowlisted.selector, buyer)); - _mintDirectSale(tokenId, address(0), price, 1, emptyProof, price + ((price * 3) / 100)); - } - - function testTokenScopedPrimaryConfigRevertsForUnknownTokenId() public { - uint256 missingTokenId = tokenId + 1; - bytes32 root = keccak256(abi.encodePacked(buyer)); - - vm.startPrank(seller); - vm.expectRevert( - abi.encodeWithSelector(IRareERC1155Listings.TokenNotFound.selector, address(token), missingTokenId) - ); - _setTokenAllowListConfig(missingTokenId, root, block.timestamp + 1 days); - - vm.expectRevert( - abi.encodeWithSelector(IRareERC1155Listings.TokenNotFound.selector, address(token), missingTokenId) - ); - _setTokenMintLimit(missingTokenId, 1); - - vm.expectRevert( - abi.encodeWithSelector(IRareERC1155Listings.TokenNotFound.selector, address(token), missingTokenId) - ); - _setTokenTxLimit(missingTokenId, 1); - vm.stopPrank(); - } - - function testMintDirectSaleTxLimit() public { - uint256 price = 1 ether; - _prepareDirectSale(address(0), price, block.timestamp, 0); - - vm.prank(seller); - _setTokenTxLimit(tokenId, 1); - - _mockPrimaryPayout(price, seller); - vm.prank(buyer); - _mintDirectSale(tokenId, address(0), price, 1, emptyProof, price + ((price * 3) / 100)); - - vm.prank(buyer); - vm.expectRevert( - abi.encodeWithSelector( - IRareERC1155Listings.TransactionLimitExceeded.selector, address(token), tokenId, buyer, 1, 1 - ) - ); - _mintDirectSale(tokenId, address(0), price, 1, emptyProof, price + ((price * 3) / 100)); - } - - function testMintDirectSaleLimitsOnlyCountWhileEnabled() public { - _prepareDirectSale(address(0), 0, block.timestamp, 0); - - vm.prank(buyer); - _mintDirectSale(tokenId, address(0), 0, 2, emptyProof, 0); - - assertEq(market.getTokenMintsPerAddress(address(token), tokenId, buyer), 0); - assertEq(market.getTokenTxsPerAddress(address(token), tokenId, buyer), 0); - - vm.startPrank(seller); - _setTokenMintLimit(tokenId, 1); - _setTokenTxLimit(tokenId, 1); - vm.stopPrank(); - - vm.prank(buyer); - _mintDirectSale(tokenId, address(0), 0, 1, emptyProof, 0); - - assertEq(market.getTokenMintsPerAddress(address(token), tokenId, buyer), 1); - assertEq(market.getTokenTxsPerAddress(address(token), tokenId, buyer), 1); - - vm.prank(buyer); - vm.expectRevert( - abi.encodeWithSelector( - IRareERC1155Listings.MintLimitExceeded.selector, address(token), tokenId, buyer, 1, 1, 1 - ) - ); - _mintDirectSale(tokenId, address(0), 0, 1, emptyProof, 0); - } - - function testMintDirectSaleLimitsAreTokenScoped() public { - uint256 otherTokenId; - - vm.prank(seller); - otherTokenId = token.createToken("ipfs://token/2.json", 20, seller); - - _prepareDirectSale(address(0), 0, block.timestamp, 0); - _prepareDirectSaleForToken(otherTokenId, address(0), 0, block.timestamp, 0); - - vm.prank(seller); - _setTokenMintLimit(tokenId, 1); - - vm.prank(buyer); - _mintDirectSale(tokenId, address(0), 0, 1, emptyProof, 0); - - vm.prank(buyer); - vm.expectRevert( - abi.encodeWithSelector( - IRareERC1155Listings.MintLimitExceeded.selector, address(token), tokenId, buyer, 1, 1, 1 - ) - ); - _mintDirectSale(tokenId, address(0), 0, 1, emptyProof, 0); - - vm.prank(buyer); - _mintDirectSale(otherTokenId, address(0), 0, 2, emptyProof, 0); - - assertEq(token.balanceOf(buyer, tokenId), 1); - assertEq(token.balanceOf(buyer, otherTokenId), 2); - assertEq(market.getTokenMintsPerAddress(address(token), tokenId, buyer), 1); - assertEq(market.getTokenMintsPerAddress(address(token), otherTokenId, buyer), 0); - } - - function testMintDirectSaleRevertsForWrongPriceCurrencyAndStartTime() public { - uint256 price = 1 ether; - _mockApprovedCurrency(true); - _prepareDirectSale(address(currency), price, block.timestamp + 1 hours, 0); - - vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.SaleNotStarted.selector, block.timestamp + 1 hours)); - _mintDirectSale(tokenId, address(currency), price, 1, emptyProof, 0); - - skip(1 hours); - - vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.PriceMismatch.selector, price + 1, price)); - _mintDirectSale(tokenId, address(currency), price + 1, 1, emptyProof, 0); - - vm.prank(buyer); - vm.expectRevert( - abi.encodeWithSelector(IRareERC1155Listings.CurrencyMismatch.selector, address(0), address(currency)) - ); - _mintDirectSale(tokenId, address(0), price, 1, emptyProof, 0); - } - - function testMintDirectSaleBatchRejectsBadBatchShape() public { - IRareERC1155Listings.MintRequest[] memory emptyRequests = new IRareERC1155Listings.MintRequest[](0); - - vm.prank(buyer); - vm.expectRevert(IRareERC1155Listings.EmptyBatch.selector); - market.mintDirectSaleBatch(address(token), address(0), emptyRequests); - - bytes32[] memory proof = new bytes32[](0); - IRareERC1155Listings.MintRequest[] memory requests = new IRareERC1155Listings.MintRequest[](2); - requests[0] = IRareERC1155Listings.MintRequest(1, 0, 1, proof); - requests[1] = IRareERC1155Listings.MintRequest(1, 0, 1, proof); - - vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.TokenIdsNotStrictlyAscending.selector, 1, 1, 1)); - market.mintDirectSaleBatch(address(token), address(0), requests); - - requests[0] = IRareERC1155Listings.MintRequest(2, 0, 1, proof); - requests[1] = IRareERC1155Listings.MintRequest(1, 0, 1, proof); - - vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.TokenIdsNotStrictlyAscending.selector, 1, 2, 1)); - market.mintDirectSaleBatch(address(token), address(0), requests); - } - - function testMintDirectSaleBatchRejectsOversizedBatch() public { - bytes32[] memory proof = new bytes32[](0); - IRareERC1155Listings.MintRequest[] memory requests = new IRareERC1155Listings.MintRequest[](101); - - for (uint256 i = 0; i < requests.length; i++) { - requests[i] = IRareERC1155Listings.MintRequest(i + 1, 0, 1, proof); - } - - vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.BatchSizeExceeded.selector, 101, 100)); - market.mintDirectSaleBatch(address(token), address(0), requests); - } - - function testMintDirectSaleBatchRejectsZeroQuantity() public { - _prepareDirectSale(address(0), 0, block.timestamp, 0); - - vm.prank(buyer); - vm.expectRevert(IRareERC1155Listings.QuantityCannotBeZero.selector); - _mintDirectSale(tokenId, address(0), 0, 0, emptyProof, 0); - } - - function testMintDirectSaleBatchAggregatesFreeAndPaidETHPayment() public { - uint256 paidTokenId; - uint256 price = 1 ether; - - vm.prank(seller); - paidTokenId = token.createToken("ipfs://token/2.json", 20, seller); - - _prepareDirectSale(address(0), 0, block.timestamp, 0); - _prepareDirectSaleForToken(paidTokenId, address(0), price, block.timestamp, 0); - _mockPrimaryPayout(price, seller); - - IRareERC1155Listings.MintRequest[] memory requests = new IRareERC1155Listings.MintRequest[](2); - bytes32[] memory proof = new bytes32[](0); - requests[0] = IRareERC1155Listings.MintRequest(tokenId, 0, 2, proof); - requests[1] = IRareERC1155Listings.MintRequest(paidTokenId, price, 1, proof); - - vm.prank(buyer); - market.mintDirectSaleBatch{value: price + ((price * 3) / 100)}(address(token), address(0), requests); - - assertEq(token.balanceOf(buyer, tokenId), 2); - assertEq(token.balanceOf(buyer, paidTokenId), 1); - } - - function testMintDirectSaleBatchRejectsValueForAllFreeBatch() public { - _prepareDirectSale(address(0), 0, block.timestamp, 0); - - vm.prank(buyer); - vm.expectRevert(IRareERC1155Listings.MsgValueMustBeZero.selector); - _mintDirectSale(tokenId, address(0), 0, 1, emptyProof, 1); - } - - function testMintDirectSaleBatchRejectsMsgValueForERC20Batch() public { - uint256 price = 1 ether; - _mockApprovedCurrency(true); - _prepareDirectSale(address(currency), price, block.timestamp, 0); - _mockMarketplaceFee(price, seller); - - vm.prank(buyer); - vm.expectRevert(IRareERC1155Listings.MsgValueUnsupportedForERC20.selector); - _mintDirectSale(tokenId, address(currency), price, 1, emptyProof, 1); - } - - function testMintDirectSaleBatchCalculatesFeesPerItem() public { - uint256 otherTokenId; - uint256 price = 33; - - vm.prank(seller); - otherTokenId = token.createToken("ipfs://token/2.json", 20, seller); - - _prepareDirectSale(address(0), price, block.timestamp, 0); - _prepareDirectSaleForToken(otherTokenId, address(0), price, block.timestamp, 0); - _mockPrimaryPayout(price, seller); - - IRareERC1155Listings.MintRequest[] memory requests = new IRareERC1155Listings.MintRequest[](2); - bytes32[] memory proof = new bytes32[](0); - requests[0] = IRareERC1155Listings.MintRequest(tokenId, price, 1, proof); - requests[1] = IRareERC1155Listings.MintRequest(otherTokenId, price, 1, proof); - - vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.IncorrectETHAmount.selector, 66, 67)); - market.mintDirectSaleBatch{value: 67}(address(token), address(0), requests); - - vm.prank(buyer); - market.mintDirectSaleBatch{value: 66}(address(token), address(0), requests); - - assertEq(token.balanceOf(buyer, tokenId), 1); - assertEq(token.balanceOf(buyer, otherTokenId), 1); - assertEq(address(market).balance, 0); - } - - function testMintDirectSaleBatchCountsOneTxPerTokenId() public { - uint256 otherTokenId; - - vm.prank(seller); - otherTokenId = token.createToken("ipfs://token/2.json", 20, seller); - - _prepareDirectSale(address(0), 0, block.timestamp, 0); - _prepareDirectSaleForToken(otherTokenId, address(0), 0, block.timestamp, 0); - - vm.startPrank(seller); - _setTokenTxLimit(tokenId, 1); - _setTokenTxLimit(otherTokenId, 1); - vm.stopPrank(); - - IRareERC1155Listings.MintRequest[] memory requests = new IRareERC1155Listings.MintRequest[](2); - bytes32[] memory proof = new bytes32[](0); - requests[0] = IRareERC1155Listings.MintRequest(tokenId, 0, 1, proof); - requests[1] = IRareERC1155Listings.MintRequest(otherTokenId, 0, 2, proof); - - vm.prank(buyer); - market.mintDirectSaleBatch(address(token), address(0), requests); - - assertEq(market.getTokenTxsPerAddress(address(token), tokenId, buyer), 1); - assertEq(market.getTokenTxsPerAddress(address(token), otherTokenId, buyer), 1); - } - - function testSetSalePriceAndBuyPartialERC20() public { - uint256 price = 1 ether; - uint256 quantity = 2; - uint256 totalPrice = price * quantity; - - _mintToSellerAndList(address(currency), price, 4); - _mockApprovedCurrency(true); - _mockSecondaryPayout(totalPrice, seller); - - vm.prank(buyer); - currency.approve(address(erc20ApprovalManager), totalPrice + ((totalPrice * 3) / 100)); - - uint256 sellerBalanceBefore = currency.balanceOf(seller); - uint256 royaltyBalanceBefore = currency.balanceOf(royaltyReceiver); - uint256 networkBalanceBefore = currency.balanceOf(networkBeneficiary); - uint256 rewardBalanceBefore = currency.balanceOf(rewardAccumulator); - - vm.prank(buyer); - _buy(address(token), tokenId, seller, address(currency), price, quantity, 0); - - assertEq(token.balanceOf(buyer, tokenId), quantity); - assertEq(currency.balanceOf(seller) - sellerBalanceBefore, (totalPrice * 90) / 100); - assertEq(currency.balanceOf(royaltyReceiver) - royaltyBalanceBefore, (totalPrice * 10) / 100); - assertEq(currency.balanceOf(networkBeneficiary) - networkBalanceBefore, (totalPrice * 2) / 100); - assertEq(currency.balanceOf(rewardAccumulator) - rewardBalanceBefore, (totalPrice * 1) / 100); - - IRareERC1155Listings.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); - assertEq(salePrice.quantity, 2); - } - - function testNoExpirySalePriceRemainsBuyableAfterTimePasses() public { - uint256 price = 1 ether; - - _mintToSellerAndList(address(0), price, 1); - vm.warp(block.timestamp + 30 days); - _mockSecondaryPayout(price, seller); - - vm.prank(buyer); - _buy(address(token), tokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); - - assertEq(token.balanceOf(buyer, tokenId), 1); - } - - function testSetSalePriceStoresAndEmitsExpiration() public { - uint256 price = 1 ether; - uint256 quantity = 2; - uint256 expirationTime = block.timestamp + 1 days; - - vm.prank(seller); - token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(quantity)); - - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - - address payable[] memory splitRecipients = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRecipients[0] = payable(seller); - splitRatios[0] = 100; - - vm.prank(seller); - vm.expectEmit(true, true, true, true, address(market)); - emit SalePriceSet( - seller, address(token), tokenId, address(0), price, quantity, expirationTime, splitRecipients, splitRatios - ); - market.setSalePrices( - address(token), - address(0), - _singleSalePriceRequest(tokenId, price, quantity, expirationTime), - splitRecipients, - splitRatios - ); - - IRareERC1155Listings.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); - assertEq(salePrice.expirationTime, expirationTime); - } - - function testBuyBeforeExpirationPreservesExpirationOnPartialFill() public { - uint256 price = 1 ether; - uint256 expirationTime = block.timestamp + 1 days; - - _mintToSellerAndListWithExpiration(address(0), price, 3, expirationTime); - _mockSecondaryPayout(price, seller); - - vm.prank(buyer); - _buy(address(token), tokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); - - IRareERC1155Listings.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); - assertEq(salePrice.quantity, 2); - assertEq(salePrice.expirationTime, expirationTime); - } - - function testBuyAtExpirationRevertsAndLeavesListingReadable() public { - uint256 price = 1 ether; - uint256 expirationTime = block.timestamp + 1 days; - - _mintToSellerAndListWithExpiration(address(0), price, 2, expirationTime); - vm.warp(expirationTime); - - vm.prank(buyer); - vm.expectRevert( - abi.encodeWithSelector( - IRareERC1155Listings.SalePriceExpired.selector, address(token), tokenId, seller, expirationTime - ) - ); - _buy(address(token), tokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); - - IRareERC1155Listings.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); - assertEq(salePrice.quantity, 2); - assertEq(salePrice.expirationTime, expirationTime); - } - - function testSetSalePriceRevertsForCurrentOrPastExpiration() public { - uint256 price = 1 ether; - vm.warp(100); - - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - - address payable[] memory splitRecipients = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRecipients[0] = payable(seller); - splitRatios[0] = 100; - - vm.prank(seller); - vm.expectRevert( - abi.encodeWithSelector( - IRareERC1155Listings.SalePriceExpirationInvalid.selector, block.timestamp, block.timestamp - ) - ); - _setSalePriceWithExpiration( - address(token), tokenId, address(0), price, 1, block.timestamp, splitRecipients, splitRatios - ); - - vm.prank(seller); - vm.expectRevert( - abi.encodeWithSelector( - IRareERC1155Listings.SalePriceExpirationInvalid.selector, block.timestamp - 1, block.timestamp - ) - ); - _setSalePriceWithExpiration( - address(token), tokenId, address(0), price, 1, block.timestamp - 1, splitRecipients, splitRatios - ); - } - - function testBuyRevertsForRoyaltyPayoutLengthMismatch() public { - uint256 price = 1 ether; - - _mintToSellerAndList(address(0), price, 1); - _mockMarketplaceFee(price, seller); - - address payable[] memory receivers = new address payable[](1); - uint256[] memory royalties = new uint256[](2); - receivers[0] = payable(royaltyReceiver); - royalties[0] = 0.01 ether; - royalties[1] = 0.01 ether; - - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), - abi.encode(receivers, royalties) - ); - - vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.PayoutLengthMismatch.selector, 1, 2)); - _buy(address(token), tokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); - - assertEq(token.balanceOf(buyer, tokenId), 0); - assertEq(token.balanceOf(seller, tokenId), 1); - assertEq(address(market).balance, 0); - } - - function testBuyRemainingQuantityClearsSalePrice() public { - uint256 price = 1 ether; - uint256 quantity = 2; - uint256 totalPrice = price * quantity; - uint256 expirationTime = block.timestamp + 1 days; - - _mintToSellerAndListWithExpiration(address(0), price, quantity, expirationTime); - _mockSecondaryPayout(totalPrice, seller); - - vm.prank(buyer); - _buy(address(token), tokenId, seller, address(0), price, quantity, totalPrice + ((totalPrice * 3) / 100)); - - IRareERC1155Listings.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); - assertEq(salePrice.quantity, 0); - assertEq(salePrice.expirationTime, 0); - } - - function testBuyBatchPartialAndFinalFillUpdatesListingsAndBalances() public { - uint256 otherTokenId; - uint256 price = 1 ether; - - vm.prank(seller); - otherTokenId = token.createToken("ipfs://token/2.json", 20, seller); - - uint256[] memory tokenIds = new uint256[](2); - uint256[] memory mintAmounts = new uint256[](2); - tokenIds[0] = tokenId; - tokenIds[1] = otherTokenId; - mintAmounts[0] = 5; - mintAmounts[1] = 5; - - vm.prank(seller); - token.mintBatchTo(seller, tokenIds, mintAmounts); - - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - - address payable[] memory splitRecipients = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRecipients[0] = payable(seller); - splitRatios[0] = 100; - - IRareERC1155Listings.SalePriceRequest[] memory saleRequests = new IRareERC1155Listings.SalePriceRequest[](2); - saleRequests[0] = IRareERC1155Listings.SalePriceRequest(tokenId, price, 5, 0); - saleRequests[1] = IRareERC1155Listings.SalePriceRequest(otherTokenId, price, 5, 0); - - vm.prank(seller); - market.setSalePrices(address(token), address(0), saleRequests, splitRecipients, splitRatios); - - IRareERC1155Listings.BuyRequest[] memory buyRequests = new IRareERC1155Listings.BuyRequest[](2); - buyRequests[0] = IRareERC1155Listings.BuyRequest(tokenId, price, 2); - buyRequests[1] = IRareERC1155Listings.BuyRequest(otherTokenId, price, 3); - - _mockSecondaryPayoutFor(address(token), tokenId, 2 ether, seller); - _mockSecondaryPayoutFor(address(token), otherTokenId, 3 ether, seller); - - vm.prank(buyer); - market.buyBatch{value: 5 ether + ((2 ether * 3) / 100) + ((3 ether * 3) / 100)}( - address(token), seller, address(0), buyRequests - ); - - assertEq(token.balanceOf(seller, tokenId), 3); - assertEq(token.balanceOf(seller, otherTokenId), 2); - assertEq(token.balanceOf(buyer, tokenId), 2); - assertEq(token.balanceOf(buyer, otherTokenId), 3); - assertEq(market.getSalePrice(address(token), tokenId, seller).quantity, 3); - assertEq(market.getSalePrice(address(token), otherTokenId, seller).quantity, 2); - - buyRequests[0] = IRareERC1155Listings.BuyRequest(tokenId, price, 3); - buyRequests[1] = IRareERC1155Listings.BuyRequest(otherTokenId, price, 2); - - _mockSecondaryPayoutFor(address(token), tokenId, 3 ether, seller); - _mockSecondaryPayoutFor(address(token), otherTokenId, 2 ether, seller); - - vm.prank(buyer); - market.buyBatch{value: 5 ether + ((3 ether * 3) / 100) + ((2 ether * 3) / 100)}( - address(token), seller, address(0), buyRequests - ); - - assertEq(token.balanceOf(seller, tokenId), 0); - assertEq(token.balanceOf(seller, otherTokenId), 0); - assertEq(token.balanceOf(buyer, tokenId), 5); - assertEq(token.balanceOf(buyer, otherTokenId), 5); - assertEq(market.getSalePrice(address(token), tokenId, seller).quantity, 0); - assertEq(market.getSalePrice(address(token), otherTokenId, seller).quantity, 0); - } - - function testBuyBatchRejectsBadBatchShape() public { - IRareERC1155Listings.BuyRequest[] memory emptyRequests = new IRareERC1155Listings.BuyRequest[](0); - - vm.prank(buyer); - vm.expectRevert(IRareERC1155Listings.EmptyBatch.selector); - market.buyBatch(address(token), seller, address(0), emptyRequests); - - IRareERC1155Listings.BuyRequest[] memory requests = new IRareERC1155Listings.BuyRequest[](2); - requests[0] = IRareERC1155Listings.BuyRequest(1, 1 ether, 1); - requests[1] = IRareERC1155Listings.BuyRequest(1, 1 ether, 1); - - vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.TokenIdsNotStrictlyAscending.selector, 1, 1, 1)); - market.buyBatch(address(token), seller, address(0), requests); - - requests[0] = IRareERC1155Listings.BuyRequest(2, 1 ether, 1); - requests[1] = IRareERC1155Listings.BuyRequest(1, 1 ether, 1); - - vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.TokenIdsNotStrictlyAscending.selector, 1, 2, 1)); - market.buyBatch(address(token), seller, address(0), requests); - } - - function testSetSalePriceAndBuyArbitraryERC1155() public { - TestOpenERC1155 openToken = new TestOpenERC1155(); - uint256 openTokenId = 42; - uint256 price = 1 ether; - uint256 quantity = 2; - uint256 totalPrice = price * quantity; - - openToken.mint(seller, openTokenId, quantity); - - vm.prank(seller); - openToken.setApprovalForAll(address(erc1155ApprovalManager), true); - - address payable[] memory splitRecipients = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRecipients[0] = payable(seller); - splitRatios[0] = 100; - - vm.prank(seller); - _setSalePrice(address(openToken), openTokenId, address(0), price, quantity, splitRecipients, splitRatios); - - _mockSecondaryPayoutFor(address(openToken), openTokenId, totalPrice, seller); - - vm.prank(buyer); - _buy( - address(openToken), openTokenId, seller, address(0), price, quantity, totalPrice + ((totalPrice * 3) / 100) - ); - - assertEq(openToken.balanceOf(seller, openTokenId), 0); - assertEq(openToken.balanceOf(buyer, openTokenId), quantity); - } - - function testBuyRevertsForStaleApprovalAndBalance() public { - uint256 price = 1 ether; - - _mintToSellerAndList(address(0), price, 2); - - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), false); - - vm.prank(buyer); - vm.expectRevert( - abi.encodeWithSelector(IRareERC1155Listings.MarketplaceNotApproved.selector, seller, address(token)) - ); - _buy(address(token), tokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); - - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - - vm.prank(seller); - token.safeTransferFrom(seller, address(0x9999), tokenId, 2, ""); - - vm.prank(buyer); - vm.expectRevert( - abi.encodeWithSelector( - IRareERC1155Listings.InsufficientTokenBalance.selector, seller, address(token), tokenId, 1, 0 - ) - ); - _buy(address(token), tokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); - } - - function testSetSalePriceRevertsForNonERC1155Contract() public { - TestNonERC165ERC1155Like nonERC1155 = new TestNonERC165ERC1155Like(); - uint256 unsupportedTokenId = 77; - - nonERC1155.setBalance(seller, unsupportedTokenId, 1); - - vm.prank(seller); - nonERC1155.setApprovalForAll(address(erc1155ApprovalManager), true); - - address payable[] memory splitRecipients = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRecipients[0] = payable(seller); - splitRatios[0] = 100; - - vm.prank(seller); - vm.expectRevert( - abi.encodeWithSelector(IRareERC1155Listings.InvalidERC1155Contract.selector, address(nonERC1155)) - ); - _setSalePrice(address(nonERC1155), unsupportedTokenId, address(0), 1 ether, 1, splitRecipients, splitRatios); - } - - function testSetSalePriceRevertsForZeroSplitRecipient() public { - address payable[] memory splitRecipients = new address payable[](2); - uint8[] memory splitRatios = new uint8[](2); - splitRecipients[0] = payable(seller); - splitRecipients[1] = payable(address(0)); - splitRatios[0] = 50; - splitRatios[1] = 50; - - vm.prank(seller); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.SplitRecipientCannotBeZero.selector, 1)); - _setSalePrice(address(token), tokenId, address(0), 1 ether, 1, splitRecipients, splitRatios); - } - - function testSetSalePriceRevertsForZeroSplitRatio() public { - address payable[] memory splitRecipients = new address payable[](2); - uint8[] memory splitRatios = new uint8[](2); - splitRecipients[0] = payable(seller); - splitRecipients[1] = splitRecipientA; - splitRatios[0] = 100; - splitRatios[1] = 0; - - vm.prank(seller); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.SplitRatioCannotBeZero.selector, 1)); - _setSalePrice(address(token), tokenId, address(0), 1 ether, 1, splitRecipients, splitRatios); - } - - function testBuyRevertsWhenERC1155TransferDoesNotMoveBalances() public { - TestNoOpERC1155 brokenToken = new TestNoOpERC1155(); - uint256 brokenTokenId = 88; - uint256 price = 1 ether; - - brokenToken.setBalance(seller, brokenTokenId, 1); - - vm.prank(seller); - brokenToken.setApprovalForAll(address(erc1155ApprovalManager), true); - - address payable[] memory splitRecipients = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRecipients[0] = payable(seller); - splitRatios[0] = 100; - - vm.prank(seller); - _setSalePrice(address(brokenToken), brokenTokenId, address(0), price, 1, splitRecipients, splitRatios); - - _mockMarketplaceFee(price, seller); - - vm.prank(buyer); - vm.expectRevert( - abi.encodeWithSelector( - IRareERC1155Listings.InvalidERC1155Transfer.selector, - address(brokenToken), - brokenTokenId, - seller, - buyer, - 1 - ) - ); - _buy(address(brokenToken), brokenTokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); - - assertEq(brokenToken.balanceOf(seller, brokenTokenId), 1); - assertEq(brokenToken.balanceOf(buyer, brokenTokenId), 0); - } - - function testBuyRevertsForSelfPurchase() public { - uint256 price = 1 ether; - - _mintToSellerAndList(address(0), price, 1); - - vm.prank(seller); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155Listings.SelfPurchaseUnsupported.selector, seller)); - _buy(address(token), tokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); - } - - function testCancelSalePrice() public { - _mintToSellerAndList(address(0), 1 ether, 2); - - vm.prank(seller); - market.cancelSalePrices(address(token), _singleTokenIds(tokenId)); - - IRareERC1155Listings.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); - assertEq(salePrice.quantity, 0); - } - - function testCancelSalePriceAllowedWhilePaused() public { - _mintToSellerAndList(address(0), 1 ether, 2); - - vm.prank(deployer); - market.setContractPaused(true); - - vm.prank(seller); - market.cancelSalePrices(address(token), _singleTokenIds(tokenId)); - - IRareERC1155Listings.SalePrice memory salePrice = market.getSalePrice(address(token), tokenId, seller); - assertEq(salePrice.quantity, 0); - } - - function testSetContractPausedEmitsEvent() public { - vm.prank(deployer); - vm.expectEmit(false, false, false, true, address(market)); - emit ContractPausedUpdated(true); - market.setContractPaused(true); - } - - function testDependencySettersEmitLocalEvents() public { - _expectDependencyUpdate("NETWORK_BENEFICIARY", address(0x8001), this._setNetworkBeneficiary); - _expectDependencyUpdate("MARKETPLACE_SETTINGS", address(0x8002), this._setMarketplaceSettings); - _expectDependencyUpdate("SPACE_OPERATOR_REGISTRY", address(0x8003), this._setSpaceOperatorRegistry); - _expectDependencyUpdate("ROYALTY_ENGINE", address(0x8004), this._setRoyaltyEngine); - _expectDependencyUpdate("PAYMENTS", address(0x8005), this._setPayments); - _expectDependencyUpdate("APPROVED_TOKEN_REGISTRY", address(0x8006), this._setApprovedTokenRegistry); - _expectDependencyUpdate("STAKING_SETTINGS", address(0x8007), this._setStakingSettings); - _expectDependencyUpdate("STAKING_REGISTRY", address(0x8008), this._setStakingRegistry); - _expectDependencyUpdate("ERC20_APPROVAL_MANAGER", address(0x8009), this._setERC20ApprovalManager); - _expectDependencyUpdate("ERC721_APPROVAL_MANAGER", address(0x8010), this._setERC721ApprovalManager); - _expectDependencyUpdate("ERC1155_APPROVAL_MANAGER", address(0x8011), this._setERC1155ApprovalManager); - } - - function testSetSalePriceRevertsWhilePaused() public { - address payable[] memory splitRecipients = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRecipients[0] = payable(seller); - splitRatios[0] = 100; - - vm.prank(deployer); - market.setContractPaused(true); - - vm.prank(seller); - vm.expectRevert(IRareERC1155Listings.ContractPaused.selector); - _setSalePrice(address(token), tokenId, address(0), 1 ether, 1, splitRecipients, splitRatios); - } - - function testBuyRevertsWhilePaused() public { - uint256 price = 1 ether; - _mintToSellerAndList(address(0), price, 2); - - vm.prank(deployer); - market.setContractPaused(true); - - vm.prank(buyer); - vm.expectRevert(IRareERC1155Listings.ContractPaused.selector); - _buy(address(token), tokenId, seller, address(0), price, 1, price + ((price * 3) / 100)); - } - - function _expectDependencyUpdate(bytes32 _field, address _dependency, function(address) external _setter) private { - vm.recordLogs(); - - _setter(_dependency); - - Vm.Log[] memory entries = vm.getRecordedLogs(); - bytes32 dependencyTopic = bytes32(uint256(uint160(_dependency))); - bool found; - - for (uint256 i = 0; i < entries.length; i++) { - if ( - entries[i].emitter == address(market) && entries[i].topics.length == 3 - && entries[i].topics[0] == MARKETPLACE_DEPENDENCY_UPDATED_TOPIC && entries[i].topics[1] == _field - && entries[i].topics[2] == dependencyTopic - ) { - found = true; - break; - } - } - - assertTrue(found, "missing dependency update event"); - } - - function _setNetworkBeneficiary(address _dependency) external { - vm.prank(deployer); - market.setNetworkBeneficiary(_dependency); - } - - function _setMarketplaceSettings(address _dependency) external { - vm.prank(deployer); - market.setMarketplaceSettings(_dependency); - } - - function _setSpaceOperatorRegistry(address _dependency) external { - vm.prank(deployer); - market.setSpaceOperatorRegistry(_dependency); - } - - function _setRoyaltyEngine(address _dependency) external { - vm.prank(deployer); - market.setRoyaltyEngine(_dependency); - } - - function _setPayments(address _dependency) external { - vm.prank(deployer); - market.setPayments(_dependency); - } - - function _setApprovedTokenRegistry(address _dependency) external { - vm.prank(deployer); - market.setApprovedTokenRegistry(_dependency); - } - - function _setStakingSettings(address _dependency) external { - vm.prank(deployer); - market.setStakingSettings(_dependency); - } - - function _setStakingRegistry(address _dependency) external { - vm.prank(deployer); - market.setStakingRegistry(_dependency); - } - - function _setERC20ApprovalManager(address _dependency) external { - vm.prank(deployer); - market.setERC20ApprovalManager(_dependency); - } - - function _setERC721ApprovalManager(address _dependency) external { - vm.prank(deployer); - market.setERC721ApprovalManager(_dependency); - } - - function _setERC1155ApprovalManager(address _dependency) external { - vm.prank(deployer); - market.setERC1155ApprovalManager(_dependency); - } - - function _prepareDirectSale(address _currencyAddress, uint256 _price, uint256 _startTime, uint256 _maxMints) - internal - { - _prepareDirectSaleForToken(tokenId, _currencyAddress, _price, _startTime, _maxMints); - } - - function _prepareDirectSaleForToken( - uint256 _tokenId, - address _currencyAddress, - uint256 _price, - uint256 _startTime, - uint256 _maxMints - ) internal { - address payable[] memory splitRecipients = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRecipients[0] = payable(seller); - splitRatios[0] = 100; - - _prepareDirectSaleWithSplitsForToken( - _tokenId, _currencyAddress, _price, _startTime, _maxMints, splitRecipients, splitRatios - ); - } - - function _prepareDirectSaleWithSplits( - address _currencyAddress, - uint256 _price, - uint256 _startTime, - uint256 _maxMints, - address payable[] memory _splitRecipients, - uint8[] memory _splitRatios - ) internal { - _prepareDirectSaleWithSplitsForToken( - tokenId, _currencyAddress, _price, _startTime, _maxMints, _splitRecipients, _splitRatios - ); - } - - function _prepareDirectSaleWithSplitsForToken( - uint256 _tokenId, - address _currencyAddress, - uint256 _price, - uint256 _startTime, - uint256 _maxMints, - address payable[] memory _splitRecipients, - uint8[] memory _splitRatios - ) internal { - vm.prank(seller); - market.prepareMintDirectSales( - address(token), - _currencyAddress, - _singleDirectSaleRequest(_tokenId, _price, _startTime, _maxMints), - _splitRecipients, - _splitRatios - ); - } - - function _mintToSellerAndList(address _currencyAddress, uint256 _price, uint256 _quantity) internal { - _mintToSellerAndListWithExpiration(_currencyAddress, _price, _quantity, 0); - } - - function _mintToSellerAndListWithExpiration( - address _currencyAddress, - uint256 _price, - uint256 _quantity, - uint256 _expirationTime - ) internal { - vm.prank(seller); - token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(_quantity)); - - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - - if (_currencyAddress != address(0)) { - _mockApprovedCurrency(true); - } - - address payable[] memory splitRecipients = new address payable[](1); - uint8[] memory splitRatios = new uint8[](1); - splitRecipients[0] = payable(seller); - splitRatios[0] = 100; - - vm.prank(seller); - market.setSalePrices( - address(token), - _currencyAddress, - _singleSalePriceRequest(tokenId, _price, _quantity, _expirationTime), - splitRecipients, - splitRatios - ); - } - - function _mintDirectSale( - uint256 _tokenId, - address _currencyAddress, - uint256 _price, - uint256 _quantity, - bytes32[] memory _proof, - uint256 _value - ) internal { - market.mintDirectSaleBatch{value: _value}( - address(token), _currencyAddress, _singleMintRequest(_tokenId, _price, _quantity, _proof) - ); - } - - function _setTokenAllowListConfig(uint256 _tokenId, bytes32 _root, uint256 _endTimestamp) internal { - market.setTokenAllowListConfigs(address(token), _singleAllowListConfigRequest(_tokenId, _root, _endTimestamp)); - } - - function _setTokenMintLimit(uint256 _tokenId, uint256 _limit) internal { - market.setTokenMintLimits(address(token), _singleTokenLimitRequest(_tokenId, _limit)); - } - - function _setTokenTxLimit(uint256 _tokenId, uint256 _limit) internal { - market.setTokenTxLimits(address(token), _singleTokenLimitRequest(_tokenId, _limit)); - } - - function _setSalePrice( - address _contractAddress, - uint256 _tokenId, - address _currencyAddress, - uint256 _price, - uint256 _quantity, - address payable[] memory _splitRecipients, - uint8[] memory _splitRatios - ) internal { - _setSalePriceWithExpiration( - _contractAddress, _tokenId, _currencyAddress, _price, _quantity, 0, _splitRecipients, _splitRatios - ); - } - - function _setSalePriceWithExpiration( - address _contractAddress, - uint256 _tokenId, - address _currencyAddress, - uint256 _price, - uint256 _quantity, - uint256 _expirationTime, - address payable[] memory _splitRecipients, - uint8[] memory _splitRatios - ) internal { - market.setSalePrices( - _contractAddress, - _currencyAddress, - _singleSalePriceRequest(_tokenId, _price, _quantity, _expirationTime), - _splitRecipients, - _splitRatios - ); - } - - function _buy( - address _contractAddress, - uint256 _tokenId, - address _seller, - address _currencyAddress, - uint256 _price, - uint256 _quantity, - uint256 _value - ) internal { - market.buyBatch{value: _value}( - _contractAddress, _seller, _currencyAddress, _singleBuyRequest(_tokenId, _price, _quantity) - ); - } - - function _singleDirectSaleRequest(uint256 _tokenId, uint256 _price, uint256 _startTime, uint256 _maxMints) - internal - pure - returns (IRareERC1155Listings.DirectSaleRequest[] memory) - { - IRareERC1155Listings.DirectSaleRequest[] memory requests = new IRareERC1155Listings.DirectSaleRequest[](1); - requests[0] = IRareERC1155Listings.DirectSaleRequest(_tokenId, _price, _startTime, _maxMints); - return requests; - } - - function _singleMintRequest(uint256 _tokenId, uint256 _price, uint256 _quantity, bytes32[] memory _proof) - internal - pure - returns (IRareERC1155Listings.MintRequest[] memory) - { - IRareERC1155Listings.MintRequest[] memory requests = new IRareERC1155Listings.MintRequest[](1); - requests[0] = IRareERC1155Listings.MintRequest(_tokenId, _price, _quantity, _proof); - return requests; - } - - function _singleAllowListConfigRequest(uint256 _tokenId, bytes32 _root, uint256 _endTimestamp) - internal - pure - returns (IRareERC1155Listings.AllowListConfigRequest[] memory) - { - IRareERC1155Listings.AllowListConfigRequest[] memory requests = - new IRareERC1155Listings.AllowListConfigRequest[](1); - requests[0] = IRareERC1155Listings.AllowListConfigRequest(_tokenId, _root, _endTimestamp); - return requests; - } - - function _singleTokenLimitRequest(uint256 _tokenId, uint256 _limit) - internal - pure - returns (IRareERC1155Listings.TokenLimitRequest[] memory) - { - IRareERC1155Listings.TokenLimitRequest[] memory requests = new IRareERC1155Listings.TokenLimitRequest[](1); - requests[0] = IRareERC1155Listings.TokenLimitRequest(_tokenId, _limit); - return requests; - } - - function _singleSalePriceRequest(uint256 _tokenId, uint256 _price, uint256 _quantity) - internal - pure - returns (IRareERC1155Listings.SalePriceRequest[] memory) - { - return _singleSalePriceRequest(_tokenId, _price, _quantity, 0); - } - - function _singleSalePriceRequest(uint256 _tokenId, uint256 _price, uint256 _quantity, uint256 _expirationTime) - internal - pure - returns (IRareERC1155Listings.SalePriceRequest[] memory) - { - IRareERC1155Listings.SalePriceRequest[] memory requests = new IRareERC1155Listings.SalePriceRequest[](1); - requests[0] = IRareERC1155Listings.SalePriceRequest(_tokenId, _price, _quantity, _expirationTime); - return requests; - } - - function _singleBuyRequest(uint256 _tokenId, uint256 _price, uint256 _quantity) - internal - pure - returns (IRareERC1155Listings.BuyRequest[] memory) - { - IRareERC1155Listings.BuyRequest[] memory requests = new IRareERC1155Listings.BuyRequest[](1); - requests[0] = IRareERC1155Listings.BuyRequest(_tokenId, _price, _quantity); - return requests; - } - - function _singleTokenIds(uint256 _tokenId) internal pure returns (uint256[] memory) { - uint256[] memory tokenIds = new uint256[](1); - tokenIds[0] = _tokenId; - return tokenIds; - } - - function _singleAmounts(uint256 _amount) internal pure returns (uint256[] memory) { - uint256[] memory amounts = new uint256[](1); - amounts[0] = _amount; - return amounts; - } - - function _mockApprovedCurrency(bool _approved) internal { - vm.mockCall( - approvedTokenRegistry, - abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(currency)), - abi.encode(_approved) - ); - } - - function _mockPrimaryPayout(uint256 _amount, address _seller) internal { - _mockMarketplaceFee(_amount, _seller); - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, _seller), - abi.encode(false) - ); - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector( - IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, address(token) - ), - abi.encode(15) - ); - } - - function _mockSecondaryPayout(uint256 _amount, address _seller) internal { - _mockSecondaryPayoutFor(address(token), tokenId, _amount, _seller); - } - - function _mockSecondaryPayoutFor(address _contractAddress, uint256 _tokenId, uint256 _amount, address _seller) - internal - { - _mockMarketplaceFee(_amount, _seller); - - address payable[] memory receivers = new address payable[](1); - uint256[] memory royalties = new uint256[](1); - receivers[0] = payable(royaltyReceiver); - royalties[0] = (_amount * 10) / 100; - - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, _contractAddress, _tokenId, _amount), - abi.encode(receivers, royalties) - ); - } - - function _mockMarketplaceFee(uint256 _amount, address _seller) internal { - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, _amount), - abi.encode((_amount * 3) / 100) - ); - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, _seller), - abi.encode(rewardAccumulator) - ); - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, _amount), - abi.encode((_amount * 1) / 100) - ); - } - - function _mockInconsistentMarketplaceFee(uint256 _amount, address _seller) internal { - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, _amount), - abi.encode((_amount * 3) / 100) - ); - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, _seller), - abi.encode(rewardAccumulator) - ); - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateMarketplacePayoutFee.selector, _amount), - abi.encode((_amount * 1) / 100) - ); - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, _amount), - abi.encode((_amount * 1) / 100) - ); - } -} diff --git a/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol b/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol new file mode 100644 index 0000000..7499ca9 --- /dev/null +++ b/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol @@ -0,0 +1,801 @@ +// SPDX-License-Identifier: AGPL-3.0-only +pragma solidity ^0.8.0; + +import "forge-std/Test.sol"; + +import {ERC20} from "openzeppelin-contracts/token/ERC20/ERC20.sol"; +import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; +import {IERC165} from "openzeppelin-contracts/utils/introspection/IERC165.sol"; +import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; + +import {IApprovedTokenRegistry} from "../../registry/interfaces/IApprovedTokenRegistry.sol"; +import {IMarketplaceSettings} from "../../marketplace/IMarketplaceSettings.sol"; +import {IStakingSettings} from "../../marketplace/IStakingSettings.sol"; +import {IRareStakingRegistry} from "../../staking/registry/IRareStakingRegistry.sol"; +import {Payments} from "../../payments/Payments.sol"; +import {RareERC1155} from "../../token/ERC1155/RareERC1155.sol"; +import {RareERC1155ContractFactory} from "../../token/ERC1155/RareERC1155ContractFactory.sol"; +import {ERC20ApprovalManager} from "../../v2/approver/ERC20/ERC20ApprovalManager.sol"; +import {ERC721ApprovalManager} from "../../v2/approver/ERC721/ERC721ApprovalManager.sol"; +import {ERC1155ApprovalManager} from "../../v2/approver/ERC1155/ERC1155ApprovalManager.sol"; +import {IRareERC1155MarketplaceTypes} from "../../marketplace/IRareERC1155MarketplaceTypes.sol"; +import {RareERC1155Marketplace} from "../../marketplace/RareERC1155Marketplace.sol"; +import {RareERC1155Settlement} from "../../marketplace/RareERC1155Settlement.sol"; +import {IRoyaltyEngineV1} from "royalty-registry/IRoyaltyEngineV1.sol"; + +contract CheckoutCurrency is ERC20 { + constructor() ERC20("Checkout Currency", "CCUR") { + _mint(msg.sender, 1_000_000_000 ether); + } +} + +contract CheckoutNoOpERC1155 is IERC1155 { + mapping(address => mapping(uint256 => uint256)) private balances; + mapping(address => mapping(address => bool)) private operatorApprovals; + + function supportsInterface(bytes4 _interfaceId) external pure override returns (bool) { + return _interfaceId == type(IERC165).interfaceId || _interfaceId == type(IERC1155).interfaceId; + } + + function setBalance(address _account, uint256 _tokenId, uint256 _amount) external { + balances[_account][_tokenId] = _amount; + } + + function balanceOf(address _account, uint256 _tokenId) external view override returns (uint256) { + return balances[_account][_tokenId]; + } + + function balanceOfBatch(address[] calldata _accounts, uint256[] calldata _ids) + external + view + override + returns (uint256[] memory) + { + uint256[] memory batchBalances = new uint256[](_accounts.length); + for (uint256 i = 0; i < _accounts.length; i++) { + batchBalances[i] = balances[_accounts[i]][_ids[i]]; + } + return batchBalances; + } + + function setApprovalForAll(address _operator, bool _approved) external override { + operatorApprovals[msg.sender][_operator] = _approved; + } + + function isApprovedForAll(address _account, address _operator) external view override returns (bool) { + return operatorApprovals[_account][_operator]; + } + + function safeTransferFrom(address, address, uint256, uint256, bytes calldata) external override {} + + function safeBatchTransferFrom(address, address, uint256[] calldata, uint256[] calldata, bytes calldata) + external + override + {} +} + +contract RareERC1155MarketplaceSettlementTest is Test { + RareERC1155Marketplace private marketplace; + RareERC1155Settlement private settlement; + RareERC1155 private token; + CheckoutCurrency private currency; + RareERC1155ContractFactory private tokenFactory; + ERC20ApprovalManager private erc20ApprovalManager; + ERC721ApprovalManager private erc721ApprovalManager; + ERC1155ApprovalManager private erc1155ApprovalManager; + + address private deployer = address(0x1000); + address private seller = address(0x2000); + address private sellerTwo = address(0x2500); + address private buyer = address(0x3000); + address private royaltyReceiver = address(0x4000); + address private networkBeneficiary = address(0x5000); + address private rewardAccumulator = address(0x6000); + + address private marketplaceSettings = address(0x7100); + address private stakingSettings = address(0x7200); + address private stakingRegistry = address(0x7300); + address private royaltyEngine = address(0x7400); + address private spaceOperatorRegistry = address(0x7500); + address private approvedTokenRegistry = address(0x7600); + + uint256 private tokenId; + + function setUp() public { + deal(deployer, 100 ether); + deal(seller, 100 ether); + deal(sellerTwo, 100 ether); + deal(buyer, 100 ether); + + vm.startPrank(deployer); + currency = new CheckoutCurrency(); + currency.transfer(buyer, 1_000_000 ether); + erc20ApprovalManager = new ERC20ApprovalManager(); + erc721ApprovalManager = new ERC721ApprovalManager(); + erc1155ApprovalManager = new ERC1155ApprovalManager(); + settlement = new RareERC1155Settlement(); + marketplace = RareERC1155Marketplace( + address( + new ERC1967Proxy( + address(new RareERC1155Marketplace()), _initData(address(new Payments()), address(settlement)) + ) + ) + ); + erc20ApprovalManager.grantOperatorRole(address(marketplace)); + erc1155ApprovalManager.grantOperatorRole(address(marketplace)); + + tokenFactory = new RareERC1155ContractFactory(); + tokenFactory.setDefaultMinter(address(marketplace)); + vm.stopPrank(); + + vm.prank(seller); + token = RareERC1155(tokenFactory.createRareERC1155Contract("Rare Editions", "RED", "ipfs://base/{id}.json")); + + vm.prank(seller); + tokenId = token.createToken("ipfs://token/1.json", 20, seller); + + vm.etch(marketplaceSettings, address(marketplace).code); + vm.etch(stakingSettings, address(marketplace).code); + vm.etch(stakingRegistry, address(marketplace).code); + vm.etch(royaltyEngine, address(marketplace).code); + vm.etch(spaceOperatorRegistry, address(marketplace).code); + vm.etch(approvedTokenRegistry, address(marketplace).code); + } + + function testBuyListingThroughSettlementModule() public { + uint256 price = 1 ether; + uint256 quantity = 2; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(quantity)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, quantity), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockSecondaryPayout(price * quantity, seller); + + vm.prank(buyer); + marketplace.buyBatch{value: _withFee(price * quantity)}( + address(token), seller, address(0), _singleBuyRequest(tokenId, price, quantity) + ); + + assertEq(token.balanceOf(buyer, tokenId), quantity); + assertEq(token.balanceOf(seller, tokenId), 0); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 0); + } + + function testAcceptOfferThroughSettlementModule() public { + uint256 price = 1 ether; + uint256 offerQuantity = 2; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(offerQuantity)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockMarketplaceFee(price * offerQuantity, seller); + vm.prank(buyer); + marketplace.makeOffer{value: _withFee(price * offerQuantity)}( + address(token), tokenId, address(0), price, offerQuantity, 0 + ); + + _mockSecondaryPayout(price, seller); + vm.prank(seller); + marketplace.acceptOffer( + address(token), tokenId, buyer, address(0), price, 1, _singleSplitRecipients(seller), _singleSplitRatios() + ); + + IRareERC1155MarketplaceTypes.Offer memory offer = + marketplace.getOffer(address(token), tokenId, buyer, address(0)); + assertEq(offer.quantity, 1); + assertEq(offer.marketplaceFeeRemaining, _fee(price)); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(seller, tokenId), 1); + } + + function testMintDirectSaleThroughSettlementModule() public { + uint256 price = 1 ether; + uint256 quantity = 2; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockPrimaryPayout(price * quantity, seller); + + vm.prank(buyer); + marketplace.mintDirectSaleBatch{value: _withFee(price * quantity)}( + address(token), address(0), _singleMintRequest(tokenId, price, quantity) + ); + + assertEq(token.balanceOf(buyer, tokenId), quantity); + assertEq(marketplace.getTokenMintsPerAddress(address(token), tokenId, buyer), 0); + } + + function testCheckoutFillsMixedDirectSaleAndListingAcrossCurrencies() public { + uint256 mintPrice = 1 ether; + uint256 listingPrice = 2 ether; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, mintPrice, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), mintPrice, seller); + + vm.prank(sellerTwo); + RareERC1155 otherToken = + RareERC1155(tokenFactory.createRareERC1155Contract("Other Editions", "OED", "ipfs://other/{id}.json")); + vm.prank(sellerTwo); + uint256 otherTokenId = otherToken.createToken("ipfs://other/1.json", 10, sellerTwo); + vm.prank(sellerTwo); + otherToken.mintBatchTo(sellerTwo, _singleTokenIds(otherTokenId), _singleAmounts(1)); + vm.prank(sellerTwo); + otherToken.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockApprovedCurrency(address(currency)); + vm.prank(sellerTwo); + marketplace.setSalePrices( + address(otherToken), + address(currency), + _singleSalePriceRequest(otherTokenId, listingPrice, 1), + _singleSplitRecipients(sellerTwo), + _singleSplitRatios() + ); + _mockSecondaryPayoutFor(address(otherToken), otherTokenId, listingPrice, sellerTwo); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), _withFee(listingPrice)); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, mintPrice, 1); + items[1] = + _listingCheckoutItem(address(otherToken), sellerTwo, address(currency), otherTokenId, listingPrice, 1); + + uint256 buyerCurrencyBefore = currency.balanceOf(buyer); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = + marketplace.checkout{value: _withFee(mintPrice)}(items); + + assertEq(summary.filledCount, 2); + assertEq(summary.skippedCount, 0); + assertEq(summary.ethSpent, _withFee(mintPrice)); + assertEq(summary.ethRefunded, 0); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(otherToken.balanceOf(buyer, otherTokenId), 1); + assertEq(otherToken.balanceOf(sellerTwo, otherTokenId), 0); + assertEq(currency.balanceOf(buyer), buyerCurrencyBefore - _withFee(listingPrice)); + assertEq(currency.balanceOf(address(marketplace)), 0); + assertEq(address(marketplace).balance, 0); + } + + function testCheckoutSkipsInvalidItemsAndRefundsUnusedETH() public { + uint256 mintPrice = 1 ether; + uint256 listingPrice = 2 ether; + uint256 refundAmount = 0.5 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, listingPrice, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, mintPrice, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), mintPrice, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, listingPrice + 1, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, mintPrice, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = + marketplace.checkout{value: _withFee(mintPrice) + refundAmount}(items); + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 1); + assertEq(summary.ethSpent, _withFee(mintPrice)); + assertEq(summary.ethRefunded, refundAmount); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); + assertEq(address(marketplace).balance, 0); + } + + function testCheckoutSkipsAdditionalValidationFailuresBeforeSuccessfulFill() public { + uint256 price = 1 ether; + uint256 expensivePrice = 20 ether; + + vm.startPrank(seller); + uint256 soldOutTokenId = token.createToken("ipfs://token/sold-out.json", 5, seller); + uint256 expiredTokenId = token.createToken("ipfs://token/expired.json", 5, seller); + uint256 expensiveTokenId = token.createToken("ipfs://token/expensive.json", 5, seller); + uint256 allowlistTokenId = token.createToken("ipfs://token/allowlist.json", 5, seller); + token.mintBatchTo( + seller, + _tokenIds(soldOutTokenId, expiredTokenId, expensiveTokenId), + _amounts(uint256(1), uint256(1), uint256(1)) + ); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(soldOutTokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.setSalePrices( + address(token), + address(0), + _singleExpiringSalePriceRequest(expiredTokenId, price, 1, block.timestamp + 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(expensiveTokenId, expensivePrice, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(allowlistTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.setTokenAllowListConfigs( + address(token), + _singleAllowListConfigRequest( + allowlistTokenId, keccak256(abi.encodePacked(address(0xdead))), block.timestamp + 1 days + ) + ); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + + _mockMarketplaceFee(expensivePrice, seller); + _mockPrimaryPayoutFor(address(token), price, seller); + + vm.warp(block.timestamp + 2); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](5); + items[0] = _listingCheckoutItem(address(token), seller, address(0), soldOutTokenId, price, 2); + items[1] = _listingCheckoutItem(address(token), seller, address(0), expiredTokenId, price, 1); + items[2] = _listingCheckoutItem(address(token), seller, address(0), expensiveTokenId, expensivePrice, 1); + items[3] = _directSaleCheckoutItem(address(token), seller, address(0), allowlistTokenId, price, 1); + items[4] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = + marketplace.checkout{value: _withFee(price)}(items); + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 4); + assertEq(summary.ethSpent, _withFee(price)); + assertEq(summary.ethRefunded, 0); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(buyer, soldOutTokenId), 0); + assertEq(token.balanceOf(buyer, expiredTokenId), 0); + assertEq(token.balanceOf(buyer, expensiveTokenId), 0); + assertEq(token.balanceOf(buyer, allowlistTokenId), 0); + assertEq(token.balanceOf(seller, soldOutTokenId), 1); + assertEq(token.balanceOf(seller, expiredTokenId), 1); + assertEq(token.balanceOf(seller, expensiveTokenId), 1); + } + + function testCheckoutSkipsInsufficientERC20AllowanceWithoutPullingFunds() public { + uint256 mintPrice = 1 ether; + uint256 listingPrice = 2 ether; + + vm.prank(seller); + uint256 listedTokenId = token.createToken("ipfs://token/2.json", 5, seller); + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(listedTokenId), _singleAmounts(1)); + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockApprovedCurrency(address(currency)); + _mockMarketplaceFee(listingPrice, seller); + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(currency), + _singleSalePriceRequest(listedTokenId, listingPrice, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, mintPrice, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), mintPrice, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _listingCheckoutItem(address(token), seller, address(currency), listedTokenId, listingPrice, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, mintPrice, 1); + + uint256 buyerCurrencyBefore = currency.balanceOf(buyer); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = + marketplace.checkout{value: _withFee(mintPrice)}(items); + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 1); + assertEq(summary.ethSpent, _withFee(mintPrice)); + assertEq(currency.balanceOf(buyer), buyerCurrencyBefore); + assertEq(token.balanceOf(buyer, listedTokenId), 0); + assertEq(token.balanceOf(seller, listedTokenId), 1); + assertEq(marketplace.getSalePrice(address(token), listedTokenId, seller).quantity, 1); + assertEq(token.balanceOf(buyer, tokenId), 1); + } + + function testCheckoutRevertsWhenEveryItemIsSkipped() public { + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _unsupportedCheckoutItem(); + + vm.prank(buyer); + vm.expectRevert(IRareERC1155MarketplaceTypes.CheckoutRequiresSuccessfulFill.selector); + marketplace.checkout(items); + } + + function testCheckoutRevertsOnNonSkippableTransferFailure() public { + CheckoutNoOpERC1155 brokenToken = new CheckoutNoOpERC1155(); + uint256 brokenTokenId = 88; + uint256 price = 1 ether; + + brokenToken.setBalance(seller, brokenTokenId, 1); + vm.prank(seller); + brokenToken.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(brokenToken), + address(0), + _singleSalePriceRequest(brokenTokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockMarketplaceFee(price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _listingCheckoutItem(address(brokenToken), seller, address(0), brokenTokenId, price, 1); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InvalidERC1155Transfer.selector, + address(brokenToken), + brokenTokenId, + seller, + buyer, + 1 + ) + ); + marketplace.checkout{value: _withFee(price)}(items); + + assertEq(brokenToken.balanceOf(seller, brokenTokenId), 1); + assertEq(brokenToken.balanceOf(buyer, brokenTokenId), 0); + assertEq(marketplace.getSalePrice(address(brokenToken), brokenTokenId, seller).quantity, 1); + } + + function testDirectCallsToSettlementRevert() public { + IRareERC1155MarketplaceTypes.BuyRequest[] memory requests = new IRareERC1155MarketplaceTypes.BuyRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.BuyRequest(tokenId, 1 ether, 1); + + vm.expectRevert(IRareERC1155MarketplaceTypes.DirectSettlementCallUnsupported.selector); + settlement.buyBatch(address(token), seller, address(0), requests); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](0); + + vm.expectRevert(IRareERC1155MarketplaceTypes.DirectSettlementCallUnsupported.selector); + settlement.checkout(items); + } + + function testOwnerCanUpdateSettlementModule() public { + vm.prank(deployer); + RareERC1155Settlement newSettlement = new RareERC1155Settlement(); + + vm.prank(deployer); + marketplace.setSettlement(address(newSettlement)); + + assertEq(marketplace.getSettlement(), address(newSettlement)); + } + + function _initData(address _payments, address _settlement) private view returns (bytes memory) { + return abi.encodeWithSelector( + RareERC1155Marketplace.initialize.selector, + networkBeneficiary, + marketplaceSettings, + spaceOperatorRegistry, + royaltyEngine, + _payments, + approvedTokenRegistry, + stakingSettings, + stakingRegistry, + address(erc20ApprovalManager), + address(erc721ApprovalManager), + address(erc1155ApprovalManager), + _settlement + ); + } + + function _singleSalePriceRequest(uint256 _tokenId, uint256 _price, uint256 _quantity) + private + pure + returns (IRareERC1155MarketplaceTypes.SalePriceRequest[] memory) + { + IRareERC1155MarketplaceTypes.SalePriceRequest[] memory requests = + new IRareERC1155MarketplaceTypes.SalePriceRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.SalePriceRequest(_tokenId, _price, _quantity, 0); + return requests; + } + + function _singleExpiringSalePriceRequest( + uint256 _tokenId, + uint256 _price, + uint256 _quantity, + uint256 _expirationTime + ) private pure returns (IRareERC1155MarketplaceTypes.SalePriceRequest[] memory) { + IRareERC1155MarketplaceTypes.SalePriceRequest[] memory requests = + new IRareERC1155MarketplaceTypes.SalePriceRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.SalePriceRequest(_tokenId, _price, _quantity, _expirationTime); + return requests; + } + + function _singleDirectSaleRequest(uint256 _tokenId, uint256 _price, uint256 _startTime, uint256 _maxMints) + private + pure + returns (IRareERC1155MarketplaceTypes.DirectSaleRequest[] memory) + { + IRareERC1155MarketplaceTypes.DirectSaleRequest[] memory requests = + new IRareERC1155MarketplaceTypes.DirectSaleRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.DirectSaleRequest(_tokenId, _price, _startTime, _maxMints); + return requests; + } + + function _singleAllowListConfigRequest(uint256 _tokenId, bytes32 _root, uint256 _endTimestamp) + private + pure + returns (IRareERC1155MarketplaceTypes.AllowListConfigRequest[] memory) + { + IRareERC1155MarketplaceTypes.AllowListConfigRequest[] memory requests = + new IRareERC1155MarketplaceTypes.AllowListConfigRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.AllowListConfigRequest(_tokenId, _root, _endTimestamp); + return requests; + } + + function _singleMintRequest(uint256 _tokenId, uint256 _price, uint256 _quantity) + private + pure + returns (IRareERC1155MarketplaceTypes.MintRequest[] memory) + { + bytes32[] memory proof = new bytes32[](0); + IRareERC1155MarketplaceTypes.MintRequest[] memory requests = new IRareERC1155MarketplaceTypes.MintRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.MintRequest(_tokenId, _price, _quantity, proof); + return requests; + } + + function _singleBuyRequest(uint256 _tokenId, uint256 _price, uint256 _quantity) + private + pure + returns (IRareERC1155MarketplaceTypes.BuyRequest[] memory) + { + IRareERC1155MarketplaceTypes.BuyRequest[] memory requests = new IRareERC1155MarketplaceTypes.BuyRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.BuyRequest(_tokenId, _price, _quantity); + return requests; + } + + function _directSaleCheckoutItem( + address _contractAddress, + address _seller, + address _currencyAddress, + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.DIRECT_SALE_MINT), + contractAddress: _contractAddress, + seller: _seller, + currencyAddress: _currencyAddress, + tokenId: _tokenId, + price: _price, + quantity: _quantity, + proof: new bytes32[](0) + }); + } + + function _listingCheckoutItem( + address _contractAddress, + address _seller, + address _currencyAddress, + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.LISTING_BUY), + contractAddress: _contractAddress, + seller: _seller, + currencyAddress: _currencyAddress, + tokenId: _tokenId, + price: _price, + quantity: _quantity, + proof: new bytes32[](0) + }); + } + + function _unsupportedCheckoutItem() private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: type(uint8).max, + contractAddress: address(0), + seller: address(0), + currencyAddress: address(0), + tokenId: 0, + price: 0, + quantity: 0, + proof: new bytes32[](0) + }); + } + + function _singleSplitRecipients(address _recipient) private pure returns (address payable[] memory recipients) { + recipients = new address payable[](1); + recipients[0] = payable(_recipient); + } + + function _singleSplitRatios() private pure returns (uint8[] memory ratios) { + ratios = new uint8[](1); + ratios[0] = 100; + } + + function _singleTokenIds(uint256 _tokenId) private pure returns (uint256[] memory tokenIds) { + tokenIds = new uint256[](1); + tokenIds[0] = _tokenId; + } + + function _tokenIds(uint256 _firstTokenId, uint256 _secondTokenId, uint256 _thirdTokenId) + private + pure + returns (uint256[] memory tokenIds) + { + tokenIds = new uint256[](3); + tokenIds[0] = _firstTokenId; + tokenIds[1] = _secondTokenId; + tokenIds[2] = _thirdTokenId; + } + + function _singleAmounts(uint256 _amount) private pure returns (uint256[] memory amounts) { + amounts = new uint256[](1); + amounts[0] = _amount; + } + + function _amounts(uint256 _firstAmount, uint256 _secondAmount, uint256 _thirdAmount) + private + pure + returns (uint256[] memory amounts) + { + amounts = new uint256[](3); + amounts[0] = _firstAmount; + amounts[1] = _secondAmount; + amounts[2] = _thirdAmount; + } + + function _mockSecondaryPayout(uint256 _amount, address _seller) private { + _mockSecondaryPayoutFor(address(token), tokenId, _amount, _seller); + } + + function _mockSecondaryPayoutFor(address _contractAddress, uint256 _tokenId, uint256 _amount, address _seller) + private + { + _mockMarketplaceFee(_amount, _seller); + + address payable[] memory receivers = new address payable[](1); + uint256[] memory royalties = new uint256[](1); + receivers[0] = payable(royaltyReceiver); + royalties[0] = (_amount * 10) / 100; + + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, _contractAddress, _tokenId, _amount), + abi.encode(receivers, royalties) + ); + } + + function _mockApprovedCurrency(address _currencyAddress) private { + vm.mockCall( + approvedTokenRegistry, + abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, _currencyAddress), + abi.encode(true) + ); + } + + function _mockMarketplaceFee(uint256 _amount, address _seller) private { + _mockApprovedCurrency(address(0)); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, _amount), + abi.encode(_fee(_amount)) + ); + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, _seller), + abi.encode(rewardAccumulator) + ); + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, _amount), + abi.encode((_amount * 1) / 100) + ); + } + + function _mockPrimaryPayout(uint256 _amount, address _seller) private { + _mockPrimaryPayoutFor(address(token), _amount, _seller); + } + + function _mockPrimaryPayoutFor(address _contractAddress, uint256 _amount, address _seller) private { + _mockMarketplaceFee(_amount, _seller); + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSignature("isApprovedSpaceOperator(address)", _seller), + abi.encode(false) + ); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSignature("getERC721ContractPrimarySaleFeePercentage(address)", _contractAddress), + abi.encode(uint256(10)) + ); + } + + function _withFee(uint256 _amount) private pure returns (uint256) { + return _amount + _fee(_amount); + } + + function _fee(uint256 _amount) private pure returns (uint256) { + return (_amount * 3) / 100; + } +} From 532fd2aa3d1a3fd96a1d8aacdd13b52fec114f6d Mon Sep 17 00:00:00 2001 From: Keegan Date: Sun, 31 May 2026 15:40:16 -0400 Subject: [PATCH 10/17] Address ERC1155 checkout review feedback --- .../IRareERC1155MarketplaceTypes.sol | 3 +- .../RareERC1155MarketplaceStorage.sol | 8 +- src/marketplace/RareERC1155Settlement.sol | 361 +++++++----- .../RareERC1155MarketplaceGas.t.sol | 534 ++++++++++++++++++ .../RareERC1155MarketplaceSettlement.t.sol | 178 ++++++ 5 files changed, 943 insertions(+), 141 deletions(-) create mode 100644 src/test/marketplace/RareERC1155MarketplaceGas.t.sol diff --git a/src/marketplace/IRareERC1155MarketplaceTypes.sol b/src/marketplace/IRareERC1155MarketplaceTypes.sol index 8ecc58a..2c201c3 100644 --- a/src/marketplace/IRareERC1155MarketplaceTypes.sol +++ b/src/marketplace/IRareERC1155MarketplaceTypes.sol @@ -93,7 +93,8 @@ interface IRareERC1155MarketplaceTypes { } /// @notice Buyer cart item for primary mint sales and secondary fixed-price listings. - /// @dev `itemKind` uses `CheckoutItemKind` values and is kept as uint8 so unknown future kinds can be skipped. + /// @dev `seller` is only used for `LISTING_BUY`; `DIRECT_SALE_MINT` resolves the seller from its sale config. + /// `itemKind` uses `CheckoutItemKind` values and is kept as uint8 so unknown future kinds can be skipped. struct CheckoutItem { uint8 itemKind; address contractAddress; diff --git a/src/marketplace/RareERC1155MarketplaceStorage.sol b/src/marketplace/RareERC1155MarketplaceStorage.sol index 87447af..e5090f5 100644 --- a/src/marketplace/RareERC1155MarketplaceStorage.sol +++ b/src/marketplace/RareERC1155MarketplaceStorage.sol @@ -15,7 +15,8 @@ import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; /// @dev This is not a deployable marketplace. `RareERC1155Marketplace` owns this storage behind the proxy, and /// `RareERC1155Settlement` uses the same namespace when executed through delegatecall from the marketplace. abstract contract RareERC1155MarketplaceStorage is IRareERC1155MarketplaceTypes { - uint256 public constant MAX_BATCH_SIZE = 100; + uint256 public constant MAX_BATCH_SIZE = 75; + uint256 public constant MAX_CHECKOUT_SIZE = 50; bytes32 internal constant NETWORK_BENEFICIARY_FIELD = "NETWORK_BENEFICIARY"; bytes32 internal constant MARKETPLACE_SETTINGS_FIELD = "MARKETPLACE_SETTINGS"; @@ -117,6 +118,11 @@ abstract contract RareERC1155MarketplaceStorage is IRareERC1155MarketplaceTypes if (_length > MAX_BATCH_SIZE) revert BatchSizeExceeded(_length, MAX_BATCH_SIZE); } + function _validateCheckoutSize(uint256 _length) internal pure { + if (_length == 0) revert EmptyBatch(); + if (_length > MAX_CHECKOUT_SIZE) revert BatchSizeExceeded(_length, MAX_CHECKOUT_SIZE); + } + function _validateStrictAscending(uint256 _index, uint256 _previousTokenId, uint256 _tokenId) internal pure { if (_tokenId <= _previousTokenId) { revert TokenIdsNotStrictlyAscending(_index, _previousTokenId, _tokenId); diff --git a/src/marketplace/RareERC1155Settlement.sol b/src/marketplace/RareERC1155Settlement.sol index 49840f2..f245ad1 100644 --- a/src/marketplace/RareERC1155Settlement.sol +++ b/src/marketplace/RareERC1155Settlement.sol @@ -171,7 +171,8 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace uint256 buyerTotal = 0; for (uint256 i = 0; i < requestCount;) { - payoutContexts[i] = _validateSecondaryBuyRequest(_contractAddress, _seller, _currencyAddress, _requests[i]); + payoutContexts[i] = + _validateSecondaryBuyRequest($, _contractAddress, _seller, _currencyAddress, _requests[i]); tokenIds[i] = _requests[i].tokenId; amounts[i] = _requests[i].quantity; @@ -262,7 +263,7 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace onlyDelegateCall returns (CheckoutSummary memory summary) { - _validateBatchSize(_items.length); + _validateCheckoutSize(_items.length); uint256 remainingEth = msg.value; for (uint256 i = 0; i < _items.length;) { @@ -368,32 +369,64 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace return (false, CurrencyNotApproved.selector, 0, _remainingEth); } - (bool valid, bytes4 skipReason, CheckoutFillContext memory context) = _validateCheckoutDirectSaleMint($, _item); + (bool valid, bytes4 skipReason, PrimaryPayoutContext memory payoutContext) = _checkMintDirectSaleRequest( + $, + _item.contractAddress, + _item.currencyAddress, + msg.sender, + _item.tokenId, + _item.price, + _item.quantity, + _item.proof, + NotContractOwner.selector + ); if (!valid) { return (false, skipReason, 0, _remainingEth); } + CheckoutFillContext memory context = CheckoutFillContext({ + seller: payoutContext.seller, + grossAmount: payoutContext.grossAmount, + marketplaceFee: 0, + splitRecipients: payoutContext.splitRecipients, + splitRatios: payoutContext.splitRatios + }); + if (context.grossAmount != 0) { + context.marketplaceFee = $.marketConfig.marketplaceSettings.calculateMarketplaceFee(context.grossAmount); + } + totalPaid = context.grossAmount + context.marketplaceFee; reason = _validateCheckoutPayment($.marketConfig, _item.currencyAddress, totalPaid, _remainingEth); if (reason != bytes4(0)) { return (false, reason, 0, _remainingEth); } - if (_item.currencyAddress == address(0)) { - newRemainingEth = _remainingEth - totalPaid; - } else { - _collectCheckoutErc20($.marketConfig, _item.currencyAddress, totalPaid); - } - - if ($.tokenMintLimit[_item.contractAddress][_item.tokenId] > 0) { + bool mintLimitEnabled = $.tokenMintLimit[_item.contractAddress][_item.tokenId] > 0; + bool txLimitEnabled = $.tokenTxLimit[_item.contractAddress][_item.tokenId] > 0; + if (mintLimitEnabled) { $.tokenMintsPerAddress[_item.contractAddress][_item.tokenId][msg.sender] += _item.quantity; } - if ($.tokenTxLimit[_item.contractAddress][_item.tokenId] > 0) { + if (txLimitEnabled) { $.tokenTxsPerAddress[_item.contractAddress][_item.tokenId][msg.sender] += 1; } - IRareERC1155(_item.contractAddress) - .mintBatchTo(msg.sender, _singleUintArray(_item.tokenId), _singleUintArray(_item.quantity)); + try IRareERC1155(_item.contractAddress) + .mintBatchTo(msg.sender, _singleUintArray(_item.tokenId), _singleUintArray(_item.quantity)) {} + catch (bytes memory revertData) { + if (mintLimitEnabled) { + $.tokenMintsPerAddress[_item.contractAddress][_item.tokenId][msg.sender] -= _item.quantity; + } + if (txLimitEnabled) { + $.tokenTxsPerAddress[_item.contractAddress][_item.tokenId][msg.sender] -= 1; + } + return (false, _revertSelector(revertData), 0, _remainingEth); + } + + if (_item.currencyAddress == address(0)) { + newRemainingEth = _remainingEth - totalPaid; + } else { + _collectCheckoutErc20($.marketConfig, _item.currencyAddress, totalPaid); + } if (context.grossAmount != 0) { $.marketConfig @@ -504,57 +537,6 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace return (true, bytes4(0), totalPaid, newRemainingEth); } - function _validateCheckoutDirectSaleMint(MarketplaceStorage storage $, CheckoutItem calldata _item) - internal - view - returns (bool valid, bytes4 reason, CheckoutFillContext memory context) - { - DirectSaleConfig memory directSaleConfig = $.directSaleConfigs[_item.contractAddress][_item.tokenId]; - if (directSaleConfig.seller == address(0)) return (false, DirectSaleNotConfigured.selector, context); - if (_item.seller != directSaleConfig.seller) return (false, CheckoutSellerMismatch.selector, context); - if (!_checkoutIsContractOwner(_item.contractAddress, directSaleConfig.seller)) { - return (false, NotContractOwner.selector, context); - } - if (!_checkoutAllowlisted(_item.contractAddress, _item.tokenId, msg.sender, _item.proof)) { - return (false, AddressNotAllowlisted.selector, context); - } - if (_item.quantity == 0) return (false, QuantityCannotBeZero.selector, context); - - uint256 mintLimit = $.tokenMintLimit[_item.contractAddress][_item.tokenId]; - uint256 currentMints = $.tokenMintsPerAddress[_item.contractAddress][_item.tokenId][msg.sender]; - if (mintLimit != 0 && currentMints + _item.quantity > mintLimit) { - return (false, MintLimitExceeded.selector, context); - } - - uint256 txLimit = $.tokenTxLimit[_item.contractAddress][_item.tokenId]; - uint256 currentTxs = $.tokenTxsPerAddress[_item.contractAddress][_item.tokenId][msg.sender]; - if (txLimit != 0 && currentTxs + 1 > txLimit) { - return (false, TransactionLimitExceeded.selector, context); - } - - if (directSaleConfig.maxMints != 0 && _item.quantity > directSaleConfig.maxMints) { - return (false, MaxMintExceeded.selector, context); - } - if (directSaleConfig.startTime > block.timestamp) return (false, SaleNotStarted.selector, context); - if (_item.price != directSaleConfig.price) return (false, PriceMismatch.selector, context); - if (directSaleConfig.currencyAddress != _item.currencyAddress) { - return (false, CurrencyMismatch.selector, context); - } - - context = CheckoutFillContext({ - seller: directSaleConfig.seller, - grossAmount: _item.quantity * _item.price, - marketplaceFee: 0, - splitRecipients: directSaleConfig.splitRecipients, - splitRatios: directSaleConfig.splitRatios - }); - if (context.grossAmount != 0) { - context.marketplaceFee = $.marketConfig.marketplaceSettings.calculateMarketplaceFee(context.grossAmount); - } - - return (true, bytes4(0), context); - } - function _validateCheckoutListingBuy(MarketplaceStorage storage $, CheckoutItem calldata _item) internal view @@ -564,16 +546,12 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace if (!_checkoutValidErc1155Contract(_item.contractAddress)) { return (false, InvalidERC1155Contract.selector, context); } - if (_item.quantity == 0) return (false, QuantityCannotBeZero.selector, context); - SalePrice storage salePrice = $.salePrices[_item.contractAddress][_item.tokenId][_item.seller]; - if (salePrice.quantity == 0) return (false, SalePriceDoesNotExist.selector, context); - if (salePrice.expirationTime != 0 && salePrice.expirationTime <= block.timestamp) { - return (false, SalePriceExpired.selector, context); - } - if (salePrice.currencyAddress != _item.currencyAddress) return (false, CurrencyMismatch.selector, context); - if (salePrice.price != _item.price) return (false, PriceMismatch.selector, context); - if (salePrice.quantity < _item.quantity) return (false, QuantityExceedsSalePriceQuantity.selector, context); + SecondaryPayoutContext memory payoutContext; + (valid, reason, payoutContext) = _checkSecondaryBuyRequest( + $, _item.contractAddress, _item.seller, _item.currencyAddress, _item.tokenId, _item.price, _item.quantity + ); + if (!valid) return (false, reason, context); IERC1155 erc1155 = IERC1155(_item.contractAddress); try erc1155.isApprovedForAll(_item.seller, address($.erc1155ApprovalManager)) returns (bool isApproved) { @@ -590,10 +568,10 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace context = CheckoutFillContext({ seller: _item.seller, - grossAmount: _item.quantity * _item.price, - marketplaceFee: $.marketConfig.marketplaceSettings.calculateMarketplaceFee(_item.quantity * _item.price), - splitRecipients: salePrice.splitRecipients, - splitRatios: salePrice.splitRatios + grossAmount: payoutContext.grossAmount, + marketplaceFee: $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContext.grossAmount), + splitRecipients: payoutContext.splitRecipients, + splitRatios: payoutContext.splitRatios }); return (true, bytes4(0), context); @@ -661,18 +639,24 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace && ERC165Checker.supportsInterface(_contractAddress, type(IERC1155).interfaceId); } - function _checkoutIsContractOwner(address _contractAddress, address _account) internal view returns (bool) { + function _checkContractOwner(address _contractAddress, address _account) + internal + view + returns (bool readable, bool isOwner) + { (bool success, bytes memory data) = _contractAddress.staticcall(abi.encodeWithSignature("owner()")); - return success && data.length >= 32 && abi.decode(data, (address)) == _account; + if (!success || data.length < 32) return (false, false); + return (true, abi.decode(data, (address)) == _account); } - function _checkoutAllowlisted( + function _checkTokenAllowList( + MarketplaceStorage storage $, address _contractAddress, uint256 _tokenId, address _account, bytes32[] calldata _proof ) internal view returns (bool) { - AllowListConfig memory allowListConfig = _marketplaceStorage().tokenAllowlistRoots[_contractAddress][_tokenId]; + AllowListConfig memory allowListConfig = $.tokenAllowlistRoots[_contractAddress][_tokenId]; if (allowListConfig.root == bytes32(0) || block.timestamp >= allowListConfig.endTimestamp) return true; return _verifyProof(keccak256(abi.encodePacked(_account)), allowListConfig.root, _proof); } @@ -682,6 +666,14 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace values[0] = _value; } + function _revertSelector(bytes memory _revertData) internal pure returns (bytes4 selector) { + if (_revertData.length < 4) return bytes4(0); + + assembly { + selector := mload(add(_revertData, 32)) + } + } + function _validateMintDirectSaleRequest( address _contractAddress, address _currencyAddress, @@ -689,76 +681,181 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace MintRequest calldata _request ) internal view returns (PrimaryPayoutContext memory payoutContext) { MarketplaceStorage storage $ = _marketplaceStorage(); - uint256 tokenId = _request.tokenId; - uint256 quantity = _request.quantity; - DirectSaleConfig memory directSaleConfig = $.directSaleConfigs[_contractAddress][tokenId]; + (bool valid, bytes4 reason, PrimaryPayoutContext memory checkedContext) = _checkMintDirectSaleRequest( + $, + _contractAddress, + _currencyAddress, + _buyer, + _request.tokenId, + _request.price, + _request.quantity, + _request.proof, + ContractHasNoOwner.selector + ); + if (!valid) _revertMintDirectSaleRequest(reason, $, _contractAddress, _currencyAddress, _buyer, _request); + return checkedContext; + } + + function _validateSecondaryBuyRequest( + MarketplaceStorage storage $, + address _contractAddress, + address _seller, + address _currencyAddress, + BuyRequest calldata _request + ) internal view returns (SecondaryPayoutContext memory payoutContext) { + (bool valid, bytes4 reason, SecondaryPayoutContext memory checkedContext) = _checkSecondaryBuyRequest( + $, _contractAddress, _seller, _currencyAddress, _request.tokenId, _request.price, _request.quantity + ); + if (!valid) _revertSecondaryBuyRequest(reason, $, _contractAddress, _seller, _currencyAddress, _request); + return checkedContext; + } + + function _checkMintDirectSaleRequest( + MarketplaceStorage storage $, + address _contractAddress, + address _currencyAddress, + address _buyer, + uint256 _tokenId, + uint256 _price, + uint256 _quantity, + bytes32[] calldata _proof, + bytes4 _ownerLookupFailureReason + ) internal view returns (bool valid, bytes4 reason, PrimaryPayoutContext memory payoutContext) { + DirectSaleConfig memory directSaleConfig = $.directSaleConfigs[_contractAddress][_tokenId]; + payoutContext.tokenId = _tokenId; + payoutContext.seller = directSaleConfig.seller; + + if (directSaleConfig.seller == address(0)) return (false, DirectSaleNotConfigured.selector, payoutContext); - if (directSaleConfig.seller == address(0)) revert DirectSaleNotConfigured(_contractAddress, tokenId); - if (!_isContractOwner(_contractAddress, directSaleConfig.seller)) { - revert NotContractOwner(_contractAddress, directSaleConfig.seller); + (bool ownerReadable, bool isOwner) = _checkContractOwner(_contractAddress, directSaleConfig.seller); + if (!ownerReadable) return (false, _ownerLookupFailureReason, payoutContext); + if (!isOwner) return (false, NotContractOwner.selector, payoutContext); + if (!_checkTokenAllowList($, _contractAddress, _tokenId, _buyer, _proof)) { + return (false, AddressNotAllowlisted.selector, payoutContext); } - _enforceTokenAllowList(_contractAddress, tokenId, _buyer, _request.proof); - if (quantity == 0) revert QuantityCannotBeZero(); + if (_quantity == 0) return (false, QuantityCannotBeZero.selector, payoutContext); - uint256 mintLimit = $.tokenMintLimit[_contractAddress][tokenId]; - uint256 currentMints = $.tokenMintsPerAddress[_contractAddress][tokenId][_buyer]; - if (mintLimit != 0 && currentMints + quantity > mintLimit) { - revert MintLimitExceeded(_contractAddress, tokenId, _buyer, quantity, currentMints, mintLimit); + uint256 mintLimit = $.tokenMintLimit[_contractAddress][_tokenId]; + uint256 currentMints = $.tokenMintsPerAddress[_contractAddress][_tokenId][_buyer]; + if (mintLimit != 0 && currentMints + _quantity > mintLimit) { + return (false, MintLimitExceeded.selector, payoutContext); } - uint256 txLimit = $.tokenTxLimit[_contractAddress][tokenId]; - uint256 currentTxs = $.tokenTxsPerAddress[_contractAddress][tokenId][_buyer]; + uint256 txLimit = $.tokenTxLimit[_contractAddress][_tokenId]; + uint256 currentTxs = $.tokenTxsPerAddress[_contractAddress][_tokenId][_buyer]; if (txLimit != 0 && currentTxs + 1 > txLimit) { - revert TransactionLimitExceeded(_contractAddress, tokenId, _buyer, currentTxs, txLimit); + return (false, TransactionLimitExceeded.selector, payoutContext); } - if (directSaleConfig.maxMints != 0 && quantity > directSaleConfig.maxMints) { - revert MaxMintExceeded(quantity, directSaleConfig.maxMints); + if (directSaleConfig.maxMints != 0 && _quantity > directSaleConfig.maxMints) { + return (false, MaxMintExceeded.selector, payoutContext); } - if (directSaleConfig.startTime > block.timestamp) revert SaleNotStarted(directSaleConfig.startTime); - if (_request.price != directSaleConfig.price) revert PriceMismatch(_request.price, directSaleConfig.price); + if (directSaleConfig.startTime > block.timestamp) return (false, SaleNotStarted.selector, payoutContext); + if (_price != directSaleConfig.price) return (false, PriceMismatch.selector, payoutContext); if (directSaleConfig.currencyAddress != _currencyAddress) { + return (false, CurrencyMismatch.selector, payoutContext); + } + + payoutContext.grossAmount = _quantity * _price; + payoutContext.splitRecipients = directSaleConfig.splitRecipients; + payoutContext.splitRatios = directSaleConfig.splitRatios; + + return (true, bytes4(0), payoutContext); + } + + function _checkSecondaryBuyRequest( + MarketplaceStorage storage $, + address _contractAddress, + address _seller, + address _currencyAddress, + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) internal view returns (bool valid, bytes4 reason, SecondaryPayoutContext memory payoutContext) { + payoutContext.tokenId = _tokenId; + if (_quantity == 0) return (false, QuantityCannotBeZero.selector, payoutContext); + + SalePrice storage salePrice = $.salePrices[_contractAddress][_tokenId][_seller]; + if (salePrice.quantity == 0) return (false, SalePriceDoesNotExist.selector, payoutContext); + if (salePrice.expirationTime != 0 && salePrice.expirationTime <= block.timestamp) { + return (false, SalePriceExpired.selector, payoutContext); + } + if (salePrice.currencyAddress != _currencyAddress) return (false, CurrencyMismatch.selector, payoutContext); + if (salePrice.price != _price) return (false, PriceMismatch.selector, payoutContext); + if (salePrice.quantity < _quantity) { + return (false, QuantityExceedsSalePriceQuantity.selector, payoutContext); + } + + payoutContext.grossAmount = _quantity * _price; + payoutContext.splitRecipients = salePrice.splitRecipients; + payoutContext.splitRatios = salePrice.splitRatios; + + return (true, bytes4(0), payoutContext); + } + + function _revertMintDirectSaleRequest( + bytes4 _reason, + MarketplaceStorage storage $, + address _contractAddress, + address _currencyAddress, + address _buyer, + MintRequest calldata _request + ) internal view { + uint256 tokenId = _request.tokenId; + uint256 quantity = _request.quantity; + DirectSaleConfig storage directSaleConfig = $.directSaleConfigs[_contractAddress][tokenId]; + + if (_reason == DirectSaleNotConfigured.selector) revert DirectSaleNotConfigured(_contractAddress, tokenId); + if (_reason == ContractHasNoOwner.selector) revert ContractHasNoOwner(_contractAddress); + if (_reason == NotContractOwner.selector) revert NotContractOwner(_contractAddress, directSaleConfig.seller); + if (_reason == AddressNotAllowlisted.selector) revert AddressNotAllowlisted(_buyer); + if (_reason == QuantityCannotBeZero.selector) revert QuantityCannotBeZero(); + if (_reason == MintLimitExceeded.selector) { + uint256 mintLimit = $.tokenMintLimit[_contractAddress][tokenId]; + uint256 currentMints = $.tokenMintsPerAddress[_contractAddress][tokenId][_buyer]; + revert MintLimitExceeded(_contractAddress, tokenId, _buyer, quantity, currentMints, mintLimit); + } + if (_reason == TransactionLimitExceeded.selector) { + uint256 txLimit = $.tokenTxLimit[_contractAddress][tokenId]; + uint256 currentTxs = $.tokenTxsPerAddress[_contractAddress][tokenId][_buyer]; + revert TransactionLimitExceeded(_contractAddress, tokenId, _buyer, currentTxs, txLimit); + } + if (_reason == MaxMintExceeded.selector) revert MaxMintExceeded(quantity, directSaleConfig.maxMints); + if (_reason == SaleNotStarted.selector) revert SaleNotStarted(directSaleConfig.startTime); + if (_reason == PriceMismatch.selector) revert PriceMismatch(_request.price, directSaleConfig.price); + if (_reason == CurrencyMismatch.selector) { revert CurrencyMismatch(_currencyAddress, directSaleConfig.currencyAddress); } - payoutContext = PrimaryPayoutContext({ - tokenId: tokenId, - grossAmount: quantity * _request.price, - marketplaceFee: 0, - seller: directSaleConfig.seller, - splitRecipients: directSaleConfig.splitRecipients, - splitRatios: directSaleConfig.splitRatios - }); + revert(); } - function _validateSecondaryBuyRequest( + function _revertSecondaryBuyRequest( + bytes4 _reason, + MarketplaceStorage storage $, address _contractAddress, address _seller, address _currencyAddress, BuyRequest calldata _request - ) internal view returns (SecondaryPayoutContext memory payoutContext) { + ) internal view { uint256 tokenId = _request.tokenId; uint256 quantity = _request.quantity; - if (quantity == 0) revert QuantityCannotBeZero(); + SalePrice storage salePrice = $.salePrices[_contractAddress][tokenId][_seller]; - SalePrice storage salePrice = _marketplaceStorage().salePrices[_contractAddress][tokenId][_seller]; - if (salePrice.quantity == 0) revert SalePriceDoesNotExist(_contractAddress, tokenId, _seller); - if (salePrice.expirationTime != 0 && salePrice.expirationTime <= block.timestamp) { + if (_reason == QuantityCannotBeZero.selector) revert QuantityCannotBeZero(); + if (_reason == SalePriceDoesNotExist.selector) { + revert SalePriceDoesNotExist(_contractAddress, tokenId, _seller); + } + if (_reason == SalePriceExpired.selector) { revert SalePriceExpired(_contractAddress, tokenId, _seller, salePrice.expirationTime); } - if (salePrice.currencyAddress != _currencyAddress) { - revert CurrencyMismatch(_currencyAddress, salePrice.currencyAddress); + if (_reason == CurrencyMismatch.selector) revert CurrencyMismatch(_currencyAddress, salePrice.currencyAddress); + if (_reason == PriceMismatch.selector) revert PriceMismatch(_request.price, salePrice.price); + if (_reason == QuantityExceedsSalePriceQuantity.selector) { + revert QuantityExceedsSalePriceQuantity(quantity, salePrice.quantity); } - if (salePrice.price != _request.price) revert PriceMismatch(_request.price, salePrice.price); - if (salePrice.quantity < quantity) revert QuantityExceedsSalePriceQuantity(quantity, salePrice.quantity); - payoutContext = SecondaryPayoutContext({ - tokenId: tokenId, - grossAmount: quantity * _request.price, - marketplaceFee: 0, - splitRecipients: salePrice.splitRecipients, - splitRatios: salePrice.splitRatios - }); + revert(); } function _validateAndApplyOfferFill(AcceptOfferInput memory _input) @@ -887,20 +984,6 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace } } - function _enforceTokenAllowList( - address _contractAddress, - uint256 _tokenId, - address _address, - bytes32[] calldata _proof - ) internal view { - AllowListConfig memory allowListConfig = _marketplaceStorage().tokenAllowlistRoots[_contractAddress][_tokenId]; - if (allowListConfig.root == bytes32(0) || block.timestamp >= allowListConfig.endTimestamp) return; - - if (!_verifyProof(keccak256(abi.encodePacked(_address)), allowListConfig.root, _proof)) { - revert AddressNotAllowlisted(_address); - } - } - function _validateMintRequests(MintRequest[] calldata _requests) internal pure { _validateBatchSize(_requests.length); for (uint256 i = 1; i < _requests.length; i++) { diff --git a/src/test/marketplace/RareERC1155MarketplaceGas.t.sol b/src/test/marketplace/RareERC1155MarketplaceGas.t.sol new file mode 100644 index 0000000..f755d67 --- /dev/null +++ b/src/test/marketplace/RareERC1155MarketplaceGas.t.sol @@ -0,0 +1,534 @@ +// SPDX-License-Identifier: AGPL-3.0-only +pragma solidity ^0.8.0; + +import "forge-std/Test.sol"; + +import {ERC20} from "openzeppelin-contracts/token/ERC20/ERC20.sol"; +import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import {IERC165} from "openzeppelin-contracts/utils/introspection/IERC165.sol"; + +import {Payments} from "../../payments/Payments.sol"; +import {RareERC1155} from "../../token/ERC1155/RareERC1155.sol"; +import {RareERC1155ContractFactory} from "../../token/ERC1155/RareERC1155ContractFactory.sol"; +import {ERC20ApprovalManager} from "../../v2/approver/ERC20/ERC20ApprovalManager.sol"; +import {ERC721ApprovalManager} from "../../v2/approver/ERC721/ERC721ApprovalManager.sol"; +import {ERC1155ApprovalManager} from "../../v2/approver/ERC1155/ERC1155ApprovalManager.sol"; +import {IRareERC1155MarketplaceTypes} from "../../marketplace/IRareERC1155MarketplaceTypes.sol"; +import {RareERC1155Marketplace} from "../../marketplace/RareERC1155Marketplace.sol"; +import {RareERC1155Settlement} from "../../marketplace/RareERC1155Settlement.sol"; +import {IRoyaltyEngineV1} from "royalty-registry/IRoyaltyEngineV1.sol"; + +contract CheckoutGasCurrency is ERC20 { + constructor(address _buyer) ERC20("Checkout Gas Currency", "CGAS") { + _mint(_buyer, 1_000_000_000 ether); + } +} + +contract CheckoutGasApprovedTokenRegistry { + function isApprovedToken(address) external pure returns (bool) { + return true; + } +} + +contract CheckoutGasMarketplaceSettings { + function calculateMarketplaceFee(uint256 _amount) external pure returns (uint256) { + return (_amount * 3) / 100; + } + + function getERC721ContractPrimarySaleFeePercentage(address) external pure returns (uint8) { + return 10; + } +} + +contract CheckoutGasStakingSettings { + function calculateStakingFee(uint256 _amount) external pure returns (uint256) { + return (_amount * 1) / 100; + } +} + +contract CheckoutGasStakingRegistry { + address private immutable rewardAccumulator; + + constructor(address _rewardAccumulator) { + rewardAccumulator = _rewardAccumulator; + } + + function getRewardAccumulatorAddressForUser(address) external view returns (address) { + return rewardAccumulator; + } +} + +contract CheckoutGasSpaceOperatorRegistry { + function isApprovedSpaceOperator(address) external pure returns (bool) { + return false; + } +} + +contract CheckoutGasRoyaltyEngine is IRoyaltyEngineV1 { + uint256 private immutable royaltyRecipientCount; + + constructor(uint256 _royaltyRecipientCount) { + royaltyRecipientCount = _royaltyRecipientCount; + } + + function getRoyalty(address, uint256, uint256 _value) + external + view + returns (address payable[] memory recipients, uint256[] memory amounts) + { + return _royalties(_value); + } + + function getRoyaltyView(address, uint256, uint256 _value) + external + view + returns (address payable[] memory recipients, uint256[] memory amounts) + { + return _royalties(_value); + } + + function supportsInterface(bytes4 _interfaceId) external pure returns (bool) { + return _interfaceId == type(IRoyaltyEngineV1).interfaceId || _interfaceId == type(IERC165).interfaceId; + } + + function _royalties(uint256 _value) + private + view + returns (address payable[] memory recipients, uint256[] memory amounts) + { + recipients = new address payable[](royaltyRecipientCount); + amounts = new uint256[](royaltyRecipientCount); + for (uint256 i = 0; i < royaltyRecipientCount; i++) { + recipients[i] = payable(address(uint160(0xA000 + i))); + amounts[i] = (_value * 10) / 100 / royaltyRecipientCount; + } + } +} + +/// @dev Run with `forge test --match-contract RareERC1155MarketplaceGasTest -vv` to print sweep gas logs. +contract RareERC1155MarketplaceGasTest is Test { + uint256 private constant PRICE = 1 ether; + uint256 private constant MAX_BATCH_BENCH_ITEMS = 75; + uint256 private constant MAX_CHECKOUT_BENCH_ITEMS = 50; + uint256 private constant MAX_SPLIT_RECIPIENTS = 5; + uint256 private constant MAX_ROYALTY_RECIPIENTS = 5; + + RareERC1155Marketplace private marketplace; + RareERC1155 private token; + CheckoutGasCurrency private currency; + RareERC1155ContractFactory private tokenFactory; + ERC20ApprovalManager private erc20ApprovalManager; + ERC721ApprovalManager private erc721ApprovalManager; + ERC1155ApprovalManager private erc1155ApprovalManager; + + address private deployer = address(0x1000); + address private seller = address(0x2000); + address private buyer = address(0x3000); + address private networkBeneficiary = address(0x4000); + address private rewardAccumulator = address(0x5000); + + function testGas_checkoutPrimaryEthMaxSplits_sweep() public { + uint256[] memory counts = _checkoutBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(0); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _preparePrimaryCheckoutItems(count); + _measureCheckout("checkout_primary_eth_max_splits", count, items, _withFee(PRICE) * count, count, 0); + } + } + + function testGas_checkoutSecondaryEthMaxSplitsAndRoyalties_sweep() public { + uint256[] memory counts = _checkoutBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(MAX_ROYALTY_RECIPIENTS); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = + _prepareSecondaryCheckoutItems(count, address(0), PRICE); + _measureCheckout( + "checkout_secondary_eth_max_splits_max_royalties", count, items, _withFee(PRICE) * count, count, 0 + ); + } + } + + function testGas_checkoutSecondaryErc20MaxSplitsAndRoyalties_sweep() public { + uint256[] memory counts = _checkoutBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(MAX_ROYALTY_RECIPIENTS); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = + _prepareSecondaryCheckoutItems(count, address(currency), PRICE); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), _withFee(PRICE) * count); + + _measureCheckout("checkout_secondary_erc20_max_splits_max_royalties", count, items, 0, count, 0); + } + } + + function testGas_checkoutMixedPrimaryAndSecondaryEth_sweep() public { + uint256[] memory counts = _checkoutBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(MAX_ROYALTY_RECIPIENTS); + + uint256 primaryCount = count / 2; + uint256 secondaryCount = count - primaryCount; + IRareERC1155MarketplaceTypes.CheckoutItem[] memory primaryItems = _preparePrimaryCheckoutItems(primaryCount); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory secondaryItems = + _prepareSecondaryCheckoutItems(secondaryCount, address(0), PRICE); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = + _concatCheckoutItems(primaryItems, secondaryItems); + + _measureCheckout("checkout_mixed_primary_secondary_eth", count, items, _withFee(PRICE) * count, count, 0); + } + } + + function testGas_checkoutSkippedSecondaryStaleBalanceThenPrimaryEth_sweep() public { + uint256[] memory counts = _checkoutBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(MAX_ROYALTY_RECIPIENTS); + + uint256 skippedCount = count - 1; + IRareERC1155MarketplaceTypes.CheckoutItem[] memory skippedItems = + _prepareStaleBalanceSecondaryCheckoutItems(skippedCount, address(0)); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory primaryItems = _preparePrimaryCheckoutItems(1); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _concatCheckoutItems(skippedItems, primaryItems); + + _measureCheckout( + "checkout_skipped_secondary_stale_balance_then_primary_eth", + count, + items, + _withFee(PRICE), + 1, + skippedCount + ); + } + } + + function testGas_mintDirectSaleBatchEthMaxSplits_sweep() public { + uint256[] memory counts = _batchBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(0); + uint256[] memory tokenIds = _preparePrimarySales(count); + IRareERC1155MarketplaceTypes.MintRequest[] memory requests = _mintRequests(tokenIds, PRICE); + + vm.prank(buyer); + uint256 gasBefore = gasleft(); + marketplace.mintDirectSaleBatch{value: _withFee(PRICE) * count}(address(token), address(0), requests); + _recordGas("mint_direct_sale_batch_eth_max_splits", count, gasBefore - gasleft()); + } + } + + function testGas_buyBatchEthMaxSplitsAndRoyalties_sweep() public { + uint256[] memory counts = _batchBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(MAX_ROYALTY_RECIPIENTS); + uint256[] memory tokenIds = _prepareSecondaryListings(count, address(0)); + IRareERC1155MarketplaceTypes.BuyRequest[] memory requests = _buyRequests(tokenIds, PRICE); + + vm.prank(buyer); + uint256 gasBefore = gasleft(); + marketplace.buyBatch{value: _withFee(PRICE) * count}(address(token), seller, address(0), requests); + _recordGas("buy_batch_eth_max_splits_max_royalties", count, gasBefore - gasleft()); + } + } + + function _deployFixture(uint256 _royaltyRecipientCount) private { + deal(deployer, 1_000_000 ether); + deal(seller, 1_000_000 ether); + deal(buyer, 1_000_000 ether); + + vm.startPrank(deployer); + currency = new CheckoutGasCurrency(buyer); + erc20ApprovalManager = new ERC20ApprovalManager(); + erc721ApprovalManager = new ERC721ApprovalManager(); + erc1155ApprovalManager = new ERC1155ApprovalManager(); + RareERC1155Settlement settlement = new RareERC1155Settlement(); + + address marketplaceSettings = address(new CheckoutGasMarketplaceSettings()); + address stakingSettings = address(new CheckoutGasStakingSettings()); + address stakingRegistry = address(new CheckoutGasStakingRegistry(rewardAccumulator)); + address royaltyEngine = address(new CheckoutGasRoyaltyEngine(_royaltyRecipientCount)); + address spaceOperatorRegistry = address(new CheckoutGasSpaceOperatorRegistry()); + address approvedTokenRegistry = address(new CheckoutGasApprovedTokenRegistry()); + + marketplace = RareERC1155Marketplace( + address( + new ERC1967Proxy( + address(new RareERC1155Marketplace()), + abi.encodeWithSelector( + RareERC1155Marketplace.initialize.selector, + networkBeneficiary, + marketplaceSettings, + spaceOperatorRegistry, + royaltyEngine, + address(new Payments()), + approvedTokenRegistry, + stakingSettings, + stakingRegistry, + address(erc20ApprovalManager), + address(erc721ApprovalManager), + address(erc1155ApprovalManager), + address(settlement) + ) + ) + ) + ); + erc20ApprovalManager.grantOperatorRole(address(marketplace)); + erc1155ApprovalManager.grantOperatorRole(address(marketplace)); + + tokenFactory = new RareERC1155ContractFactory(); + tokenFactory.setDefaultMinter(address(marketplace)); + vm.stopPrank(); + + vm.prank(seller); + token = RareERC1155(tokenFactory.createRareERC1155Contract("Gas Editions", "GAS", "ipfs://gas/{id}.json")); + } + + function _preparePrimaryCheckoutItems(uint256 _count) + private + returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) + { + uint256[] memory tokenIds = _preparePrimarySales(_count); + items = new IRareERC1155MarketplaceTypes.CheckoutItem[](_count); + for (uint256 i = 0; i < _count; i++) { + items[i] = _directSaleCheckoutItem(tokenIds[i], PRICE); + } + } + + function _prepareSecondaryCheckoutItems(uint256 _count, address _currencyAddress, uint256 _itemPrice) + private + returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) + { + uint256[] memory tokenIds = _prepareSecondaryListings(_count, _currencyAddress); + items = new IRareERC1155MarketplaceTypes.CheckoutItem[](_count); + for (uint256 i = 0; i < _count; i++) { + items[i] = _listingCheckoutItem(tokenIds[i], _currencyAddress, _itemPrice); + } + } + + function _prepareStaleBalanceSecondaryCheckoutItems(uint256 _count, address _currencyAddress) + private + returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) + { + uint256[] memory tokenIds = _prepareSecondaryListings(_count, _currencyAddress); + if (_count != 0) { + vm.prank(seller); + token.safeBatchTransferFrom(seller, address(0x6000), tokenIds, _amounts(_count, 1), ""); + } + + items = new IRareERC1155MarketplaceTypes.CheckoutItem[](_count); + for (uint256 i = 0; i < _count; i++) { + items[i] = _listingCheckoutItem(tokenIds[i], _currencyAddress, PRICE); + } + } + + function _preparePrimarySales(uint256 _count) private returns (uint256[] memory tokenIds) { + tokenIds = _createTokenIds(_count, 10); + if (_count == 0) return tokenIds; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _directSaleRequests(tokenIds, PRICE), + _splitRecipients(MAX_SPLIT_RECIPIENTS), + _splitRatios(MAX_SPLIT_RECIPIENTS) + ); + } + + function _prepareSecondaryListings(uint256 _count, address _currencyAddress) + private + returns (uint256[] memory tokenIds) + { + tokenIds = _createTokenIds(_count, 10); + if (_count == 0) return tokenIds; + + uint256[] memory amounts = _amounts(_count, 1); + vm.startPrank(seller); + token.mintBatchTo(seller, tokenIds, amounts); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + marketplace.setSalePrices( + address(token), + _currencyAddress, + _salePriceRequests(tokenIds, PRICE), + _splitRecipients(MAX_SPLIT_RECIPIENTS), + _splitRatios(MAX_SPLIT_RECIPIENTS) + ); + vm.stopPrank(); + } + + function _createTokenIds(uint256 _count, uint256 _maxSupply) private returns (uint256[] memory tokenIds) { + tokenIds = new uint256[](_count); + vm.startPrank(seller); + for (uint256 i = 0; i < _count; i++) { + tokenIds[i] = token.createToken("ipfs://gas-token.json", _maxSupply, seller); + } + vm.stopPrank(); + } + + function _measureCheckout( + string memory _scenario, + uint256 _count, + IRareERC1155MarketplaceTypes.CheckoutItem[] memory _items, + uint256 _value, + uint256 _expectedFilled, + uint256 _expectedSkipped + ) private { + vm.prank(buyer); + uint256 gasBefore = gasleft(); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = marketplace.checkout{value: _value}(_items); + uint256 gasUsed = gasBefore - gasleft(); + + assertEq(summary.filledCount, _expectedFilled); + assertEq(summary.skippedCount, _expectedSkipped); + _recordGas(_scenario, _count, gasUsed); + } + + function _recordGas(string memory _scenario, uint256 _count, uint256 _gasUsed) private { + emit log_string(_scenario); + emit log_named_uint("items", _count); + emit log_named_uint("gas", _gasUsed); + emit log_named_uint("gas_per_item", _gasUsed / _count); + } + + function _checkoutBenchmarkCounts() private pure returns (uint256[] memory counts) { + counts = new uint256[](5); + counts[0] = 1; + counts[1] = 5; + counts[2] = 10; + counts[3] = 20; + counts[4] = MAX_CHECKOUT_BENCH_ITEMS; + } + + function _batchBenchmarkCounts() private pure returns (uint256[] memory counts) { + counts = new uint256[](6); + counts[0] = 1; + counts[1] = 5; + counts[2] = 10; + counts[3] = 20; + counts[4] = 50; + counts[5] = MAX_BATCH_BENCH_ITEMS; + } + + function _concatCheckoutItems( + IRareERC1155MarketplaceTypes.CheckoutItem[] memory _first, + IRareERC1155MarketplaceTypes.CheckoutItem[] memory _second + ) private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) { + items = new IRareERC1155MarketplaceTypes.CheckoutItem[](_first.length + _second.length); + for (uint256 i = 0; i < _first.length; i++) { + items[i] = _first[i]; + } + for (uint256 i = 0; i < _second.length; i++) { + items[_first.length + i] = _second[i]; + } + } + + function _directSaleCheckoutItem(uint256 _tokenId, uint256 _price) + private + view + returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) + { + return IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.DIRECT_SALE_MINT), + contractAddress: address(token), + seller: address(0), + currencyAddress: address(0), + tokenId: _tokenId, + price: _price, + quantity: 1, + proof: new bytes32[](0) + }); + } + + function _listingCheckoutItem(uint256 _tokenId, address _currencyAddress, uint256 _price) + private + view + returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) + { + return IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.LISTING_BUY), + contractAddress: address(token), + seller: seller, + currencyAddress: _currencyAddress, + tokenId: _tokenId, + price: _price, + quantity: 1, + proof: new bytes32[](0) + }); + } + + function _directSaleRequests(uint256[] memory _tokenIds, uint256 _price) + private + pure + returns (IRareERC1155MarketplaceTypes.DirectSaleRequest[] memory requests) + { + requests = new IRareERC1155MarketplaceTypes.DirectSaleRequest[](_tokenIds.length); + for (uint256 i = 0; i < _tokenIds.length; i++) { + requests[i] = IRareERC1155MarketplaceTypes.DirectSaleRequest(_tokenIds[i], _price, 0, 0); + } + } + + function _salePriceRequests(uint256[] memory _tokenIds, uint256 _price) + private + pure + returns (IRareERC1155MarketplaceTypes.SalePriceRequest[] memory requests) + { + requests = new IRareERC1155MarketplaceTypes.SalePriceRequest[](_tokenIds.length); + for (uint256 i = 0; i < _tokenIds.length; i++) { + requests[i] = IRareERC1155MarketplaceTypes.SalePriceRequest(_tokenIds[i], _price, 1, 0); + } + } + + function _mintRequests(uint256[] memory _tokenIds, uint256 _price) + private + pure + returns (IRareERC1155MarketplaceTypes.MintRequest[] memory requests) + { + requests = new IRareERC1155MarketplaceTypes.MintRequest[](_tokenIds.length); + for (uint256 i = 0; i < _tokenIds.length; i++) { + requests[i] = IRareERC1155MarketplaceTypes.MintRequest(_tokenIds[i], _price, 1, new bytes32[](0)); + } + } + + function _buyRequests(uint256[] memory _tokenIds, uint256 _price) + private + pure + returns (IRareERC1155MarketplaceTypes.BuyRequest[] memory requests) + { + requests = new IRareERC1155MarketplaceTypes.BuyRequest[](_tokenIds.length); + for (uint256 i = 0; i < _tokenIds.length; i++) { + requests[i] = IRareERC1155MarketplaceTypes.BuyRequest(_tokenIds[i], _price, 1); + } + } + + function _splitRecipients(uint256 _count) private pure returns (address payable[] memory recipients) { + recipients = new address payable[](_count); + for (uint256 i = 0; i < _count; i++) { + recipients[i] = payable(address(uint160(0xB000 + i))); + } + } + + function _splitRatios(uint256 _count) private pure returns (uint8[] memory ratios) { + ratios = new uint8[](_count); + uint8 ratio = uint8(100 / _count); + for (uint256 i = 0; i < _count; i++) { + ratios[i] = ratio; + } + ratios[_count - 1] += uint8(100 - (ratio * _count)); + } + + function _amounts(uint256 _count, uint256 _amount) private pure returns (uint256[] memory amounts) { + amounts = new uint256[](_count); + for (uint256 i = 0; i < _count; i++) { + amounts[i] = _amount; + } + } + + function _withFee(uint256 _amount) private pure returns (uint256) { + return _amount + ((_amount * 3) / 100); + } +} diff --git a/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol b/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol index 7499ca9..d8ccf25 100644 --- a/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol +++ b/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol @@ -227,6 +227,63 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(marketplace.getTokenMintsPerAddress(address(token), tokenId, buyer), 0); } + function testMintDirectSaleBatchRevertsWithSharedValidationReason() public { + uint256 price = 1 ether; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.PriceMismatch.selector, price + 1, price)); + marketplace.mintDirectSaleBatch(address(token), address(0), _singleMintRequest(tokenId, price + 1, 1)); + } + + function testBuyBatchRevertsWithSharedValidationReason() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.QuantityExceedsSalePriceQuantity.selector, 2, 1) + ); + marketplace.buyBatch(address(token), seller, address(0), _singleBuyRequest(tokenId, price, 2)); + } + + function testMarketplaceUsesSeparateBatchAndCheckoutCaps() public { + assertEq(marketplace.MAX_BATCH_SIZE(), 75); + assertEq(marketplace.MAX_CHECKOUT_SIZE(), 50); + + IRareERC1155MarketplaceTypes.MintRequest[] memory mintRequests = + new IRareERC1155MarketplaceTypes.MintRequest[](76); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.BatchSizeExceeded.selector, 76, 75)); + marketplace.mintDirectSaleBatch(address(token), address(0), mintRequests); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory checkoutItems = + new IRareERC1155MarketplaceTypes.CheckoutItem[](51); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.BatchSizeExceeded.selector, 51, 50)); + marketplace.checkout(checkoutItems); + } + function testCheckoutFillsMixedDirectSaleAndListingAcrossCurrencies() public { uint256 mintPrice = 1 ether; uint256 listingPrice = 2 ether; @@ -288,6 +345,32 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(address(marketplace).balance, 0); } + function testCheckoutDirectSaleMintResolvesSellerFromConfig() public { + uint256 price = 1 ether; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayout(price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(token), sellerTwo, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = + marketplace.checkout{value: _withFee(price)}(items); + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 0); + assertEq(summary.ethSpent, _withFee(price)); + assertEq(token.balanceOf(buyer, tokenId), 1); + } + function testCheckoutSkipsInvalidItemsAndRefundsUnusedETH() public { uint256 mintPrice = 1 ether; uint256 listingPrice = 2 ether; @@ -334,6 +417,90 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(address(marketplace).balance, 0); } + function testCheckoutSkipsSoldOutDirectSaleMintAndRollsBackLimitCounters() public { + uint256 price = 1 ether; + + vm.startPrank(seller); + uint256 soldOutTokenId = token.createToken("ipfs://token/sold-out-primary.json", 1, seller); + token.mintBatchTo(seller, _singleTokenIds(soldOutTokenId), _singleAmounts(1)); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(soldOutTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.setTokenMintLimits(address(token), _singleTokenLimitRequest(soldOutTokenId, 5)); + marketplace.setTokenTxLimits(address(token), _singleTokenLimitRequest(soldOutTokenId, 5)); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + + _mockPrimaryPayoutFor(address(token), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), soldOutTokenId, price, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = + marketplace.checkout{value: _withFee(price)}(items); + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 1); + assertEq(summary.ethSpent, _withFee(price)); + assertEq(token.balanceOf(buyer, soldOutTokenId), 0); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(marketplace.getTokenMintsPerAddress(address(token), soldOutTokenId, buyer), 0); + assertEq(marketplace.getTokenTxsPerAddress(address(token), soldOutTokenId, buyer), 0); + } + + function testCheckoutSkipsDirectSaleMintWhenMarketplaceMinterApprovalRevoked() public { + uint256 price = 1 ether; + + vm.startPrank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + token.setMinterApproval(address(marketplace), false); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + + _mockSecondaryPayout(price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + items[1] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = + marketplace.checkout{value: _withFee(price)}(items); + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 1); + assertEq(summary.ethSpent, _withFee(price)); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.totalMintedForToken(tokenId), 1); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 0); + } + function testCheckoutSkipsAdditionalValidationFailuresBeforeSuccessfulFill() public { uint256 price = 1 ether; uint256 expensivePrice = 20 ether; @@ -609,6 +776,17 @@ contract RareERC1155MarketplaceSettlementTest is Test { return requests; } + function _singleTokenLimitRequest(uint256 _tokenId, uint256 _limit) + private + pure + returns (IRareERC1155MarketplaceTypes.TokenLimitRequest[] memory) + { + IRareERC1155MarketplaceTypes.TokenLimitRequest[] memory requests = + new IRareERC1155MarketplaceTypes.TokenLimitRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.TokenLimitRequest(_tokenId, _limit); + return requests; + } + function _singleMintRequest(uint256 _tokenId, uint256 _price, uint256 _quantity) private pure From 0b06f3d18b5050f00874afa73495c21b5f45d749 Mon Sep 17 00:00:00 2001 From: Keegan Date: Sun, 31 May 2026 17:01:04 -0400 Subject: [PATCH 11/17] Harden ERC1155 marketplace settlement scripts --- .../RareERC1155MarketplaceDeploy.s.sol | 6 ++-- .../RareERC1155SettlementScriptGuard.s.sol | 29 ++++++++++++++++++ .../RareERC1155SettlementUpdate.s.sol | 6 ++-- .../IRareERC1155MarketplaceTypes.sol | 3 +- src/marketplace/RareERC1155Marketplace.sol | 12 ++++++-- .../RareERC1155MarketplaceSettlement.t.sol | 30 +++++++++++++++++++ 6 files changed, 79 insertions(+), 7 deletions(-) create mode 100644 script/marketplace/RareERC1155SettlementScriptGuard.s.sol diff --git a/script/marketplace/RareERC1155MarketplaceDeploy.s.sol b/script/marketplace/RareERC1155MarketplaceDeploy.s.sol index 98cd6fa..d16012a 100644 --- a/script/marketplace/RareERC1155MarketplaceDeploy.s.sol +++ b/script/marketplace/RareERC1155MarketplaceDeploy.s.sol @@ -1,17 +1,18 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; -import {Script, console} from "forge-std/Script.sol"; +import {console} from "forge-std/Script.sol"; import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; import {ERC20ApprovalManager} from "../../src/v2/approver/ERC20/ERC20ApprovalManager.sol"; import {ERC1155ApprovalManager} from "../../src/v2/approver/ERC1155/ERC1155ApprovalManager.sol"; import {RareERC1155Marketplace} from "../../src/marketplace/RareERC1155Marketplace.sol"; import {RareERC1155Settlement} from "../../src/marketplace/RareERC1155Settlement.sol"; +import {RareERC1155SettlementScriptGuard} from "./RareERC1155SettlementScriptGuard.s.sol"; /// @title RareERC1155MarketplaceDeploy /// @notice Deploys the ERC1155 marketplace implementation, settlement module, and ERC1967 marketplace proxy. -contract RareERC1155MarketplaceDeploy is Script { +contract RareERC1155MarketplaceDeploy is RareERC1155SettlementScriptGuard { function run() external { uint256 privateKey = vm.envUint("PRIVATE_KEY"); @@ -31,6 +32,7 @@ contract RareERC1155MarketplaceDeploy is Script { address erc1155ApprovalManager = vm.envAddress("ERC1155_APPROVAL_MANAGER"); RareERC1155Settlement settlement = new RareERC1155Settlement(); + _validateSettlementModuleForScript(address(settlement)); RareERC1155Marketplace marketplaceImplementation = new RareERC1155Marketplace(); bytes memory initData = abi.encodeWithSelector( diff --git a/script/marketplace/RareERC1155SettlementScriptGuard.s.sol b/script/marketplace/RareERC1155SettlementScriptGuard.s.sol new file mode 100644 index 0000000..e796a0c --- /dev/null +++ b/script/marketplace/RareERC1155SettlementScriptGuard.s.sol @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {Script} from "forge-std/Script.sol"; + +/// @notice Shared safety checks for scripts that configure the ERC1155 marketplace settlement module. +abstract contract RareERC1155SettlementScriptGuard is Script { + bytes32 private constant ERC1967_IMPLEMENTATION_SLOT = + 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; + bytes32 private constant ERC1967_BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50; + bytes32 private constant ERC1967_ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103; + + error SettlementHasNoCode(address _settlement); + error SettlementCannotBeUpgradeableProxy(address _settlement, bytes32 _slot, bytes32 _value); + + function _validateSettlementModuleForScript(address _settlement) internal view { + if (_settlement.code.length == 0) revert SettlementHasNoCode(_settlement); + _revertIfSlotSet(_settlement, ERC1967_IMPLEMENTATION_SLOT); + _revertIfSlotSet(_settlement, ERC1967_BEACON_SLOT); + _revertIfSlotSet(_settlement, ERC1967_ADMIN_SLOT); + } + + function _revertIfSlotSet(address _settlement, bytes32 _slot) private view { + bytes32 slotValue = vm.load(_settlement, _slot); + if (slotValue != bytes32(0)) { + revert SettlementCannotBeUpgradeableProxy(_settlement, _slot, slotValue); + } + } +} diff --git a/script/marketplace/RareERC1155SettlementUpdate.s.sol b/script/marketplace/RareERC1155SettlementUpdate.s.sol index c9fc017..f672d54 100644 --- a/script/marketplace/RareERC1155SettlementUpdate.s.sol +++ b/script/marketplace/RareERC1155SettlementUpdate.s.sol @@ -1,19 +1,21 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; -import {Script, console} from "forge-std/Script.sol"; +import {console} from "forge-std/Script.sol"; import {RareERC1155Marketplace} from "../../src/marketplace/RareERC1155Marketplace.sol"; import {RareERC1155Settlement} from "../../src/marketplace/RareERC1155Settlement.sol"; +import {RareERC1155SettlementScriptGuard} from "./RareERC1155SettlementScriptGuard.s.sol"; /// @title RareERC1155SettlementUpdate /// @notice Deploys a new settlement module and points an existing marketplace proxy at it. -contract RareERC1155SettlementUpdate is Script { +contract RareERC1155SettlementUpdate is RareERC1155SettlementScriptGuard { function run() external { vm.startBroadcast(vm.envUint("PRIVATE_KEY")); address marketplaceProxy = vm.envAddress("RARE_ERC1155_MARKETPLACE"); RareERC1155Settlement settlement = new RareERC1155Settlement(); + _validateSettlementModuleForScript(address(settlement)); RareERC1155Marketplace(marketplaceProxy).setSettlement(address(settlement)); diff --git a/src/marketplace/IRareERC1155MarketplaceTypes.sol b/src/marketplace/IRareERC1155MarketplaceTypes.sol index 2c201c3..7c35f63 100644 --- a/src/marketplace/IRareERC1155MarketplaceTypes.sol +++ b/src/marketplace/IRareERC1155MarketplaceTypes.sol @@ -6,6 +6,7 @@ pragma solidity 0.8.18; /// @notice Shared structs, events, and errors for the ERC1155 marketplace. interface IRareERC1155MarketplaceTypes { /// @notice Primary mint sale configuration for a collection token id. + /// @dev `maxMints` caps the quantity minted in a single transaction. Use token mint limits for cumulative per-address caps. struct DirectSaleConfig { address seller; address currencyAddress; @@ -44,6 +45,7 @@ interface IRareERC1155MarketplaceTypes { } /// @notice Primary sale setup input for one token id in a batch. + /// @dev `maxMints` caps the quantity minted in a single transaction. Use token mint limits for cumulative per-address caps. struct DirectSaleRequest { uint256 tokenId; uint256 price; @@ -274,7 +276,6 @@ interface IRareERC1155MarketplaceTypes { error SettlementDelegateCallFailed(bytes _revertData); error UnsupportedCheckoutItemKind(uint8 _itemKind); error CheckoutRequiresSuccessfulFill(); - error CheckoutSellerMismatch(address _suppliedSeller, address _configuredSeller); error InsufficientCheckoutETH(uint256 _requiredAmount, uint256 _availableAmount); error InsufficientCheckoutERC20Balance(address _currencyAddress, uint256 _requiredAmount, uint256 _availableAmount); error InsufficientCheckoutERC20Allowance( diff --git a/src/marketplace/RareERC1155Marketplace.sol b/src/marketplace/RareERC1155Marketplace.sol index 9b0bead..77b89bf 100644 --- a/src/marketplace/RareERC1155Marketplace.sol +++ b/src/marketplace/RareERC1155Marketplace.sol @@ -135,6 +135,7 @@ contract RareERC1155Marketplace is function setTokenAllowListConfigs(address _contractAddress, AllowListConfigRequest[] calldata _requests) external nonReentrant + notPaused { if (!_isContractOwner(_contractAddress, msg.sender)) { revert NotContractOwner(_contractAddress, msg.sender); @@ -153,6 +154,7 @@ contract RareERC1155Marketplace is function setTokenMintLimits(address _contractAddress, TokenLimitRequest[] calldata _requests) external nonReentrant + notPaused { if (!_isContractOwner(_contractAddress, msg.sender)) { revert NotContractOwner(_contractAddress, msg.sender); @@ -167,8 +169,14 @@ contract RareERC1155Marketplace is } } - function setTokenTxLimits(address _contractAddress, TokenLimitRequest[] calldata _requests) external nonReentrant { - if (!_isContractOwner(_contractAddress, msg.sender)) revert NotContractOwner(_contractAddress, msg.sender); + function setTokenTxLimits(address _contractAddress, TokenLimitRequest[] calldata _requests) + external + nonReentrant + notPaused + { + if (!_isContractOwner(_contractAddress, msg.sender)) { + revert NotContractOwner(_contractAddress, msg.sender); + } _validateTokenLimitRequests(_requests); for (uint256 i = 0; i < _requests.length; i++) { diff --git a/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol b/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol index d8ccf25..e670c39 100644 --- a/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol +++ b/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol @@ -713,6 +713,36 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(marketplace.getSettlement(), address(newSettlement)); } + function testSetTokenAllowListConfigsRevertsWhenPaused() public { + vm.prank(deployer); + marketplace.setContractPaused(true); + + vm.prank(seller); + vm.expectRevert(IRareERC1155MarketplaceTypes.ContractPaused.selector); + marketplace.setTokenAllowListConfigs( + address(token), + _singleAllowListConfigRequest(tokenId, keccak256(abi.encodePacked(buyer)), block.timestamp + 1 days) + ); + } + + function testSetTokenMintLimitsRevertsWhenPaused() public { + vm.prank(deployer); + marketplace.setContractPaused(true); + + vm.prank(seller); + vm.expectRevert(IRareERC1155MarketplaceTypes.ContractPaused.selector); + marketplace.setTokenMintLimits(address(token), _singleTokenLimitRequest(tokenId, 5)); + } + + function testSetTokenTxLimitsRevertsWhenPaused() public { + vm.prank(deployer); + marketplace.setContractPaused(true); + + vm.prank(seller); + vm.expectRevert(IRareERC1155MarketplaceTypes.ContractPaused.selector); + marketplace.setTokenTxLimits(address(token), _singleTokenLimitRequest(tokenId, 5)); + } + function _initData(address _payments, address _settlement) private view returns (bytes memory) { return abi.encodeWithSelector( RareERC1155Marketplace.initialize.selector, From 695025ff2982c179dc4eb5cde9c34cd7305d1b8a Mon Sep 17 00:00:00 2001 From: Keegan Date: Mon, 1 Jun 2026 16:37:23 -0400 Subject: [PATCH 12/17] Add ERC1155 deployment config and scripts --- script/NetworkConfig.s.sol | 413 ++++++++++++++++++ .../ERC1155ApprovalManagerDeploy.s.sol | 39 ++ .../RareERC1155MarketplaceDeploy.s.sol | 88 +++- .../ERC1155/RareERC1155FactoryDeploy.s.sol | 9 +- .../ERC1155/RareERC1155SystemDeploy.s.sol | 136 ++++++ 5 files changed, 669 insertions(+), 16 deletions(-) create mode 100644 script/NetworkConfig.s.sol create mode 100644 script/approver/erc1155-approval-manager-deploy/ERC1155ApprovalManagerDeploy.s.sol create mode 100644 script/token/ERC1155/RareERC1155SystemDeploy.s.sol diff --git a/script/NetworkConfig.s.sol b/script/NetworkConfig.s.sol new file mode 100644 index 0000000..8873a7a --- /dev/null +++ b/script/NetworkConfig.s.sol @@ -0,0 +1,413 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +/// @title NetworkConfig +/// @notice Chain-aware SuperRare contract addresses for Foundry scripts. +/// @dev Source: Confluence "Smart Contracts - Directory". Empty or N/A cells are address(0). +library NetworkConfig { + uint256 internal constant ETHEREUM_MAINNET = 1; + uint256 internal constant ETHEREUM_SEPOLIA = 11155111; + uint256 internal constant BASE_MAINNET = 8453; + uint256 internal constant BASE_SEPOLIA = 84532; + + error UnsupportedChain(uint256 chainId); + + struct Addresses { + address superRareV1; + address superRareV2; + address marketplace; + address auctionHouse; + address marketplaceWalletV1Token; + address creatorRegistry; + address marketplaceSettingsV3; + address marketplaceSettingsV2; + address marketplaceSettingsV1; + address sovereignSeriesFactorySpecialCreator; + address sovereignSeriesFactory; + address seriesNftTemplate; + address rareClaim; + address royaltyRegistry; + address bazaar; + address bazaarMarketplace; + address bazaarAuctionHouse; + address spaceOperatorRegistry; + address payments; + address collectorRoyaltiesClaim; + address rareProxyAdmin; + address rareGovToken; + address rareImplementation; + address spaceFactory; + address spaceNftTemplate; + address superRareAdmin; + address approvedTokenRegistry; + address rarePassNft; + address ethRareFaucet; + address stakingRegistry; + address rewardAccumulatorFactory; + address rarityPoolFactory; + address lazySovereignFactory; + address rareMinterLogic; + address rareMinter; + address baseL1BridgeProxy; + address baseL1BridgeImplementation; + address baseL2BridgeProxy; + address baseL2BridgeImplementation; + address rareGovTokenL2Proxy; + address ccipReceiverL2; + address batchOfferCreatorImplementation; + address batchOfferCreatorProxy; + address season2Claim; + address season1Claim; + address season3Claim; + address marketUtilsV2; + address erc20ApprovalManager; + address erc721ApprovalManager; + address erc1155ApprovalManager; + address rareErc1155Settlement; + address rareErc1155MarketplaceImplementation; + address rareErc1155MarketplaceProxy; + address rareErc1155ContractFactory; + address rareErc1155Implementation; + address rareErc1155ContractFactoryOwner; + address rareErc1155ContractFactoryDefaultMinter; + address approvalManagerAdmin; + address rareBatchAuctionHouseProxy; + address rareBatchAuctionHouseLogic; + address rareBatchListingMarketplaceImplementation; + address rareBatchListingMarketplaceProxy; + address rareStakingV1; + address rareStakingV1Implementation; + address sovereignBatchMintFactory; + address sovereignBatchMintImplementation; + address batchAuctionHouse; + address royaltyEngineManifold; + address lazySovereignBatchMintFactory; + address superRareBazaarErc20BuyProxy; + address liquidFactory; + address liquidRouter; + address liquidRegistry; + address rareBurner; + address networkBeneficiary; + } + + function getCurrent() internal view returns (Addresses memory) { + return get(block.chainid); + } + + function get(uint256 chainId) internal pure returns (Addresses memory config) { + if (chainId == ETHEREUM_MAINNET) return _ethereumMainnet(); + if (chainId == ETHEREUM_SEPOLIA) return _ethereumSepolia(); + if (chainId == BASE_MAINNET) return _baseMainnet(); + if (chainId == BASE_SEPOLIA) return _baseSepolia(); + + revert UnsupportedChain(chainId); + } + + function chainName(uint256 chainId) internal pure returns (string memory) { + if (chainId == ETHEREUM_MAINNET) return "Ethereum Mainnet"; + if (chainId == ETHEREUM_SEPOLIA) return "Ethereum Sepolia"; + if (chainId == BASE_MAINNET) return "Base Mainnet"; + if (chainId == BASE_SEPOLIA) return "Base Sepolia"; + + revert UnsupportedChain(chainId); + } + + function _ethereumMainnet() private pure returns (Addresses memory config) { + config.superRareV1 = _addr(0x41A322b28D0fF354040e2CbC676F0320d8c8850d); + config.superRareV2 = _addr(0xb932a70A57673d89f4acfFBE830E8ed7f75Fb9e0); + config.marketplace = _addr(0x65B49f7AEE40347f5A90b714be4eF086f3fe5E2C); + config.auctionHouse = _addr(0x8c9F364bf7a56Ed058fc63Ef81c6Cf09c833e656); + config.marketplaceWalletV1Token = _addr(0x859C43DDbC6aD28b1eefb40d1CD696d187BAE76D); + config.creatorRegistry = _addr(0xED6Fd0e8c85BA50438f2399efCcA1c6476D04eA6); + config.marketplaceSettingsV3 = _addr(0x61DBF87164d33FD3695256DC8Ba74D3B1d304170); + config.marketplaceSettingsV2 = _addr(0xec882716989e12C31e72C8A48924941D2bA5284E); + config.marketplaceSettingsV1 = _addr(0x1634c3b0b39da13f8724361bdF295b607767B456); + config.sovereignSeriesFactorySpecialCreator = _addr(0x8B0a05d8FCEA149dC2d215342b233962dcc63483); + config.sovereignSeriesFactory = _addr(0xE980EC62378529D95Ba446433F4DEB6324129c59); + config.seriesNftTemplate = _addr(0xD89201E874DD35C9a7e80630ea98cE2595eAaa45); + config.rareClaim = _addr(0x5474b3abF3E58A2b32F329F3633406a0d2941E6F); + config.royaltyRegistry = _addr(0x17B0C8564E53f22364A6C8de6F7ca5CE9BEa4e5D); + config.bazaar = _addr(0x6D7c44773C52D396F43c2D511B81aa168E9a7a42); + config.bazaarMarketplace = _addr(0x39C36E6E02e7CC0079988C6731D54cF40fc53490); + config.bazaarAuctionHouse = _addr(0x762e0C294dEc7f17e632f6A50DC3386F81Fc13d6); + config.spaceOperatorRegistry = _addr(0x18C4545274721940985e93b1991CC651B1A41a8b); + config.payments = _addr(0xc033BBef0Af25Db7523FCe16BaB1C39df0bF2Ae3); + config.collectorRoyaltiesClaim = _addr(0xb661241653B0174e3d758CeE01e320A1f4BcAeBF); + config.rareProxyAdmin = _addr(0x714C85F8de8632FaC4042C06B95329b9E78AeDB5); + config.rareGovToken = _addr(0xba5BDe662c17e2aDFF1075610382B9B691296350); + config.spaceFactory = _addr(0x3B2d699110aa1788B2B1cae336E0bA8ff942A390); + config.spaceNftTemplate = _addr(0x093Ebc9D65E990Ab6D615b761ceaDAC026c865e5); + config.superRareAdmin = _addr(0x186FbE119aC87c65B9cfA9Da07bEc216FA35E6cE); + config.approvedTokenRegistry = _addr(0x16c9e9Bc7fD73F538e7dFc2eb1A21F429C3e0B8C); + config.rarePassNft = _addr(0xbbb62C4B8ed027530Ce5F6663D1A2aa8a7E8CaCF); + config.stakingRegistry = _addr(0x0c891cBA9A617e6B06c9B6FBBD340d61e4Dd313b); + config.rewardAccumulatorFactory = _addr(0x7Eeb592e65d7f977717ece8f087dBD931F3b21C5); + config.rarityPoolFactory = _addr(0x5d09145E1E798c7a885e49a6FC4f0542ce231A47); + config.lazySovereignFactory = _addr(0xba798BD606d86D207ca2751510173532899117a1); + config.rareMinterLogic = _addr(0xf4E4ADf2F91b8951e7B0fB218152d743B680b636); + config.rareMinter = _addr(0x5fa112EFeD8297bec0010b312208d223E0cE891E); + config.baseL1BridgeProxy = _addr(0x88135DD0e7a8a2e42272DdA89849a997CE2e83f7); + config.baseL1BridgeImplementation = _addr(0x137De26EAc8ac7D32a29d6C90400EA5A0dA3aE59); + config.batchOfferCreatorImplementation = _addr(0xfb5d0E8b2fEFC64971A075BeD08011Ac38876E7D); + config.batchOfferCreatorProxy = _addr(0xE15CF80b25272ade261532EfDB7912F9104851d4); + config.season1Claim = _addr(0x65B852E084d4b7B3a3ab202541aF3bc5E7b2af03); + config.erc20ApprovalManager = _addr(0xa837a7eAff154Ab837617Cf7250648D3Ec0A4436); + config.erc721ApprovalManager = _addr(0x4bb0Deea6d1A30C601338aAB776d394C2AE5c0F8); + config.erc1155ApprovalManager = address(0); + config.approvalManagerAdmin = _addr(0xdc005449848f65639D101A7D2B141c527E53f9d4); + config.rareBatchAuctionHouseProxy = _addr(0xdfce0a0569492c59f27B3715b81F1Bd25DdEbcE3); + config.rareBatchAuctionHouseLogic = _addr(0xED45D28be67A99Fa83194Ed9568712775688b18C); + config.rareBatchListingMarketplaceImplementation = _addr(0xE46Eab414D5aF20C18DfE3d276973D28126ceeAC); + config.rareBatchListingMarketplaceProxy = _addr(0x6a190885A806D39A0A8C348bfA1ac762D72E608d); + config.rareStakingV1 = _addr(0x3f4D749675B3e48bCCd932033808a7079328Eb48); + config.rareStakingV1Implementation = _addr(0xFCAA7FbB6F6Bf16aA546fE81261F590288FC21A1); + config.sovereignBatchMintFactory = _addr(0xAe8E375a268Ed6442bEaC66C6254d6De5AeD4aB1); + config.sovereignBatchMintImplementation = _addr(0x8FDEEd0d2A66277131003F686Dab90eDaBF3EA51); + config.batchAuctionHouse = _addr(0xdfce0a0569492c59f27B3715b81F1Bd25DdEbcE3); + config.royaltyEngineManifold = _addr(0x0385603ab55642cb4Dd5De3aE9e306809991804f); + config.lazySovereignBatchMintFactory = _addr(0x40F9E4b420D5A8fF5aED32B5F72A37013c0739B6); + config.superRareBazaarErc20BuyProxy = _addr(0x9d7f4fbe053Fc5029AC17E67d6138980D6212Fa5); + config.liquidFactory = _addr(0x25f993C222fE5e891128a782A5168f1C78629540); + config.liquidRouter = _addr(0xEBd58EdA8408d9EA409f2c2bE8898BD9738f3583); + config.liquidRegistry = _addr(0x4066052d6AAC25EcFB027fD0C1aD54A597Ce3A31); + config.rareBurner = _addr(0x64F366E6d515dA78930B8b37c858c67e357b7B5B); + config.networkBeneficiary = _addr(0x860a80d33E85e97888F1f0C75c6e5BBD60b48DA9); + + // Missing from directory. + config.rareImplementation = address(0); + config.ethRareFaucet = address(0); + config.baseL2BridgeProxy = address(0); + config.baseL2BridgeImplementation = address(0); + config.rareGovTokenL2Proxy = address(0); + config.ccipReceiverL2 = address(0); + config.season2Claim = address(0); + config.season3Claim = address(0); + config.marketUtilsV2 = address(0); + } + + function _ethereumSepolia() private pure returns (Addresses memory config) { + config.superRareV1 = _addr(0x4eb420094a17f243878896e274D67A04F916C214); + config.superRareV2 = _addr(0x6C7C4879dd37Bdf2B57f128b344DeF62DA0Ca34e); + config.creatorRegistry = _addr(0x38302C717F793dD7EA5C0a2F215494409EaD3ce0); + config.marketplaceSettingsV3 = _addr(0x972dEe8fa339ad2D9c6cbDA31b67f98Fac242d13); + config.marketplaceSettingsV2 = _addr(0x19aaBde5B3d83705EA294fC1aE0E2463Aa9b16Cd); + config.marketplaceSettingsV1 = _addr(0x410995DdEC253124a10BDf651FC4c3313d7F7bd8); + config.sovereignSeriesFactorySpecialCreator = _addr(0xce719c6C4aCac81c6052Fb2A6723B7e4209a7992); + config.sovereignSeriesFactory = _addr(0x097Fbc68C9FBbEbA75E64337beC9759F10C9f3B6); + config.royaltyRegistry = _addr(0xca491bb62A7730E97F500510132C47633DDD0229); + config.bazaar = _addr(0xC8Edc7049b233641ad3723D6C60019D1c8771612); + config.bazaarMarketplace = _addr(0xA6c7462d370930052D5c71644BEbCA26C505BC67); + config.bazaarAuctionHouse = _addr(0xE2A332f875683793f7005c89a3742ec55557FF3c); + config.spaceOperatorRegistry = _addr(0x31fF6869aCfFa4179Ce1BDF097Cf3EdF7C1F7AD0); + config.payments = _addr(0x4aD440013C5B6aD09D03A3FE26DA8EcFaFc17067); + config.rareGovToken = _addr(0x197FaeF3f59eC80113e773Bb6206a17d183F97CB); + config.rareImplementation = _addr(0xfF0D5A1ce9166f4d530928Db305c46F843622061); + config.spaceFactory = _addr(0x8b21bC8571d11F7AdB705ad8F6f6BD1deb79cE01); + config.approvedTokenRegistry = _addr(0x297d05Dc747E993D8Ded20529CFFb7cA46793123); + config.ethRareFaucet = _addr(0xb4F321B1623bB1D4DfedEB3B28288d12AEeE6640); + config.stakingRegistry = _addr(0x18764BEA22e63e7F58D3cF454D94e279bA0f3F3C); + config.rewardAccumulatorFactory = _addr(0xdD0aDcd77Df006c5De1EeF37478c21f12010549A); + config.rarityPoolFactory = _addr(0x2ddDee42069B66A290c2979D62eb498692492eD9); + config.lazySovereignFactory = _addr(0xc5B8Ad9003673a23d005A6448C74d8955a1a38fA); + config.rareMinterLogic = _addr(0xf9711adb01570eac30467007B3bBf9817A3B4632); + config.rareMinter = _addr(0xd28Dc0B89104d7BBd902F338a0193fF063617ccE); + config.baseL1BridgeProxy = _addr(0xdC168291658f6C5F1D0b33E573c4d289DCA9dD08); + config.baseL1BridgeImplementation = _addr(0xdE164B8921da366bA57673e74C7De76f7C42b8f8); + config.batchOfferCreatorImplementation = _addr(0x933394bADE88fFdb1815E22c7Bf0Dc943aC9B404); + config.batchOfferCreatorProxy = _addr(0x371CCA54eF859bB0C7b910581a528Ee47773fd56); + config.season1Claim = _addr(0xEEfE348b0d5ECD0D14336dB80e83aBbA32e7EAF6); + config.marketUtilsV2 = _addr(0xD159af05670A6A5bBaB9e086717667C75351Ba3e); + config.erc20ApprovalManager = _addr(0x4619eB29e84392CE91C27FC936A5c94d1D14b93f); + config.erc721ApprovalManager = _addr(0x5fa0a461d3a2Ea3bFDf03e8BD37CAbB4ae84205E); + config.erc1155ApprovalManager = _addr(0x4fAAaBbe326b1984A7B044d16C1d7ed900F3E60a); + config.rareErc1155Settlement = _addr(0x8Ef8e53Efdf59d71dD50083fA756FBD44d3aD3ea); + config.rareErc1155MarketplaceImplementation = _addr(0xb3B1E72173074ecF66c5EAdA96E4b738482BDbe6); + config.rareErc1155MarketplaceProxy = _addr(0x99dc6369541c861c2DF1530103165Bbd3d21dD82); + config.rareErc1155ContractFactory = _addr(0x3BB9bfDA06A2250Db74f1a7B88D8a9C5aC0e2e67); + config.rareErc1155Implementation = _addr(0x39073fEdF84F0cAcA595e94423C82c6Eb35B06fd); + config.rareErc1155ContractFactoryOwner = _addr(0x3B9C3C5EA16E7d3c9C0bb293a549aFa4066dc162); + config.rareErc1155ContractFactoryDefaultMinter = _addr(0x99dc6369541c861c2DF1530103165Bbd3d21dD82); + config.approvalManagerAdmin = _addr(0x3B9C3C5EA16E7d3c9C0bb293a549aFa4066dc162); + config.rareBatchAuctionHouseProxy = _addr(0x293AE7701A7830B1d38A7608EdF86A106d9E2645); + config.rareBatchAuctionHouseLogic = _addr(0xc0D9CB069d7CfFb963A1527968bF28370A978BB6); + config.rareBatchListingMarketplaceImplementation = _addr(0xBF36590B433d22C5D69C37BE0C5E3Dfc178EdDfc); + config.rareBatchListingMarketplaceProxy = _addr(0xF2bE72d4343beD375Cb6d0E799a3c003163860e0); + config.sovereignBatchMintFactory = _addr(0x3c7526A0975156299CeEF369B8fF3c01cc670523); + config.sovereignBatchMintImplementation = _addr(0xB9530FbA6cA19990E0E838D47c5AF0e4396A386e); + config.royaltyEngineManifold = _addr(0xEF770dFb6D5620977213f55f99bfd781D04BBE15); + config.lazySovereignBatchMintFactory = _addr(0xE5efBA88D556aDA98124654fE505465b8d494858); + config.superRareBazaarErc20BuyProxy = _addr(0xC68D3f1D951DEb15c384E6534d82fb4dd9e87717); + config.liquidFactory = _addr(0xb1777091C953fa2aC1fD67f2b3e2f61343F5Ce5e); + config.liquidRouter = _addr(0x429c3Ee66E7f6CDA12C5BadE4104aF3277aA2305); + config.liquidRegistry = _addr(0x979C2FB02B8cF352eBeD15872B76b8bE78B64Ebc); + config.rareBurner = _addr(0x9F9c2FBC75bbea5792250374527D701332DAB4a6); + config.networkBeneficiary = _addr(0x3B9C3C5EA16E7d3c9C0bb293a549aFa4066dc162); + + // Missing from directory. + config.marketplace = address(0); + config.auctionHouse = address(0); + config.marketplaceWalletV1Token = address(0); + config.seriesNftTemplate = address(0); + config.rareClaim = address(0); + config.collectorRoyaltiesClaim = address(0); + config.rareProxyAdmin = address(0); + config.spaceNftTemplate = address(0); + config.superRareAdmin = address(0); + config.rarePassNft = address(0); + config.baseL2BridgeProxy = address(0); + config.baseL2BridgeImplementation = address(0); + config.rareGovTokenL2Proxy = address(0); + config.ccipReceiverL2 = address(0); + config.season2Claim = address(0); + config.season3Claim = address(0); + config.rareStakingV1 = address(0); + config.rareStakingV1Implementation = address(0); + config.batchAuctionHouse = address(0); + } + + function _baseMainnet() private pure returns (Addresses memory config) { + config.marketplaceSettingsV3 = _addr(0x1Ca04105730EF2bBE93040Feb20aCc668292F69D); + config.marketplaceSettingsV2 = _addr(0xDDAB7C8a64eBb9E1736c2EFFA1399b43601527C0); + config.marketplaceSettingsV1 = _addr(0xb8BEA146470829F5ad4029D27338BDE7124c6704); + config.bazaar = _addr(0x51c36FFB05e17ed80Ee5C02fa83D7677C5613De2); + config.bazaarMarketplace = _addr(0x9C08cB5eff936183174d7A3D4571488aa74FB18D); + config.bazaarAuctionHouse = _addr(0x8Ea45f64b9D0c16D5704d16877F2dd93C6978C0E); + config.payments = _addr(0x276F25fF0873cb8B5322221264aF8bD631487952); + config.rareGovToken = _addr(0x691077C8e8de54EA84eFd454630439F99bd8C92f); + config.rareImplementation = _addr(0x65B852E084d4b7B3a3ab202541aF3bc5E7b2af03); + config.approvedTokenRegistry = _addr(0x23Ee5A62726a17c9594F19B893aDd0BF89dB6075); + config.baseL2BridgeProxy = _addr(0x3b41e21094611D152a08d3691a70837F1A077dAE); + config.baseL2BridgeImplementation = _addr(0x577A151b12294B83E99E44464e67c69ca06864BE); + config.rareGovTokenL2Proxy = _addr(0x691077C8e8de54EA84eFd454630439F99bd8C92f); + config.season2Claim = _addr(0xab90E329d2a8b0497e1acF3F00D682B74D6Fb33F); + config.season3Claim = _addr(0x6F7CB9334F7b73508d7031B5268f8B6321F2bCF7); + config.sovereignBatchMintFactory = _addr(0xf776204233Bfb52bA0dDfF24810CbDbf3DBf94dd); + config.sovereignBatchMintImplementation = _addr(0x963427D84540A5B53b2cbD08c82533E3E963aCd4); + config.royaltyEngineManifold = _addr(0xEF770dFb6D5620977213f55f99bfd781D04BBE15); + config.liquidFactory = _addr(0x54016106A92895a38E54cA286216416750e517b1); + config.liquidRouter = _addr(0x6d078A410ee2AD08cACD8d22b486365433e98b7b); + config.liquidRegistry = _addr(0x539e8261e18C56D801c7549fb29d06c779ef5004); + config.rareBurner = _addr(0x8B333c7cE380A7efE110Ea444e81609DBA4b75e5); + config.networkBeneficiary = _addr(0xD2437c0511906085CbDD06C27e8915d715dC3290); + + // Missing from directory. + config.superRareV1 = address(0); + config.superRareV2 = address(0); + config.marketplace = address(0); + config.auctionHouse = address(0); + config.marketplaceWalletV1Token = address(0); + config.creatorRegistry = address(0); + config.sovereignSeriesFactorySpecialCreator = address(0); + config.sovereignSeriesFactory = address(0); + config.seriesNftTemplate = address(0); + config.rareClaim = address(0); + config.royaltyRegistry = address(0); + config.spaceOperatorRegistry = address(0); + config.collectorRoyaltiesClaim = address(0); + config.rareProxyAdmin = address(0); + config.spaceFactory = address(0); + config.spaceNftTemplate = address(0); + config.superRareAdmin = address(0); + config.rarePassNft = address(0); + config.ethRareFaucet = address(0); + config.stakingRegistry = address(0); + config.rewardAccumulatorFactory = address(0); + config.rarityPoolFactory = address(0); + config.lazySovereignFactory = address(0); + config.rareMinterLogic = address(0); + config.rareMinter = address(0); + config.baseL1BridgeProxy = address(0); + config.baseL1BridgeImplementation = address(0); + config.ccipReceiverL2 = address(0); + config.batchOfferCreatorImplementation = address(0); + config.batchOfferCreatorProxy = address(0); + config.season1Claim = address(0); + config.marketUtilsV2 = address(0); + config.erc20ApprovalManager = address(0); + config.erc721ApprovalManager = address(0); + config.rareBatchAuctionHouseProxy = address(0); + config.rareBatchAuctionHouseLogic = address(0); + config.rareBatchListingMarketplaceImplementation = address(0); + config.rareBatchListingMarketplaceProxy = address(0); + config.rareStakingV1 = address(0); + config.rareStakingV1Implementation = address(0); + config.batchAuctionHouse = address(0); + config.lazySovereignBatchMintFactory = address(0); + config.superRareBazaarErc20BuyProxy = address(0); + } + + function _baseSepolia() private pure returns (Addresses memory config) { + config.creatorRegistry = _addr(0x74797488D1000d08B1f364d0989c011a86165CC1); + config.marketplaceSettingsV3 = _addr(0xC83551914aB8784B4D779794cD74d12Ac4dF26Bc); + config.marketplaceSettingsV2 = _addr(0x560f1Bd4B1b704073eDcEe6C1f930AC4E3AE6811); + config.marketplaceSettingsV1 = _addr(0x7cee969e4FCB21AD3ba3e3AE49168E7189eCF2b4); + config.sovereignSeriesFactory = _addr(0xDA805c4f6A1Af4495e6974f303Fce9d77546e804); + config.royaltyRegistry = _addr(0xBdB00e1C5B63b3382aD51857432377d982e51AE5); + config.bazaar = _addr(0x1f0c946F0EE87ACb268D50ede6C9B4D010AF65D2); + config.bazaarMarketplace = _addr(0xDBC12C846F1079c4B4fD0976A2A1c1231d26E525); + config.bazaarAuctionHouse = _addr(0xE7962f6F6A9D66682040A61E81eC711A7160d55A); + config.spaceOperatorRegistry = _addr(0xcDC46F9Dc5Ea3619F37f9e6cF000eb8c8006EB48); + config.payments = _addr(0xCe898D2308cEB524299C4657e63CBB720d07Ff7C); + config.rareGovToken = _addr(0x8b21bC8571d11F7AdB705ad8F6f6BD1deb79cE01); + config.approvedTokenRegistry = _addr(0x0eF69420ff32aB9c6D948eAc2fa88f3E67D0D239); + config.baseL2BridgeProxy = _addr(0xca491bb62A7730E97F500510132C47633DDD0229); + config.baseL2BridgeImplementation = _addr(0x38302C717F793dD7EA5C0a2F215494409EaD3ce0); + config.rareGovTokenL2Proxy = _addr(0x8b21bC8571d11F7AdB705ad8F6f6BD1deb79cE01); + config.ccipReceiverL2 = _addr(0x2B70a05320cB069e0fB55084D402343F832556E7); + config.season2Claim = _addr(0x2A2d4Aa38afc2E48D89EbE9b57820277fBca7F2e); + config.rareStakingV1 = _addr(0x510790DA86cc1a818b517108E4B2855458d62dE6); + config.sovereignBatchMintFactory = _addr(0x2b181AE0f1AEA6FEd75591B04991B1A3F9868D51); + config.sovereignBatchMintImplementation = _addr(0x1aA72D8CD9295b4A4868F98E57Da989daf081f14); + config.royaltyEngineManifold = _addr(0x62e4a1458FA509B100F4614721Bb8463B5cC2D06); + config.liquidFactory = _addr(0x912ecC55445d87149d09d83426D0aC41379bB643); + config.liquidRouter = _addr(0x92438008608949E2C7eCef34c474792bAFe8a971); + config.liquidRegistry = _addr(0x5AB6B3f7eBEFDA67cfc4D135718F9E34d58856b9); + config.rareBurner = _addr(0x9156b06d9849429d5C6D32c815b56004d582e5C8); + config.networkBeneficiary = _addr(0x3B9C3C5EA16E7d3c9C0bb293a549aFa4066dc162); + + // Missing from directory. + config.superRareV1 = address(0); + config.superRareV2 = address(0); + config.marketplace = address(0); + config.auctionHouse = address(0); + config.marketplaceWalletV1Token = address(0); + config.sovereignSeriesFactorySpecialCreator = address(0); + config.seriesNftTemplate = address(0); + config.rareClaim = address(0); + config.collectorRoyaltiesClaim = address(0); + config.rareProxyAdmin = address(0); + config.rareImplementation = address(0); + config.spaceFactory = address(0); + config.spaceNftTemplate = address(0); + config.superRareAdmin = address(0); + config.rarePassNft = address(0); + config.ethRareFaucet = address(0); + config.stakingRegistry = address(0); + config.rewardAccumulatorFactory = address(0); + config.rarityPoolFactory = address(0); + config.lazySovereignFactory = address(0); + config.rareMinterLogic = address(0); + config.rareMinter = address(0); + config.baseL1BridgeProxy = address(0); + config.baseL1BridgeImplementation = address(0); + config.batchOfferCreatorImplementation = address(0); + config.batchOfferCreatorProxy = address(0); + config.season1Claim = address(0); + config.season3Claim = address(0); + config.marketUtilsV2 = address(0); + config.erc20ApprovalManager = address(0); + config.erc721ApprovalManager = address(0); + config.rareBatchAuctionHouseProxy = address(0); + config.rareBatchAuctionHouseLogic = address(0); + config.rareBatchListingMarketplaceImplementation = address(0); + config.rareBatchListingMarketplaceProxy = address(0); + config.rareStakingV1Implementation = address(0); + config.batchAuctionHouse = address(0); + config.lazySovereignBatchMintFactory = address(0); + config.superRareBazaarErc20BuyProxy = address(0); + } + + function _addr(address raw) private pure returns (address) { + return raw; + } +} diff --git a/script/approver/erc1155-approval-manager-deploy/ERC1155ApprovalManagerDeploy.s.sol b/script/approver/erc1155-approval-manager-deploy/ERC1155ApprovalManagerDeploy.s.sol new file mode 100644 index 0000000..71bda57 --- /dev/null +++ b/script/approver/erc1155-approval-manager-deploy/ERC1155ApprovalManagerDeploy.s.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {Script, console} from "forge-std/Script.sol"; + +import {ERC1155ApprovalManager} from "../../../src/v2/approver/ERC1155/ERC1155ApprovalManager.sol"; + +/// @title ERC1155ApprovalManagerDeploy +/// @notice Deploys ERC1155ApprovalManager and grants manager authority to the approval-manager and marketplace deployers. +/// @dev `APPROVAL_MANAGER_KEY` deploys the manager and receives DEFAULT_ADMIN_ROLE + MANAGER_ROLE in the constructor. +contract ERC1155ApprovalManagerDeploy is Script { + function run() external { + uint256 approvalManagerPrivateKey = vm.envUint("APPROVAL_MANAGER_KEY"); + uint256 marketplaceDeployerPrivateKey = vm.envUint("PRIVATE_KEY"); + + address approvalManagerDeployer = vm.addr(approvalManagerPrivateKey); + address marketplaceDeployer = vm.addr(marketplaceDeployerPrivateKey); + + vm.startBroadcast(approvalManagerPrivateKey); + + ERC1155ApprovalManager manager = new ERC1155ApprovalManager(); + + if (marketplaceDeployer != approvalManagerDeployer) { + manager.grantRole(manager.MANAGER_ROLE(), marketplaceDeployer); + } + + vm.stopBroadcast(); + + bytes32 managerRole = manager.MANAGER_ROLE(); + bytes32 defaultAdminRole = manager.DEFAULT_ADMIN_ROLE(); + + console.log("ERC1155ApprovalManager deployed at:", address(manager)); + console.log("Approval manager deployer:", approvalManagerDeployer); + console.log("Marketplace deployer:", marketplaceDeployer); + console.log("Approval manager deployer has DEFAULT_ADMIN_ROLE:", manager.hasRole(defaultAdminRole, approvalManagerDeployer)); + console.log("Approval manager deployer has MANAGER_ROLE:", manager.hasRole(managerRole, approvalManagerDeployer)); + console.log("Marketplace deployer has MANAGER_ROLE:", manager.hasRole(managerRole, marketplaceDeployer)); + } +} diff --git a/script/marketplace/RareERC1155MarketplaceDeploy.s.sol b/script/marketplace/RareERC1155MarketplaceDeploy.s.sol index d16012a..00533c4 100644 --- a/script/marketplace/RareERC1155MarketplaceDeploy.s.sol +++ b/script/marketplace/RareERC1155MarketplaceDeploy.s.sol @@ -9,27 +9,31 @@ import {ERC1155ApprovalManager} from "../../src/v2/approver/ERC1155/ERC1155Appro import {RareERC1155Marketplace} from "../../src/marketplace/RareERC1155Marketplace.sol"; import {RareERC1155Settlement} from "../../src/marketplace/RareERC1155Settlement.sol"; import {RareERC1155SettlementScriptGuard} from "./RareERC1155SettlementScriptGuard.s.sol"; +import {NetworkConfig} from "../NetworkConfig.s.sol"; /// @title RareERC1155MarketplaceDeploy /// @notice Deploys the ERC1155 marketplace implementation, settlement module, and ERC1967 marketplace proxy. contract RareERC1155MarketplaceDeploy is RareERC1155SettlementScriptGuard { + error NetworkAddressNotConfigured(string name, uint256 chainId); + function run() external { uint256 privateKey = vm.envUint("PRIVATE_KEY"); + address deployer = vm.addr(privateKey); + NetworkConfig.Addresses memory config = NetworkConfig.getCurrent(); vm.startBroadcast(privateKey); - address deployer = vm.addr(privateKey); - address networkBeneficiary = vm.envOr("NETWORK_BENEFICIARY", deployer); - address marketplaceSettings = vm.envAddress("SETTINGS_ADDRESS"); - address spaceOperatorRegistry = vm.envAddress("SPACE_OPERATOR_REGISTRY"); - address royaltyEngine = vm.envAddress("ROYALTY_ENGINE"); - address payments = vm.envAddress("PAYMENTS"); - address approvedTokenRegistry = vm.envAddress("TOKEN_REGISTRY"); - address stakingSettings = vm.envAddress("STAKING_SETTINGS"); - address stakingRegistry = vm.envAddress("STAKING_REGISTRY"); - address erc20ApprovalManager = vm.envAddress("ERC20_APPROVAL_MANAGER"); - address erc721ApprovalManager = vm.envAddress("ERC721_APPROVAL_MANAGER"); - address erc1155ApprovalManager = vm.envAddress("ERC1155_APPROVAL_MANAGER"); + address networkBeneficiary = _required(config.networkBeneficiary, "networkBeneficiary"); + address marketplaceSettings = _required(config.marketplaceSettingsV3, "marketplaceSettingsV3"); + address spaceOperatorRegistry = _required(config.spaceOperatorRegistry, "spaceOperatorRegistry"); + address royaltyEngine = _required(config.royaltyEngineManifold, "royaltyEngineManifold"); + address payments = _required(config.payments, "payments"); + address approvedTokenRegistry = _required(config.approvedTokenRegistry, "approvedTokenRegistry"); + address stakingSettings = marketplaceSettings; + address stakingRegistry = _required(config.stakingRegistry, "stakingRegistry"); + address erc20ApprovalManager = _required(config.erc20ApprovalManager, "erc20ApprovalManager"); + address erc721ApprovalManager = _required(config.erc721ApprovalManager, "erc721ApprovalManager"); + address erc1155ApprovalManager = _required(config.erc1155ApprovalManager, "erc1155ApprovalManager"); RareERC1155Settlement settlement = new RareERC1155Settlement(); _validateSettlementModuleForScript(address(settlement)); @@ -53,13 +57,69 @@ contract RareERC1155MarketplaceDeploy is RareERC1155SettlementScriptGuard { ERC1967Proxy marketplaceProxy = new ERC1967Proxy(address(marketplaceImplementation), initData); - ERC20ApprovalManager(erc20ApprovalManager).grantOperatorRole(address(marketplaceProxy)); - ERC1155ApprovalManager(erc1155ApprovalManager).grantOperatorRole(address(marketplaceProxy)); + _grantErc20OperatorIfAuthorized(erc20ApprovalManager, address(marketplaceProxy), deployer); + _grantErc1155OperatorIfAuthorized(erc1155ApprovalManager, address(marketplaceProxy), deployer); + console.log("Network:", NetworkConfig.chainName(block.chainid)); + console.log("Chain ID:", block.chainid); + console.log("Network beneficiary:", networkBeneficiary); + console.log("Marketplace settings:", marketplaceSettings); + console.log("Space operator registry:", spaceOperatorRegistry); + console.log("Royalty engine:", royaltyEngine); + console.log("Payments:", payments); + console.log("Approved token registry:", approvedTokenRegistry); + console.log("Staking settings:", stakingSettings); + console.log("Staking registry:", stakingRegistry); + console.log("ERC20ApprovalManager:", erc20ApprovalManager); + console.log("ERC721ApprovalManager:", erc721ApprovalManager); + console.log("ERC1155ApprovalManager:", erc1155ApprovalManager); console.log("RareERC1155Settlement deployed at:", address(settlement)); console.log("RareERC1155Marketplace implementation deployed at:", address(marketplaceImplementation)); console.log("RareERC1155Marketplace proxy deployed at:", address(marketplaceProxy)); vm.stopBroadcast(); } + + function _required(address value, string memory name) private view returns (address) { + if (value == address(0)) revert NetworkAddressNotConfigured(name, block.chainid); + return value; + } + + function _grantErc20OperatorIfAuthorized(address manager, address operator, address deployer) private { + ERC20ApprovalManager approvalManager = ERC20ApprovalManager(manager); + bytes32 operatorRole = approvalManager.OPERATOR_ROLE(); + if (approvalManager.hasRole(operatorRole, operator)) { + console.log("ERC20ApprovalManager operator role already granted:", operator); + return; + } + + if (!approvalManager.hasRole(approvalManager.MANAGER_ROLE(), deployer)) { + console.log("ERC20ApprovalManager operator role not granted; deployer lacks MANAGER_ROLE"); + console.log("ERC20ApprovalManager:", manager); + console.log("Missing operator:", operator); + return; + } + + approvalManager.grantOperatorRole(operator); + console.log("ERC20ApprovalManager operator role granted:", operator); + } + + function _grantErc1155OperatorIfAuthorized(address manager, address operator, address deployer) private { + ERC1155ApprovalManager approvalManager = ERC1155ApprovalManager(manager); + bytes32 operatorRole = approvalManager.OPERATOR_ROLE(); + if (approvalManager.hasRole(operatorRole, operator)) { + console.log("ERC1155ApprovalManager operator role already granted:", operator); + return; + } + + if (!approvalManager.hasRole(approvalManager.MANAGER_ROLE(), deployer)) { + console.log("ERC1155ApprovalManager operator role not granted; deployer lacks MANAGER_ROLE"); + console.log("ERC1155ApprovalManager:", manager); + console.log("Missing operator:", operator); + return; + } + + approvalManager.grantOperatorRole(operator); + console.log("ERC1155ApprovalManager operator role granted:", operator); + } } diff --git a/script/token/ERC1155/RareERC1155FactoryDeploy.s.sol b/script/token/ERC1155/RareERC1155FactoryDeploy.s.sol index 6ffcb39..d0a7445 100644 --- a/script/token/ERC1155/RareERC1155FactoryDeploy.s.sol +++ b/script/token/ERC1155/RareERC1155FactoryDeploy.s.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; -import "forge-std/Script.sol"; +import {Script, console} from "forge-std/Script.sol"; -import "../../../src/token/ERC1155/RareERC1155ContractFactory.sol"; +import {RareERC1155ContractFactory} from "../../../src/token/ERC1155/RareERC1155ContractFactory.sol"; /// @title RareERC1155FactoryDeploy /// @notice Forge deployment script for the ERC1155 clone factory. @@ -27,6 +27,11 @@ contract RareERC1155FactoryDeploy is Script { factory.setDefaultMinter(defaultMinter); } + console.log("RareERC1155ContractFactory deployed at:", address(factory)); + console.log("RareERC1155 implementation deployed at:", factory.rareERC1155()); + console.log("RareERC1155ContractFactory owner:", factory.owner()); + console.log("RareERC1155ContractFactory default minter:", factory.defaultMinter()); + // Broadcast boundary: stop submitting transactions. vm.stopBroadcast(); } diff --git a/script/token/ERC1155/RareERC1155SystemDeploy.s.sol b/script/token/ERC1155/RareERC1155SystemDeploy.s.sol new file mode 100644 index 0000000..a83522a --- /dev/null +++ b/script/token/ERC1155/RareERC1155SystemDeploy.s.sol @@ -0,0 +1,136 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {console} from "forge-std/Script.sol"; +import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; + +import {RareERC1155Marketplace} from "../../../src/marketplace/RareERC1155Marketplace.sol"; +import {RareERC1155Settlement} from "../../../src/marketplace/RareERC1155Settlement.sol"; +import {ERC20ApprovalManager} from "../../../src/v2/approver/ERC20/ERC20ApprovalManager.sol"; +import {ERC1155ApprovalManager} from "../../../src/v2/approver/ERC1155/ERC1155ApprovalManager.sol"; +import {RareERC1155ContractFactory} from "../../../src/token/ERC1155/RareERC1155ContractFactory.sol"; +import {RareERC1155SettlementScriptGuard} from "../../marketplace/RareERC1155SettlementScriptGuard.s.sol"; +import {NetworkConfig} from "../../NetworkConfig.s.sol"; + +/// @title RareERC1155SystemDeploy +/// @notice Deploys and wires the ERC1155 marketplace, approval managers, settlement module, and collection factory. +/// @dev Shared marketplace dependency addresses are selected from NetworkConfig using block.chainid. +contract RareERC1155SystemDeploy is RareERC1155SettlementScriptGuard { + error NetworkAddressNotConfigured(string name, uint256 chainId); + + function run() external { + uint256 privateKey = vm.envUint("PRIVATE_KEY"); + address deployer = vm.addr(privateKey); + NetworkConfig.Addresses memory config = NetworkConfig.getCurrent(); + + vm.startBroadcast(privateKey); + + address networkBeneficiary = _required(config.networkBeneficiary, "networkBeneficiary"); + address marketplaceSettings = _required(config.marketplaceSettingsV3, "marketplaceSettingsV3"); + address spaceOperatorRegistry = _required(config.spaceOperatorRegistry, "spaceOperatorRegistry"); + address royaltyEngine = _required(config.royaltyEngineManifold, "royaltyEngineManifold"); + address payments = _required(config.payments, "payments"); + address approvedTokenRegistry = _required(config.approvedTokenRegistry, "approvedTokenRegistry"); + address stakingSettings = marketplaceSettings; + address stakingRegistry = _required(config.stakingRegistry, "stakingRegistry"); + + address erc20ApprovalManager = _required(config.erc20ApprovalManager, "erc20ApprovalManager"); + address erc721ApprovalManager = _required(config.erc721ApprovalManager, "erc721ApprovalManager"); + address erc1155ApprovalManager = _required(config.erc1155ApprovalManager, "erc1155ApprovalManager"); + + RareERC1155Settlement settlement = new RareERC1155Settlement(); + _validateSettlementModuleForScript(address(settlement)); + + RareERC1155Marketplace marketplaceImplementation = new RareERC1155Marketplace(); + bytes memory initData = abi.encodeWithSelector( + RareERC1155Marketplace.initialize.selector, + networkBeneficiary, + marketplaceSettings, + spaceOperatorRegistry, + royaltyEngine, + payments, + approvedTokenRegistry, + stakingSettings, + stakingRegistry, + erc20ApprovalManager, + erc721ApprovalManager, + erc1155ApprovalManager, + address(settlement) + ); + + ERC1967Proxy marketplaceProxy = new ERC1967Proxy(address(marketplaceImplementation), initData); + + _grantErc20OperatorIfAuthorized(erc20ApprovalManager, address(marketplaceProxy), deployer); + _grantErc1155OperatorIfAuthorized(erc1155ApprovalManager, address(marketplaceProxy), deployer); + + RareERC1155ContractFactory factory = new RareERC1155ContractFactory(); + factory.setDefaultMinter(address(marketplaceProxy)); + + console.log("Network:", NetworkConfig.chainName(block.chainid)); + console.log("Chain ID:", block.chainid); + console.log("Deployer:", deployer); + console.log("Network beneficiary:", networkBeneficiary); + console.log("Marketplace settings:", marketplaceSettings); + console.log("Space operator registry:", spaceOperatorRegistry); + console.log("Royalty engine:", royaltyEngine); + console.log("Payments:", payments); + console.log("Approved token registry:", approvedTokenRegistry); + console.log("Staking settings:", stakingSettings); + console.log("Staking registry:", stakingRegistry); + console.log("ERC20ApprovalManager:", erc20ApprovalManager); + console.log("ERC721ApprovalManager:", erc721ApprovalManager); + console.log("ERC1155ApprovalManager:", erc1155ApprovalManager); + console.log("RareERC1155Settlement:", address(settlement)); + console.log("RareERC1155Marketplace implementation:", address(marketplaceImplementation)); + console.log("RareERC1155Marketplace proxy:", address(marketplaceProxy)); + console.log("RareERC1155ContractFactory:", address(factory)); + console.log("RareERC1155 implementation:", factory.rareERC1155()); + console.log("RareERC1155ContractFactory owner:", factory.owner()); + console.log("RareERC1155ContractFactory default minter:", factory.defaultMinter()); + + vm.stopBroadcast(); + } + + function _required(address value, string memory name) private view returns (address) { + if (value == address(0)) revert NetworkAddressNotConfigured(name, block.chainid); + return value; + } + + function _grantErc20OperatorIfAuthorized(address manager, address operator, address deployer) private { + ERC20ApprovalManager approvalManager = ERC20ApprovalManager(manager); + bytes32 operatorRole = approvalManager.OPERATOR_ROLE(); + if (approvalManager.hasRole(operatorRole, operator)) { + console.log("ERC20ApprovalManager operator role already granted:", operator); + return; + } + + if (!approvalManager.hasRole(approvalManager.MANAGER_ROLE(), deployer)) { + console.log("ERC20ApprovalManager operator role not granted; deployer lacks MANAGER_ROLE"); + console.log("ERC20ApprovalManager:", manager); + console.log("Missing operator:", operator); + return; + } + + approvalManager.grantOperatorRole(operator); + console.log("ERC20ApprovalManager operator role granted:", operator); + } + + function _grantErc1155OperatorIfAuthorized(address manager, address operator, address deployer) private { + ERC1155ApprovalManager approvalManager = ERC1155ApprovalManager(manager); + bytes32 operatorRole = approvalManager.OPERATOR_ROLE(); + if (approvalManager.hasRole(operatorRole, operator)) { + console.log("ERC1155ApprovalManager operator role already granted:", operator); + return; + } + + if (!approvalManager.hasRole(approvalManager.MANAGER_ROLE(), deployer)) { + console.log("ERC1155ApprovalManager operator role not granted; deployer lacks MANAGER_ROLE"); + console.log("ERC1155ApprovalManager:", manager); + console.log("Missing operator:", operator); + return; + } + + approvalManager.grantOperatorRole(operator); + console.log("ERC1155ApprovalManager operator role granted:", operator); + } +} From a995d80bfa35a03ed83235432a92df75824c9abe Mon Sep 17 00:00:00 2001 From: Keegan Date: Thu, 4 Jun 2026 13:59:35 -0400 Subject: [PATCH 13/17] feat: add ERC1155 marketplace checks --- abis/ERC1155ApprovalManager.json | 2 +- abis/IERC1155ApprovalManager.json | 2 +- abis/IRareERC1155.json | 2 +- abis/IRareERC1155ContractFactory.json | 2 +- abis/IRareERC1155Marketplace.json | 1 + abis/IRareERC1155MarketplaceTypes.json | 1 + abis/IRareERC1155Settlement.json | 1 + abis/RareERC1155.json | 2 +- abis/RareERC1155ContractFactory.json | 2 +- abis/RareERC1155Marketplace.json | 1 + abis/RareERC1155MarketplacePayments.json | 1 + abis/RareERC1155MarketplaceStorage.json | 1 + abis/RareERC1155Settlement.json | 1 + script/NetworkConfig.s.sol | 14 +- src/marketplace/IRareERC1155Marketplace.sol | 4 +- .../IRareERC1155MarketplaceTypes.sol | 52 +- src/marketplace/IRareERC1155Settlement.sol | 25 +- src/marketplace/RareERC1155Marketplace.sol | 18 +- .../RareERC1155MarketplacePayments.sol | 25 + src/marketplace/RareERC1155Settlement.sol | 913 +++++++++++++----- .../RareERC1155SettlementCheckoutUtils.sol | 253 +++++ .../RareERC1155MarketplaceGas.t.sol | 3 +- .../RareERC1155MarketplaceSettlement.t.sol | 862 ++++++++++++++++- src/test/token/ERC1155/RareERC1155.t.sol | 30 + .../v2/approver/ERC1155ApprovalManager.t.sol | 12 +- src/token/ERC1155/IRareERC1155.sol | 4 +- src/token/ERC1155/RareERC1155.sol | 24 +- .../ERC1155/ERC1155ApprovalManager.sol | 26 +- .../ERC1155/IERC1155ApprovalManager.sol | 4 - 29 files changed, 1968 insertions(+), 320 deletions(-) create mode 100644 abis/IRareERC1155Marketplace.json create mode 100644 abis/IRareERC1155MarketplaceTypes.json create mode 100644 abis/IRareERC1155Settlement.json create mode 100644 abis/RareERC1155Marketplace.json create mode 100644 abis/RareERC1155MarketplacePayments.json create mode 100644 abis/RareERC1155MarketplaceStorage.json create mode 100644 abis/RareERC1155Settlement.json create mode 100644 src/marketplace/RareERC1155SettlementCheckoutUtils.sol diff --git a/abis/ERC1155ApprovalManager.json b/abis/ERC1155ApprovalManager.json index 87aa2dc..a426b09 100644 --- a/abis/ERC1155ApprovalManager.json +++ b/abis/ERC1155ApprovalManager.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MANAGER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"batchGrantOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchRevokeOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disable","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"disabler","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ContractDisabledError","inputs":[]},{"type":"error","name":"NotManager","inputs":[{"name":"caller","type":"address","internalType":"address"}]},{"type":"error","name":"NotOperator","inputs":[]}],"bytecode":{"object":"0x60806040818152346100ed576000808052602091818352808220338352835260ff8183205416156100b7575b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0892838352828152818320338452815260ff82842054161561007e575b6001805460ff19169055610fa885816100f38239f35b83835282815281832090338452528120600160ff19825416179055339160008051602061109b833981519152339280a438808080610068565b8180528183528082203383528352808220600160ff1982541617905533338360008051602061109b8339815191528180a461002b565b600080fdfe60e060a060408152816040526004918236101561001b57600080fd5b600092833560e01c91826301eed9b1146108615750816301ffc9a71461080a5781631e48244714610774578163248a9ca31461074757816327ac0c58146106f65781632f2770db146106835781632f2ff15d146105d957816336568abe146105465781637ee7f69b146103ad57816391d1485414610364578163a217fddf14610348578163b219f7d7146102de578163d547741f1461029a578163eb46c45b1461015e57508063ec87621c14610135578063ee070805146101115763f5b541a6146100e557600080fd5b3461010d578160031936011261010d576020905151600080516020610f538339815191528152f35b5080fd5b503461010d578160031936011261010d5760209060ff600154169051519015158152f35b503461010d578160031936011261010d576020905151600080516020610f338339815191528152f35b8391503461010d5760c036600319011261010d5761017a610939565b9261018361094f565b61018b610965565b9260a4356001600160401b038111610296576101aa903690830161097b565b92909660ff6001541661028557600080516020610f5383398151915287528660205284518088203360005260205260ff816000205416156102765750869760018060a01b0380921692833b15610272576102428996928793858a51519b8c998a988997637921219560e11b895216908701521660248501526064356044850152608435606485015289608485015260a4840191610eed565b03925af190811561026857506102555750f35b61025e90610cec565b6102655780f35b80fd5b51513d84823e3d90fd5b8880fd5b51631f0853c160e21b81528390fd5b845151631a8854fd60e31b81528390fd5b8580fd5b919050346102da5780513660031901126102da576102d791356102d260016102c061094f565b938387528660205251862001546109a8565b610e4d565b80f35b8280fd5b9050346102da5760203660031901126102da576102f9610939565b91600080516020610f33833981519152845283602052518084203360005260205260ff8160002054161561033157836102d784610db3565b602492505190632a19e83360e01b82523390820152fd5b50503461010d578160031936011261010d575151908152602090f35b8391503461010d57825136600319011261010d5760209261038361094f565b91358352828452518092209060018060a01b0316600052825260ff81600020541690519015158152f35b83833461010d5760c0906003198281360112610542576103cb610939565b906103d461094f565b916103dd610965565b6080526001600160401b039260643584811161053e576104009036908a01610904565b93909260843586811161053a5761041a9036908c01610904565b9660a435908111610536576104329036908d0161097b565b97909560ff6001541661052557600080516020610f538339815191528c528b6020528b60ff8b5182818094203382526020522054161561051657509a9b999a98998c996001600160a01b0394851698893b156105125760a48e8e886104c7966104d99a6104f09d845151808752631759616b60e11b905216908451015260805116602483510152604482510152510191610f0e565b918b5160648682860301910152610f0e565b906084895191828403019101528751948593610eed565b0390838651915af19081156102685750610508575080f35b6102d79051610cec565b8b80fd5b51631f0853c160e21b81528d90fd5b895151631a8854fd60e31b81528d90fd5b8a80fd5b8980fd5b8780fd5b8380fd5b83833461010d5751918260031936011261010d5761056261094f565b90336001600160a01b0383160361057e57906102d79135610e4d565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b9050346102da578151908160031936011261054257359161060e60016105fd61094f565b9385875286602052862001546109a8565b82845283602052518084209160018060a01b03169182855260205260ff818520541615610639578380f35b828452836020528084208285526020528320600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8480a43880808380f35b919050346102da57826003193601126102da57600080516020610f338339815191528352826020525180832033845260205260ff8184205416156103315782600160ff1981541617600155337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd8280a280f35b9050346102da5760203660031901126102da57610711610939565b91600080516020610f338339815191528452836020525180842033855260205260ff81852054161561033157836102d784610d15565b9050346102da5760203660031901126102da57602092916001913583528284525180922001549051908152f35b9050346102da5760203660031901126102da5780356001600160401b038111610542576107a49036908301610904565b919092600080516020610f338339815191528552846020525180852033865260205260ff818620541615610331575050825b8181106107e1578380f35b806108006107fb6107f6610805948688610ec9565b610ed9565b610db3565b610ea4565b6107d6565b9050346102da5760203660031901126102da57359063ffffffff60e01b82168092036102da5760209250637965db0b60e01b8214918215610850575b5051519015158152f35b6301ffc9a760e01b14915038610846565b849250346102da5760203660031901126102da5781356001600160401b038111610542576108929036908401610904565b919092600080516020610f338339815191528552846020526040852033865260205260ff604086205416156108ef575050825b8181106108d0578380f35b806108006108e56107f66108ea948688610ec9565b610d15565b6108c5565b632a19e83360e01b8252339082015260249150fd5b9181601f84011215610934578235916001600160401b038311610934576020808501948460051b01011161093457565b600080fd5b600435906001600160a01b038216820361093457565b602435906001600160a01b038216820361093457565b604435906001600160a01b038216820361093457565b9181601f84011215610934578235916001600160401b038311610934576020838186019501011161093457565b6000818152602091818352604092838320338452815260ff8484205416156109d05750505050565b83516001600160401b03939092336060850186811186821017610cb5578752602a85528385019187368437855115610ca15760308353855191600192831015610c8d576078602188015360295b838111610c235750610b4d578751906080820182811089821117610c0f57895260428252858201926060368537825115610bfb57603084538251811015610bfb57607860218401536041905b808211610b8f575050610b4d5791610ae294939188936067989951968793610ab88886019a76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8c525180926037880190610cc9565b8401917001034b99036b4b9b9b4b733903937b6329607d1b60378401525180936048840190610cc9565b0103602881018552601f19968791011684019684881090881117610b39575092610b3060449593601f938880975262461bcd60e51b8752600487015251809281602488015287870190610cc9565b01168101030190fd5b634e487b7160e01b81526041600452602490fd5b60648589519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015610be7576f181899199a1a9b1b9c1cb0b131b232b360811b901a610bbe8486610e7d565b5360041c918015610bd3576000190190610a69565b634e487b7160e01b87526011600452602487fd5b634e487b7160e01b88526032600452602488fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b86526041600452602486fd5b90600f81166010811015610c79576f181899199a1a9b1b9c1cb0b131b232b360811b901a610c51838a610e7d565b5360041c908015610c655760001901610a1d565b634e487b7160e01b86526011600452602486fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b84526032600452602484fd5b634e487b7160e01b84526041600452602484fd5b60005b838110610cdc5750506000910152565b8181015183820152602001610ccc565b6001600160401b038111610cff57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b031660008181527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f6020526040812054909190600080516020610f538339815191529060ff1615610d6c57505050565b808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4565b6001600160a01b031660008181527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f6020526040812054909190600080516020610f538339815191529060ff16610e0957505050565b80835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416610e0957505050565b908151811015610e8e570160200190565b634e487b7160e01b600052603260045260246000fd5b6000198114610eb35760010190565b634e487b7160e01b600052601160045260246000fd5b9190811015610e8e5760051b0190565b356001600160a01b03811681036109345790565b908060209392818452848401376000828201840152601f01601f1916010190565b81835290916001600160fb1b0383116109345760209260051b80928483013701019056fe241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0897667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929a2646970667358221220ab138f897f93ba50f6d43f3b70edf45f1b4ea413c7bb5ece5694d2dc865eceb164736f6c634300081200332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","sourceMap":"547:4180:76:-:0;;;;;;;;2198:4:37;547:4180:76;;;;;;;;;;;1173:10;547:4180;;;;;;;;;;7669:23:37;7665:149;;-1:-1:-1;711:25:76;547:4180;;;;;;;;;;1173:10;547:4180;;;;;;;;;;7669:23:37;7665:149;;-1:-1:-1;1410:16:76;711:25;;-1:-1:-1;;711:25:76;;;547:4180;711:25;547:4180;;711:25;547:4180;;7665:149:37;547:4180:76;;;;;;;;;1173:10;;547:4180;;;;;7740:4:37;711:25:76;;;;;;;;1173:10;;-1:-1:-1;;;;;;;;;;;1173:10:76;7763:40:37;;;7665:149;;;;;;;547:4180:76;;;;;;;;;1173:10;547:4180;;;;;;;7740:4:37;711:25:76;;;;;;;;1173:10;;7763:40:37;-1:-1:-1;;;;;;;;;;;7763:40:37;;;7665:149;;547:4180:76;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60e060a060408152816040526004918236101561001b57600080fd5b600092833560e01c91826301eed9b1146108615750816301ffc9a71461080a5781631e48244714610774578163248a9ca31461074757816327ac0c58146106f65781632f2770db146106835781632f2ff15d146105d957816336568abe146105465781637ee7f69b146103ad57816391d1485414610364578163a217fddf14610348578163b219f7d7146102de578163d547741f1461029a578163eb46c45b1461015e57508063ec87621c14610135578063ee070805146101115763f5b541a6146100e557600080fd5b3461010d578160031936011261010d576020905151600080516020610f538339815191528152f35b5080fd5b503461010d578160031936011261010d5760209060ff600154169051519015158152f35b503461010d578160031936011261010d576020905151600080516020610f338339815191528152f35b8391503461010d5760c036600319011261010d5761017a610939565b9261018361094f565b61018b610965565b9260a4356001600160401b038111610296576101aa903690830161097b565b92909660ff6001541661028557600080516020610f5383398151915287528660205284518088203360005260205260ff816000205416156102765750869760018060a01b0380921692833b15610272576102428996928793858a51519b8c998a988997637921219560e11b895216908701521660248501526064356044850152608435606485015289608485015260a4840191610eed565b03925af190811561026857506102555750f35b61025e90610cec565b6102655780f35b80fd5b51513d84823e3d90fd5b8880fd5b51631f0853c160e21b81528390fd5b845151631a8854fd60e31b81528390fd5b8580fd5b919050346102da5780513660031901126102da576102d791356102d260016102c061094f565b938387528660205251862001546109a8565b610e4d565b80f35b8280fd5b9050346102da5760203660031901126102da576102f9610939565b91600080516020610f33833981519152845283602052518084203360005260205260ff8160002054161561033157836102d784610db3565b602492505190632a19e83360e01b82523390820152fd5b50503461010d578160031936011261010d575151908152602090f35b8391503461010d57825136600319011261010d5760209261038361094f565b91358352828452518092209060018060a01b0316600052825260ff81600020541690519015158152f35b83833461010d5760c0906003198281360112610542576103cb610939565b906103d461094f565b916103dd610965565b6080526001600160401b039260643584811161053e576104009036908a01610904565b93909260843586811161053a5761041a9036908c01610904565b9660a435908111610536576104329036908d0161097b565b97909560ff6001541661052557600080516020610f538339815191528c528b6020528b60ff8b5182818094203382526020522054161561051657509a9b999a98998c996001600160a01b0394851698893b156105125760a48e8e886104c7966104d99a6104f09d845151808752631759616b60e11b905216908451015260805116602483510152604482510152510191610f0e565b918b5160648682860301910152610f0e565b906084895191828403019101528751948593610eed565b0390838651915af19081156102685750610508575080f35b6102d79051610cec565b8b80fd5b51631f0853c160e21b81528d90fd5b895151631a8854fd60e31b81528d90fd5b8a80fd5b8980fd5b8780fd5b8380fd5b83833461010d5751918260031936011261010d5761056261094f565b90336001600160a01b0383160361057e57906102d79135610e4d565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b9050346102da578151908160031936011261054257359161060e60016105fd61094f565b9385875286602052862001546109a8565b82845283602052518084209160018060a01b03169182855260205260ff818520541615610639578380f35b828452836020528084208285526020528320600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8480a43880808380f35b919050346102da57826003193601126102da57600080516020610f338339815191528352826020525180832033845260205260ff8184205416156103315782600160ff1981541617600155337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd8280a280f35b9050346102da5760203660031901126102da57610711610939565b91600080516020610f338339815191528452836020525180842033855260205260ff81852054161561033157836102d784610d15565b9050346102da5760203660031901126102da57602092916001913583528284525180922001549051908152f35b9050346102da5760203660031901126102da5780356001600160401b038111610542576107a49036908301610904565b919092600080516020610f338339815191528552846020525180852033865260205260ff818620541615610331575050825b8181106107e1578380f35b806108006107fb6107f6610805948688610ec9565b610ed9565b610db3565b610ea4565b6107d6565b9050346102da5760203660031901126102da57359063ffffffff60e01b82168092036102da5760209250637965db0b60e01b8214918215610850575b5051519015158152f35b6301ffc9a760e01b14915038610846565b849250346102da5760203660031901126102da5781356001600160401b038111610542576108929036908401610904565b919092600080516020610f338339815191528552846020526040852033865260205260ff604086205416156108ef575050825b8181106108d0578380f35b806108006108e56107f66108ea948688610ec9565b610d15565b6108c5565b632a19e83360e01b8252339082015260249150fd5b9181601f84011215610934578235916001600160401b038311610934576020808501948460051b01011161093457565b600080fd5b600435906001600160a01b038216820361093457565b602435906001600160a01b038216820361093457565b604435906001600160a01b038216820361093457565b9181601f84011215610934578235916001600160401b038311610934576020838186019501011161093457565b6000818152602091818352604092838320338452815260ff8484205416156109d05750505050565b83516001600160401b03939092336060850186811186821017610cb5578752602a85528385019187368437855115610ca15760308353855191600192831015610c8d576078602188015360295b838111610c235750610b4d578751906080820182811089821117610c0f57895260428252858201926060368537825115610bfb57603084538251811015610bfb57607860218401536041905b808211610b8f575050610b4d5791610ae294939188936067989951968793610ab88886019a76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8c525180926037880190610cc9565b8401917001034b99036b4b9b9b4b733903937b6329607d1b60378401525180936048840190610cc9565b0103602881018552601f19968791011684019684881090881117610b39575092610b3060449593601f938880975262461bcd60e51b8752600487015251809281602488015287870190610cc9565b01168101030190fd5b634e487b7160e01b81526041600452602490fd5b60648589519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015610be7576f181899199a1a9b1b9c1cb0b131b232b360811b901a610bbe8486610e7d565b5360041c918015610bd3576000190190610a69565b634e487b7160e01b87526011600452602487fd5b634e487b7160e01b88526032600452602488fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b86526041600452602486fd5b90600f81166010811015610c79576f181899199a1a9b1b9c1cb0b131b232b360811b901a610c51838a610e7d565b5360041c908015610c655760001901610a1d565b634e487b7160e01b86526011600452602486fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b84526032600452602484fd5b634e487b7160e01b84526041600452602484fd5b60005b838110610cdc5750506000910152565b8181015183820152602001610ccc565b6001600160401b038111610cff57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b031660008181527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f6020526040812054909190600080516020610f538339815191529060ff1615610d6c57505050565b808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4565b6001600160a01b031660008181527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f6020526040812054909190600080516020610f538339815191529060ff16610e0957505050565b80835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416610e0957505050565b908151811015610e8e570160200190565b634e487b7160e01b600052603260045260246000fd5b6000198114610eb35760010190565b634e487b7160e01b600052601160045260246000fd5b9190811015610e8e5760051b0190565b356001600160a01b03811681036109345790565b908060209392818452848401376000828201840152601f01601f1916010190565b81835290916001600160fb1b0383116109345760209260051b80928483013701019056fe241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0897667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929a2646970667358221220ab138f897f93ba50f6d43f3b70edf45f1b4ea413c7bb5ece5694d2dc865eceb164736f6c63430008120033","sourceMap":"547:4180:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;929:29;547:4180;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;547:4180:76;;;;;;;;;;;:::i;:::-;;;;;;;;1637:44;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;;;3786:10;547:4180;;;;;;;;;;3762:35;3758:61;;547:4180;;;;;;;;;;;3981:52;;;;;;547:4180;;;;;;;;;;;;;;;;;;;;3981:52;;547:4180;3981:52;;;547:4180;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3981:52;;;;;;;;;;;;547:4180;;3981:52;;;;:::i;:::-;547:4180;;3981:52;547:4180;;;;3981:52;547:4180;;;;;;;;;3981:52;547:4180;;;3758:61;547:4180;-1:-1:-1;;;3806:13:76;;547:4180;;3806:13;1637:44;547:4180;;;-1:-1:-1;;;1658:23:76;;547:4180;;1658:23;547:4180;;;;;;;;;;;;;;-1:-1:-1;;547:4180:76;;;;5486:7:37;547:4180:76;;2642:4:37;547:4180:76;;;:::i;:::-;;;;;;;;;;;4604:22:37;547:4180:76;2642:4:37;:::i;:::-;5486:7;:::i;:::-;547:4180:76;;;;;;;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;2737:8;;;;:::i;1910:69::-;547:4180;;;;1957:22;;;;;;1937:10;1957:22;;;547:4180;1957:22;547:4180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;;;;;547:4180:76;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;1641:8;547:4180;;1637:44;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;;;;;;;4463:10;547:4180;;;;;;;4439:35;4435:61;;-1:-1:-1;547:4180:76;;;;;;;;-1:-1:-1;;;;;547:4180:76;;;;4659:59;;;;;547:4180;;;;;;;;;;;;;4659:59;;;547:4180;;;4659:59;;547:4180;4659:59;;;;547:4180;;;;;4659:59;;547:4180;;;4659:59;;547:4180;;4659:59;547:4180;;;:::i;:::-;4659:59;;;547:4180;;;;;;;;;;:::i;:::-;4659:59;547:4180;4659:59;;547:4180;;;;;;;;4659:59;;547:4180;;;;:::i;:::-;4659:59;;;;;;;;;;;;;;;;547:4180;;;4659:59;;;;;:::i;:::-;547:4180;;;4435:61;547:4180;-1:-1:-1;;;4483:13:76;;547:4180;;4483:13;1637:44;547:4180;;;-1:-1:-1;;;1658:23:76;;547:4180;;1658:23;547:4180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;719:10:52;;-1:-1:-1;;;;;547:4180:76;;6133:23:37;547:4180:76;;;6237:7:37;547:4180:76;;6237:7:37;:::i;547:4180:76:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;2642:4:37;547:4180:76;;;:::i;:::-;;;;;;;;;;4604:22:37;547:4180:76;2642:4:37;:::i;:::-;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7669:23:37;7665:149;;547:4180:76;;;7665:149:37;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;;719:10:52;7763:40:37;;;;;7665:149;;;547:4180:76;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;547:4180;2179:4;547:4180;;;;;;2179:4;547:4180;1937:10;2198:28;;;;547:4180;;;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;2482:8;;;;:::i;547:4180::-;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;;;;;;;;;;;;;;4604:22:37;547:4180:76;;;;;;;;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;-1:-1:-1;;;;;547:4180:76;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;3242:13;;;3257:20;;;;;;547:4180;;;3279:3;3402:12;;;;3279:3;3402:12;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;3279:3;:::i;:::-;3242:13;;547:4180;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2840:47:37;;;:87;;;;547:4180:76;;;;;;;;;;2840:87:37;-1:-1:-1;;;937:40:55;;-1:-1:-1;2840:87:37;;;547:4180:76;;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;-1:-1:-1;;;;;547:4180:76;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;547:4180:76;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;2901:13;;;2916:20;;;;;;547:4180;;;2938:3;3063:12;;;;2938:3;3063:12;;;;:::i;:::-;;:::i;2938:3::-;2901:13;;1910:69;-1:-1:-1;;;1957:22:76;;1937:10;1957:22;;;547:4180;;;-1:-1:-1;1957:22:76;547:4180;;;;;;;;;;;;;-1:-1:-1;;;;;547:4180:76;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;547:4180:76;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;547:4180:76;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;547:4180:76;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;547:4180:76;;;;;;;;;;;;;;;:::o;3460:103:37:-;3130:6;547:4180:76;;;;;;;;;;;;;719:10:52;547:4180:76;;;;;;;;;;3931:23:37;3927:390;;3460:103;;;;:::o;3927:390::-;547:4180:76;;-1:-1:-1;;;;;547:4180:76;;;719:10:52;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:15:53;;;547:4180:76;;;;;;;;;;2000:15:53;547:4180:76;;;2000:15:53;547:4180:76;2058:5:53;;;;;;2170:10;278:18;;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:15:53;;;547:4180:76;;;;;;;2000:15:53;547:4180:76;;;2000:15:53;547:4180:76;2025:128:53;2058:5;;;;;;2170:10;;278:18;;547:4180:76;;;;;;;;;;;4022:252:37;;;547:4180:76;4022:252:37;;;547:4180:76;-1:-1:-1;;;547:4180:76;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;547:4180:76;;;;;;;;;;;;:::i;:::-;;4022:252:37;;;;;;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:336:37;;2141:1:53;3970:336:37;;547:4180:76;;;;;;;;;;;;;;:::i;:::-;;;;;3970:336:37;;;;547:4180:76;-1:-1:-1;;;547:4180:76;;;2141:1:53;547:4180:76;;;;278:18:53;;547:4180:76;;;;;;;278:18:53;;;2141:1;278:18;;;;;;547:4180:76;278:18:53;547:4180:76;;;278:18:53;;2065:3;2105:11;;2113:3;2105:11;;2096:21;;;;;;-1:-1:-1;;;2096:21:53;;2084:33;;;;:::i;:::-;;2141:1;547:4180:76;2065:3:53;547:4180:76;;;;-1:-1:-1;;547:4180:76;;2030:26:53;;547:4180:76;-1:-1:-1;;;547:4180:76;;;2141:1:53;547:4180:76;;;;2096:21:53;-1:-1:-1;;;547:4180:76;;;2141:1:53;547:4180:76;;;;;-1:-1:-1;;;547:4180:76;;;2141:1:53;547:4180:76;;;;;-1:-1:-1;;;547:4180:76;;;2141:1:53;547:4180:76;;;;2065:3:53;2105:11;2113:3;2105:11;;2096:21;;;;;;-1:-1:-1;;;2096:21:53;;2084:33;;;;:::i;:::-;;2141:1;547:4180:76;2065:3:53;547:4180:76;;;;-1:-1:-1;;547:4180:76;2030:26:53;;547:4180:76;-1:-1:-1;;;547:4180:76;;;2141:1:53;547:4180:76;;;;2096:21:53;-1:-1:-1;;;547:4180:76;;;2141:1:53;547:4180:76;;;;;-1:-1:-1;;;547:4180:76;;;;;;;;;-1:-1:-1;;;547:4180:76;;;;;;;;;-1:-1:-1;;;547:4180:76;;;;;;;;;;;;;;;;-1:-1:-1;;547:4180:76;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;547:4180:76;;;;;;:::o;:::-;;;;;;;;;;;;7587:233:37;-1:-1:-1;;;;;547:4180:76;3130:6:37;547:4180:76;;;;;;;;;;3130:6:37;;547:4180:76;-1:-1:-1;;;;;;;;;;;846:26:76;547:4180;;7669:23:37;7665:149;;7587:233;;;:::o;7665:149::-;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;;;7763:40:37;719:10:52;7763:40:37;;;7587:233::o;7991:234::-;-1:-1:-1;;;;;547:4180:76;3130:6:37;547:4180:76;;;;;;;;;;3130:6:37;;547:4180:76;-1:-1:-1;;;;;;;;;;;846:26:76;547:4180;;8070:149:37;;7991:234;;;:::o;8070:149::-;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;8168:40:37;719:10:52;8168:40:37;;;7991:234::o;:::-;;3130:6;547:4180:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8070:149:37;;7991:234;;;:::o;547:4180:76:-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;547:4180:76;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;547:4180:76;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;547:4180:76;;;;;;;;-1:-1:-1;;547:4180:76;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;547:4180:76;;;;;;;;;;;;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","MANAGER_ROLE()":"ec87621c","OPERATOR_ROLE()":"f5b541a6","batchGrantOperatorRole(address[])":"01eed9b1","batchRevokeOperatorRole(address[])":"1e482447","disable()":"2f2770db","disabled()":"ee070805","getRoleAdmin(bytes32)":"248a9ca3","grantOperatorRole(address)":"27ac0c58","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeOperatorRole(address)":"b219f7d7","revokeRole(bytes32,address)":"d547741f","safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":"7ee7f69b","safeTransferFrom(address,address,address,uint256,uint256,bytes)":"eb46c45b","supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ContractDisabledError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"NotManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disabler\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchGrantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchRevokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"grantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Users approve this manager on ERC1155 collections, and operator contracts execute transfers through it.\",\"errors\":{\"NotManager(address)\":[{\"params\":{\"caller\":\"The account that attempted a manager-only operation.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"disabler\":\"The manager that disabled the approval manager.\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to grant the role to.\"}},\"batchRevokeOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to revoke the role from.\"}},\"disable()\":{\"details\":\"Callable by an account with the manager role.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to grant the role to.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to revoke the role from.\"}},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"params\":{\"amounts\":\"The amounts of each token id to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"ids\":\"The token ids to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount of tokens to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"id\":\"The token id to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"title\":\"ERC1155ApprovalManager\",\"version\":1},\"userdoc\":{\"errors\":{\"ContractDisabledError()\":[{\"notice\":\"Error thrown when contract is disabled.\"}],\"NotManager(address)\":[{\"notice\":\"Error thrown when caller is not a manager.\"}],\"NotOperator()\":[{\"notice\":\"Error thrown when caller is not an operator.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Event emitted when contract is disabled.\"}},\"kind\":\"user\",\"methods\":{\"MANAGER_ROLE()\":{\"notice\":\"Role for managing operators.\"},\"OPERATOR_ROLE()\":{\"notice\":\"Role for contracts allowed to transfer tokens.\"},\"batchGrantOperatorRole(address[])\":{\"notice\":\"Grants operator transfer permissions to multiple contracts.\"},\"batchRevokeOperatorRole(address[])\":{\"notice\":\"Revokes operator transfer permissions from multiple contracts.\"},\"constructor\":{\"notice\":\"Grants deployer admin and manager roles.\"},\"disable()\":{\"notice\":\"Disables token transfers through the approval manager permanently.\"},\"disabled()\":{\"notice\":\"Whether the contract is disabled.\"},\"grantOperatorRole(address)\":{\"notice\":\"Grants operator transfer permissions to a contract.\"},\"revokeOperatorRole(address)\":{\"notice\":\"Revokes operator transfer permissions from a contract.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Safely transfer a batch of ERC1155 tokens from a user to a recipient.\"},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"notice\":\"Safely transfer ERC1155 tokens from a user to a recipient.\"}},\"notice\":\"A central approval manager for ERC1155 tokens that allows whitelisted contracts to transfer tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol\":\"ERC1155ApprovalManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xbc7fc49ba05b312e318d3d7b517ed0254489320bedef2e91f80c3bd4e904fc0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e411d112f89fcadbff89da0579d61eafdf76272aaa91fb18728a86337440bb88\",\"dweb:/ipfs/QmfKJqMJ2CF1mw4UwDajoFdrrfKWSZwetkAByUP56EeqSQ\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x2626d8ab3dfdad0fad630c212ad146d59473d0f48b771784c61a7c1dbbea1f3f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7c144532f1e7c76ac95fb6a8f617c1f740d7a73442a907eb60910e99dfa1fbf\",\"dweb:/ipfs/QmZsGyooD6emxB8JCuugRjnRYS2MPZEL586uuV7dgC8Jng\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4\",\"dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol\":{\"keccak256\":\"0x7c95928decb621e78548535c0603ca55c0b85021efbd7af0a8d287a9998db00c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ac51589d1c771a9591eb24f77e67812957228733baf985b68dd29df5a3a76fd\",\"dweb:/ipfs/QmbNSexx5ifBpSy2rs2PbTTaQ6Q3S1mVDHWLf9Bu5TmVJU\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ContractDisabledError"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"type":"error","name":"NotManager"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[{"internalType":"address","name":"disabler","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantOperatorRole"},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchRevokeOperatorRole"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disable"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantOperatorRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeOperatorRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"batchGrantOperatorRole(address[])":{"params":{"operators":"Contract addresses to grant the role to."}},"batchRevokeOperatorRole(address[])":{"params":{"operators":"Contract addresses to revoke the role from."}},"disable()":{"details":"Callable by an account with the manager role."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantOperatorRole(address)":{"params":{"operator":"The contract address to grant the role to."}},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event."},"revokeOperatorRole(address)":{"params":{"operator":"The contract address to revoke the role from."}},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"params":{"amounts":"The amounts of each token id to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","ids":"The token ids to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"params":{"amount":"The amount of tokens to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","id":"The token id to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"MANAGER_ROLE()":{"notice":"Role for managing operators."},"OPERATOR_ROLE()":{"notice":"Role for contracts allowed to transfer tokens."},"batchGrantOperatorRole(address[])":{"notice":"Grants operator transfer permissions to multiple contracts."},"batchRevokeOperatorRole(address[])":{"notice":"Revokes operator transfer permissions from multiple contracts."},"constructor":{"notice":"Grants deployer admin and manager roles."},"disable()":{"notice":"Disables token transfers through the approval manager permanently."},"disabled()":{"notice":"Whether the contract is disabled."},"grantOperatorRole(address)":{"notice":"Grants operator transfer permissions to a contract."},"revokeOperatorRole(address)":{"notice":"Revokes operator transfer permissions from a contract."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"notice":"Safely transfer a batch of ERC1155 tokens from a user to a recipient."},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"notice":"Safely transfer ERC1155 tokens from a user to a recipient."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol":"ERC1155ApprovalManager"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xbc7fc49ba05b312e318d3d7b517ed0254489320bedef2e91f80c3bd4e904fc0c","urls":["bzz-raw://e411d112f89fcadbff89da0579d61eafdf76272aaa91fb18728a86337440bb88","dweb:/ipfs/QmfKJqMJ2CF1mw4UwDajoFdrrfKWSZwetkAByUP56EeqSQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57","urls":["bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a","dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x2626d8ab3dfdad0fad630c212ad146d59473d0f48b771784c61a7c1dbbea1f3f","urls":["bzz-raw://d7c144532f1e7c76ac95fb6a8f617c1f740d7a73442a907eb60910e99dfa1fbf","dweb:/ipfs/QmZsGyooD6emxB8JCuugRjnRYS2MPZEL586uuV7dgC8Jng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b","urls":["bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d","dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858","urls":["bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4","dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc","urls":["bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7","dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6"],"license":"MIT"},"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol":{"keccak256":"0x7c95928decb621e78548535c0603ca55c0b85021efbd7af0a8d287a9998db00c","urls":["bzz-raw://4ac51589d1c771a9591eb24f77e67812957228733baf985b68dd29df5a3a76fd","dweb:/ipfs/QmbNSexx5ifBpSy2rs2PbTTaQ6Q3S1mVDHWLf9Bu5TmVJU"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"}},"version":1},"id":76} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MANAGER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"batchGrantOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchRevokeOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disable","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"disabler","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ContractDisabledError","inputs":[]},{"type":"error","name":"NotManager","inputs":[{"name":"caller","type":"address","internalType":"address"}]},{"type":"error","name":"NotOperator","inputs":[]}],"bytecode":{"object":"0x60806040818152346100ed576000808052602091818352808220338352835260ff8183205416156100b7575b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0892838352828152818320338452815260ff82842054161561007e575b6001805460ff19169055610fa885816100f38239f35b83835282815281832090338452528120600160ff19825416179055339160008051602061109b833981519152339280a438808080610068565b8180528183528082203383528352808220600160ff1982541617905533338360008051602061109b8339815191528180a461002b565b600080fdfe60e060a060408152816040526004918236101561001b57600080fd5b600092833560e01c91826301eed9b1146108615750816301ffc9a71461080a5781631e48244714610774578163248a9ca31461074757816327ac0c58146106f65781632f2770db146106835781632f2ff15d146105d957816336568abe146105465781637ee7f69b146103ad57816391d1485414610364578163a217fddf14610348578163b219f7d7146102de578163d547741f1461029a578163eb46c45b1461015e57508063ec87621c14610135578063ee070805146101115763f5b541a6146100e557600080fd5b3461010d578160031936011261010d576020905151600080516020610f538339815191528152f35b5080fd5b503461010d578160031936011261010d5760209060ff600154169051519015158152f35b503461010d578160031936011261010d576020905151600080516020610f338339815191528152f35b8391503461010d5760c036600319011261010d5761017a610939565b9261018361094f565b61018b610965565b9260a4356001600160401b038111610296576101aa903690830161097b565b92909660ff6001541661028557600080516020610f5383398151915287528660205284518088203360005260205260ff816000205416156102765750869760018060a01b0380921692833b15610272576102428996928793858a51519b8c998a988997637921219560e11b895216908701521660248501526064356044850152608435606485015289608485015260a4840191610eed565b03925af190811561026857506102555750f35b61025e90610cec565b6102655780f35b80fd5b51513d84823e3d90fd5b8880fd5b51631f0853c160e21b81528390fd5b845151631a8854fd60e31b81528390fd5b8580fd5b919050346102da5780513660031901126102da576102d791356102d260016102c061094f565b938387528660205251862001546109a8565b610e4d565b80f35b8280fd5b9050346102da5760203660031901126102da576102f9610939565b91600080516020610f33833981519152845283602052518084203360005260205260ff8160002054161561033157836102d784610db3565b602492505190632a19e83360e01b82523390820152fd5b50503461010d578160031936011261010d575151908152602090f35b8391503461010d57825136600319011261010d5760209261038361094f565b91358352828452518092209060018060a01b0316600052825260ff81600020541690519015158152f35b83833461010d5760c0906003198281360112610542576103cb610939565b906103d461094f565b916103dd610965565b6080526001600160401b039260643584811161053e576104009036908a01610904565b93909260843586811161053a5761041a9036908c01610904565b9660a435908111610536576104329036908d0161097b565b97909560ff6001541661052557600080516020610f538339815191528c528b6020528b60ff8b5182818094203382526020522054161561051657509a9b999a98998c996001600160a01b0394851698893b156105125760a48e8e886104c7966104d99a6104f09d845151808752631759616b60e11b905216908451015260805116602483510152604482510152510191610f0e565b918b5160648682860301910152610f0e565b906084895191828403019101528751948593610eed565b0390838651915af19081156102685750610508575080f35b6102d79051610cec565b8b80fd5b51631f0853c160e21b81528d90fd5b895151631a8854fd60e31b81528d90fd5b8a80fd5b8980fd5b8780fd5b8380fd5b83833461010d5751918260031936011261010d5761056261094f565b90336001600160a01b0383160361057e57906102d79135610e4d565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b9050346102da578151908160031936011261054257359161060e60016105fd61094f565b9385875286602052862001546109a8565b82845283602052518084209160018060a01b03169182855260205260ff818520541615610639578380f35b828452836020528084208285526020528320600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8480a43880808380f35b919050346102da57826003193601126102da57600080516020610f338339815191528352826020525180832033845260205260ff8184205416156103315782600160ff1981541617600155337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd8280a280f35b9050346102da5760203660031901126102da57610711610939565b91600080516020610f338339815191528452836020525180842033855260205260ff81852054161561033157836102d784610d15565b9050346102da5760203660031901126102da57602092916001913583528284525180922001549051908152f35b9050346102da5760203660031901126102da5780356001600160401b038111610542576107a49036908301610904565b919092600080516020610f338339815191528552846020525180852033865260205260ff818620541615610331575050825b8181106107e1578380f35b806108006107fb6107f6610805948688610ec9565b610ed9565b610db3565b610ea4565b6107d6565b9050346102da5760203660031901126102da57359063ffffffff60e01b82168092036102da5760209250637965db0b60e01b8214918215610850575b5051519015158152f35b6301ffc9a760e01b14915038610846565b849250346102da5760203660031901126102da5781356001600160401b038111610542576108929036908401610904565b919092600080516020610f338339815191528552846020526040852033865260205260ff604086205416156108ef575050825b8181106108d0578380f35b806108006108e56107f66108ea948688610ec9565b610d15565b6108c5565b632a19e83360e01b8252339082015260249150fd5b9181601f84011215610934578235916001600160401b038311610934576020808501948460051b01011161093457565b600080fd5b600435906001600160a01b038216820361093457565b602435906001600160a01b038216820361093457565b604435906001600160a01b038216820361093457565b9181601f84011215610934578235916001600160401b038311610934576020838186019501011161093457565b6000818152602091818352604092838320338452815260ff8484205416156109d05750505050565b83516001600160401b03939092336060850186811186821017610cb5578752602a85528385019187368437855115610ca15760308353855191600192831015610c8d576078602188015360295b838111610c235750610b4d578751906080820182811089821117610c0f57895260428252858201926060368537825115610bfb57603084538251811015610bfb57607860218401536041905b808211610b8f575050610b4d5791610ae294939188936067989951968793610ab88886019a76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8c525180926037880190610cc9565b8401917001034b99036b4b9b9b4b733903937b6329607d1b60378401525180936048840190610cc9565b0103602881018552601f19968791011684019684881090881117610b39575092610b3060449593601f938880975262461bcd60e51b8752600487015251809281602488015287870190610cc9565b01168101030190fd5b634e487b7160e01b81526041600452602490fd5b60648589519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015610be7576f181899199a1a9b1b9c1cb0b131b232b360811b901a610bbe8486610e7d565b5360041c918015610bd3576000190190610a69565b634e487b7160e01b87526011600452602487fd5b634e487b7160e01b88526032600452602488fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b86526041600452602486fd5b90600f81166010811015610c79576f181899199a1a9b1b9c1cb0b131b232b360811b901a610c51838a610e7d565b5360041c908015610c655760001901610a1d565b634e487b7160e01b86526011600452602486fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b84526032600452602484fd5b634e487b7160e01b84526041600452602484fd5b60005b838110610cdc5750506000910152565b8181015183820152602001610ccc565b6001600160401b038111610cff57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b031660008181527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f6020526040812054909190600080516020610f538339815191529060ff1615610d6c57505050565b808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4565b6001600160a01b031660008181527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f6020526040812054909190600080516020610f538339815191529060ff16610e0957505050565b80835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416610e0957505050565b908151811015610e8e570160200190565b634e487b7160e01b600052603260045260246000fd5b6000198114610eb35760010190565b634e487b7160e01b600052601160045260246000fd5b9190811015610e8e5760051b0190565b356001600160a01b03811681036109345790565b908060209392818452848401376000828201840152601f01601f1916010190565b81835290916001600160fb1b0383116109345760209260051b80928483013701019056fe241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0897667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929a2646970667358221220ab138f897f93ba50f6d43f3b70edf45f1b4ea413c7bb5ece5694d2dc865eceb164736f6c634300081200332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","sourceMap":"547:4180:246:-:0;;;;;;;;2198:4:86;547:4180:246;;;;;;;;;;;1173:10;547:4180;;;;;;;;;;7669:23:86;7665:149;;-1:-1:-1;711:25:246;547:4180;;;;;;;;;;1173:10;547:4180;;;;;;;;;;7669:23:86;7665:149;;-1:-1:-1;1410:16:246;711:25;;-1:-1:-1;;711:25:246;;;547:4180;711:25;547:4180;;711:25;547:4180;;7665:149:86;547:4180:246;;;;;;;;;1173:10;;547:4180;;;;;7740:4:86;711:25:246;;;;;;;;1173:10;;-1:-1:-1;;;;;;;;;;;1173:10:246;7763:40:86;;;7665:149;;;;;;;547:4180:246;;;;;;;;;1173:10;547:4180;;;;;;;7740:4:86;711:25:246;;;;;;;;1173:10;;7763:40:86;-1:-1:-1;;;;;;;;;;;7763:40:86;;;7665:149;;547:4180:246;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60e060a060408152816040526004918236101561001b57600080fd5b600092833560e01c91826301eed9b1146108615750816301ffc9a71461080a5781631e48244714610774578163248a9ca31461074757816327ac0c58146106f65781632f2770db146106835781632f2ff15d146105d957816336568abe146105465781637ee7f69b146103ad57816391d1485414610364578163a217fddf14610348578163b219f7d7146102de578163d547741f1461029a578163eb46c45b1461015e57508063ec87621c14610135578063ee070805146101115763f5b541a6146100e557600080fd5b3461010d578160031936011261010d576020905151600080516020610f538339815191528152f35b5080fd5b503461010d578160031936011261010d5760209060ff600154169051519015158152f35b503461010d578160031936011261010d576020905151600080516020610f338339815191528152f35b8391503461010d5760c036600319011261010d5761017a610939565b9261018361094f565b61018b610965565b9260a4356001600160401b038111610296576101aa903690830161097b565b92909660ff6001541661028557600080516020610f5383398151915287528660205284518088203360005260205260ff816000205416156102765750869760018060a01b0380921692833b15610272576102428996928793858a51519b8c998a988997637921219560e11b895216908701521660248501526064356044850152608435606485015289608485015260a4840191610eed565b03925af190811561026857506102555750f35b61025e90610cec565b6102655780f35b80fd5b51513d84823e3d90fd5b8880fd5b51631f0853c160e21b81528390fd5b845151631a8854fd60e31b81528390fd5b8580fd5b919050346102da5780513660031901126102da576102d791356102d260016102c061094f565b938387528660205251862001546109a8565b610e4d565b80f35b8280fd5b9050346102da5760203660031901126102da576102f9610939565b91600080516020610f33833981519152845283602052518084203360005260205260ff8160002054161561033157836102d784610db3565b602492505190632a19e83360e01b82523390820152fd5b50503461010d578160031936011261010d575151908152602090f35b8391503461010d57825136600319011261010d5760209261038361094f565b91358352828452518092209060018060a01b0316600052825260ff81600020541690519015158152f35b83833461010d5760c0906003198281360112610542576103cb610939565b906103d461094f565b916103dd610965565b6080526001600160401b039260643584811161053e576104009036908a01610904565b93909260843586811161053a5761041a9036908c01610904565b9660a435908111610536576104329036908d0161097b565b97909560ff6001541661052557600080516020610f538339815191528c528b6020528b60ff8b5182818094203382526020522054161561051657509a9b999a98998c996001600160a01b0394851698893b156105125760a48e8e886104c7966104d99a6104f09d845151808752631759616b60e11b905216908451015260805116602483510152604482510152510191610f0e565b918b5160648682860301910152610f0e565b906084895191828403019101528751948593610eed565b0390838651915af19081156102685750610508575080f35b6102d79051610cec565b8b80fd5b51631f0853c160e21b81528d90fd5b895151631a8854fd60e31b81528d90fd5b8a80fd5b8980fd5b8780fd5b8380fd5b83833461010d5751918260031936011261010d5761056261094f565b90336001600160a01b0383160361057e57906102d79135610e4d565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b9050346102da578151908160031936011261054257359161060e60016105fd61094f565b9385875286602052862001546109a8565b82845283602052518084209160018060a01b03169182855260205260ff818520541615610639578380f35b828452836020528084208285526020528320600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8480a43880808380f35b919050346102da57826003193601126102da57600080516020610f338339815191528352826020525180832033845260205260ff8184205416156103315782600160ff1981541617600155337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd8280a280f35b9050346102da5760203660031901126102da57610711610939565b91600080516020610f338339815191528452836020525180842033855260205260ff81852054161561033157836102d784610d15565b9050346102da5760203660031901126102da57602092916001913583528284525180922001549051908152f35b9050346102da5760203660031901126102da5780356001600160401b038111610542576107a49036908301610904565b919092600080516020610f338339815191528552846020525180852033865260205260ff818620541615610331575050825b8181106107e1578380f35b806108006107fb6107f6610805948688610ec9565b610ed9565b610db3565b610ea4565b6107d6565b9050346102da5760203660031901126102da57359063ffffffff60e01b82168092036102da5760209250637965db0b60e01b8214918215610850575b5051519015158152f35b6301ffc9a760e01b14915038610846565b849250346102da5760203660031901126102da5781356001600160401b038111610542576108929036908401610904565b919092600080516020610f338339815191528552846020526040852033865260205260ff604086205416156108ef575050825b8181106108d0578380f35b806108006108e56107f66108ea948688610ec9565b610d15565b6108c5565b632a19e83360e01b8252339082015260249150fd5b9181601f84011215610934578235916001600160401b038311610934576020808501948460051b01011161093457565b600080fd5b600435906001600160a01b038216820361093457565b602435906001600160a01b038216820361093457565b604435906001600160a01b038216820361093457565b9181601f84011215610934578235916001600160401b038311610934576020838186019501011161093457565b6000818152602091818352604092838320338452815260ff8484205416156109d05750505050565b83516001600160401b03939092336060850186811186821017610cb5578752602a85528385019187368437855115610ca15760308353855191600192831015610c8d576078602188015360295b838111610c235750610b4d578751906080820182811089821117610c0f57895260428252858201926060368537825115610bfb57603084538251811015610bfb57607860218401536041905b808211610b8f575050610b4d5791610ae294939188936067989951968793610ab88886019a76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8c525180926037880190610cc9565b8401917001034b99036b4b9b9b4b733903937b6329607d1b60378401525180936048840190610cc9565b0103602881018552601f19968791011684019684881090881117610b39575092610b3060449593601f938880975262461bcd60e51b8752600487015251809281602488015287870190610cc9565b01168101030190fd5b634e487b7160e01b81526041600452602490fd5b60648589519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015610be7576f181899199a1a9b1b9c1cb0b131b232b360811b901a610bbe8486610e7d565b5360041c918015610bd3576000190190610a69565b634e487b7160e01b87526011600452602487fd5b634e487b7160e01b88526032600452602488fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b86526041600452602486fd5b90600f81166010811015610c79576f181899199a1a9b1b9c1cb0b131b232b360811b901a610c51838a610e7d565b5360041c908015610c655760001901610a1d565b634e487b7160e01b86526011600452602486fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b84526032600452602484fd5b634e487b7160e01b84526041600452602484fd5b60005b838110610cdc5750506000910152565b8181015183820152602001610ccc565b6001600160401b038111610cff57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b031660008181527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f6020526040812054909190600080516020610f538339815191529060ff1615610d6c57505050565b808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4565b6001600160a01b031660008181527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f6020526040812054909190600080516020610f538339815191529060ff16610e0957505050565b80835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416610e0957505050565b908151811015610e8e570160200190565b634e487b7160e01b600052603260045260246000fd5b6000198114610eb35760010190565b634e487b7160e01b600052601160045260246000fd5b9190811015610e8e5760051b0190565b356001600160a01b03811681036109345790565b908060209392818452848401376000828201840152601f01601f1916010190565b81835290916001600160fb1b0383116109345760209260051b80928483013701019056fe241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0897667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929a2646970667358221220ab138f897f93ba50f6d43f3b70edf45f1b4ea413c7bb5ece5694d2dc865eceb164736f6c63430008120033","sourceMap":"547:4180:246:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;929:29;547:4180;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;547:4180:246;;;;;;;;;;;:::i;:::-;;;;;;;;1637:44;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;;;3786:10;547:4180;;;;;;;;;;3762:35;3758:61;;547:4180;;;;;;;;;;;3981:52;;;;;;547:4180;;;;;;;;;;;;;;;;;;;;3981:52;;547:4180;3981:52;;;547:4180;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3981:52;;;;;;;;;;;;547:4180;;3981:52;;;;:::i;:::-;547:4180;;3981:52;547:4180;;;;3981:52;547:4180;;;;;;;;;3981:52;547:4180;;;3758:61;547:4180;-1:-1:-1;;;3806:13:246;;547:4180;;3806:13;1637:44;547:4180;;;-1:-1:-1;;;1658:23:246;;547:4180;;1658:23;547:4180;;;;;;;;;;;;;;-1:-1:-1;;547:4180:246;;;;5486:7:86;547:4180:246;;2642:4:86;547:4180:246;;;:::i;:::-;;;;;;;;;;;4604:22:86;547:4180:246;2642:4:86;:::i;:::-;5486:7;:::i;:::-;547:4180:246;;;;;;;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;2737:8;;;;:::i;1910:69::-;547:4180;;;;1957:22;;;;;;1937:10;1957:22;;;547:4180;1957:22;547:4180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;;;;;547:4180:246;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;1641:8;547:4180;;1637:44;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;;;;;;;4463:10;547:4180;;;;;;;4439:35;4435:61;;-1:-1:-1;547:4180:246;;;;;;;;-1:-1:-1;;;;;547:4180:246;;;;4659:59;;;;;547:4180;;;;;;;;;;;;;4659:59;;;547:4180;;;4659:59;;547:4180;4659:59;;;;547:4180;;;;;4659:59;;547:4180;;;4659:59;;547:4180;;4659:59;547:4180;;;:::i;:::-;4659:59;;;547:4180;;;;;;;;;;:::i;:::-;4659:59;547:4180;4659:59;;547:4180;;;;;;;;4659:59;;547:4180;;;;:::i;:::-;4659:59;;;;;;;;;;;;;;;;547:4180;;;4659:59;;;;;:::i;:::-;547:4180;;;4435:61;547:4180;-1:-1:-1;;;4483:13:246;;547:4180;;4483:13;1637:44;547:4180;;;-1:-1:-1;;;1658:23:246;;547:4180;;1658:23;547:4180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;719:10:113;;-1:-1:-1;;;;;547:4180:246;;6133:23:86;547:4180:246;;;6237:7:86;547:4180:246;;6237:7:86;:::i;547:4180:246:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;2642:4:86;547:4180:246;;;:::i;:::-;;;;;;;;;;4604:22:86;547:4180:246;2642:4:86;:::i;:::-;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7669:23:86;7665:149;;547:4180:246;;;7665:149:86;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;;719:10:113;7763:40:86;;;;;7665:149;;;547:4180:246;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;547:4180;2179:4;547:4180;;;;;;2179:4;547:4180;1937:10;2198:28;;;;547:4180;;;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;2482:8;;;;:::i;547:4180::-;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;;;;;;;;;;;;;;4604:22:86;547:4180:246;;;;;;;;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;-1:-1:-1;;;;;547:4180:246;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;3242:13;;;3257:20;;;;;;547:4180;;;3279:3;3402:12;;;;3279:3;3402:12;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;3279:3;:::i;:::-;3242:13;;547:4180;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2840:47:86;;;:87;;;;547:4180:246;;;;;;;;;;2840:87:86;-1:-1:-1;;;937:40:118;;-1:-1:-1;2840:87:86;;;547:4180:246;;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;-1:-1:-1;;;;;547:4180:246;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;2901:13;;;2916:20;;;;;;547:4180;;;2938:3;3063:12;;;;2938:3;3063:12;;;;:::i;:::-;;:::i;2938:3::-;2901:13;;1910:69;-1:-1:-1;;;1957:22:246;;1937:10;1957:22;;;547:4180;;;-1:-1:-1;1957:22:246;547:4180;;;;;;;;;;;;;-1:-1:-1;;;;;547:4180:246;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;547:4180:246;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;547:4180:246;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;547:4180:246;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;547:4180:246;;;;;;;;;;;;;;;:::o;3460:103:86:-;3130:6;547:4180:246;;;;;;;;;;;;;719:10:113;547:4180:246;;;;;;;;;;3931:23:86;3927:390;;3460:103;;;;:::o;3927:390::-;547:4180:246;;-1:-1:-1;;;;;547:4180:246;;;719:10:113;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:15:115;;;547:4180:246;;;;;;;;;;2000:15:115;547:4180:246;;;2000:15:115;547:4180:246;2058:5:115;;;;;;2170:10;278:18;;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:15:115;;;547:4180:246;;;;;;;2000:15:115;547:4180:246;;;2000:15:115;547:4180:246;2025:128:115;2058:5;;;;;;2170:10;;278:18;;547:4180:246;;;;;;;;;;;4022:252:86;;;547:4180:246;4022:252:86;;;547:4180:246;-1:-1:-1;;;547:4180:246;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;547:4180:246;;;;;;;;;;;;:::i;:::-;;4022:252:86;;;;;;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:336:86;;2141:1:115;3970:336:86;;547:4180:246;;;;;;;;;;;;;;:::i;:::-;;;;;3970:336:86;;;;547:4180:246;-1:-1:-1;;;547:4180:246;;;2141:1:115;547:4180:246;;;;278:18:115;;547:4180:246;;;;;;;278:18:115;;;2141:1;278:18;;;;;;547:4180:246;278:18:115;547:4180:246;;;278:18:115;;2065:3;2105:11;;2113:3;2105:11;;2096:21;;;;;;-1:-1:-1;;;2096:21:115;;2084:33;;;;:::i;:::-;;2141:1;547:4180:246;2065:3:115;547:4180:246;;;;-1:-1:-1;;547:4180:246;;2030:26:115;;547:4180:246;-1:-1:-1;;;547:4180:246;;;2141:1:115;547:4180:246;;;;2096:21:115;-1:-1:-1;;;547:4180:246;;;2141:1:115;547:4180:246;;;;;-1:-1:-1;;;547:4180:246;;;2141:1:115;547:4180:246;;;;;-1:-1:-1;;;547:4180:246;;;2141:1:115;547:4180:246;;;;2065:3:115;2105:11;2113:3;2105:11;;2096:21;;;;;;-1:-1:-1;;;2096:21:115;;2084:33;;;;:::i;:::-;;2141:1;547:4180:246;2065:3:115;547:4180:246;;;;-1:-1:-1;;547:4180:246;2030:26:115;;547:4180:246;-1:-1:-1;;;547:4180:246;;;2141:1:115;547:4180:246;;;;2096:21:115;-1:-1:-1;;;547:4180:246;;;2141:1:115;547:4180:246;;;;;-1:-1:-1;;;547:4180:246;;;;;;;;;-1:-1:-1;;;547:4180:246;;;;;;;;;-1:-1:-1;;;547:4180:246;;;;;;;;;;;;;;;;-1:-1:-1;;547:4180:246;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;547:4180:246;;;;;;:::o;:::-;;;;;;;;;;;;7587:233:86;-1:-1:-1;;;;;547:4180:246;3130:6:86;547:4180:246;;;;;;;;;;3130:6:86;;547:4180:246;-1:-1:-1;;;;;;;;;;;846:26:246;547:4180;;7669:23:86;7665:149;;7587:233;;;:::o;7665:149::-;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;;;7763:40:86;719:10:113;7763:40:86;;;7587:233::o;7991:234::-;-1:-1:-1;;;;;547:4180:246;3130:6:86;547:4180:246;;;;;;;;;;3130:6:86;;547:4180:246;-1:-1:-1;;;;;;;;;;;846:26:246;547:4180;;8070:149:86;;7991:234;;;:::o;8070:149::-;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;8168:40:86;719:10:113;8168:40:86;;;7991:234::o;:::-;;3130:6;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8070:149:86;;7991:234;;;:::o;547:4180:246:-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;547:4180:246;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;547:4180:246;;;;;;;;-1:-1:-1;;547:4180:246;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;547:4180:246;;;;;;;;;;;;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","MANAGER_ROLE()":"ec87621c","OPERATOR_ROLE()":"f5b541a6","batchGrantOperatorRole(address[])":"01eed9b1","batchRevokeOperatorRole(address[])":"1e482447","disable()":"2f2770db","disabled()":"ee070805","getRoleAdmin(bytes32)":"248a9ca3","grantOperatorRole(address)":"27ac0c58","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeOperatorRole(address)":"b219f7d7","revokeRole(bytes32,address)":"d547741f","safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":"7ee7f69b","safeTransferFrom(address,address,address,uint256,uint256,bytes)":"eb46c45b","supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ContractDisabledError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"NotManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disabler\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchGrantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchRevokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"grantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Users approve this manager on ERC1155 collections, and operator contracts execute transfers through it.\",\"errors\":{\"NotManager(address)\":[{\"params\":{\"caller\":\"The account that attempted a manager-only operation.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"disabler\":\"The manager that disabled the approval manager.\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to grant the role to.\"}},\"batchRevokeOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to revoke the role from.\"}},\"disable()\":{\"details\":\"Callable by an account with the manager role.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to grant the role to.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to revoke the role from.\"}},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"params\":{\"amounts\":\"The amounts of each token id to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"ids\":\"The token ids to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount of tokens to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"id\":\"The token id to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"title\":\"ERC1155ApprovalManager\",\"version\":1},\"userdoc\":{\"errors\":{\"ContractDisabledError()\":[{\"notice\":\"Error thrown when contract is disabled.\"}],\"NotManager(address)\":[{\"notice\":\"Error thrown when caller is not a manager.\"}],\"NotOperator()\":[{\"notice\":\"Error thrown when caller is not an operator.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Event emitted when contract is disabled.\"}},\"kind\":\"user\",\"methods\":{\"MANAGER_ROLE()\":{\"notice\":\"Role for managing operators.\"},\"OPERATOR_ROLE()\":{\"notice\":\"Role for contracts allowed to transfer tokens.\"},\"batchGrantOperatorRole(address[])\":{\"notice\":\"Grants operator transfer permissions to multiple contracts.\"},\"batchRevokeOperatorRole(address[])\":{\"notice\":\"Revokes operator transfer permissions from multiple contracts.\"},\"constructor\":{\"notice\":\"Grants deployer admin and manager roles.\"},\"disable()\":{\"notice\":\"Disables token transfers through the approval manager permanently.\"},\"disabled()\":{\"notice\":\"Whether the contract is disabled.\"},\"grantOperatorRole(address)\":{\"notice\":\"Grants operator transfer permissions to a contract.\"},\"revokeOperatorRole(address)\":{\"notice\":\"Revokes operator transfer permissions from a contract.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Safely transfer a batch of ERC1155 tokens from a user to a recipient.\"},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"notice\":\"Safely transfer ERC1155 tokens from a user to a recipient.\"}},\"notice\":\"A central approval manager for ERC1155 tokens that allows whitelisted contracts to transfer tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol\":\"ERC1155ApprovalManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xbc7fc49ba05b312e318d3d7b517ed0254489320bedef2e91f80c3bd4e904fc0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e411d112f89fcadbff89da0579d61eafdf76272aaa91fb18728a86337440bb88\",\"dweb:/ipfs/QmfKJqMJ2CF1mw4UwDajoFdrrfKWSZwetkAByUP56EeqSQ\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x2626d8ab3dfdad0fad630c212ad146d59473d0f48b771784c61a7c1dbbea1f3f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7c144532f1e7c76ac95fb6a8f617c1f740d7a73442a907eb60910e99dfa1fbf\",\"dweb:/ipfs/QmZsGyooD6emxB8JCuugRjnRYS2MPZEL586uuV7dgC8Jng\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4\",\"dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol\":{\"keccak256\":\"0x7c95928decb621e78548535c0603ca55c0b85021efbd7af0a8d287a9998db00c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ac51589d1c771a9591eb24f77e67812957228733baf985b68dd29df5a3a76fd\",\"dweb:/ipfs/QmbNSexx5ifBpSy2rs2PbTTaQ6Q3S1mVDHWLf9Bu5TmVJU\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ContractDisabledError"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"type":"error","name":"NotManager"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[{"internalType":"address","name":"disabler","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantOperatorRole"},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchRevokeOperatorRole"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disable"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantOperatorRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeOperatorRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"batchGrantOperatorRole(address[])":{"params":{"operators":"Contract addresses to grant the role to."}},"batchRevokeOperatorRole(address[])":{"params":{"operators":"Contract addresses to revoke the role from."}},"disable()":{"details":"Callable by an account with the manager role."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantOperatorRole(address)":{"params":{"operator":"The contract address to grant the role to."}},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event."},"revokeOperatorRole(address)":{"params":{"operator":"The contract address to revoke the role from."}},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"params":{"amounts":"The amounts of each token id to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","ids":"The token ids to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"params":{"amount":"The amount of tokens to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","id":"The token id to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"MANAGER_ROLE()":{"notice":"Role for managing operators."},"OPERATOR_ROLE()":{"notice":"Role for contracts allowed to transfer tokens."},"batchGrantOperatorRole(address[])":{"notice":"Grants operator transfer permissions to multiple contracts."},"batchRevokeOperatorRole(address[])":{"notice":"Revokes operator transfer permissions from multiple contracts."},"constructor":{"notice":"Grants deployer admin and manager roles."},"disable()":{"notice":"Disables token transfers through the approval manager permanently."},"disabled()":{"notice":"Whether the contract is disabled."},"grantOperatorRole(address)":{"notice":"Grants operator transfer permissions to a contract."},"revokeOperatorRole(address)":{"notice":"Revokes operator transfer permissions from a contract."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"notice":"Safely transfer a batch of ERC1155 tokens from a user to a recipient."},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"notice":"Safely transfer ERC1155 tokens from a user to a recipient."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol":"ERC1155ApprovalManager"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xbc7fc49ba05b312e318d3d7b517ed0254489320bedef2e91f80c3bd4e904fc0c","urls":["bzz-raw://e411d112f89fcadbff89da0579d61eafdf76272aaa91fb18728a86337440bb88","dweb:/ipfs/QmfKJqMJ2CF1mw4UwDajoFdrrfKWSZwetkAByUP56EeqSQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57","urls":["bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a","dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x2626d8ab3dfdad0fad630c212ad146d59473d0f48b771784c61a7c1dbbea1f3f","urls":["bzz-raw://d7c144532f1e7c76ac95fb6a8f617c1f740d7a73442a907eb60910e99dfa1fbf","dweb:/ipfs/QmZsGyooD6emxB8JCuugRjnRYS2MPZEL586uuV7dgC8Jng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b","urls":["bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d","dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858","urls":["bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4","dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc","urls":["bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7","dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6"],"license":"MIT"},"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol":{"keccak256":"0x7c95928decb621e78548535c0603ca55c0b85021efbd7af0a8d287a9998db00c","urls":["bzz-raw://4ac51589d1c771a9591eb24f77e67812957228733baf985b68dd29df5a3a76fd","dweb:/ipfs/QmbNSexx5ifBpSy2rs2PbTTaQ6Q3S1mVDHWLf9Bu5TmVJU"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"}},"version":1},"id":246} \ No newline at end of file diff --git a/abis/IERC1155ApprovalManager.json b/abis/IERC1155ApprovalManager.json index 3cfeb83..24d7805 100644 --- a/abis/IERC1155ApprovalManager.json +++ b/abis/IERC1155ApprovalManager.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"batchGrantOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchRevokeOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disable","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"grantOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"disabler","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ContractDisabledError","inputs":[]},{"type":"error","name":"NotManager","inputs":[{"name":"caller","type":"address","internalType":"address"}]},{"type":"error","name":"NotOperator","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"batchGrantOperatorRole(address[])":"01eed9b1","batchRevokeOperatorRole(address[])":"1e482447","disable()":"2f2770db","disabled()":"ee070805","grantOperatorRole(address)":"27ac0c58","revokeOperatorRole(address)":"b219f7d7","safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":"7ee7f69b","safeTransferFrom(address,address,address,uint256,uint256,bytes)":"eb46c45b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ContractDisabledError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"NotManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disabler\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchGrantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchRevokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"grantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"NotManager(address)\":[{\"params\":{\"caller\":\"The account that attempted a manager-only operation.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"disabler\":\"The manager that disabled the approval manager.\"}}},\"kind\":\"dev\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to grant the role to.\"}},\"batchRevokeOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to revoke the role from.\"}},\"disable()\":{\"details\":\"Callable by an account with the manager role.\"},\"disabled()\":{\"returns\":{\"_0\":\"True when token transfer execution is disabled.\"}},\"grantOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to grant the role to.\"}},\"revokeOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to revoke the role from.\"}},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"params\":{\"amounts\":\"The amounts of each token id to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"ids\":\"The token ids to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount of tokens to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"id\":\"The token id to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}}},\"title\":\"IERC1155ApprovalManager\",\"version\":1},\"userdoc\":{\"errors\":{\"ContractDisabledError()\":[{\"notice\":\"Error thrown when contract is disabled.\"}],\"NotManager(address)\":[{\"notice\":\"Error thrown when caller is not a manager.\"}],\"NotOperator()\":[{\"notice\":\"Error thrown when caller is not an operator.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Event emitted when contract is disabled.\"}},\"kind\":\"user\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"notice\":\"Grants operator transfer permissions to multiple contracts.\"},\"batchRevokeOperatorRole(address[])\":{\"notice\":\"Revokes operator transfer permissions from multiple contracts.\"},\"disable()\":{\"notice\":\"Disables token transfers through the approval manager permanently.\"},\"disabled()\":{\"notice\":\"Returns whether the approval manager is permanently disabled.\"},\"grantOperatorRole(address)\":{\"notice\":\"Grants operator transfer permissions to a contract.\"},\"revokeOperatorRole(address)\":{\"notice\":\"Revokes operator transfer permissions from a contract.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Safely transfer a batch of ERC1155 tokens from a user to a recipient.\"},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"notice\":\"Safely transfer ERC1155 tokens from a user to a recipient.\"}},\"notice\":\"Interface for managing ERC1155 token approvals and transfers.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":\"IERC1155ApprovalManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ContractDisabledError"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"type":"error","name":"NotManager"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[{"internalType":"address","name":"disabler","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantOperatorRole"},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchRevokeOperatorRole"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disable"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantOperatorRole"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeOperatorRole"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"}],"devdoc":{"kind":"dev","methods":{"batchGrantOperatorRole(address[])":{"params":{"operators":"Contract addresses to grant the role to."}},"batchRevokeOperatorRole(address[])":{"params":{"operators":"Contract addresses to revoke the role from."}},"disable()":{"details":"Callable by an account with the manager role."},"disabled()":{"returns":{"_0":"True when token transfer execution is disabled."}},"grantOperatorRole(address)":{"params":{"operator":"The contract address to grant the role to."}},"revokeOperatorRole(address)":{"params":{"operator":"The contract address to revoke the role from."}},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"params":{"amounts":"The amounts of each token id to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","ids":"The token ids to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"params":{"amount":"The amount of tokens to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","id":"The token id to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}}},"version":1},"userdoc":{"kind":"user","methods":{"batchGrantOperatorRole(address[])":{"notice":"Grants operator transfer permissions to multiple contracts."},"batchRevokeOperatorRole(address[])":{"notice":"Revokes operator transfer permissions from multiple contracts."},"disable()":{"notice":"Disables token transfers through the approval manager permanently."},"disabled()":{"notice":"Returns whether the approval manager is permanently disabled."},"grantOperatorRole(address)":{"notice":"Grants operator transfer permissions to a contract."},"revokeOperatorRole(address)":{"notice":"Revokes operator transfer permissions from a contract."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"notice":"Safely transfer a batch of ERC1155 tokens from a user to a recipient."},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"notice":"Safely transfer ERC1155 tokens from a user to a recipient."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":"IERC1155ApprovalManager"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"}},"version":1},"id":77} \ No newline at end of file +{"abi":[{"type":"function","name":"batchGrantOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchRevokeOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disable","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"grantOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"disabler","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ContractDisabledError","inputs":[]},{"type":"error","name":"NotManager","inputs":[{"name":"caller","type":"address","internalType":"address"}]},{"type":"error","name":"NotOperator","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"batchGrantOperatorRole(address[])":"01eed9b1","batchRevokeOperatorRole(address[])":"1e482447","disable()":"2f2770db","disabled()":"ee070805","grantOperatorRole(address)":"27ac0c58","revokeOperatorRole(address)":"b219f7d7","safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":"7ee7f69b","safeTransferFrom(address,address,address,uint256,uint256,bytes)":"eb46c45b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ContractDisabledError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"NotManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disabler\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchGrantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchRevokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"grantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"NotManager(address)\":[{\"params\":{\"caller\":\"The account that attempted a manager-only operation.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"disabler\":\"The manager that disabled the approval manager.\"}}},\"kind\":\"dev\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to grant the role to.\"}},\"batchRevokeOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to revoke the role from.\"}},\"disable()\":{\"details\":\"Callable by an account with the manager role.\"},\"disabled()\":{\"returns\":{\"_0\":\"True when token transfer execution is disabled.\"}},\"grantOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to grant the role to.\"}},\"revokeOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to revoke the role from.\"}},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"params\":{\"amounts\":\"The amounts of each token id to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"ids\":\"The token ids to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount of tokens to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"id\":\"The token id to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}}},\"title\":\"IERC1155ApprovalManager\",\"version\":1},\"userdoc\":{\"errors\":{\"ContractDisabledError()\":[{\"notice\":\"Error thrown when contract is disabled.\"}],\"NotManager(address)\":[{\"notice\":\"Error thrown when caller is not a manager.\"}],\"NotOperator()\":[{\"notice\":\"Error thrown when caller is not an operator.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Event emitted when contract is disabled.\"}},\"kind\":\"user\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"notice\":\"Grants operator transfer permissions to multiple contracts.\"},\"batchRevokeOperatorRole(address[])\":{\"notice\":\"Revokes operator transfer permissions from multiple contracts.\"},\"disable()\":{\"notice\":\"Disables token transfers through the approval manager permanently.\"},\"disabled()\":{\"notice\":\"Returns whether the approval manager is permanently disabled.\"},\"grantOperatorRole(address)\":{\"notice\":\"Grants operator transfer permissions to a contract.\"},\"revokeOperatorRole(address)\":{\"notice\":\"Revokes operator transfer permissions from a contract.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Safely transfer a batch of ERC1155 tokens from a user to a recipient.\"},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"notice\":\"Safely transfer ERC1155 tokens from a user to a recipient.\"}},\"notice\":\"Interface for managing ERC1155 token approvals and transfers.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":\"IERC1155ApprovalManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ContractDisabledError"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"type":"error","name":"NotManager"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[{"internalType":"address","name":"disabler","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantOperatorRole"},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchRevokeOperatorRole"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disable"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantOperatorRole"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeOperatorRole"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"}],"devdoc":{"kind":"dev","methods":{"batchGrantOperatorRole(address[])":{"params":{"operators":"Contract addresses to grant the role to."}},"batchRevokeOperatorRole(address[])":{"params":{"operators":"Contract addresses to revoke the role from."}},"disable()":{"details":"Callable by an account with the manager role."},"disabled()":{"returns":{"_0":"True when token transfer execution is disabled."}},"grantOperatorRole(address)":{"params":{"operator":"The contract address to grant the role to."}},"revokeOperatorRole(address)":{"params":{"operator":"The contract address to revoke the role from."}},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"params":{"amounts":"The amounts of each token id to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","ids":"The token ids to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"params":{"amount":"The amount of tokens to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","id":"The token id to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}}},"version":1},"userdoc":{"kind":"user","methods":{"batchGrantOperatorRole(address[])":{"notice":"Grants operator transfer permissions to multiple contracts."},"batchRevokeOperatorRole(address[])":{"notice":"Revokes operator transfer permissions from multiple contracts."},"disable()":{"notice":"Disables token transfers through the approval manager permanently."},"disabled()":{"notice":"Returns whether the approval manager is permanently disabled."},"grantOperatorRole(address)":{"notice":"Grants operator transfer permissions to a contract."},"revokeOperatorRole(address)":{"notice":"Revokes operator transfer permissions from a contract."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"notice":"Safely transfer a batch of ERC1155 tokens from a user to a recipient."},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"notice":"Safely transfer ERC1155 tokens from a user to a recipient."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":"IERC1155ApprovalManager"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"}},"version":1},"id":247} \ No newline at end of file diff --git a/abis/IRareERC1155.json b/abis/IRareERC1155.json index 8f139a1..1b88542 100644 --- a/abis/IRareERC1155.json +++ b/abis/IRareERC1155.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"},{"name":"_royaltyReceiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintBatchTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"royaltyAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setDefaultRoyaltyPercentage","inputs":[{"name":"_percentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyReceiverForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"royaltyReceiver","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"BatchLengthMismatch","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"RoyaltyPercentageTooHigh","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","createToken(string,uint256,address)":"1542bb95","disableContract()":"894ba833","disabled()":"ee070805","init(string,string,string,address,address)":"a7eae21c","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintBatchTo(address,uint256[],uint256[])":"3512639c","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","royaltyInfo(uint256,uint256)":"2a55205a","setDefaultRoyaltyPercentage(uint256)":"e27a41bf","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","setRoyaltyReceiverForToken(uint256,address)":"e2200a0b","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RoyaltyPercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"royaltyReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_royaltyReceiver\",\"type\":\"address\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBatchTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_percentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRoyaltyPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setRoyaltyReceiverForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Extends the RARE `ITokenCreator` interface so marketplace and royalty infrastructure can resolve creators per token id.\",\"errors\":{\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported percentage.\",\"supplied\":\"Percentage supplied by the caller.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"params\":{\"tokenId\":\"Token id that is not greater than the previous token id.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,address,uint256,string)\":{\"params\":{\"creator\":\"RARE creator recorded for the token id.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"royaltyReceiver\":\"ERC2981 royalty receiver configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}}},\"kind\":\"dev\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"createToken(string,uint256,address)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_royaltyReceiver\":\"ERC2981 royalty receiver for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"disabled()\":{\"returns\":{\"_0\":\"True when disabled.\"}},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and ERC2981 royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintBatchTo(address,uint256[],uint256[])\":{\"details\":\"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.\",\"params\":{\"_amounts\":\"Quantities to mint for each token id.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenIds\":\"Existing token ids to mint.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"Minted token id.\"}},\"name()\":{\"returns\":{\"_0\":\"Collection name.\"}},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"details\":\"Tokens created before this update keep their token-specific royalty percentage.\",\"params\":{\"_percentage\":\"New royalty percentage, expressed as whole percentage points.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"details\":\"Token-specific royalty receivers take precedence over this value.\",\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"details\":\"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.\",\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"setRoyaltyReceiverForToken(uint256,address)\":{\"details\":\"The token's existing royalty percentage is preserved.\",\"params\":{\"_receiver\":\"New token-specific royalty receiver.\",\"_tokenId\":\"Token id whose royalty receiver is updated.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"returns\":{\"_0\":\"Collection symbol.\"}},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"title\":\"IRareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"BatchLengthMismatch()\":[{\"notice\":\"Reverted when parallel batch arrays have different lengths.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"notice\":\"Reverted when the default royalty percentage is above 100%.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,address,uint256,string)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch mint operations.\"},\"createToken(string,uint256,address)\":{\"notice\":\"Creates a new token type.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintBatchTo(address,uint256[],uint256[])\":{\"notice\":\"Mints existing token ids to a receiver.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints one existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"notice\":\"Updates the fallback ERC2981 royalty percentage.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the fallback ERC2981 royalty receiver.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes collection-wide minter approval for an address.\"},\"setRoyaltyReceiverForToken(uint256,address)\":{\"notice\":\"Updates the ERC2981 royalty receiver for one token id.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Interface for the RARE Protocol ERC1155 token.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/IRareERC1155.sol\":\"IRareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e\",\"dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[],"type":"error","name":"BatchLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"RoyaltyPercentageTooHigh"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"address","name":"royaltyReceiver","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[],"stateMutability":"pure","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"address","name":"_royaltyReceiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"mintBatchTo"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyPercentage"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyReceiverForToken"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"MAX_BATCH_SIZE()":{"returns":{"_0":"Maximum supported batch item count."}},"createToken(string,uint256,address)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_royaltyReceiver":"ERC2981 royalty receiver for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"disabled()":{"returns":{"_0":"True when disabled."}},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and ERC2981 royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintBatchTo(address,uint256[],uint256[])":{"details":"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.","params":{"_amounts":"Quantities to mint for each token id.","_receiver":"Address that receives the minted tokens.","_tokenIds":"Existing token ids to mint."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"Minted token id."}},"name()":{"returns":{"_0":"Collection name."}},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"setDefaultRoyaltyPercentage(uint256)":{"details":"Tokens created before this update keep their token-specific royalty percentage.","params":{"_percentage":"New royalty percentage, expressed as whole percentage points."}},"setDefaultRoyaltyReceiver(address)":{"details":"Token-specific royalty receivers take precedence over this value.","params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"details":"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.","params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"setRoyaltyReceiverForToken(uint256,address)":{"details":"The token's existing royalty percentage is preserved.","params":{"_receiver":"New token-specific royalty receiver.","_tokenId":"Token id whose royalty receiver is updated."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"returns":{"_0":"Collection symbol."}},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch mint operations."},"createToken(string,uint256,address)":{"notice":"Creates a new token type."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintBatchTo(address,uint256[],uint256[])":{"notice":"Mints existing token ids to a receiver."},"mintTo(address,uint256,uint256)":{"notice":"Mints one existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"setDefaultRoyaltyPercentage(uint256)":{"notice":"Updates the fallback ERC2981 royalty percentage."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the fallback ERC2981 royalty receiver."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes collection-wide minter approval for an address."},"setRoyaltyReceiverForToken(uint256,address)":{"notice":"Updates the ERC2981 royalty receiver for one token id."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/IRareERC1155.sol":"IRareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052","urls":["bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e","dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file +{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"},{"name":"_royaltyReceiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintBatchTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"royaltyAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setDefaultRoyaltyPercentage","inputs":[{"name":"_percentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyReceiverForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"royaltyReceiver","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"BatchLengthMismatch","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"RoyaltyPercentageTooHigh","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","createToken(string,uint256,address)":"1542bb95","disableContract()":"894ba833","disabled()":"ee070805","init(string,string,string,address,address)":"a7eae21c","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintBatchTo(address,uint256[],uint256[])":"3512639c","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","royaltyInfo(uint256,uint256)":"2a55205a","setDefaultRoyaltyPercentage(uint256)":"e27a41bf","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","setRoyaltyReceiverForToken(uint256,address)":"e2200a0b","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RoyaltyPercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"royaltyReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_royaltyReceiver\",\"type\":\"address\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBatchTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_percentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRoyaltyPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setRoyaltyReceiverForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Extends the RARE `ITokenCreator` interface so marketplace and royalty infrastructure can resolve the collection creator.\",\"errors\":{\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported percentage.\",\"supplied\":\"Percentage supplied by the caller.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"params\":{\"tokenId\":\"Token id that is not greater than the previous token id.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,address,uint256,string)\":{\"params\":{\"creator\":\"Collection owner reported as creator when the token id is created.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"royaltyReceiver\":\"ERC2981 royalty receiver configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}}},\"kind\":\"dev\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"createToken(string,uint256,address)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_royaltyReceiver\":\"ERC2981 royalty receiver for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"disabled()\":{\"returns\":{\"_0\":\"True when disabled.\"}},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and ERC2981 royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintBatchTo(address,uint256[],uint256[])\":{\"details\":\"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.\",\"params\":{\"_amounts\":\"Quantities to mint for each token id.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenIds\":\"Existing token ids to mint.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"Minted token id.\"}},\"name()\":{\"returns\":{\"_0\":\"Collection name.\"}},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"details\":\"Tokens created before this update keep their token-specific royalty percentage.\",\"params\":{\"_percentage\":\"New royalty percentage, expressed as whole percentage points.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"details\":\"Token-specific royalty receivers take precedence over this value.\",\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"details\":\"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.\",\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"setRoyaltyReceiverForToken(uint256,address)\":{\"details\":\"The token's existing royalty percentage is preserved.\",\"params\":{\"_receiver\":\"New token-specific royalty receiver.\",\"_tokenId\":\"Token id whose royalty receiver is updated.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"returns\":{\"_0\":\"Collection symbol.\"}},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"title\":\"IRareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"BatchLengthMismatch()\":[{\"notice\":\"Reverted when parallel batch arrays have different lengths.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"notice\":\"Reverted when the default royalty percentage is above 100%.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,address,uint256,string)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch mint operations.\"},\"createToken(string,uint256,address)\":{\"notice\":\"Creates a new token type.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintBatchTo(address,uint256[],uint256[])\":{\"notice\":\"Mints existing token ids to a receiver.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints one existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"notice\":\"Updates the fallback ERC2981 royalty percentage.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the fallback ERC2981 royalty receiver.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes collection-wide minter approval for an address.\"},\"setRoyaltyReceiverForToken(uint256,address)\":{\"notice\":\"Updates the ERC2981 royalty receiver for one token id.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Interface for the RARE Protocol ERC1155 token.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/IRareERC1155.sol\":\"IRareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[],"type":"error","name":"BatchLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"RoyaltyPercentageTooHigh"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"address","name":"royaltyReceiver","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[],"stateMutability":"pure","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"address","name":"_royaltyReceiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"mintBatchTo"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyPercentage"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyReceiverForToken"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"MAX_BATCH_SIZE()":{"returns":{"_0":"Maximum supported batch item count."}},"createToken(string,uint256,address)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_royaltyReceiver":"ERC2981 royalty receiver for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"disabled()":{"returns":{"_0":"True when disabled."}},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and ERC2981 royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintBatchTo(address,uint256[],uint256[])":{"details":"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.","params":{"_amounts":"Quantities to mint for each token id.","_receiver":"Address that receives the minted tokens.","_tokenIds":"Existing token ids to mint."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"Minted token id."}},"name()":{"returns":{"_0":"Collection name."}},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"setDefaultRoyaltyPercentage(uint256)":{"details":"Tokens created before this update keep their token-specific royalty percentage.","params":{"_percentage":"New royalty percentage, expressed as whole percentage points."}},"setDefaultRoyaltyReceiver(address)":{"details":"Token-specific royalty receivers take precedence over this value.","params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"details":"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.","params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"setRoyaltyReceiverForToken(uint256,address)":{"details":"The token's existing royalty percentage is preserved.","params":{"_receiver":"New token-specific royalty receiver.","_tokenId":"Token id whose royalty receiver is updated."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"returns":{"_0":"Collection symbol."}},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch mint operations."},"createToken(string,uint256,address)":{"notice":"Creates a new token type."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintBatchTo(address,uint256[],uint256[])":{"notice":"Mints existing token ids to a receiver."},"mintTo(address,uint256,uint256)":{"notice":"Mints one existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"setDefaultRoyaltyPercentage(uint256)":{"notice":"Updates the fallback ERC2981 royalty percentage."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the fallback ERC2981 royalty receiver."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes collection-wide minter approval for an address."},"setRoyaltyReceiverForToken(uint256,address)":{"notice":"Updates the ERC2981 royalty receiver for one token id."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/IRareERC1155.sol":"IRareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":35} \ No newline at end of file diff --git a/abis/IRareERC1155ContractFactory.json b/abis/IRareERC1155ContractFactory.json index d9139e9..5d1bb3b 100644 --- a/abis/IRareERC1155ContractFactory.json +++ b/abis/IRareERC1155ContractFactory.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"createRareERC1155Contract","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"}],"outputs":[{"name":"clone","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"defaultMinter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"rareERC1155","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setDefaultMinter","inputs":[{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRareERC1155","inputs":[{"name":"_rareERC1155","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefaultMinterUpdated","inputs":[{"name":"defaultMinter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155ContractCreated","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155Updated","inputs":[{"name":"rareERC1155","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"createRareERC1155Contract(string,string,string)":"8667f619","defaultMinter()":"389dee18","rareERC1155()":"014812a2","setDefaultMinter(address)":"18cf6f42","setRareERC1155(address)":"e2be1a08"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"defaultMinter\",\"type\":\"address\"}],\"name\":\"DefaultMinterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"RareERC1155ContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rareERC1155\",\"type\":\"address\"}],\"name\":\"RareERC1155Updated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createRareERC1155Contract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"clone\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultMinter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rareERC1155\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"setDefaultMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rareERC1155\",\"type\":\"address\"}],\"name\":\"setRareERC1155\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"events\":{\"DefaultMinterUpdated(address)\":{\"params\":{\"defaultMinter\":\"New default minter address. Zero address disables default minter approval.\"}},\"RareERC1155ContractCreated(address,address)\":{\"params\":{\"contractAddress\":\"Address of the newly created ERC1155 clone.\",\"owner\":\"Initial owner of the clone.\"}},\"RareERC1155Updated(address)\":{\"params\":{\"rareERC1155\":\"New ERC1155 implementation address.\"}}},\"kind\":\"dev\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"params\":{\"_baseURI\":\"Base URI used by the collection when a token id has no token-specific URI.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"},\"returns\":{\"clone\":\"Address of the newly created ERC1155 clone.\"}},\"defaultMinter()\":{\"returns\":{\"_0\":\"Default minter address. Zero address means no default minter.\"}},\"rareERC1155()\":{\"returns\":{\"_0\":\"ERC1155 implementation address.\"}},\"setDefaultMinter(address)\":{\"params\":{\"_defaultMinter\":\"Address approved to mint on newly created clones, or zero address for none.\"}},\"setRareERC1155(address)\":{\"params\":{\"_rareERC1155\":\"Address of the replacement implementation.\"}}},\"title\":\"IRareERC1155ContractFactory\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an implementation address is the zero address.\"}]},\"events\":{\"DefaultMinterUpdated(address)\":{\"notice\":\"Emitted when the owner changes the default minter for new clones.\"},\"RareERC1155ContractCreated(address,address)\":{\"notice\":\"Emitted when the factory creates and initializes a collection clone.\"},\"RareERC1155Updated(address)\":{\"notice\":\"Emitted when the owner changes the implementation cloned by the factory.\"}},\"kind\":\"user\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"notice\":\"Creates a new initialized ERC1155 collection clone.\"},\"defaultMinter()\":{\"notice\":\"Returns the optional minter approved on each newly created collection.\"},\"rareERC1155()\":{\"notice\":\"Returns the ERC1155 implementation address cloned by the factory.\"},\"setDefaultMinter(address)\":{\"notice\":\"Updates the optional minter approved during clone initialization.\"},\"setRareERC1155(address)\":{\"notice\":\"Updates the ERC1155 implementation address cloned by future factory calls.\"}},\"notice\":\"Interface for the RARE Protocol ERC1155 clone factory.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":\"IRareERC1155ContractFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":{\"keccak256\":\"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179\",\"dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"defaultMinter","type":"address","indexed":true}],"type":"event","name":"DefaultMinterUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"RareERC1155ContractCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"rareERC1155","type":"address","indexed":true}],"type":"event","name":"RareERC1155Updated","anonymous":false},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createRareERC1155Contract","outputs":[{"internalType":"address","name":"clone","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultMinter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rareERC1155","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultMinter"},{"inputs":[{"internalType":"address","name":"_rareERC1155","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRareERC1155"}],"devdoc":{"kind":"dev","methods":{"createRareERC1155Contract(string,string,string)":{"params":{"_baseURI":"Base URI used by the collection when a token id has no token-specific URI.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."},"returns":{"clone":"Address of the newly created ERC1155 clone."}},"defaultMinter()":{"returns":{"_0":"Default minter address. Zero address means no default minter."}},"rareERC1155()":{"returns":{"_0":"ERC1155 implementation address."}},"setDefaultMinter(address)":{"params":{"_defaultMinter":"Address approved to mint on newly created clones, or zero address for none."}},"setRareERC1155(address)":{"params":{"_rareERC1155":"Address of the replacement implementation."}}},"version":1},"userdoc":{"kind":"user","methods":{"createRareERC1155Contract(string,string,string)":{"notice":"Creates a new initialized ERC1155 collection clone."},"defaultMinter()":{"notice":"Returns the optional minter approved on each newly created collection."},"rareERC1155()":{"notice":"Returns the ERC1155 implementation address cloned by the factory."},"setDefaultMinter(address)":{"notice":"Updates the optional minter approved during clone initialization."},"setRareERC1155(address)":{"notice":"Updates the ERC1155 implementation address cloned by future factory calls."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/IRareERC1155ContractFactory.sol":"IRareERC1155ContractFactory"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/token/ERC1155/IRareERC1155ContractFactory.sol":{"keccak256":"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63","urls":["bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179","dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb"],"license":"MIT"}},"version":1},"id":212} \ No newline at end of file +{"abi":[{"type":"function","name":"createRareERC1155Contract","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"}],"outputs":[{"name":"clone","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"defaultMinter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"rareERC1155","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setDefaultMinter","inputs":[{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRareERC1155","inputs":[{"name":"_rareERC1155","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefaultMinterUpdated","inputs":[{"name":"defaultMinter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155ContractCreated","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155Updated","inputs":[{"name":"rareERC1155","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"createRareERC1155Contract(string,string,string)":"8667f619","defaultMinter()":"389dee18","rareERC1155()":"014812a2","setDefaultMinter(address)":"18cf6f42","setRareERC1155(address)":"e2be1a08"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"defaultMinter\",\"type\":\"address\"}],\"name\":\"DefaultMinterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"RareERC1155ContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rareERC1155\",\"type\":\"address\"}],\"name\":\"RareERC1155Updated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createRareERC1155Contract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"clone\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultMinter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rareERC1155\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"setDefaultMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rareERC1155\",\"type\":\"address\"}],\"name\":\"setRareERC1155\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"events\":{\"DefaultMinterUpdated(address)\":{\"params\":{\"defaultMinter\":\"New default minter address. Zero address disables default minter approval.\"}},\"RareERC1155ContractCreated(address,address)\":{\"params\":{\"contractAddress\":\"Address of the newly created ERC1155 clone.\",\"owner\":\"Initial owner of the clone.\"}},\"RareERC1155Updated(address)\":{\"params\":{\"rareERC1155\":\"New ERC1155 implementation address.\"}}},\"kind\":\"dev\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"params\":{\"_baseURI\":\"Base URI used by the collection when a token id has no token-specific URI.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"},\"returns\":{\"clone\":\"Address of the newly created ERC1155 clone.\"}},\"defaultMinter()\":{\"returns\":{\"_0\":\"Default minter address. Zero address means no default minter.\"}},\"rareERC1155()\":{\"returns\":{\"_0\":\"ERC1155 implementation address.\"}},\"setDefaultMinter(address)\":{\"params\":{\"_defaultMinter\":\"Address approved to mint on newly created clones, or zero address for none.\"}},\"setRareERC1155(address)\":{\"params\":{\"_rareERC1155\":\"Address of the replacement implementation.\"}}},\"title\":\"IRareERC1155ContractFactory\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an implementation address is the zero address.\"}]},\"events\":{\"DefaultMinterUpdated(address)\":{\"notice\":\"Emitted when the owner changes the default minter for new clones.\"},\"RareERC1155ContractCreated(address,address)\":{\"notice\":\"Emitted when the factory creates and initializes a collection clone.\"},\"RareERC1155Updated(address)\":{\"notice\":\"Emitted when the owner changes the implementation cloned by the factory.\"}},\"kind\":\"user\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"notice\":\"Creates a new initialized ERC1155 collection clone.\"},\"defaultMinter()\":{\"notice\":\"Returns the optional minter approved on each newly created collection.\"},\"rareERC1155()\":{\"notice\":\"Returns the ERC1155 implementation address cloned by the factory.\"},\"setDefaultMinter(address)\":{\"notice\":\"Updates the optional minter approved during clone initialization.\"},\"setRareERC1155(address)\":{\"notice\":\"Updates the ERC1155 implementation address cloned by future factory calls.\"}},\"notice\":\"Interface for the RARE Protocol ERC1155 clone factory.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":\"IRareERC1155ContractFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":{\"keccak256\":\"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179\",\"dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"defaultMinter","type":"address","indexed":true}],"type":"event","name":"DefaultMinterUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"RareERC1155ContractCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"rareERC1155","type":"address","indexed":true}],"type":"event","name":"RareERC1155Updated","anonymous":false},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createRareERC1155Contract","outputs":[{"internalType":"address","name":"clone","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultMinter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rareERC1155","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultMinter"},{"inputs":[{"internalType":"address","name":"_rareERC1155","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRareERC1155"}],"devdoc":{"kind":"dev","methods":{"createRareERC1155Contract(string,string,string)":{"params":{"_baseURI":"Base URI used by the collection when a token id has no token-specific URI.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."},"returns":{"clone":"Address of the newly created ERC1155 clone."}},"defaultMinter()":{"returns":{"_0":"Default minter address. Zero address means no default minter."}},"rareERC1155()":{"returns":{"_0":"ERC1155 implementation address."}},"setDefaultMinter(address)":{"params":{"_defaultMinter":"Address approved to mint on newly created clones, or zero address for none."}},"setRareERC1155(address)":{"params":{"_rareERC1155":"Address of the replacement implementation."}}},"version":1},"userdoc":{"kind":"user","methods":{"createRareERC1155Contract(string,string,string)":{"notice":"Creates a new initialized ERC1155 collection clone."},"defaultMinter()":{"notice":"Returns the optional minter approved on each newly created collection."},"rareERC1155()":{"notice":"Returns the ERC1155 implementation address cloned by the factory."},"setDefaultMinter(address)":{"notice":"Updates the optional minter approved during clone initialization."},"setRareERC1155(address)":{"notice":"Updates the ERC1155 implementation address cloned by future factory calls."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/IRareERC1155ContractFactory.sol":"IRareERC1155ContractFactory"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/token/ERC1155/IRareERC1155ContractFactory.sol":{"keccak256":"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63","urls":["bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179","dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb"],"license":"MIT"}},"version":1},"id":220} \ No newline at end of file diff --git a/abis/IRareERC1155Marketplace.json b/abis/IRareERC1155Marketplace.json new file mode 100644 index 0000000..86db690 --- /dev/null +++ b/abis/IRareERC1155Marketplace.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"acceptOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"cancelOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkout","inputs":[{"name":"_items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","components":[{"name":"summary","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","components":[{"name":"filledCount","type":"uint256","internalType":"uint256"},{"name":"skippedCount","type":"uint256","internalType":"uint256"},{"name":"ethSpent","type":"uint256","internalType":"uint256"},{"name":"ethRefunded","type":"uint256","internalType":"uint256"}]},{"name":"items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","components":[{"name":"itemIndex","type":"uint256","internalType":"uint256"},{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"filled","type":"bool","internalType":"bool"},{"name":"failureStage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","internalType":"bytes4"},{"name":"failureData","type":"bytes","internalType":"bytes"},{"name":"totalPaid","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"payable"},{"type":"function","name":"getDirectSaleConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleConfig","components":[{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getERC1155ApprovalManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getMarketConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct MarketConfigV2.Config","components":[{"name":"networkBeneficiary","type":"address","internalType":"address"},{"name":"marketplaceSettings","type":"address","internalType":"contract IMarketplaceSettings"},{"name":"spaceOperatorRegistry","type":"address","internalType":"contract ISpaceOperatorRegistry"},{"name":"royaltyEngine","type":"address","internalType":"contract IRoyaltyEngineV1"},{"name":"payments","type":"address","internalType":"contract IPayments"},{"name":"approvedTokenRegistry","type":"address","internalType":"contract IApprovedTokenRegistry"},{"name":"stakingSettings","type":"address","internalType":"contract IStakingSettings"},{"name":"stakingRegistry","type":"address","internalType":"contract IRareStakingRegistry"},{"name":"erc20ApprovalManager","type":"address","internalType":"contract IERC20ApprovalManager"},{"name":"erc721ApprovalManager","type":"address","internalType":"contract IERC721ApprovalManager"}]}],"stateMutability":"view"},{"type":"function","name":"getOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.Offer","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.SalePrice","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getSettlement","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getTokenAllowListConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfig","components":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenMintsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"},{"name":"_marketplaceSettings","type":"address","internalType":"address"},{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"},{"name":"_royaltyEngine","type":"address","internalType":"address"},{"name":"_payments","type":"address","internalType":"address"},{"name":"_approvedTokenRegistry","type":"address","internalType":"address"},{"name":"_stakingSettings","type":"address","internalType":"address"},{"name":"_stakingRegistry","type":"address","internalType":"address"},{"name":"_erc20ApprovalManager","type":"address","internalType":"address"},{"name":"_erc721ApprovalManager","type":"address","internalType":"address"},{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"},{"name":"_settlement","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"makeOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"prepareMintDirectSales","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovedTokenRegistry","inputs":[{"name":"_approvedTokenRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setContractPaused","inputs":[{"name":"_isPaused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC1155ApprovalManager","inputs":[{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20ApprovalManager","inputs":[{"name":"_erc20ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC721ApprovalManager","inputs":[{"name":"_erc721ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketplaceSettings","inputs":[{"name":"_marketplaceSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkBeneficiary","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPayments","inputs":[{"name":"_payments","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyEngine","inputs":[{"name":"_royaltyEngine","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSettlement","inputs":[{"name":"_settlement","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpaceOperatorRegistry","inputs":[{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingRegistry","inputs":[{"name":"_stakingRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingSettings","inputs":[{"name":"_stakingSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenAllowListConfigs","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenMintLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenTxLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"DirectSettlementCallUnsupported","inputs":[]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SettlementCannotBeZero","inputs":[]},{"type":"error","name":"SettlementDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":"b8e6b50f","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","cancelOffer(address,uint256,address)":"e92f94d1","cancelSalePrices(address,uint256[])":"2f79f335","checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":"2c0c49ee","getDirectSaleConfig(address,uint256)":"6e2f4d8b","getERC1155ApprovalManager()":"c7c83d17","getMarketConfig()":"614bd944","getOffer(address,uint256,address,address)":"e3409ce3","getSalePrice(address,uint256,address)":"369679a4","getSettlement()":"defad60c","getTokenAllowListConfig(address,uint256)":"bf3d90f8","getTokenMintLimit(address,uint256)":"8760251a","getTokenMintsPerAddress(address,uint256,address)":"28fbba03","getTokenTxLimit(address,uint256)":"552f791d","getTokenTxsPerAddress(address,uint256,address)":"5a501f8f","initialize(address,address,address,address,address,address,address,address,address,address,address,address)":"0b800f48","isPaused()":"b187bd26","makeOffer(address,uint256,address,uint256,uint256,uint256)":"b38df71f","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7","prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"be542141","setApprovedTokenRegistry(address)":"e4e87e3b","setContractPaused(bool)":"882796f1","setERC1155ApprovalManager(address)":"ff5c83a4","setERC20ApprovalManager(address)":"d7a9fb7c","setERC721ApprovalManager(address)":"d80b23e3","setMarketplaceSettings(address)":"176ab440","setNetworkBeneficiary(address)":"3492e5a8","setPayments(address)":"af231a58","setRoyaltyEngine(address)":"21ede032","setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"ff3a52d4","setSettlement(address)":"8f4e6f37","setSpaceOperatorRegistry(address)":"7f358230","setStakingRegistry(address)":"2c740844","setStakingSettings(address)":"f1035744","setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":"373a9412","setTokenMintLimits(address,(uint256,uint256)[])":"c7ec1b98","setTokenTxLimits(address,(uint256,uint256)[])":"6442950e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectSettlementCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SettlementCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"SettlementDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"acceptOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"cancelOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"cancelSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem[]\",\"name\":\"_items\",\"type\":\"tuple[]\"}],\"name\":\"checkout\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutSummary\",\"name\":\"summary\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]\",\"name\":\"items\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutExecution\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDirectSaleConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.DirectSaleConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC1155ApprovalManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"contract IPayments\",\"name\":\"payments\",\"type\":\"address\"},{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IStakingSettings\",\"name\":\"stakingSettings\",\"type\":\"address\"},{\"internalType\":\"contract IRareStakingRegistry\",\"name\":\"stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IERC20ApprovalManager\",\"name\":\"erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC721ApprovalManager\",\"name\":\"erc721ApprovalManager\",\"type\":\"address\"}],\"internalType\":\"struct MarketConfigV2.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"getOffer\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.Offer\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"getSalePrice\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.SalePrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSettlement\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenAllowListConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.AllowListConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenMintLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTokenMintsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenTxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTokenTxsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_settlement\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"makeOffer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"prepareMintDirectSales\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"}],\"name\":\"setApprovedTokenRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isPaused\",\"type\":\"bool\"}],\"name\":\"setContractPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC1155ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC20ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC721ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"}],\"name\":\"setMarketplaceSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"}],\"name\":\"setNetworkBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"}],\"name\":\"setPayments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"}],\"name\":\"setRoyaltyEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"setSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_settlement\",\"type\":\"address\"}],\"name\":\"setSettlement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"}],\"name\":\"setSpaceOperatorRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"}],\"name\":\"setStakingRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"}],\"name\":\"setStakingSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenAllowListConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenMintLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenTxLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{\"cancelSalePrices(address,uint256[])\":{\"details\":\"Token ids must be strictly ascending.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Best-effort execution returns one result per item. All-skipped checkouts complete successfully.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"}},\"title\":\"IRareERC1155Marketplace\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Accepts all or part of an ERC1155 token offer through the settlement module.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings through the settlement module.\"},\"cancelOffer(address,uint256,address)\":{\"notice\":\"Cancels the caller's offer for one token id and currency.\"},\"cancelSalePrices(address,uint256[])\":{\"notice\":\"Cancels the caller's secondary listings for token ids.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases.\"},\"initialize(address,address,address,address,address,address,address,address,address,address,address,address)\":{\"notice\":\"Initializes the UUPS marketplace proxy.\"},\"makeOffer(address,uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Creates or replaces a token-level ERC1155 offer.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales through the settlement module.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Configures or replaces primary mint sales for token ids.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Creates or replaces secondary fixed-price listings.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"notice\":\"Sets token id allowlist configurations.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets max quantity each address may mint for token ids while a limit is enabled.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets max mint transactions each address may submit for token ids while a limit is enabled.\"}},\"notice\":\"Interface for ERC1155 marketplace state creation, escrow, configuration, and settlement proxying.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155Marketplace.sol\":\"IRareERC1155Marketplace\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155Marketplace.sol\":{\"keccak256\":\"0x32be29c47c7b138de86eb1886c38763ebecda9949379e10720285f1a15cca6a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fea0ed0ae4cade3cd51f53d72024391341260201f1d8d32dd281eeeb26b9585\",\"dweb:/ipfs/QmVmFghURASWCVn6PKZhCR4XxLVVAjx8nKmZ4q2guETeCv\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350\",\"dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[],"type":"error","name":"DirectSettlementCallUnsupported"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[],"type":"error","name":"SettlementCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"SettlementDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"acceptOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"cancelOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"cancelSalePrices"},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","name":"_items","type":"tuple[]","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"checkout","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","name":"","type":"tuple","components":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","name":"summary","type":"tuple","components":[{"internalType":"uint256","name":"filledCount","type":"uint256"},{"internalType":"uint256","name":"skippedCount","type":"uint256"},{"internalType":"uint256","name":"ethSpent","type":"uint256"},{"internalType":"uint256","name":"ethRefunded","type":"uint256"}]},{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","name":"items","type":"tuple[]","components":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bool","name":"filled","type":"bool"},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8"},{"internalType":"bytes4","name":"reason","type":"bytes4"},{"internalType":"bytes","name":"failureData","type":"bytes"},{"internalType":"uint256","name":"totalPaid","type":"uint256"}]}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDirectSaleConfig","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleConfig","name":"","type":"tuple","components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getERC1155ApprovalManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMarketConfig","outputs":[{"internalType":"struct MarketConfigV2.Config","name":"","type":"tuple","components":[{"internalType":"address","name":"networkBeneficiary","type":"address"},{"internalType":"contract IMarketplaceSettings","name":"marketplaceSettings","type":"address"},{"internalType":"contract ISpaceOperatorRegistry","name":"spaceOperatorRegistry","type":"address"},{"internalType":"contract IRoyaltyEngineV1","name":"royaltyEngine","type":"address"},{"internalType":"contract IPayments","name":"payments","type":"address"},{"internalType":"contract IApprovedTokenRegistry","name":"approvedTokenRegistry","type":"address"},{"internalType":"contract IStakingSettings","name":"stakingSettings","type":"address"},{"internalType":"contract IRareStakingRegistry","name":"stakingRegistry","type":"address"},{"internalType":"contract IERC20ApprovalManager","name":"erc20ApprovalManager","type":"address"},{"internalType":"contract IERC721ApprovalManager","name":"erc721ApprovalManager","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"stateMutability":"view","type":"function","name":"getOffer","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.Offer","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"stateMutability":"view","type":"function","name":"getSalePrice","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.SalePrice","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSettlement","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenAllowListConfig","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfig","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenTxsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"},{"internalType":"address","name":"_marketplaceSettings","type":"address"},{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"},{"internalType":"address","name":"_royaltyEngine","type":"address"},{"internalType":"address","name":"_payments","type":"address"},{"internalType":"address","name":"_approvedTokenRegistry","type":"address"},{"internalType":"address","name":"_stakingSettings","type":"address"},{"internalType":"address","name":"_stakingRegistry","type":"address"},{"internalType":"address","name":"_erc20ApprovalManager","type":"address"},{"internalType":"address","name":"_erc721ApprovalManager","type":"address"},{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"},{"internalType":"address","name":"_settlement","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"stateMutability":"payable","type":"function","name":"makeOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"prepareMintDirectSales"},{"inputs":[{"internalType":"address","name":"_approvedTokenRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setApprovedTokenRegistry"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setContractPaused"},{"inputs":[{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC1155ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc20ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC20ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc721ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC721ApprovalManager"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketplaceSettings"},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkBeneficiary"},{"inputs":[{"internalType":"address","name":"_payments","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPayments"},{"inputs":[{"internalType":"address","name":"_royaltyEngine","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyEngine"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"setSalePrices"},{"inputs":[{"internalType":"address","name":"_settlement","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSettlement"},{"inputs":[{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSpaceOperatorRegistry"},{"inputs":[{"internalType":"address","name":"_stakingRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingRegistry"},{"inputs":[{"internalType":"address","name":"_stakingSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingSettings"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenAllowListConfigs"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenMintLimits"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenTxLimits"}],"devdoc":{"kind":"dev","methods":{"cancelSalePrices(address,uint256[])":{"details":"Token ids must be strictly ascending."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"details":"Best-effort execution returns one result per item. All-skipped checkouts complete successfully."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"details":"Request token ids must be strictly ascending."},"setTokenMintLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending."},"setTokenTxLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"notice":"Accepts all or part of an ERC1155 token offer through the settlement module."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings through the settlement module."},"cancelOffer(address,uint256,address)":{"notice":"Cancels the caller's offer for one token id and currency."},"cancelSalePrices(address,uint256[])":{"notice":"Cancels the caller's secondary listings for token ids."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"notice":"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases."},"initialize(address,address,address,address,address,address,address,address,address,address,address,address)":{"notice":"Initializes the UUPS marketplace proxy."},"makeOffer(address,uint256,address,uint256,uint256,uint256)":{"notice":"Creates or replaces a token-level ERC1155 offer."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales through the settlement module."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Configures or replaces primary mint sales for token ids."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Creates or replaces secondary fixed-price listings."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"notice":"Sets token id allowlist configurations."},"setTokenMintLimits(address,(uint256,uint256)[])":{"notice":"Sets max quantity each address may mint for token ids while a limit is enabled."},"setTokenTxLimits(address,(uint256,uint256)[])":{"notice":"Sets max mint transactions each address may submit for token ids while a limit is enabled."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155Marketplace.sol":"IRareERC1155Marketplace"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155Marketplace.sol":{"keccak256":"0x32be29c47c7b138de86eb1886c38763ebecda9949379e10720285f1a15cca6a8","urls":["bzz-raw://1fea0ed0ae4cade3cd51f53d72024391341260201f1d8d32dd281eeeb26b9585","dweb:/ipfs/QmVmFghURASWCVn6PKZhCR4XxLVVAjx8nKmZ4q2guETeCv"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9","urls":["bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350","dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":158} \ No newline at end of file diff --git a/abis/IRareERC1155MarketplaceTypes.json b/abis/IRareERC1155MarketplaceTypes.json new file mode 100644 index 0000000..1c2a747 --- /dev/null +++ b/abis/IRareERC1155MarketplaceTypes.json @@ -0,0 +1 @@ +{"abi":[{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"DirectSettlementCallUnsupported","inputs":[]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SettlementCannotBeZero","inputs":[]},{"type":"error","name":"SettlementDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectSettlementCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SettlementCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"SettlementDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"IRareERC1155MarketplaceTypes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Shared structs, events, and errors for the ERC1155 marketplace.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":\"IRareERC1155MarketplaceTypes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350\",\"dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[],"type":"error","name":"DirectSettlementCallUnsupported"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[],"type":"error","name":"SettlementCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"SettlementDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155MarketplaceTypes.sol":"IRareERC1155MarketplaceTypes"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9","urls":["bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350","dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K"],"license":"MIT"}},"version":1},"id":159} \ No newline at end of file diff --git a/abis/IRareERC1155Settlement.json b/abis/IRareERC1155Settlement.json new file mode 100644 index 0000000..67e97d9 --- /dev/null +++ b/abis/IRareERC1155Settlement.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"acceptOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"checkout","inputs":[{"name":"_items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","components":[{"name":"summary","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","components":[{"name":"filledCount","type":"uint256","internalType":"uint256"},{"name":"skippedCount","type":"uint256","internalType":"uint256"},{"name":"ethSpent","type":"uint256","internalType":"uint256"},{"name":"ethRefunded","type":"uint256","internalType":"uint256"}]},{"name":"items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","components":[{"name":"itemIndex","type":"uint256","internalType":"uint256"},{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"filled","type":"bool","internalType":"bool"},{"name":"failureStage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","internalType":"bytes4"},{"name":"failureData","type":"bytes","internalType":"bytes"},{"name":"totalPaid","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"payable"},{"type":"function","name":"executeCheckoutItem","inputs":[{"name":"_item","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"_remainingEth","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_grossAmount","type":"uint256","internalType":"uint256"},{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[{"name":"totalPaid","type":"uint256","internalType":"uint256"},{"name":"newRemainingEth","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"executeCheckoutPayout","inputs":[{"name":"_item","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"_seller","type":"address","internalType":"address"},{"name":"_grossAmount","type":"uint256","internalType":"uint256"},{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"DirectSettlementCallUnsupported","inputs":[]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SettlementCannotBeZero","inputs":[]},{"type":"error","name":"SettlementDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":"b8e6b50f","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":"2c0c49ee","executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":"59a8a40a","executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":"d65852a6","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectSettlementCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SettlementCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"SettlementDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"acceptOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem[]\",\"name\":\"_items\",\"type\":\"tuple[]\"}],\"name\":\"checkout\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutSummary\",\"name\":\"summary\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]\",\"name\":\"items\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutExecution\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem\",\"name\":\"_item\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_remainingEth\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_grossAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"executeCheckoutItem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newRemainingEth\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem\",\"name\":\"_item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_grossAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"executeCheckoutPayout\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert.\"},\"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Settlement-only entrypoint; the marketplace proxy does not expose this selector.\"},\"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])\":{\"details\":\"Settlement-only entrypoint; the marketplace proxy does not expose this selector.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert.\"}},\"title\":\"IRareERC1155Settlement\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Accepts all or part of an ERC1155 token offer.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases.\"},\"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Executes one already validated checkout item through a nested delegatecall rollback boundary.\"},\"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Executes payout for a checkout item through a nested rollback boundary.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales.\"}},\"notice\":\"Settlement entrypoints executed through `RareERC1155Marketplace` delegatecalls.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155Settlement.sol\":\"IRareERC1155Settlement\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350\",\"dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K\"]},\"src/marketplace/IRareERC1155Settlement.sol\":{\"keccak256\":\"0x7ba101acc638ecd2eb5c780e625d6d82d6d00e36aa392f7a60a131cbf25d9d1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33355c9a7d70f3e97c076c71344a088a8a00cf79f5b52f017508cc442903b06c\",\"dweb:/ipfs/QmYowpKw4Y9LJUCeQhSRaLf6LkCTKbwJcTX3pU8hjbaaqA\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[],"type":"error","name":"DirectSettlementCallUnsupported"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[],"type":"error","name":"SettlementCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"SettlementDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"acceptOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","name":"_items","type":"tuple[]","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"checkout","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","name":"","type":"tuple","components":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","name":"summary","type":"tuple","components":[{"internalType":"uint256","name":"filledCount","type":"uint256"},{"internalType":"uint256","name":"skippedCount","type":"uint256"},{"internalType":"uint256","name":"ethSpent","type":"uint256"},{"internalType":"uint256","name":"ethRefunded","type":"uint256"}]},{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","name":"items","type":"tuple[]","components":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bool","name":"filled","type":"bool"},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8"},{"internalType":"bytes4","name":"reason","type":"bytes4"},{"internalType":"bytes","name":"failureData","type":"bytes"},{"internalType":"uint256","name":"totalPaid","type":"uint256"}]}]}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","name":"_item","type":"tuple","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]},{"internalType":"uint256","name":"_remainingEth","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_grossAmount","type":"uint256"},{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"payable","type":"function","name":"executeCheckoutItem","outputs":[{"internalType":"uint256","name":"totalPaid","type":"uint256"},{"internalType":"uint256","name":"newRemainingEth","type":"uint256"}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","name":"_item","type":"tuple","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_grossAmount","type":"uint256"},{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"payable","type":"function","name":"executeCheckoutPayout"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"}],"devdoc":{"kind":"dev","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert."},"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":{"details":"Settlement-only entrypoint; the marketplace proxy does not expose this selector."},"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":{"details":"Settlement-only entrypoint; the marketplace proxy does not expose this selector."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"notice":"Accepts all or part of an ERC1155 token offer."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"notice":"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases."},"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":{"notice":"Executes one already validated checkout item through a nested delegatecall rollback boundary."},"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":{"notice":"Executes payout for a checkout item through a nested rollback boundary."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155Settlement.sol":"IRareERC1155Settlement"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9","urls":["bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350","dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K"],"license":"MIT"},"src/marketplace/IRareERC1155Settlement.sol":{"keccak256":"0x7ba101acc638ecd2eb5c780e625d6d82d6d00e36aa392f7a60a131cbf25d9d1b","urls":["bzz-raw://33355c9a7d70f3e97c076c71344a088a8a00cf79f5b52f017508cc442903b06c","dweb:/ipfs/QmYowpKw4Y9LJUCeQhSRaLf6LkCTKbwJcTX3pU8hjbaaqA"],"license":"MIT"}},"version":1},"id":70} \ No newline at end of file diff --git a/abis/RareERC1155.json b/abis/RareERC1155.json index e52dde4..7046df1 100644 --- a/abis/RareERC1155.json +++ b/abis/RareERC1155.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBatch","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnBatch","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"},{"name":"_royaltyReceiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"exists","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintBatchTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyPercentage","inputs":[{"name":"_percentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyReceiverForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"_interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"royaltyReceiver","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"TransferBatch","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"values","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"TransferSingle","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"URI","inputs":[{"name":"value","type":"string","indexed":false,"internalType":"string"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"BatchLengthMismatch","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"RoyaltyPercentageTooHigh","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x60808060405234620000c6576000549060ff8260081c1662000074575060ff8082160362000038575b60405161345b9081620000cc8239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e146124a657806301ffc9a7146123ec57806306fdde031461235a5780630de54ba0146122d65780630e89341c146121545780631542bb9514611ec957806318e97fd114611d465780632a55205a14611c985780632baf2acb14611c275780632eb2c2d61461185f5780633512639c146117df5780633a3d146f1461179f5780633ebc82c51461176657806340c1a064146117315780634e1273f4146115935780634f558e79146115655780636b20c4541461131d578063715018a6146112c0578063894ba833146112715780638da5cb5b1461124857806395d89b4114611175578063a22cb4651461109e578063a7eae21c146109f3578063bd85b039146109c7578063c33ae88f1461099a578063cfdbf2541461097e578063e2200a0b146108ad578063e27a41bf1461085d578063e985e9c514610807578063ee070805146107e3578063f242432a1461044d578063f2fde38b146103c0578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101636020526020604060002054604051908152f35b600080fd5b346101be576101d136612626565b6001600160a01b0390921691903383148015610397575b6101f190612904565b8215926101fe8415612c1e565b61020782612bf9565b9161021184612bf9565b9460006040516102208161254e565b52610343575b60005b83518110156102c45761023c81856128f0565b5161024782886128f0565b51908060005260fb602081815260406000205492848410610280579061027b959493929160005252036040600020556128be565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020613406833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612c76565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a461034160405161254e565b005b929060005b835181101561038f578061035f61038a92886128f0565b5161036a82876128f0565b5160005260fb6020526103836040600020918254612a20565b90556128be565b610348565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103d96124cd565b6103e1612798565b6001600160a01b038116156103f957610341906127f0565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be576104666124cd565b61046e6124e3565b90608480356001600160401b0381116101be5761048f903690600401612719565b6001600160a01b039190838316331480156107b8575b6104ae90612904565b828516156104bc8115612967565b6104c7604435612bf9565b6104d2606435612bf9565b9185871615610778575b6106ca575b505060443560005260209460978652604060002084861660005286526040600020546105116064358210156129c1565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061055c6064358254612a20565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b6105a357005b60a060006105ed958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a483019061258a565b0393165af16000918161069b575b5061067157505060019061060d612b18565b6308c379a01461063c575b5061061f57005b60405162461bcd60e51b81528061063860048201612ba4565b0390fd5b610644612b36565b90816106505750610618565b61063860405192839262461bcd60e51b84526004840152602483019061258a565b6001600160e01b0319161490506103415760405162461bcd60e51b81528061063860048201612acf565b6106bc919250843d86116106c3575b6106b48183612569565b810190612aaf565b90846105fb565b503d6106aa565b92959194909360005b8451811015610769576106e681866128f0565b51906106f281886128f0565b518260005260fb602052604060002054818110610726576107219360005260fb602052036040600020556128be565b6106d3565b60405162461bcd60e51b81526020600482015260286024820152600080516020613406833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104e1565b959260009794919592975b86518110156107aa578061079a6107a5928b6128f0565b5161036a828a6128f0565b610783565b5092959691949093966104dc565b5082841660005260986020526040600020336000526020526104ae60ff6040600020541690506104a5565b346101be5760003660031901126101be57602060ff61016154166040519015158152f35b346101be5760403660031901126101be576108206124cd565b6108286124e3565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be57610876612798565b60ff610161541661089b576101675461034190600435906001600160a01b03166132fb565b604051637abbf1c960e01b8152600490fd5b346101be5760403660031901126101be576004356108c96124e3565b906108d2612798565b60ff610161541661089b578060005261016360205260ff6002604060002001541615610966576001600160a01b0382161561095457806000526101696020526040600020549160648302928084046064149015171561093e576001600160601b0361034193169161324e565b634e487b7160e01b600052601160045260246000fd5b604051637827912560e01b8152600490fd5b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760003660031901126101be57602060405160648152f35b346101be5760203660031901126101be576004356000526101666020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be57610a239036906004016125f9565b906024356001600160401b0381116101be57610a439036906004016125f9565b6044356001600160401b0381116101be57610a629036906004016125f9565b90929091906064356001600160a01b03811690036101be57608435956001600160a01b03871687036101be576000549560ff8760081c161596878098611091575b801561107a575b1561101e5760ff1981166001176000558761100c575b506064356001600160a01b031615610954576001600160401b038211610e14578190610aee61015f546124f9565b601f8111610f9e575b50600090601f8311600114610f1557600092610f0a575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610e1457610b3f610160546124f9565b601f8111610ea8575b50600090601f8311600114610e3557610bb39493929160009183610e2a575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ba360ff60005460081c16610b9e81612d22565b612d22565b610bac336127f0565b36916126d3565b91610bc960ff60005460081c16610b9e81612d22565b82516001600160401b038111610e1457610be46099546124f9565b601f8111610daf575b506020601f8211600114610d485781929394600092610d3d575b50508160011b916000199060031b1c1916176099555b610c3b60ff60005460081c16610c3281612d22565b610b9e81612d22565b61016780546001600160a01b0319166064356001600160a01b0316179055600a610168556040516103e890602090610c7281612533565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610ce5575b50610ca76064356127f0565b610cad57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101656020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610c9b565b015190508480610c07565b601f198216906099600052806000209160005b818110610d9757509583600195969710610d7e575b505050811b01609955610c1d565b015160001960f88460031b161c19169055848080610d70565b9192602060018192868b015181550194019201610d5b565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610e0a575b601f0160051c01905b818110610dfe5750610bed565b60008155600101610df1565b9091508190610de8565b634e487b7160e01b600052604160045260246000fd5b013590508780610b67565b61016060005260206000209160005b601f1985168110610e905750918391600193610bb3979695601f19811610610e76575b505050811b0161016055610b7e565b0135600019600384901b60f8161c19169055878080610e67565b90926020600181928686013581550194019101610e44565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610f03575b601f830160051c82018110610ef7575050610b48565b60008155600101610ee1565b5080610ee1565b013590508880610b0e565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610f86576001945083601f19811610610f6c575b505050811b0161015f55610b25565b0135600019600384901b60f8161c19169055888080610f5d565b81810135835560209485019460019093019201610f42565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510611005575b90849392915b601f830160051c82018110610ff6575050610af7565b60008155859450600101610fe0565b5080610fda565b61ffff19166101011760005588610ac0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610aaa5750600160ff821614610aaa565b50600160ff821610610aa3565b346101be576110ac366125ca565b6001600160a01b039091169033821461111e573360005260986020526040600020826000526020526110ee8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be5760405160009061016080549061119b826124f9565b90818452600192838116908160001461122057506001146111df575b6111db846111c781880382612569565b60405191829160208352602083019061258a565b0390f35b90935060005260209283600020916000925b82841061120d57505050816111db936111c792820101936111b7565b80548585018701529285019281016111f1565b6111db96506111c79450602092508593915060ff191682840152151560051b820101936111b7565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be5761128a612798565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760003660031901126101be576112d9612798565b603380546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101be5760603660031901126101be576113366124cd565b6024906001600160401b039082358281116101be576113599036906004016126b5565b9160449081359081116101be576113749036906004016126b5565b6001600160a01b0390921692338414801561153c575b61139390612904565b831561139f8115612c1e565b6113ac8251855114612a2d565b60006040516113ba8161254e565b52611504575b60005b815181101561145c576113d681836128f0565b516113e182866128f0565b51908060005260fb60208181526040600020549284841061141a5790611415959493929160005252036040600020556128be565b6113c3565b60405162461bcd60e51b8152600481018390526028818d0152600080516020613406833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b82518110156114d157806114796114cc92856128f0565b5161148482876128f0565b51908060005260976020908082526040600020876000528252604060002054926114b085851015612c76565b60005281526040600020908660005252036040600020556128be565b611462565b50906000805160206133c68339815191526114f6600094604051918291339583612a8a565b0390a461034160405161254e565b9260009491945b8451811015611532578061152261152d92866128f0565b5161036a82886128f0565b61150b565b50929390936113c0565b5083600052609860205260406000203360005260205261139360ff60406000205416905061138a565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be578160040135906115d082612650565b926115de6040519485612569565b82845260209260248486019160051b830101913683116101be57602401905b828210611712575050506024359081116101be5761161f9036906004016126b5565b82518151036116bb5782519261163484612650565b936116426040519586612569565b808552611651601f1991612650565b01368486013760005b81518110156116a45761169f9061168f6001600160a01b0361167c83866128f0565b511661168883876128f0565b5190612839565b61169982886128f0565b526128be565b61165a565b5050506111db604051928284938452830190612764565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115fd565b346101be5760203660031901126101be57600435600052610164602052602060018060a01b0360406000205416604051908152f35b346101be5760203660031901126101be5761177f6124cd565b611787612798565b60ff610161541661089b5761016854610341916132fb565b346101be5760203660031901126101be576001600160a01b036117c06124cd565b16600052610165602052602060ff604060002054166040519015158152f35b346101be5760603660031901126101be576117f86124cd565b6001600160401b03906024358281116101be57611819903690600401612734565b926044359081116101be57611832903690600401612734565b919060ff610161541661089b5761185161185992610341963691612667565b923691612667565b91612d82565b346101be5760031960a0368201126101be576118796124cd565b906118826124e3565b6044908135926001600160401b03938481116101be576118a69036906004016126b5565b606480358681116101be576118bf9036906004016126b5565b9460849687359081116101be576118da903690600401612719565b6001600160a01b039489861633148015611bfc575b6118f890612904565b6119058551895114612a2d565b858716156119138115612967565b868b1615611bb9575b611b04575b60005b85518110156119b9578061193b6119b492886128f0565b518c611947838d6128f0565b519180600052609790838c6020948486526040600020828216600052865260406000205491611978848410156129c1565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c16600052526103836040600020918254612a20565b611924565b50888a989796949789604051886000805160206133c683398151915289808d16941692806119e987339583612a8a565b0390a4873b6119f457005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a48701611a2891612764565b90848783030190870152611a3b91612764565b918483030190840152611a4d9161258a565b03921691815a602094600091f160009181611ae4575b50611abc5750506001611a74612b18565b6308c379a014611a85575b61061f57005b611a8d612b36565b80611a985750611a7f565b60405162461bcd60e51b81526020600482015290819061063890602483019061258a565b6001600160e01b031916146103415760405162461bcd60e51b81528061063860048201612acf565b611afd91925060203d81116106c3576106b48183612569565b9083611a63565b9796949060009993999692965b8551811015611ba957611b2481876128f0565b51611b2f82896128f0565b519080600052602060fb815260406000205491838310611b6857611b639493929160fb9160005252036040600020556128be565b611b11565b508b9067616c537570706c7960c01b8f6000805160206134068339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b5090949697989298959195611921565b99969498959392919060005b8a51811015611bed57808b61036a82611be1611be8958f6128f0565b51926128f0565b611bc5565b5090919293959894969961191c565b50858a1660005260986020526040600020336000526020526118f860ff6040600020541690506118ef565b346101be57611c3536612626565b9160ff610161541661089b57602092611c909160405190611c5582612533565b6001825285368184013760405192611c6c84612533565b6001845286368186013785611c80846128cd565b52611c8a846128cd565b52612d82565b604051908152f35b346101be5760403660031901126101be5760243560043560005261012e60205260406000209060405191611ccb83612533565b546001600160a01b0380821680855260a09290921c6020850152929015611d23575b6001600160601b036020820151169182810292818404149015171561093e57604092612710915116918351928352046020820152f35b50604051611d3081612533565b61012d54838116825260a01c6020820152611ced565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611d7a9036906004016125f9565b9190611d84612798565b60ff610161541661089b57836000526101639160209280845260ff6002604060002001541615611eb057856000528352600180604060002001918511610e1457611dd885611dd284546124f9565b84612cce565b6000601f8611600114611e39579185806000805160206133e683398151915297969593611e2995600093611e2e575b501b906000198760031b1c19161790555b6040519383859485528401916131ce565b0390a2005b85013592508a611e07565b601f1986169083600052856000209160005b818110611e9b57509187969593916000805160206133e683398151915298611e29969410611e81575b505085811b019055611e18565b840135600019600389901b60f8161c191690558880611e74565b86830135845592840192918701918701611e4b565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576001600160401b036004358181116101be57611efa9036906004016125f9565b6044356001600160a01b0381169190602435908381036101be57611f1c612798565b60ff610161541661089b5781156121425783156109545761016294611f4186546128be565b809655604051966060880188811082821117610e1457604052838852611f683686846126d3565b9760209889820190815260408201906001938483528a6000526101638c526040600020935184558484019151948551918211610e1457611fb282611fac85546124f9565b85612cce565b8c8d601f84116001146120d05750918080926002969594611ffd996000946120c5575b50501b916000199060031b1c19161790555b51151591019060ff801983541691151516179055565b60008681526101648852604080822080546001600160a01b03191633179055610168546101698a529120819055606480820294918015908604909114171561093e576120767fc07473765c308da8ff95c4974c60af7332d93777f002550fa063b77064a6f7b2936001600160601b03899616908661324e565b836000805160206133e68339815191526040518a81528061209a8c82018a886131ce565b0390a26120ba604051928392835260408a840152339660408401916131ce565b0390a4604051908152f35b015192503880611fd5565b9193949596601f1984168660005283600020936000905b82821061212b57505091611ffd989795939185600298969410612112575b505050811b019055611fe7565b015160001960f88460031b161c191690558e8080612105565b8088869782949787015181550196019401906120e7565b604051631dd0e19360e01b8152600490fd5b346101be576020806003193601126101be57600435600052610163815260018060406000200190826040518093600090805490612190826124f9565b808552918681169081156122b55750600114612274575b50506121b592500383612569565b8151156121d35750905b6111db60405192828493845283019061258a565b90506040519060009083609954916121ea836124f9565b9283865285828216918260001461225457505060011461221a575b50505081612214910382612569565b906121bf565b91909250609960005282600020916000925b82841061224157505050820101818385612205565b805486850186015292840192810161222c565b60ff19168482015293151560051b84019092019350859150869050612205565b9091506000528260002090846000925b82841061229e57505050916121b5928201018592876121a7565b805488850187015287945092850192869101612284565b9150506121b594925060ff191682840152151560051b8201018592876121a7565b346101be576122e4366125ca565b906122ed612798565b60ff610161541661089b576001600160a01b03169081156109545760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b59183600052610165825261234f8160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be5760405160009061015f805490612380826124f9565b90818452600192838116908160001461122057506001146123ab576111db846111c781880382612569565b90935060005260209283600020916000925b8284106123d957505050816111db936111c792820101936111b7565b80548585018701529285019281016123bd565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be57602090635a08b45360e11b8114908115612495575b8115612438575b506040519015158152f35b63152a902d60e11b811491508115612452575b508261242d565b636cdb3d1360e11b811491508115612484575b8115612473575b508261244b565b6301ffc9a760e01b1490508261246c565b6303a24d0760e21b81149150612465565b631030681960e21b81149150612426565b346101be5760403660031901126101be576020611c906124c46124cd565b60243590612839565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c92168015612529575b602083101461251357565b634e487b7160e01b600052602260045260246000fd5b91607f1691612508565b604081019081106001600160401b03821117610e1457604052565b602081019081106001600160401b03821117610e1457604052565b90601f801991011681019081106001600160401b03821117610e1457604052565b919082519283825260005b8481106125b6575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612595565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610e145760051b60200190565b929161267282612650565b916126806040519384612569565b829481845260208094019160051b81019283116101be57905b8282106126a65750505050565b81358152908301908301612699565b9080601f830112156101be578160206126d093359101612667565b90565b9291926001600160401b038211610e1457604051916126fc601f8201601f191660200184612569565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be578160206126d0933591016126d3565b9181601f840112156101be578235916001600160401b0383116101be576020808501948460051b0101116101be57565b90815180825260208080930193019160005b828110612784575050505090565b835185529381019392810192600101612776565b6033546001600160a01b031633036127ac57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561286657600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b600019811461093e5760010190565b8051156128da5760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156128da5760209160051b010190565b1561290b57565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561296e57565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b156129c857565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9190820180921161093e57565b15612a3457565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612aa16126d093604084526040840190612764565b916020818403910152612764565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612b2557565b905060046000803e60005160e01c90565b600060443d106126d057604051600319913d83016004833e81516001600160401b03918282113d602484011117612b9357818401948551938411612b9b573d85010160208487010111612b9357506126d092910160200190612569565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612c0682612533565b6001825260203681840137612c1a826128cd565b5290565b15612c2557565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612c7d57565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612cdc57505050565b600091825260208220906020601f850160051c83019410612d18575b601f0160051c01915b828110612d0d57505050565b818155600101612d01565b9092508290612cf8565b15612d2957565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b0380831692919083156109545760335416331415806131b4575b61319c5783511561318a5783518151036131785783519260649384811161315a575060015b8551811015612e4057612ddd81876128f0565b516000198201828111612e2b57612df490886128f0565b511015612e0957612e04906128be565b612dca565b612e15602491876128f0565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612f3257612e5e86846128f0565b519586600052610163602081815260409060ff60028360002001541615612f1a57612e8984896128f0565b5115612f09578960005261016690818152612eb38360002054612eac878c6128f0565b5190612a20565b938b60005281528260002054808511612ee75750612edd95969798999a60005252600020556128be565b9493929190612e4b565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612f488761254e565b60008752612f598651855114612a2d565b60005b8651811015612f9b5780612f73612f9692876128f0565b51612f7e828a6128f0565b5160005260fb60205261038388600020918254612a20565b612f5c565b5090919560005b8651811015612fec5780612fb9612fe792876128f0565b51612fc4828a6128f0565b5160005260206097815288600020908c6000525261038388600020918254612a20565b612fa2565b50919690939581600088516000805160206133c68339815191523391806130148a8d83612a8a565b0390a43b613025575b505050505050565b613078600060209461308789519788968795869461306563bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a4880190612764565b9060031994858884030190880152612764565b9184830301608485015261258a565b03925af16000918161313a575b5061310e57505060016130a5612b18565b6308c379a0146130d8575b6130c157505b38808080808061301d565b5162461bcd60e51b81528061063860048201612ba4565b6130e0612b36565b806130eb57506130b0565b825162461bcd60e51b81526020600482015290819061063890602483019061258a565b6001600160e01b0319160361312357506130b6565b5162461bcd60e51b81528061063860048201612acf565b61315391925060203d81116106c3576106b48183612569565b9038613094565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016560205260ff6040600020541615612da5565b908060209392818452848401376000828201840152601f01601f1916010190565b156131f657565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b916001600160601b0316906132676127108311156131ef565b6001600160a01b039081169283156132b6576040519361328685612533565b84526020808501938452600091825261012e9052604090209251915160a01b6001600160a01b0319169116179055565b60405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b6001600160a01b039081169190821561095457606482116133a55760018060a01b0319926101678185825416179055826101685560648302928084046064149015171561093e57613393906001600160601b03841661335e6127108211156131ef565b602060405161336c81612533565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a264697066735822122001030b56bac864e3c45775298dbf75a049d5a3f7a1d8935274d02f6fee2ad0f764736f6c63430008120033","sourceMap":"1123:14024:15:-:0;;;;;;;6007:13:2;1123:14024:15;;;;;;;;;;;;;;6078:31:2;6074:139;;-1:-1:-1;1123:14024:15;;;;;;;;;6074:139:2;1123:14024:15;;;;;;6007:13:2;1123:14024:15;6174:28:2;1123:14024:15;;;;;;6174:28:2;6074:139;;;1123:14024:15;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c8062fdd58e146124a657806301ffc9a7146123ec57806306fdde031461235a5780630de54ba0146122d65780630e89341c146121545780631542bb9514611ec957806318e97fd114611d465780632a55205a14611c985780632baf2acb14611c275780632eb2c2d61461185f5780633512639c146117df5780633a3d146f1461179f5780633ebc82c51461176657806340c1a064146117315780634e1273f4146115935780634f558e79146115655780636b20c4541461131d578063715018a6146112c0578063894ba833146112715780638da5cb5b1461124857806395d89b4114611175578063a22cb4651461109e578063a7eae21c146109f3578063bd85b039146109c7578063c33ae88f1461099a578063cfdbf2541461097e578063e2200a0b146108ad578063e27a41bf1461085d578063e985e9c514610807578063ee070805146107e3578063f242432a1461044d578063f2fde38b146103c0578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101636020526020604060002054604051908152f35b600080fd5b346101be576101d136612626565b6001600160a01b0390921691903383148015610397575b6101f190612904565b8215926101fe8415612c1e565b61020782612bf9565b9161021184612bf9565b9460006040516102208161254e565b52610343575b60005b83518110156102c45761023c81856128f0565b5161024782886128f0565b51908060005260fb602081815260406000205492848410610280579061027b959493929160005252036040600020556128be565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020613406833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612c76565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a461034160405161254e565b005b929060005b835181101561038f578061035f61038a92886128f0565b5161036a82876128f0565b5160005260fb6020526103836040600020918254612a20565b90556128be565b610348565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103d96124cd565b6103e1612798565b6001600160a01b038116156103f957610341906127f0565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be576104666124cd565b61046e6124e3565b90608480356001600160401b0381116101be5761048f903690600401612719565b6001600160a01b039190838316331480156107b8575b6104ae90612904565b828516156104bc8115612967565b6104c7604435612bf9565b6104d2606435612bf9565b9185871615610778575b6106ca575b505060443560005260209460978652604060002084861660005286526040600020546105116064358210156129c1565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061055c6064358254612a20565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b6105a357005b60a060006105ed958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a483019061258a565b0393165af16000918161069b575b5061067157505060019061060d612b18565b6308c379a01461063c575b5061061f57005b60405162461bcd60e51b81528061063860048201612ba4565b0390fd5b610644612b36565b90816106505750610618565b61063860405192839262461bcd60e51b84526004840152602483019061258a565b6001600160e01b0319161490506103415760405162461bcd60e51b81528061063860048201612acf565b6106bc919250843d86116106c3575b6106b48183612569565b810190612aaf565b90846105fb565b503d6106aa565b92959194909360005b8451811015610769576106e681866128f0565b51906106f281886128f0565b518260005260fb602052604060002054818110610726576107219360005260fb602052036040600020556128be565b6106d3565b60405162461bcd60e51b81526020600482015260286024820152600080516020613406833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104e1565b959260009794919592975b86518110156107aa578061079a6107a5928b6128f0565b5161036a828a6128f0565b610783565b5092959691949093966104dc565b5082841660005260986020526040600020336000526020526104ae60ff6040600020541690506104a5565b346101be5760003660031901126101be57602060ff61016154166040519015158152f35b346101be5760403660031901126101be576108206124cd565b6108286124e3565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be57610876612798565b60ff610161541661089b576101675461034190600435906001600160a01b03166132fb565b604051637abbf1c960e01b8152600490fd5b346101be5760403660031901126101be576004356108c96124e3565b906108d2612798565b60ff610161541661089b578060005261016360205260ff6002604060002001541615610966576001600160a01b0382161561095457806000526101696020526040600020549160648302928084046064149015171561093e576001600160601b0361034193169161324e565b634e487b7160e01b600052601160045260246000fd5b604051637827912560e01b8152600490fd5b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760003660031901126101be57602060405160648152f35b346101be5760203660031901126101be576004356000526101666020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be57610a239036906004016125f9565b906024356001600160401b0381116101be57610a439036906004016125f9565b6044356001600160401b0381116101be57610a629036906004016125f9565b90929091906064356001600160a01b03811690036101be57608435956001600160a01b03871687036101be576000549560ff8760081c161596878098611091575b801561107a575b1561101e5760ff1981166001176000558761100c575b506064356001600160a01b031615610954576001600160401b038211610e14578190610aee61015f546124f9565b601f8111610f9e575b50600090601f8311600114610f1557600092610f0a575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610e1457610b3f610160546124f9565b601f8111610ea8575b50600090601f8311600114610e3557610bb39493929160009183610e2a575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ba360ff60005460081c16610b9e81612d22565b612d22565b610bac336127f0565b36916126d3565b91610bc960ff60005460081c16610b9e81612d22565b82516001600160401b038111610e1457610be46099546124f9565b601f8111610daf575b506020601f8211600114610d485781929394600092610d3d575b50508160011b916000199060031b1c1916176099555b610c3b60ff60005460081c16610c3281612d22565b610b9e81612d22565b61016780546001600160a01b0319166064356001600160a01b0316179055600a610168556040516103e890602090610c7281612533565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610ce5575b50610ca76064356127f0565b610cad57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101656020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610c9b565b015190508480610c07565b601f198216906099600052806000209160005b818110610d9757509583600195969710610d7e575b505050811b01609955610c1d565b015160001960f88460031b161c19169055848080610d70565b9192602060018192868b015181550194019201610d5b565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610e0a575b601f0160051c01905b818110610dfe5750610bed565b60008155600101610df1565b9091508190610de8565b634e487b7160e01b600052604160045260246000fd5b013590508780610b67565b61016060005260206000209160005b601f1985168110610e905750918391600193610bb3979695601f19811610610e76575b505050811b0161016055610b7e565b0135600019600384901b60f8161c19169055878080610e67565b90926020600181928686013581550194019101610e44565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610f03575b601f830160051c82018110610ef7575050610b48565b60008155600101610ee1565b5080610ee1565b013590508880610b0e565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610f86576001945083601f19811610610f6c575b505050811b0161015f55610b25565b0135600019600384901b60f8161c19169055888080610f5d565b81810135835560209485019460019093019201610f42565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510611005575b90849392915b601f830160051c82018110610ff6575050610af7565b60008155859450600101610fe0565b5080610fda565b61ffff19166101011760005588610ac0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610aaa5750600160ff821614610aaa565b50600160ff821610610aa3565b346101be576110ac366125ca565b6001600160a01b039091169033821461111e573360005260986020526040600020826000526020526110ee8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be5760405160009061016080549061119b826124f9565b90818452600192838116908160001461122057506001146111df575b6111db846111c781880382612569565b60405191829160208352602083019061258a565b0390f35b90935060005260209283600020916000925b82841061120d57505050816111db936111c792820101936111b7565b80548585018701529285019281016111f1565b6111db96506111c79450602092508593915060ff191682840152151560051b820101936111b7565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be5761128a612798565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760003660031901126101be576112d9612798565b603380546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101be5760603660031901126101be576113366124cd565b6024906001600160401b039082358281116101be576113599036906004016126b5565b9160449081359081116101be576113749036906004016126b5565b6001600160a01b0390921692338414801561153c575b61139390612904565b831561139f8115612c1e565b6113ac8251855114612a2d565b60006040516113ba8161254e565b52611504575b60005b815181101561145c576113d681836128f0565b516113e182866128f0565b51908060005260fb60208181526040600020549284841061141a5790611415959493929160005252036040600020556128be565b6113c3565b60405162461bcd60e51b8152600481018390526028818d0152600080516020613406833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b82518110156114d157806114796114cc92856128f0565b5161148482876128f0565b51908060005260976020908082526040600020876000528252604060002054926114b085851015612c76565b60005281526040600020908660005252036040600020556128be565b611462565b50906000805160206133c68339815191526114f6600094604051918291339583612a8a565b0390a461034160405161254e565b9260009491945b8451811015611532578061152261152d92866128f0565b5161036a82886128f0565b61150b565b50929390936113c0565b5083600052609860205260406000203360005260205261139360ff60406000205416905061138a565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be578160040135906115d082612650565b926115de6040519485612569565b82845260209260248486019160051b830101913683116101be57602401905b828210611712575050506024359081116101be5761161f9036906004016126b5565b82518151036116bb5782519261163484612650565b936116426040519586612569565b808552611651601f1991612650565b01368486013760005b81518110156116a45761169f9061168f6001600160a01b0361167c83866128f0565b511661168883876128f0565b5190612839565b61169982886128f0565b526128be565b61165a565b5050506111db604051928284938452830190612764565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115fd565b346101be5760203660031901126101be57600435600052610164602052602060018060a01b0360406000205416604051908152f35b346101be5760203660031901126101be5761177f6124cd565b611787612798565b60ff610161541661089b5761016854610341916132fb565b346101be5760203660031901126101be576001600160a01b036117c06124cd565b16600052610165602052602060ff604060002054166040519015158152f35b346101be5760603660031901126101be576117f86124cd565b6001600160401b03906024358281116101be57611819903690600401612734565b926044359081116101be57611832903690600401612734565b919060ff610161541661089b5761185161185992610341963691612667565b923691612667565b91612d82565b346101be5760031960a0368201126101be576118796124cd565b906118826124e3565b6044908135926001600160401b03938481116101be576118a69036906004016126b5565b606480358681116101be576118bf9036906004016126b5565b9460849687359081116101be576118da903690600401612719565b6001600160a01b039489861633148015611bfc575b6118f890612904565b6119058551895114612a2d565b858716156119138115612967565b868b1615611bb9575b611b04575b60005b85518110156119b9578061193b6119b492886128f0565b518c611947838d6128f0565b519180600052609790838c6020948486526040600020828216600052865260406000205491611978848410156129c1565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c16600052526103836040600020918254612a20565b611924565b50888a989796949789604051886000805160206133c683398151915289808d16941692806119e987339583612a8a565b0390a4873b6119f457005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a48701611a2891612764565b90848783030190870152611a3b91612764565b918483030190840152611a4d9161258a565b03921691815a602094600091f160009181611ae4575b50611abc5750506001611a74612b18565b6308c379a014611a85575b61061f57005b611a8d612b36565b80611a985750611a7f565b60405162461bcd60e51b81526020600482015290819061063890602483019061258a565b6001600160e01b031916146103415760405162461bcd60e51b81528061063860048201612acf565b611afd91925060203d81116106c3576106b48183612569565b9083611a63565b9796949060009993999692965b8551811015611ba957611b2481876128f0565b51611b2f82896128f0565b519080600052602060fb815260406000205491838310611b6857611b639493929160fb9160005252036040600020556128be565b611b11565b508b9067616c537570706c7960c01b8f6000805160206134068339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b5090949697989298959195611921565b99969498959392919060005b8a51811015611bed57808b61036a82611be1611be8958f6128f0565b51926128f0565b611bc5565b5090919293959894969961191c565b50858a1660005260986020526040600020336000526020526118f860ff6040600020541690506118ef565b346101be57611c3536612626565b9160ff610161541661089b57602092611c909160405190611c5582612533565b6001825285368184013760405192611c6c84612533565b6001845286368186013785611c80846128cd565b52611c8a846128cd565b52612d82565b604051908152f35b346101be5760403660031901126101be5760243560043560005261012e60205260406000209060405191611ccb83612533565b546001600160a01b0380821680855260a09290921c6020850152929015611d23575b6001600160601b036020820151169182810292818404149015171561093e57604092612710915116918351928352046020820152f35b50604051611d3081612533565b61012d54838116825260a01c6020820152611ced565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611d7a9036906004016125f9565b9190611d84612798565b60ff610161541661089b57836000526101639160209280845260ff6002604060002001541615611eb057856000528352600180604060002001918511610e1457611dd885611dd284546124f9565b84612cce565b6000601f8611600114611e39579185806000805160206133e683398151915297969593611e2995600093611e2e575b501b906000198760031b1c19161790555b6040519383859485528401916131ce565b0390a2005b85013592508a611e07565b601f1986169083600052856000209160005b818110611e9b57509187969593916000805160206133e683398151915298611e29969410611e81575b505085811b019055611e18565b840135600019600389901b60f8161c191690558880611e74565b86830135845592840192918701918701611e4b565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576001600160401b036004358181116101be57611efa9036906004016125f9565b6044356001600160a01b0381169190602435908381036101be57611f1c612798565b60ff610161541661089b5781156121425783156109545761016294611f4186546128be565b809655604051966060880188811082821117610e1457604052838852611f683686846126d3565b9760209889820190815260408201906001938483528a6000526101638c526040600020935184558484019151948551918211610e1457611fb282611fac85546124f9565b85612cce565b8c8d601f84116001146120d05750918080926002969594611ffd996000946120c5575b50501b916000199060031b1c19161790555b51151591019060ff801983541691151516179055565b60008681526101648852604080822080546001600160a01b03191633179055610168546101698a529120819055606480820294918015908604909114171561093e576120767fc07473765c308da8ff95c4974c60af7332d93777f002550fa063b77064a6f7b2936001600160601b03899616908661324e565b836000805160206133e68339815191526040518a81528061209a8c82018a886131ce565b0390a26120ba604051928392835260408a840152339660408401916131ce565b0390a4604051908152f35b015192503880611fd5565b9193949596601f1984168660005283600020936000905b82821061212b57505091611ffd989795939185600298969410612112575b505050811b019055611fe7565b015160001960f88460031b161c191690558e8080612105565b8088869782949787015181550196019401906120e7565b604051631dd0e19360e01b8152600490fd5b346101be576020806003193601126101be57600435600052610163815260018060406000200190826040518093600090805490612190826124f9565b808552918681169081156122b55750600114612274575b50506121b592500383612569565b8151156121d35750905b6111db60405192828493845283019061258a565b90506040519060009083609954916121ea836124f9565b9283865285828216918260001461225457505060011461221a575b50505081612214910382612569565b906121bf565b91909250609960005282600020916000925b82841061224157505050820101818385612205565b805486850186015292840192810161222c565b60ff19168482015293151560051b84019092019350859150869050612205565b9091506000528260002090846000925b82841061229e57505050916121b5928201018592876121a7565b805488850187015287945092850192869101612284565b9150506121b594925060ff191682840152151560051b8201018592876121a7565b346101be576122e4366125ca565b906122ed612798565b60ff610161541661089b576001600160a01b03169081156109545760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b59183600052610165825261234f8160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be5760405160009061015f805490612380826124f9565b90818452600192838116908160001461122057506001146123ab576111db846111c781880382612569565b90935060005260209283600020916000925b8284106123d957505050816111db936111c792820101936111b7565b80548585018701529285019281016123bd565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be57602090635a08b45360e11b8114908115612495575b8115612438575b506040519015158152f35b63152a902d60e11b811491508115612452575b508261242d565b636cdb3d1360e11b811491508115612484575b8115612473575b508261244b565b6301ffc9a760e01b1490508261246c565b6303a24d0760e21b81149150612465565b631030681960e21b81149150612426565b346101be5760403660031901126101be576020611c906124c46124cd565b60243590612839565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c92168015612529575b602083101461251357565b634e487b7160e01b600052602260045260246000fd5b91607f1691612508565b604081019081106001600160401b03821117610e1457604052565b602081019081106001600160401b03821117610e1457604052565b90601f801991011681019081106001600160401b03821117610e1457604052565b919082519283825260005b8481106125b6575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612595565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610e145760051b60200190565b929161267282612650565b916126806040519384612569565b829481845260208094019160051b81019283116101be57905b8282106126a65750505050565b81358152908301908301612699565b9080601f830112156101be578160206126d093359101612667565b90565b9291926001600160401b038211610e1457604051916126fc601f8201601f191660200184612569565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be578160206126d0933591016126d3565b9181601f840112156101be578235916001600160401b0383116101be576020808501948460051b0101116101be57565b90815180825260208080930193019160005b828110612784575050505090565b835185529381019392810192600101612776565b6033546001600160a01b031633036127ac57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561286657600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b600019811461093e5760010190565b8051156128da5760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156128da5760209160051b010190565b1561290b57565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561296e57565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b156129c857565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9190820180921161093e57565b15612a3457565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612aa16126d093604084526040840190612764565b916020818403910152612764565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612b2557565b905060046000803e60005160e01c90565b600060443d106126d057604051600319913d83016004833e81516001600160401b03918282113d602484011117612b9357818401948551938411612b9b573d85010160208487010111612b9357506126d092910160200190612569565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612c0682612533565b6001825260203681840137612c1a826128cd565b5290565b15612c2557565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612c7d57565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612cdc57505050565b600091825260208220906020601f850160051c83019410612d18575b601f0160051c01915b828110612d0d57505050565b818155600101612d01565b9092508290612cf8565b15612d2957565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b0380831692919083156109545760335416331415806131b4575b61319c5783511561318a5783518151036131785783519260649384811161315a575060015b8551811015612e4057612ddd81876128f0565b516000198201828111612e2b57612df490886128f0565b511015612e0957612e04906128be565b612dca565b612e15602491876128f0565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612f3257612e5e86846128f0565b519586600052610163602081815260409060ff60028360002001541615612f1a57612e8984896128f0565b5115612f09578960005261016690818152612eb38360002054612eac878c6128f0565b5190612a20565b938b60005281528260002054808511612ee75750612edd95969798999a60005252600020556128be565b9493929190612e4b565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612f488761254e565b60008752612f598651855114612a2d565b60005b8651811015612f9b5780612f73612f9692876128f0565b51612f7e828a6128f0565b5160005260fb60205261038388600020918254612a20565b612f5c565b5090919560005b8651811015612fec5780612fb9612fe792876128f0565b51612fc4828a6128f0565b5160005260206097815288600020908c6000525261038388600020918254612a20565b612fa2565b50919690939581600088516000805160206133c68339815191523391806130148a8d83612a8a565b0390a43b613025575b505050505050565b613078600060209461308789519788968795869461306563bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a4880190612764565b9060031994858884030190880152612764565b9184830301608485015261258a565b03925af16000918161313a575b5061310e57505060016130a5612b18565b6308c379a0146130d8575b6130c157505b38808080808061301d565b5162461bcd60e51b81528061063860048201612ba4565b6130e0612b36565b806130eb57506130b0565b825162461bcd60e51b81526020600482015290819061063890602483019061258a565b6001600160e01b0319160361312357506130b6565b5162461bcd60e51b81528061063860048201612acf565b61315391925060203d81116106c3576106b48183612569565b9038613094565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016560205260ff6040600020541615612da5565b908060209392818452848401376000828201840152601f01601f1916010190565b156131f657565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b916001600160601b0316906132676127108311156131ef565b6001600160a01b039081169283156132b6576040519361328685612533565b84526020808501938452600091825261012e9052604090209251915160a01b6001600160a01b0319169116179055565b60405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b6001600160a01b039081169190821561095457606482116133a55760018060a01b0319926101678185825416179055826101685560648302928084046064149015171561093e57613393906001600160601b03841661335e6127108211156131ef565b602060405161336c81612533565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a264697066735822122001030b56bac864e3c45775298dbf75a049d5a3f7a1d8935274d02f6fee2ad0f764736f6c63430008120033","sourceMap":"1123:14024:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;9893:12;1123:14024;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;;;;929:10:11;764:23:6;;:66;;;;1123:14024:15;743:159:6;;;:::i;:::-;11246:18:3;;;11238:66;11246:18;;11238:66;:::i;:::-;11379:21;;;:::i;:::-;11437:25;;;;:::i;:::-;1123:14024:15;;;;;;;:::i;:::-;;1658:156:7;;1123:14024:15;;1896:3:7;1123:14024:15;;1880:14:7;;;;;1932:6;;;;:::i;:::-;1123:14024:15;1973:10:7;;;;:::i;:::-;1123:14024:15;;;;;2018:12:7;1123:14024:15;;;;;;;;2060:16:7;;;;1123:14024:15;;;1896:3:7;1123:14024:15;;;;;;;;;;;;;1896:3:7;:::i;:::-;1865:13;;1123:14024:15;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14024:15;;;;-1:-1:-1;;;1123:14024:15;;;;;;;1880:14:7;1123:14024:15;1880:14:7;;;1123:14024:15;;;11572:9:3;1123:14024:15;;;;;;;;;;;;;;;11601:70:3;11609:21;;;;11601:70;:::i;:::-;1123:14024:15;;;11572:9:3;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;11773:54:3;1123:14024:15;929:10:11;11773:54:3;;1123:14024:15;;;;:::i;:::-;;1658:156:7;1701:13;;1123:14024:15;1732:3:7;1123:14024:15;;1716:14:7;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14024:15;1768:6:7;;;;:::i;:::-;1123:14024:15;;;1755:12:7;1123:14024:15;;1755:34:7;1123:14024:15;;;;;;1755:34:7;:::i;:::-;1123:14024:15;;1732:3:7;:::i;:::-;1701:13;;1716:14;;;;1658:156;;764:66:6;1123:14024:15;;;;3873:18:3;1123:14024:15;;;;;929:10:11;1123:14024:15;;;;743:159:6;1123:14024:15;;;;;;764:66:6;;;;1123:14024:15;;;;;;-1:-1:-1;;1123:14024:15;;;;;;:::i;:::-;1303:62:0;;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;2402:22:0;1123:14024:15;;2496:8:0;;;:::i;1123:14024:15:-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;;;;929:10:11;4184:20:3;:60;;;;1123:14024:15;4163:153:3;;;:::i;:::-;1123:14024:15;;;5507:16:3;5499:66;5507:16;;5499:66;:::i;:::-;5640:21;1123:14024:15;;5640:21:3;:::i;:::-;5698:25;1123:14024:15;;5698:25:3;:::i;:::-;1123:14024:15;;;;1662:18:7;1658:156;;1123:14024:15;1824:424:7;;1123:14024:15;;;;;;;;;5827:9:3;1123:14024:15;;;;;;;;;;;;;;;;5856:76:3;1123:14024:15;;5864:21:3;;;5856:76;:::i;:::-;1123:14024:15;;;;5827:9:3;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;5827:9:3;1123:14024:15;;;;;;;;;;;;;;;6028:27:3;1123:14024:15;;;;6028:27:3;:::i;:::-;1123:14024:15;;;;;;;;;;;;;;;;;;;;;929:10:11;6071:46:3;1123:14024:15;929:10:11;6071:46:3;;1713:19:10;;15996:538:3;;1123:14024:15;15996:538:3;1123:14024:15;;;;;;;;;;;;;;;;;;;16035:83:3;;;;929:10:11;1123:14024:15;16035:83:3;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16035:83:3;1123:14024:15;;16035:83:3;;1123:14024:15;;16035:83:3;;;15996:538;-1:-1:-1;16031:493:3;;;;1123:14024:15;16031:493:3;;;:::i;:::-;;;;;;;;;1123:14024:15;16031:493:3;1123:14024:15;;-1:-1:-1;;;16447:62:3;;1123:14024:15;16447:62:3;1123:14024:15;16447:62:3;;;:::i;:::-;;;;16031:493;16341:81;;:::i;:::-;;;;;16031:493;;;16341:81;1123:14024:15;;;;;;;;;16393:14:3;;1123:14024:15;16393:14:3;;1123:14024:15;;;;;;:::i;16031:493:3:-;-1:-1:-1;;;;;;1123:14024:15;16163:163:3;;-1:-1:-1;16031:493:3;16163:163;1123:14024:15;;-1:-1:-1;;;16257:50:3;;1123:14024:15;16257:50:3;1123:14024:15;16257:50:3;;;:::i;16035:83::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1824:424:7;1865:13;;;;;;1123:14024:15;1896:3:7;1123:14024:15;;1880:14:7;;;;;1932:6;;;;:::i;:::-;1123:14024:15;1973:10:7;;;;;:::i;:::-;1123:14024:15;;;;2018:12:7;1123:14024:15;;;;;;2060:16:7;;;1123:14024:15;;1896:3:7;1123:14024:15;;;2018:12:7;1123:14024:15;;;;;;;1896:3:7;:::i;:::-;1865:13;;1123:14024:15;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14024:15;;;;-1:-1:-1;;;1123:14024:15;;;;;;;1880:14:7;;;;;;;;;1824:424;;;;1658:156;1701:13;;1123:14024:15;1701:13:7;;;;;;1732:3;1123:14024:15;;1716:14:7;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14024:15;1768:6:7;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;1658:156;;4184:60:3;1123:14024:15;;;;;;3873:18:3;1123:14024:15;;;;;929:10:11;1123:14024:15;;;;4163:153:3;1123:14024:15;;;;;;4184:60:3;;;;1123:14024:15;;;;;;-1:-1:-1;;1123:14024:15;;;;;;1372:29;1123:14024;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;3873:18:3;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;1303:62:0;;:::i;:::-;1123:14024:15;2987:8;1123:14024;;2983:41;;8413:22;1123:14024;8437:11;;1123:14024;;;-1:-1:-1;;;;;1123:14024:15;8437:11;:::i;2983:41::-;1123:14024;;-1:-1:-1;;;3004:20:15;;1123:14024;;3004:20;1123:14024;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;:::i;:::-;1303:62:0;;;:::i;:::-;1123:14024:15;2987:8;1123:14024;;2983:41;;1123:14024;;;3277:12;1123:14024;;;3277:29;1123:14024;;;3277:29;1123:14024;;3276:30;3272:70;;-1:-1:-1;;;;;1123:14024:15;;13254:23;13250:60;;1123:14024;;;13366:23;1123:14024;;;;;;;1558:3;1123:14024;;;;;;1558:3;1123:14024;;;;;;;-1:-1:-1;;;;;13359:68:15;1123:14024;;13359:68;;:::i;1123:14024::-;;;;;;;;;;;;13250:60;1123:14024;;-1:-1:-1;;;13286:24:15;;1123:14024;;13286:24;3272:70;1123:14024;;;;3315:27;;;;;;1123:14024;3315:27;;1123:14024;3315:27;1123:14024;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;1558:3;1123:14024;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;10067:16;1123:14024;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;1033:12:7;1123:14024:15;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;3301:14:2;3347:34;;;;;;1123:14024:15;3346:108:2;;;;1123:14024:15;;;;-1:-1:-1;;1123:14024:15;;;;;;;3562:65:2;;1123:14024:15;-1:-1:-1;1123:14024:15;;-1:-1:-1;;;;;1123:14024:15;3814:22;3810:59;;-1:-1:-1;;;;;1123:14024:15;;;;;;;3970:12;1123:14024;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:12;1123:14024;;-1:-1:-1;;;;;1123:14024:15;;;;;3992:16;1123:14024;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:16;1123:14024;;4018:16;1123:14024;;;;;;;5366:69:2;1123:14024:15;;;;;;5366:69:2;;;:::i;:::-;;:::i;:::-;1195:12:0;929:10:11;1195:12:0;:::i;:::-;1123:14024:15;;;:::i;:::-;;5366:69:2;1123:14024:15;;;;;;5366:69:2;;;:::i;:::-;1123:14024:15;;-1:-1:-1;;;;;1123:14024:15;;;;;8623:13:3;1123:14024:15;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:3;1123:14024:15;;5366:69:2;1123:14024:15;;;;;;5366:69:2;;;:::i;:::-;;;;:::i;:::-;12793:34:15;1123:14024;;-1:-1:-1;;;;;;1123:14024:15;;;-1:-1:-1;;;;;1123:14024:15;;;;1694:2;12837:38;1123:14024;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;;;;;;3314:35:9;;;;1123:14024:15;;;;-1:-1:-1;;;1123:14024:15;3292:57:9;1123:14024:15;;;4436:252;;1123:14024;;4816:8;1123:14024;;4816:8;:::i;:::-;3647:99:2;;1123:14024:15;3647:99:2;1123:14024:15;;;;;;;3721:14:2;1123:14024:15;;;;;;3721:14:2;1123:14024:15;4436:252;-1:-1:-1;;;;;1123:14024:15;;;;;4577:15;1123:14024;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;;;;4634:43;;;4436:252;;;1123:14024;;;;-1:-1:-1;1123:14024:15;;;;;;;;;;8623:13:3;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:3;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:3;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;3992:16;1123:14024;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:16;1123:14024;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:16;1123:14024;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;;-1:-1:-1;1123:14024:15;;;;;3970:12;1123:14024;;;;;-1:-1:-1;1123:14024:15;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;3970:12;1123:14024;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:12;1123:14024;;;;-1:-1:-1;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;-1:-1:-1;1123:14024:15;;;3562:65:2;-1:-1:-1;;1123:14024:15;;;;;3562:65:2;;;1123:14024:15;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;3346:108:2;3426:4;;1713:19:10;:23;3387:66:2;;3346:108;3387:66;1123:14024:15;;;;;3436:17:2;3346:108;;3347:34;1123:14024:15;;;;;3365:16:2;3347:34;;1123:14024:15;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;;;929:10:11;13309:17:3;;1123:14024:15;;929:10:11;1123:14024:15;;13382:18:3;1123:14024:15;;;;;;;;;;13382:46:3;1123:14024:15;;;;;;;;;;;;;;;;;;;13382:46:3;1123:14024:15;;;;;;;13443:41:3;1123:14024:15;929:10:11;13443:41:3;;1123:14024:15;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;1337:29;;1123:14024;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;1513:6:0;1123:14024:15;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;1303:62:0;;:::i;:::-;9336:15:15;1123:14024;;-1:-1:-1;;1123:14024:15;9347:4;1123:14024;;;9383:10;9366:28;-1:-1:-1;;9366:28:15;1123:14024;;;;;;;-1:-1:-1;;1123:14024:15;;;;1303:62:0;;:::i;:::-;2758:6;1123:14024:15;;-1:-1:-1;;;;;;1123:14024:15;;;;;;;-1:-1:-1;;;;;1123:14024:15;2806:40:0;1123:14024:15;;2806:40:0;1123:14024:15;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;;;929:10:11;1080:23:6;;:66;;;;1123:14024:15;1059:159:6;;;:::i;:::-;12266:18:3;;12258:66;12266:18;;12258:66;:::i;:::-;12334:81;1123:14024:15;;;;12342:28:3;12334:81;:::i;:::-;1123:14024:15;;;;;;:::i;:::-;;1658:156:7;;1123:14024:15;;1896:3:7;1123:14024:15;;1880:14:7;;;;;1932:6;;;;:::i;:::-;1123:14024:15;1973:10:7;;;;:::i;:::-;1123:14024:15;;;;;2018:12:7;1123:14024:15;;;;;;;;2060:16:7;;;;1123:14024:15;;;1896:3:7;1123:14024:15;;;;;;;;;;;;;1896:3:7;:::i;:::-;1865:13;;1123:14024:15;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14024:15;;;;-1:-1:-1;;;1123:14024:15;;;;;;;1880:14:7;;;;1123:14024:15;12581:3:3;1123:14024:15;;12565:14:3;;;;;12613:6;;12581:3;12613:6;;;:::i;:::-;1123:14024:15;12650:10:3;;;;:::i;:::-;1123:14024:15;;;;;12697:9:3;1123:14024:15;;;;;;;;;;;;;;;;;12738:21:3;12730:70;12738:21;;;;12730:70;:::i;:::-;1123:14024:15;;;;;;;;;;;;;;;;;12581:3:3;:::i;:::-;12550:13;;12565:14;;;-1:-1:-1;;;;;;;;;;;12924:55:3;1123:14024:15;12565:14:3;1123:14024:15;;929:10:11;;;;12924:55:3;;;:::i;:::-;;;;1123:14024:15;;;;:::i;1658:156:7:-;1701:13;1123:14024:15;1701:13:7;;;1732:3;1123:14024:15;;1716:14:7;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14024:15;1768:6:7;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;1658:156;;1080:66:6;1123:14024:15;;;;3873:18:3;1123:14024:15;;;;;929:10:11;1123:14024:15;;;;1059:159:6;1123:14024:15;;;;;;1080:66:6;;;;1123:14024:15;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;1033:12:7;1123:14024:15;;;;;;;1229:44:7;;1123:14024:15;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;3146:29:3;1123:14024:15;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3347:3:3;1123:14024:15;;3326:19:3;;;;;3347:3;;3385:30;-1:-1:-1;;;;;3395:11:3;1123:14024:15;3395:11:3;;:::i;:::-;1123:14024:15;;3408:6:3;;;;:::i;:::-;1123:14024:15;3385:30:3;;:::i;:::-;3366:49;;;;:::i;:::-;1123:14024:15;3347:3:3;:::i;:::-;3311:13;;3326:19;;;;1123:14024:15;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;9568:13;1123:14024;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;:::i;:::-;1303:62:0;;:::i;:::-;1123:14024:15;2987:8;1123:14024;;2983:41;;8216:24;1123:14024;8216:24;;;:::i;1123:14024::-;;;;;;-1:-1:-1;;1123:14024:15;;;;-1:-1:-1;;;;;1123:14024:15;;:::i;:::-;;;;9728:15;1123:14024;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;2987:8;1123:14024;;2983:41;;1123:14024;;;5736:44;1123:14024;;;;:::i;:::-;;;;;:::i;:::-;5736:44;;:::i;1123:14024::-;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;;;929:10:11;4675:20:3;:60;;;;1123:14024:15;4654:153:3;;;:::i;:::-;6817:81;1123:14024:15;;;;6825:28:3;6817:81;:::i;:::-;1123:14024:15;;;6916:16:3;6908:66;6916:16;;6908:66;:::i;:::-;1123:14024:15;;;1662:18:7;1658:156;;1123:14024:15;1824:424:7;;1123:14024:15;;7134:3:3;1123:14024:15;;7118:14:3;;;;;7166:6;;7134:3;7166:6;;;:::i;:::-;1123:14024:15;7203:10:3;;;;;:::i;:::-;1123:14024:15;;;;;7250:9:3;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;7291:21:3;7283:76;7291:21;;;;7283:76;:::i;:::-;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7471:27:3;1123:14024:15;;;;;;7471:27:3;:::i;7134:3::-;7103:13;;7118:14;;;;;;;;;1123:14024:15;;;;-1:-1:-1;;;;;;;;;;;1123:14024:15;;;;;;929:10:11;;7524:47:3;929:10:11;;7524:47:3;;;:::i;:::-;;;;1713:19:10;;16774:580:3;;1123:14024:15;16774:580:3;1123:14024:15;;;;;;;;;;;16813:90:3;;;;929:10:11;1123:14024:15;16813:90:3;;1123:14024:15;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;16813:90:3;1123:14024:15;;16813:90:3;;;1123:14024:15;16813:90:3;1123:14024:15;16813:90:3;;1123:14024:15;;16813:90:3;;;16774:580;-1:-1:-1;16809:535:3;;;;1123:14024:15;16809:535:3;;:::i;:::-;;;;;;;;1123:14024:15;16809:535:3;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;1123:14024:15;;-1:-1:-1;;;17213:14:3;;1123:14024:15;;17213:14:3;;1123:14024:15;;;;;;;;;;;:::i;16809:535:3:-;-1:-1:-1;;;;;;1123:14024:15;16978:168:3;16809:535;16978:168;1123:14024:15;;-1:-1:-1;;;17077:50:3;;1123:14024:15;17077:50:3;1123:14024:15;17077:50:3;;;:::i;16813:90::-;;;;;1123:14024:15;16813:90:3;;;;;;;;;:::i;:::-;;;;;1824:424:7;1865:13;;;;1123:14024:15;1865:13:7;;;;;;1896:3;1123:14024:15;;1880:14:7;;;;;1932:6;;;;:::i;:::-;1123:14024:15;1973:10:7;;;;:::i;:::-;1123:14024:15;;;;;;2018:12:7;1123:14024:15;;;;;;2060:16:7;;;;1123:14024:15;;1896:3:7;1123:14024:15;;;;2018:12:7;1123:14024:15;;;;;;;;;1896:3:7;:::i;:::-;1865:13;;1123:14024:15;;;;-1:-1:-1;;;1123:14024:15;-1:-1:-1;;;;;;;;;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;1880:14:7;;;;;;;;;;;;1824:424;;1658:156;1701:13;;;;;;;;;1123:14024:15;1732:3:7;1123:14024:15;;1716:14:7;;;;;1779:10;;1768:6;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14024:15;1768:6:7;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;;1658:156;;4675:60:3;1123:14024:15;;;;;;3873:18:3;1123:14024:15;;;;;929:10:11;1123:14024:15;;;;4654:153:3;1123:14024:15;;;;;;4675:60:3;;;;1123:14024:15;;;;;;;:::i;:::-;;;2987:8;1123:14024;;2983:41;;1123:14024;;5505:7;1123:14024;;;;;;;:::i;:::-;5343:1;1123:14024;;;;;;;;;;;;;;:::i;:::-;5343:1;1123:14024;;;;;;;;5408:22;;;;:::i;:::-;1123:14024;5440:20;;;:::i;:::-;1123:14024;5505:7;:::i;:::-;1123:14024;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;2122:17:9;1123:14024:15;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;;;2163:30:9;2159:90;;1123:14024:15;-1:-1:-1;;;;;1123:14024:15;2296:23:9;;1123:14024:15;;;;;;;;;;;;;;;;;;;2756:5:9;1123:14024:15;;;;;;;;;;;;;;;2159:90:9;1123:14024:15;;;;;;:::i;:::-;2219:19:9;1123:14024:15;;;;;;;;;;;;2159:90:9;;1123:14024:15;;;;;;-1:-1:-1;;1123:14024:15;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;:::i;:::-;1303:62:0;;;;:::i;:::-;1123:14024:15;2987:8;1123:14024;;2983:41;;1123:14024;;;3277:12;1123:14024;;;;;;;3277:29;1123:14024;;;3277:29;1123:14024;;3276:30;3272:70;;1123:14024;;;;;;;;;;8995:31;1123:14024;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9122:24;;;1123:14024;;;;;;-1:-1:-1;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3272:70;1123:14024;;-1:-1:-1;;;3315:27:15;;1123:14024;3315:27;;1123:14024;;;;;3315:27;1123:14024;;;;;;-1:-1:-1;;1123:14024:15;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;1303:62:0;;:::i;:::-;1123:14024:15;2987:8;1123:14024;;2983:41;;11395:15;;11391:51;;11456:30;;11452:67;;11609:16;1123:14024;11609:16;1123:14024;;11609:16;:::i;:::-;1123:14024;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;11774:40;;;;1123:14024;;;;11774:40;;1123:14024;;;;;;;;;11750:12;1123:14024;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11824:13;1123:14024;;;;;;;;-1:-1:-1;;;;;;1123:14024:15;5105:10;1123:14024;;;11902:24;1123:14024;11867:23;1123:14024;;;;;;;1558:3;1123:14024;;;;;;;;;;;;;;;;;11980:59;12182:72;1123:14024;-1:-1:-1;;;;;1123:14024:15;;;11980:59;;;:::i;:::-;1123:14024;-1:-1:-1;;;;;;;;;;;1123:14024:15;;;;;;;;;;;;;:::i;:::-;12144:23;;;1946:3;1123:14024;;;;;;;;1946:3;;;;5105:10;1946:3;1123:14024;1946:3;;;;:::i;:::-;12182:72;;;1123:14024;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11391:51;1123:14024;;-1:-1:-1;;;11419:23:15;;1123:14024;;11419:23;1123:14024;;;;;;;;;;;;;;;;;10284:12;1123:14024;;;;;;;10284:31;1123:14024;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;10332:26;:59;;;;;1123:14024;;;;;;;;;;;;;:::i;10332:59::-;1123:14024;;;;;;;;2440:4:3;1123:14024:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10332:59;;;1123:14024;;;;;2440:4:3;1123:14024:15;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;-1:-1:-1;1123:14024:15;;-1:-1:-1;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1303:62:0;;;:::i;:::-;1123:14024:15;2987:8;1123:14024;;2983:41;;-1:-1:-1;;;;;1123:14024:15;;7789:21;;7785:58;;1123:14024;7996:41;1123:14024;;;;7945:15;1123:14024;;7945:36;1123:14024;;;;;;;;;;;;;;;;;;;7945:36;1123:14024;;;;;;;7996:41;1123:14024;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;1304:27;;1123:14024;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10640:46:15;;;:97;;;;1123:14024;10640:150;;;;1123:14024;;;;;;;;;;10640:150;-1:-1:-1;;;1810:52:9;;;-1:-1:-1;1810:92:9;;;;10640:150:15;;;;;1810:92:9;-1:-1:-1;;;1759:52:3;;;-1:-1:-1;1759:131:3;;;;1810:92:9;1759:183:3;;;;1810:92:9;;;;;1759:183:3;-1:-1:-1;;;1168:51:12;;-1:-1:-1;1759:183:3;;;:131;-1:-1:-1;;;1827:63:3;;;-1:-1:-1;1759:131:3;;10640:97:15;-1:-1:-1;;;10690:47:15;;;-1:-1:-1;10640:97:15;;1123:14024;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;1599:130:0;1513:6;1123:14024:15;-1:-1:-1;;;;;1123:14024:15;929:10:11;1662:23:0;1123:14024:15;;1599:130:0:o;1123:14024:15:-;;;;;;;;;;;;;;;;;;;;;;;;;2666:187:0;2758:6;1123:14024:15;;-1:-1:-1;;;;;1123:14024:15;;;-1:-1:-1;;;;;;1123:14024:15;;;;;;;;;;2806:40:0;-1:-1:-1;;2806:40:0;2666:187::o;2593:227:3:-;-1:-1:-1;;;;;1123:14024:15;;2706:21:3;;1123:14024:15;;2725:1:3;1123:14024:15;2791:9:3;1123:14024:15;;;2725:1:3;1123:14024:15;;2725:1:3;1123:14024:15;;;;2725:1:3;1123:14024:15;;2593:227:3;:::o;1123:14024:15:-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;;1123:14024:15;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;1123:14024:15;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;:::o;17366:193:3:-;1123:14024:15;;;;;;:::i;:::-;17499:1:3;1123:14024:15;;;;;;;;17511:18:3;;;:::i;:::-;1123:14024:15;17366:193:3;:::o;1123:14024:15:-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;1123:14024:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;6059:1493;;;-1:-1:-1;;;;;1123:14024:15;;;;6059:1493;;6407:23;;6403:60;;1513:6:0;1123:14024:15;;6477:10;:21;;:53;;;6059:1493;6473:94;;1123:14024;;13741:21;13737:46;;1123:14024;;;;13797:35;13793:69;;1123:14024;;1558:3;;13876:33;;;;13872:97;;13985:13;1123:14024;14022:3;1123:14024;;14000:20;;;;;14045:12;;;;:::i;:::-;1123:14024;-1:-1:-1;;1123:14024:15;;;;;;;14061:16;;;;:::i;:::-;1123:14024;-1:-1:-1;14045:32:15;14041:87;;14022:3;;;:::i;:::-;13985:13;;14041:87;14115:12;1123:14024;14115:12;;;:::i;:::-;1123:14024;;;14086:42;;;;;;;;;1123:14024;14086:42;1123:14024;;;;;;;;;;;;14000:20;;;;;;;;1123:14024;6627:761;6669:3;1123:14024;;6647:20;;;;;6706:12;;;;:::i;:::-;1123:14024;;;;;6737:12;1123:14024;;;;;;;6737:28;1123:14024;;;6737:28;1123:14024;;6736:29;6732:68;;6818:11;;;;:::i;:::-;1123:14024;6818:16;6814:49;;1123:14024;;;6992:16;1123:14024;;;;6992:39;1123:14024;;;;7020:11;;;;:::i;:::-;1123:14024;6992:39;;:::i;:::-;1123:14024;;;;;;;;;;7114:32;;;7110:104;;1123:14024;6669:3;1123:14024;;;;;;;;;;;;6669:3;:::i;:::-;6632:13;;;;;;;7110:104;1123:14024;;;;;;7155:59;;;;;;;;;1123:14024;;;;;;;;;7155:59;6814:49;1123:14024;;-1:-1:-1;;;6843:20:15;;;;;6732:68;1123:14024;;-1:-1:-1;;;6774:26:15;;;;;1123:14024;;;;;6774:26;6647:20;;;;;;;;1123:14024;;;;;;;;:::i;:::-;;;;10313:81:3;1123:14024:15;;;;10321:28:3;10313:81;:::i;:::-;1123:14024:15;1732:3:7;1123:14024:15;;1716:14:7;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14024:15;1768:6:7;;;;:::i;:::-;1123:14024:15;;;1755:12:7;1123:14024:15;;1755:34:7;1123:14024:15;;;;;;1755:34:7;:::i;1732:3::-;1701:13;;1716:14;;;;;1123:14024:15;10560:3:3;1123:14024:15;;10544:14:3;;;;;10604:10;;10560:3;10604:10;;;:::i;:::-;1123:14024:15;10589:6:3;;;;:::i;:::-;1123:14024:15;;;;10579:9:3;1123:14024:15;;;;;;;;;;10579:35:3;1123:14024:15;;;;;;10579:35:3;:::i;10560:3::-;10529:13;;10544:14;;;;;;;1123:14024:15;;;;-1:-1:-1;;;;;;;;;;;6477:10:15;10640:53:3;;;;;;;:::i;:::-;;;;1713:19:10;16774:580:3;;10524:101;6059:1493:15;;;;;;:::o;16774:580:3:-;1123:14024:15;;;;;;;;;;;;;;;;;;16813:90:3;;;;6477:10:15;16813:90:3;;;1123:14024:15;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;16813:90:3;;;;1123:14024:15;;16813:90:3;;;16774:580;-1:-1:-1;16809:535:3;;;;1123:14024:15;16809:535:3;;:::i;:::-;;;;;;;;;;16774:580;;;;;;;;16809:535;1123:14024:15;-1:-1:-1;;;17267:62:3;;1123:14024:15;17267:62:3;16813:90;17267:62;;;:::i;16809:535::-;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;1123:14024:15;;-1:-1:-1;;;17213:14:3;;1123:14024:15;16813:90:3;17213:14;;1123:14024:15;;;;;;;;;;;:::i;16809:535:3:-;-1:-1:-1;;;;;;1123:14024:15;16982:71:3;16978:168;;16809:535;;;16978:168;1123:14024:15;-1:-1:-1;;;17077:50:3;;1123:14024:15;17077:50:3;16813:90;17077:50;;;:::i;16813:90::-;;;;;1123:14024:15;16813:90:3;;;;;;;;;:::i;:::-;;;;;13872:97:15;1123:14024;;;;;13918:51;;;;;;;;;1123:14024;;;;;13918:51;13793:69;1123:14024;;-1:-1:-1;;;13841:21:15;;;;;13737:46;1123:14024;;-1:-1:-1;;;13771:12:15;;;;;6473:94;1123:14024;;-1:-1:-1;;;6539:28:15;;6477:10;6539:28;;;1123:14024;;;6539:28;6477:53;:10;;6428:1;1123:14024;6503:15;1123:14024;;;;6428:1;1123:14024;;;6502:28;6477:53;;1123:14024;;;;;;;;;;;;;-1:-1:-1;1123:14024:15;;;;;;;;-1:-1:-1;;1123:14024:15;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14024:15;;;;;;;3790:351:9;;-1:-1:-1;;;;;1123:14024:15;3907:33:9;3899:88;2756:5;3907:33;;;3899:88;:::i;:::-;-1:-1:-1;;;;;1123:14024:15;;;;4005:22:9;;1123:14024:15;;;;;;;;:::i;:::-;;;4099:35:9;;;;1123:14024:15;;;-1:-1:-1;1123:14024:15;;;4070:17:9;1123:14024:15;;;;;;;;;;;-1:-1:-1;;;;;;1123:14024:15;;;;;;3790:351:9:o;1123:14024:15:-;;;-1:-1:-1;;;1123:14024:15;;;;;;;;;;;;;;;;;;;;12485:484;-1:-1:-1;;;;;1123:14024:15;;;;12485:484;12582:23;;12578:60;;1558:3;12652:36;;12648:135;;1123:14024;;;;;;12793:34;;1123:14024;;;;;;;;;12837:38;1123:14024;1558:3;1123:14024;;;;;;1558:3;1123:14024;;;;;;;;;-1:-1:-1;;;;;1123:14024:15;;3123:88:9;2756:5;3131:33;;;3123:88;:::i;:::-;3314:35;1123:14024:15;;;;;:::i;:::-;;;;3314:35:9;1123:14024:15;3292:57:9;1123:14024:15;;-1:-1:-1;;;;;;1123:14024:15;-1:-1:-1;;;;;1123:14024:15;;;;;;;;;;;3292:57:9;1123:14024:15;;;;;;;;;;;;12485:484::o;12648:135::-;1123:14024;;-1:-1:-1;;;12711:61:15;;;;;1123:14024;;;1558:3;1123:14024;;;;;;12711:61","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","burn(address,uint256,uint256)":"f5298aca","burnBatch(address,uint256[],uint256[])":"6b20c454","createToken(string,uint256,address)":"1542bb95","disableContract()":"894ba833","disabled()":"ee070805","exists(uint256)":"4f558e79","init(string,string,string,address,address)":"a7eae21c","isApprovedForAll(address,address)":"e985e9c5","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintBatchTo(address,uint256[],uint256[])":"3512639c","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","royaltyInfo(uint256,uint256)":"2a55205a","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","setDefaultRoyaltyPercentage(uint256)":"e27a41bf","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","setRoyaltyReceiverForToken(uint256,address)":"e2200a0b","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","totalSupply(uint256)":"bd85b039","transferOwnership(address)":"f2fde38b","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RoyaltyPercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"royaltyReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"burnBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_royaltyReceiver\",\"type\":\"address\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBatchTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_percentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRoyaltyPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setRoyaltyReceiverForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Clone-safe upgradeable-style implementation used behind minimal proxies. Token ids start at 1.\",\"errors\":{\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported percentage.\",\"supplied\":\"Percentage supplied by the caller.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"params\":{\"tokenId\":\"Token id that is not greater than the previous token id.\"}}]},\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,address,uint256,string)\":{\"params\":{\"creator\":\"RARE creator recorded for the token id.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"royaltyReceiver\":\"ERC2981 royalty receiver configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createToken(string,uint256,address)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_royaltyReceiver\":\"ERC2981 royalty receiver for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"exists(uint256)\":{\"details\":\"Indicates whether any token exist with a given id, or not.\"},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and ERC2981 royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintBatchTo(address,uint256[],uint256[])\":{\"details\":\"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.\",\"params\":{\"_amounts\":\"Quantities to mint for each token id.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenIds\":\"Existing token ids to mint.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"Minted token id.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"details\":\"Tokens created before this update keep their token-specific royalty percentage.\",\"params\":{\"_percentage\":\"New royalty percentage, expressed as whole percentage points.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"details\":\"Token-specific royalty receivers take precedence over this value.\",\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"details\":\"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.\",\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"setRoyaltyReceiverForToken(uint256,address)\":{\"details\":\"The token's existing royalty percentage is preserved.\",\"params\":{\"_receiver\":\"New token-specific royalty receiver.\",\"_tokenId\":\"Token id whose royalty receiver is updated.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"totalSupply(uint256)\":{\"details\":\"Total amount of tokens in with a given id.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"stateVariables\":{\"MAX_BATCH_SIZE\":{\"return\":\"Maximum supported batch item count.\",\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"disabled\":{\"return\":\"True when disabled.\",\"returns\":{\"_0\":\"True when disabled.\"}},\"name\":{\"return\":\"Collection name.\",\"returns\":{\"_0\":\"Collection name.\"}},\"symbol\":{\"return\":\"Collection symbol.\",\"returns\":{\"_0\":\"Collection symbol.\"}}},\"title\":\"RareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"BatchLengthMismatch()\":[{\"notice\":\"Reverted when parallel batch arrays have different lengths.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"notice\":\"Reverted when the default royalty percentage is above 100%.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,address,uint256,string)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch mint operations.\"},\"createToken(string,uint256,address)\":{\"notice\":\"Creates a new token type.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintBatchTo(address,uint256[],uint256[])\":{\"notice\":\"Mints existing token ids to a receiver.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints one existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"notice\":\"Updates the fallback ERC2981 royalty percentage.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the fallback ERC2981 royalty receiver.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes collection-wide minter approval for an address.\"},\"setRoyaltyReceiverForToken(uint256,address)\":{\"notice\":\"Updates the ERC2981 royalty receiver for one token id.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Basic RARE Protocol ERC1155 collection with creator and royalty support.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/RareERC1155.sol\":\"RareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7\",\"dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol\":{\"keccak256\":\"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98\",\"dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8\",\"dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol\":{\"keccak256\":\"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9\",\"dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e\",\"dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC\"]},\"src/token/ERC1155/RareERC1155.sol\":{\"keccak256\":\"0xf4d45ba8ed3c2f029b7fe5bad4a25f231ca7716bd1b9ca2fbcf0f0bf155f6ed5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36e0a65dfe63ab5c9dcffa99fa0490a23b6f36d972dc85e4177e3ea5aa6c1534\",\"dweb:/ipfs/QmRNEoTBijseaA5cGx3tDmPxf2nU9opfqc4RGP9cBsTfd7\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[],"type":"error","name":"BatchLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"RoyaltyPercentageTooHigh"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"address","name":"royaltyReceiver","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"values","type":"uint256[]","indexed":false}],"type":"event","name":"TransferBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"TransferSingle","anonymous":false},{"inputs":[{"internalType":"string","name":"value","type":"string","indexed":false},{"internalType":"uint256","name":"id","type":"uint256","indexed":true}],"type":"event","name":"URI","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"burnBatch"},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"address","name":"_royaltyReceiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"mintBatchTo"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyPercentage"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyReceiverForToken"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"createToken(string,uint256,address)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_royaltyReceiver":"ERC2981 royalty receiver for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"exists(uint256)":{"details":"Indicates whether any token exist with a given id, or not."},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and ERC2981 royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedForAll(address,address)":{"details":"See {IERC1155-isApprovedForAll}."},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintBatchTo(address,uint256[],uint256[])":{"details":"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.","params":{"_amounts":"Quantities to mint for each token id.","_receiver":"Address that receives the minted tokens.","_tokenIds":"Existing token ids to mint."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"Minted token id."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"See {IERC1155-safeBatchTransferFrom}."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"See {IERC1155-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC1155-setApprovalForAll}."},"setDefaultRoyaltyPercentage(uint256)":{"details":"Tokens created before this update keep their token-specific royalty percentage.","params":{"_percentage":"New royalty percentage, expressed as whole percentage points."}},"setDefaultRoyaltyReceiver(address)":{"details":"Token-specific royalty receivers take precedence over this value.","params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"details":"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.","params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"setRoyaltyReceiverForToken(uint256,address)":{"details":"The token's existing royalty percentage is preserved.","params":{"_receiver":"New token-specific royalty receiver.","_tokenId":"Token id whose royalty receiver is updated."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"totalSupply(uint256)":{"details":"Total amount of tokens in with a given id."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch mint operations."},"createToken(string,uint256,address)":{"notice":"Creates a new token type."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintBatchTo(address,uint256[],uint256[])":{"notice":"Mints existing token ids to a receiver."},"mintTo(address,uint256,uint256)":{"notice":"Mints one existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"setDefaultRoyaltyPercentage(uint256)":{"notice":"Updates the fallback ERC2981 royalty percentage."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the fallback ERC2981 royalty receiver."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes collection-wide minter approval for an address."},"setRoyaltyReceiverForToken(uint256,address)":{"notice":"Updates the ERC2981 royalty receiver for one token id."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/RareERC1155.sol":"RareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol":{"keccak256":"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856","urls":["bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7","dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"keccak256":"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b","urls":["bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce","dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol":{"keccak256":"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8","urls":["bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83","dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol":{"keccak256":"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7","urls":["bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98","dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"keccak256":"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e","urls":["bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8","dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"keccak256":"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448","urls":["bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9","dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol":{"keccak256":"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f","urls":["bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9","dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a","urls":["bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7","dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052","urls":["bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e","dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC"],"license":"MIT"},"src/token/ERC1155/RareERC1155.sol":{"keccak256":"0xf4d45ba8ed3c2f029b7fe5bad4a25f231ca7716bd1b9ca2fbcf0f0bf155f6ed5","urls":["bzz-raw://36e0a65dfe63ab5c9dcffa99fa0490a23b6f36d972dc85e4177e3ea5aa6c1534","dweb:/ipfs/QmRNEoTBijseaA5cGx3tDmPxf2nU9opfqc4RGP9cBsTfd7"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":15} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBatch","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnBatch","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"},{"name":"_royaltyReceiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"exists","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintBatchTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyPercentage","inputs":[{"name":"_percentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyReceiverForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"_interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"royaltyReceiver","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"TransferBatch","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"values","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"TransferSingle","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"URI","inputs":[{"name":"value","type":"string","indexed":false,"internalType":"string"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"BatchLengthMismatch","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"RoyaltyPercentageTooHigh","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x60808060405234620000c6576000549060ff8260081c1662000074575060ff8082160362000038575b6040516133e89081620000cc8239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461244157806301ffc9a71461238757806306fdde03146122f55780630de54ba0146122715780630e89341c146120ef5780631542bb9514611e7957806318e97fd114611cf65780632a55205a14611c485780632baf2acb14611bd75780632eb2c2d61461180f5780633512639c1461178f5780633a3d146f1461174f5780633ebc82c51461171657806340c1a064146116ed5780634e1273f41461154f5780634f558e79146115215780636b20c454146112d9578063715018a6146112c0578063894ba833146112715780638da5cb5b1461124857806395d89b4114611175578063a22cb4651461109e578063a7eae21c146109f3578063bd85b039146109c7578063c33ae88f1461099a578063cfdbf2541461097e578063e2200a0b146108ad578063e27a41bf1461085d578063e985e9c514610807578063ee070805146107e3578063f242432a1461044d578063f2fde38b146103c0578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101636020526020604060002054604051908152f35b600080fd5b346101be576101d1366125c1565b6001600160a01b0390921691903383148015610397575b6101f19061289f565b8215926101fe8415612bb9565b61020782612b94565b9161021184612b94565b946000604051610220816124e9565b52610343575b60005b83518110156102c45761023c818561288b565b51610247828861288b565b51908060005260fb602081815260406000205492848410610280579061027b95949392916000525203604060002055612859565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612c11565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a46103416040516124e9565b005b929060005b835181101561038f578061035f61038a928861288b565b5161036a828761288b565b5160005260fb60205261038360406000209182546129bb565b9055612859565b610348565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103d9612468565b6103e1612733565b6001600160a01b038116156103f9576103419061278b565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be57610466612468565b61046e61247e565b90608480356001600160401b0381116101be5761048f9036906004016126b4565b6001600160a01b039190838316331480156107b8575b6104ae9061289f565b828516156104bc8115612902565b6104c7604435612b94565b6104d2606435612b94565b9185871615610778575b6106ca575b5050604435600052602094609786526040600020848616600052865260406000205461051160643582101561295c565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061055c60643582546129bb565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b6105a357005b60a060006105ed958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a4830190612525565b0393165af16000918161069b575b5061067157505060019061060d612ab3565b6308c379a01461063c575b5061061f57005b60405162461bcd60e51b81528061063860048201612b3f565b0390fd5b610644612ad1565b90816106505750610618565b61063860405192839262461bcd60e51b845260048401526024830190612525565b6001600160e01b0319161490506103415760405162461bcd60e51b81528061063860048201612a6a565b6106bc919250843d86116106c3575b6106b48183612504565b810190612a4a565b90846105fb565b503d6106aa565b92959194909360005b8451811015610769576106e6818661288b565b51906106f2818861288b565b518260005260fb602052604060002054818110610726576107219360005260fb60205203604060002055612859565b6106d3565b60405162461bcd60e51b81526020600482015260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104e1565b959260009794919592975b86518110156107aa578061079a6107a5928b61288b565b5161036a828a61288b565b610783565b5092959691949093966104dc565b5082841660005260986020526040600020336000526020526104ae60ff6040600020541690506104a5565b346101be5760003660031901126101be57602060ff61016154166040519015158152f35b346101be5760403660031901126101be57610820612468565b61082861247e565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be57610876612733565b60ff610161541661089b576101665461034190600435906001600160a01b0316613288565b604051637abbf1c960e01b8152600490fd5b346101be5760403660031901126101be576004356108c961247e565b906108d2612733565b60ff610161541661089b578060005261016360205260ff6002604060002001541615610966576001600160a01b0382161561095457806000526101686020526040600020549160648302928084046064149015171561093e576001600160601b036103419316916131db565b634e487b7160e01b600052601160045260246000fd5b604051637827912560e01b8152600490fd5b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760003660031901126101be57602060405160648152f35b346101be5760203660031901126101be576004356000526101656020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be57610a23903690600401612594565b906024356001600160401b0381116101be57610a43903690600401612594565b6044356001600160401b0381116101be57610a62903690600401612594565b90929091906064356001600160a01b03811690036101be57608435956001600160a01b03871687036101be576000549560ff8760081c161596878098611091575b801561107a575b1561101e5760ff1981166001176000558761100c575b506064356001600160a01b031615610954576001600160401b038211610e14578190610aee61015f54612494565b601f8111610f9e575b50600090601f8311600114610f1557600092610f0a575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610e1457610b3f61016054612494565b601f8111610ea8575b50600090601f8311600114610e3557610bb39493929160009183610e2a575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ba360ff60005460081c16610b9e81612cbd565b612cbd565b610bac3361278b565b369161266e565b91610bc960ff60005460081c16610b9e81612cbd565b82516001600160401b038111610e1457610be4609954612494565b601f8111610daf575b506020601f8211600114610d485781929394600092610d3d575b50508160011b916000199060031b1c1916176099555b610c3b60ff60005460081c16610c3281612cbd565b610b9e81612cbd565b61016680546001600160a01b0319166064356001600160a01b0316179055600a610167556040516103e890602090610c72816124ce565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610ce5575b50610ca760643561278b565b610cad57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101646020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610c9b565b015190508480610c07565b601f198216906099600052806000209160005b818110610d9757509583600195969710610d7e575b505050811b01609955610c1d565b015160001960f88460031b161c19169055848080610d70565b9192602060018192868b015181550194019201610d5b565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610e0a575b601f0160051c01905b818110610dfe5750610bed565b60008155600101610df1565b9091508190610de8565b634e487b7160e01b600052604160045260246000fd5b013590508780610b67565b61016060005260206000209160005b601f1985168110610e905750918391600193610bb3979695601f19811610610e76575b505050811b0161016055610b7e565b0135600019600384901b60f8161c19169055878080610e67565b90926020600181928686013581550194019101610e44565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610f03575b601f830160051c82018110610ef7575050610b48565b60008155600101610ee1565b5080610ee1565b013590508880610b0e565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610f86576001945083601f19811610610f6c575b505050811b0161015f55610b25565b0135600019600384901b60f8161c19169055888080610f5d565b81810135835560209485019460019093019201610f42565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510611005575b90849392915b601f830160051c82018110610ff6575050610af7565b60008155859450600101610fe0565b5080610fda565b61ffff19166101011760005588610ac0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610aaa5750600160ff821614610aaa565b50600160ff821610610aa3565b346101be576110ac36612565565b6001600160a01b039091169033821461111e573360005260986020526040600020826000526020526110ee8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be5760405160009061016080549061119b82612494565b90818452600192838116908160001461122057506001146111df575b6111db846111c781880382612504565b604051918291602083526020830190612525565b0390f35b90935060005260209283600020916000925b82841061120d57505050816111db936111c792820101936111b7565b80548585018701529285019281016111f1565b6111db96506111c79450602092508593915060ff191682840152151560051b820101936111b7565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be5761128a612733565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760003660031901126101be57610954612733565b346101be5760603660031901126101be576112f2612468565b6024906001600160401b039082358281116101be57611315903690600401612650565b9160449081359081116101be57611330903690600401612650565b6001600160a01b039092169233841480156114f8575b61134f9061289f565b831561135b8115612bb9565b61136882518551146129c8565b6000604051611376816124e9565b526114c0575b60005b815181101561141857611392818361288b565b5161139d828661288b565b51908060005260fb6020818152604060002054928484106113d657906113d195949392916000525203604060002055612859565b61137f565b60405162461bcd60e51b8152600481018390526028818d0152600080516020613393833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b825181101561148d5780611435611488928561288b565b51611440828761288b565b519080600052609760209080825260406000208760005282526040600020549261146c85851015612c11565b6000528152604060002090866000525203604060002055612859565b61141e565b50906000805160206133538339815191526114b2600094604051918291339583612a25565b0390a46103416040516124e9565b9260009491945b84518110156114ee57806114de6114e9928661288b565b5161036a828861288b565b6114c7565b509293909361137c565b5083600052609860205260406000203360005260205261134f60ff604060002054169050611346565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be5781600401359061158c826125eb565b9261159a6040519485612504565b82845260209260248486019160051b830101913683116101be57602401905b8282106116ce575050506024359081116101be576115db903690600401612650565b8251815103611677578251926115f0846125eb565b936115fe6040519586612504565b80855261160d601f19916125eb565b01368486013760005b81518110156116605761165b9061164b6001600160a01b03611638838661288b565b5116611644838761288b565b51906127d4565b611655828861288b565b52612859565b611616565b5050506111db6040519282849384528301906126ff565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115b9565b346101be5760203660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760203660031901126101be5761172f612468565b611737612733565b60ff610161541661089b576101675461034191613288565b346101be5760203660031901126101be576001600160a01b03611770612468565b16600052610164602052602060ff604060002054166040519015158152f35b346101be5760603660031901126101be576117a8612468565b6001600160401b03906024358281116101be576117c99036906004016126cf565b926044359081116101be576117e29036906004016126cf565b919060ff610161541661089b5761180161180992610341963691612602565b923691612602565b91612d1d565b346101be5760031960a0368201126101be57611829612468565b9061183261247e565b6044908135926001600160401b03938481116101be57611856903690600401612650565b606480358681116101be5761186f903690600401612650565b9460849687359081116101be5761188a9036906004016126b4565b6001600160a01b039489861633148015611bac575b6118a89061289f565b6118b585518951146129c8565b858716156118c38115612902565b868b1615611b69575b611ab4575b60005b855181101561196957806118eb611964928861288b565b518c6118f7838d61288b565b519180600052609790838c60209484865260406000208282166000528652604060002054916119288484101561295c565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c166000525261038360406000209182546129bb565b6118d4565b50888a9897969497896040518860008051602061335383398151915289808d169416928061199987339583612a25565b0390a4873b6119a457005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a487016119d8916126ff565b908487830301908701526119eb916126ff565b9184830301908401526119fd91612525565b03921691815a602094600091f160009181611a94575b50611a6c5750506001611a24612ab3565b6308c379a014611a35575b61061f57005b611a3d612ad1565b80611a485750611a2f565b60405162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916146103415760405162461bcd60e51b81528061063860048201612a6a565b611aad91925060203d81116106c3576106b48183612504565b9083611a13565b9796949060009993999692965b8551811015611b5957611ad4818761288b565b51611adf828961288b565b519080600052602060fb815260406000205491838310611b1857611b139493929160fb916000525203604060002055612859565b611ac1565b508b9067616c537570706c7960c01b8f6000805160206133938339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b50909496979892989591956118d1565b99969498959392919060005b8a51811015611b9d57808b61036a82611b91611b98958f61288b565b519261288b565b611b75565b509091929395989496996118cc565b50858a1660005260986020526040600020336000526020526118a860ff60406000205416905061189f565b346101be57611be5366125c1565b9160ff610161541661089b57602092611c409160405190611c05826124ce565b6001825285368184013760405192611c1c846124ce565b6001845286368186013785611c3084612868565b52611c3a84612868565b52612d1d565b604051908152f35b346101be5760403660031901126101be5760243560043560005261012e60205260406000209060405191611c7b836124ce565b546001600160a01b0380821680855260a09290921c6020850152929015611cd3575b6001600160601b036020820151169182810292818404149015171561093e57604092612710915116918351928352046020820152f35b50604051611ce0816124ce565b61012d54838116825260a01c6020820152611c9d565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611d2a903690600401612594565b9190611d34612733565b60ff610161541661089b57836000526101639160209280845260ff6002604060002001541615611e6057856000528352600180604060002001918511610e1457611d8885611d828454612494565b84612c69565b6000601f8611600114611de95791858060008051602061337383398151915297969593611dd995600093611dde575b501b906000198760031b1c19161790555b60405193838594855284019161315b565b0390a2005b85013592508a611db7565b601f1986169083600052856000209160005b818110611e4b575091879695939160008051602061337383398151915298611dd9969410611e31575b505085811b019055611dc8565b840135600019600389901b60f8161c191690558880611e24565b86830135845592840192918701918701611dfb565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576001600160401b036004358181116101be57611eaa903690600401612594565b602435916001600160a01b03604435818116938482036101be57611ecc612733565b60ff610161541661089b5785156120dd5784156109545761016295611ef18754612859565b809755604051606081018181108a821117610e1457604052818152611f1736848861266e565b986020998a83019081526040830191600183528a6000526101638c526040600020935184556001840191518051918211610e1457611f5f82611f598554612494565b85612c69565b8c908d601f841160011461206c5750918060029492611fad979694600092612061575b50508160011b916000199060031b1c19161790555b51151591019060ff801983541691151516179055565b61016754928760005261016889528360406000205560648402938085046064149015171561093e578794612010612056926001600160601b037fc07473765c308da8ff95c4974c60af7332d93777f002550fa063b77064a6f7b2971690886131db565b856000805160206133738339815191526120368c6040519181839283528201898d61315b565b0390a26033541695604051938493845260408b850152604084019161315b565b0390a4604051908152f35b015190508f80611f82565b9190601f1984168560005283600020936000905b8282106120c5575050926001928592611fad99989660029896106120ac575b505050811b019055611f97565b015160001960f88460031b161c191690558f808061209f565b80600186978294978701518155019601940190612080565b604051631dd0e19360e01b8152600490fd5b346101be576020806003193601126101be5760043560005261016381526001806040600020019082604051809360009080549061212b82612494565b80855291868116908115612250575060011461220f575b505061215092500383612504565b81511561216e5750905b6111db604051928284938452830190612525565b905060405190600090836099549161218583612494565b928386528582821691826000146121ef5750506001146121b5575b505050816121af910382612504565b9061215a565b91909250609960005282600020916000925b8284106121dc575050508201018183856121a0565b80548685018601529284019281016121c7565b60ff19168482015293151560051b840190920193508591508690506121a0565b9091506000528260002090846000925b828410612239575050509161215092820101859287612142565b80548885018701528794509285019286910161221f565b91505061215094925060ff191682840152151560051b820101859287612142565b346101be5761227f36612565565b90612288612733565b60ff610161541661089b576001600160a01b03169081156109545760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261016482526122ea8160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be5760405160009061015f80549061231b82612494565b9081845260019283811690816000146112205750600114612346576111db846111c781880382612504565b90935060005260209283600020916000925b82841061237457505050816111db936111c792820101936111b7565b8054858501870152928501928101612358565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be57602090635a08b45360e11b8114908115612430575b81156123d3575b506040519015158152f35b63152a902d60e11b8114915081156123ed575b50826123c8565b636cdb3d1360e11b81149150811561241f575b811561240e575b50826123e6565b6301ffc9a760e01b14905082612407565b6303a24d0760e21b81149150612400565b631030681960e21b811491506123c1565b346101be5760403660031901126101be576020611c4061245f612468565b602435906127d4565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c921680156124c4575b60208310146124ae57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124a3565b604081019081106001600160401b03821117610e1457604052565b602081019081106001600160401b03821117610e1457604052565b90601f801991011681019081106001600160401b03821117610e1457604052565b919082519283825260005b848110612551575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612530565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610e145760051b60200190565b929161260d826125eb565b9161261b6040519384612504565b829481845260208094019160051b81019283116101be57905b8282106126415750505050565b81358152908301908301612634565b9080601f830112156101be5781602061266b93359101612602565b90565b9291926001600160401b038211610e145760405191612697601f8201601f191660200184612504565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be5781602061266b9335910161266e565b9181601f840112156101be578235916001600160401b0383116101be576020808501948460051b0101116101be57565b90815180825260208080930193019160005b82811061271f575050505090565b835185529381019392810192600101612711565b6033546001600160a01b0316330361274757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561280157600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b600019811461093e5760010190565b8051156128755760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156128755760209160051b010190565b156128a657565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561290957565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561296357565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9190820180921161093e57565b156129cf57565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612a3c61266b936040845260408401906126ff565b9160208184039101526126ff565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612ac057565b905060046000803e60005160e01c90565b600060443d1061266b57604051600319913d83016004833e81516001600160401b03918282113d602484011117612b2e57818401948551938411612b36573d85010160208487010111612b2e575061266b92910160200190612504565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612ba1826124ce565b6001825260203681840137612bb582612868565b5290565b15612bc057565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612c1857565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c7757505050565b600091825260208220906020601f850160051c83019410612cb3575b601f0160051c01915b828110612ca857505050565b818155600101612c9c565b9092508290612c93565b15612cc457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b038083169291908315610954576033541633141580613141575b61312957835115613117578351815103613105578351926064938481116130e7575060015b8551811015612dd557612d78818761288b565b516000198201828111612dc057612d8f908861288b565b511015612d9e57600101612d65565b612daa6024918761288b565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612ebf57612df3868461288b565b519586600052610163602081815260409060ff60028360002001541615612ea757612e1e848961288b565b5115612e96578960005261016590818152612e488360002054612e41878c61288b565b51906129bb565b938b60005281528260002054808511612e74575060009a8b525290972096909655600190950194612de0565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612ed5876124e9565b60008752612ee686518551146129c8565b60005b8651811015612f285780612f00612f23928761288b565b51612f0b828a61288b565b5160005260fb602052610383886000209182546129bb565b612ee9565b5090919560005b8651811015612f795780612f46612f74928761288b565b51612f51828a61288b565b5160005260206097815288600020908c60005252610383886000209182546129bb565b612f2f565b5091969093958160008851600080516020613353833981519152339180612fa18a8d83612a25565b0390a43b612fb2575b505050505050565b6130056000602094613014895197889687958694612ff263bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a48801906126ff565b90600319948588840301908801526126ff565b91848303016084850152612525565b03925af1600091816130c7575b5061309b5750506001613032612ab3565b6308c379a014613065575b61304e57505b388080808080612faa565b5162461bcd60e51b81528061063860048201612b3f565b61306d612ad1565b80613078575061303d565b825162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916036130b05750613043565b5162461bcd60e51b81528061063860048201612a6a565b6130e091925060203d81116106c3576106b48183612504565b9038613021565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016460205260ff6040600020541615612d40565b908060209392818452848401376000828201840152601f01601f1916010190565b1561318357565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b916001600160601b0316906131f461271083111561317c565b6001600160a01b039081169283156132435760405193613213856124ce565b84526020808501938452600091825261012e9052604090209251915160a01b6001600160a01b0319169116179055565b60405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b6001600160a01b039081169190821561095457606482116133325760018060a01b0319926101668185825416179055826101675560648302928084046064149015171561093e57613320906001600160601b0384166132eb61271082111561317c565b60206040516132f9816124ce565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a2646970667358221220b7720fa90ac9df32d7bfb6ee34e640368972d81f7eb46827b58be3edc6478e5764736f6c63430008120033","sourceMap":"1123:14094:37:-:0;;;;;;;6007:13:19;1123:14094:37;;;;;;;;;;;;;;6078:31:19;6074:139;;-1:-1:-1;1123:14094:37;;;;;;;;;6074:139:19;1123:14094:37;;;;;;6007:13:19;1123:14094:37;6174:28:19;1123:14094:37;;;;;;6174:28:19;6074:139;;;1123:14094:37;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461244157806301ffc9a71461238757806306fdde03146122f55780630de54ba0146122715780630e89341c146120ef5780631542bb9514611e7957806318e97fd114611cf65780632a55205a14611c485780632baf2acb14611bd75780632eb2c2d61461180f5780633512639c1461178f5780633a3d146f1461174f5780633ebc82c51461171657806340c1a064146116ed5780634e1273f41461154f5780634f558e79146115215780636b20c454146112d9578063715018a6146112c0578063894ba833146112715780638da5cb5b1461124857806395d89b4114611175578063a22cb4651461109e578063a7eae21c146109f3578063bd85b039146109c7578063c33ae88f1461099a578063cfdbf2541461097e578063e2200a0b146108ad578063e27a41bf1461085d578063e985e9c514610807578063ee070805146107e3578063f242432a1461044d578063f2fde38b146103c0578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101636020526020604060002054604051908152f35b600080fd5b346101be576101d1366125c1565b6001600160a01b0390921691903383148015610397575b6101f19061289f565b8215926101fe8415612bb9565b61020782612b94565b9161021184612b94565b946000604051610220816124e9565b52610343575b60005b83518110156102c45761023c818561288b565b51610247828861288b565b51908060005260fb602081815260406000205492848410610280579061027b95949392916000525203604060002055612859565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612c11565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a46103416040516124e9565b005b929060005b835181101561038f578061035f61038a928861288b565b5161036a828761288b565b5160005260fb60205261038360406000209182546129bb565b9055612859565b610348565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103d9612468565b6103e1612733565b6001600160a01b038116156103f9576103419061278b565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be57610466612468565b61046e61247e565b90608480356001600160401b0381116101be5761048f9036906004016126b4565b6001600160a01b039190838316331480156107b8575b6104ae9061289f565b828516156104bc8115612902565b6104c7604435612b94565b6104d2606435612b94565b9185871615610778575b6106ca575b5050604435600052602094609786526040600020848616600052865260406000205461051160643582101561295c565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061055c60643582546129bb565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b6105a357005b60a060006105ed958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a4830190612525565b0393165af16000918161069b575b5061067157505060019061060d612ab3565b6308c379a01461063c575b5061061f57005b60405162461bcd60e51b81528061063860048201612b3f565b0390fd5b610644612ad1565b90816106505750610618565b61063860405192839262461bcd60e51b845260048401526024830190612525565b6001600160e01b0319161490506103415760405162461bcd60e51b81528061063860048201612a6a565b6106bc919250843d86116106c3575b6106b48183612504565b810190612a4a565b90846105fb565b503d6106aa565b92959194909360005b8451811015610769576106e6818661288b565b51906106f2818861288b565b518260005260fb602052604060002054818110610726576107219360005260fb60205203604060002055612859565b6106d3565b60405162461bcd60e51b81526020600482015260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104e1565b959260009794919592975b86518110156107aa578061079a6107a5928b61288b565b5161036a828a61288b565b610783565b5092959691949093966104dc565b5082841660005260986020526040600020336000526020526104ae60ff6040600020541690506104a5565b346101be5760003660031901126101be57602060ff61016154166040519015158152f35b346101be5760403660031901126101be57610820612468565b61082861247e565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be57610876612733565b60ff610161541661089b576101665461034190600435906001600160a01b0316613288565b604051637abbf1c960e01b8152600490fd5b346101be5760403660031901126101be576004356108c961247e565b906108d2612733565b60ff610161541661089b578060005261016360205260ff6002604060002001541615610966576001600160a01b0382161561095457806000526101686020526040600020549160648302928084046064149015171561093e576001600160601b036103419316916131db565b634e487b7160e01b600052601160045260246000fd5b604051637827912560e01b8152600490fd5b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760003660031901126101be57602060405160648152f35b346101be5760203660031901126101be576004356000526101656020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be57610a23903690600401612594565b906024356001600160401b0381116101be57610a43903690600401612594565b6044356001600160401b0381116101be57610a62903690600401612594565b90929091906064356001600160a01b03811690036101be57608435956001600160a01b03871687036101be576000549560ff8760081c161596878098611091575b801561107a575b1561101e5760ff1981166001176000558761100c575b506064356001600160a01b031615610954576001600160401b038211610e14578190610aee61015f54612494565b601f8111610f9e575b50600090601f8311600114610f1557600092610f0a575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610e1457610b3f61016054612494565b601f8111610ea8575b50600090601f8311600114610e3557610bb39493929160009183610e2a575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ba360ff60005460081c16610b9e81612cbd565b612cbd565b610bac3361278b565b369161266e565b91610bc960ff60005460081c16610b9e81612cbd565b82516001600160401b038111610e1457610be4609954612494565b601f8111610daf575b506020601f8211600114610d485781929394600092610d3d575b50508160011b916000199060031b1c1916176099555b610c3b60ff60005460081c16610c3281612cbd565b610b9e81612cbd565b61016680546001600160a01b0319166064356001600160a01b0316179055600a610167556040516103e890602090610c72816124ce565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610ce5575b50610ca760643561278b565b610cad57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101646020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610c9b565b015190508480610c07565b601f198216906099600052806000209160005b818110610d9757509583600195969710610d7e575b505050811b01609955610c1d565b015160001960f88460031b161c19169055848080610d70565b9192602060018192868b015181550194019201610d5b565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610e0a575b601f0160051c01905b818110610dfe5750610bed565b60008155600101610df1565b9091508190610de8565b634e487b7160e01b600052604160045260246000fd5b013590508780610b67565b61016060005260206000209160005b601f1985168110610e905750918391600193610bb3979695601f19811610610e76575b505050811b0161016055610b7e565b0135600019600384901b60f8161c19169055878080610e67565b90926020600181928686013581550194019101610e44565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610f03575b601f830160051c82018110610ef7575050610b48565b60008155600101610ee1565b5080610ee1565b013590508880610b0e565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610f86576001945083601f19811610610f6c575b505050811b0161015f55610b25565b0135600019600384901b60f8161c19169055888080610f5d565b81810135835560209485019460019093019201610f42565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510611005575b90849392915b601f830160051c82018110610ff6575050610af7565b60008155859450600101610fe0565b5080610fda565b61ffff19166101011760005588610ac0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610aaa5750600160ff821614610aaa565b50600160ff821610610aa3565b346101be576110ac36612565565b6001600160a01b039091169033821461111e573360005260986020526040600020826000526020526110ee8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be5760405160009061016080549061119b82612494565b90818452600192838116908160001461122057506001146111df575b6111db846111c781880382612504565b604051918291602083526020830190612525565b0390f35b90935060005260209283600020916000925b82841061120d57505050816111db936111c792820101936111b7565b80548585018701529285019281016111f1565b6111db96506111c79450602092508593915060ff191682840152151560051b820101936111b7565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be5761128a612733565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760003660031901126101be57610954612733565b346101be5760603660031901126101be576112f2612468565b6024906001600160401b039082358281116101be57611315903690600401612650565b9160449081359081116101be57611330903690600401612650565b6001600160a01b039092169233841480156114f8575b61134f9061289f565b831561135b8115612bb9565b61136882518551146129c8565b6000604051611376816124e9565b526114c0575b60005b815181101561141857611392818361288b565b5161139d828661288b565b51908060005260fb6020818152604060002054928484106113d657906113d195949392916000525203604060002055612859565b61137f565b60405162461bcd60e51b8152600481018390526028818d0152600080516020613393833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b825181101561148d5780611435611488928561288b565b51611440828761288b565b519080600052609760209080825260406000208760005282526040600020549261146c85851015612c11565b6000528152604060002090866000525203604060002055612859565b61141e565b50906000805160206133538339815191526114b2600094604051918291339583612a25565b0390a46103416040516124e9565b9260009491945b84518110156114ee57806114de6114e9928661288b565b5161036a828861288b565b6114c7565b509293909361137c565b5083600052609860205260406000203360005260205261134f60ff604060002054169050611346565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be5781600401359061158c826125eb565b9261159a6040519485612504565b82845260209260248486019160051b830101913683116101be57602401905b8282106116ce575050506024359081116101be576115db903690600401612650565b8251815103611677578251926115f0846125eb565b936115fe6040519586612504565b80855261160d601f19916125eb565b01368486013760005b81518110156116605761165b9061164b6001600160a01b03611638838661288b565b5116611644838761288b565b51906127d4565b611655828861288b565b52612859565b611616565b5050506111db6040519282849384528301906126ff565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115b9565b346101be5760203660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760203660031901126101be5761172f612468565b611737612733565b60ff610161541661089b576101675461034191613288565b346101be5760203660031901126101be576001600160a01b03611770612468565b16600052610164602052602060ff604060002054166040519015158152f35b346101be5760603660031901126101be576117a8612468565b6001600160401b03906024358281116101be576117c99036906004016126cf565b926044359081116101be576117e29036906004016126cf565b919060ff610161541661089b5761180161180992610341963691612602565b923691612602565b91612d1d565b346101be5760031960a0368201126101be57611829612468565b9061183261247e565b6044908135926001600160401b03938481116101be57611856903690600401612650565b606480358681116101be5761186f903690600401612650565b9460849687359081116101be5761188a9036906004016126b4565b6001600160a01b039489861633148015611bac575b6118a89061289f565b6118b585518951146129c8565b858716156118c38115612902565b868b1615611b69575b611ab4575b60005b855181101561196957806118eb611964928861288b565b518c6118f7838d61288b565b519180600052609790838c60209484865260406000208282166000528652604060002054916119288484101561295c565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c166000525261038360406000209182546129bb565b6118d4565b50888a9897969497896040518860008051602061335383398151915289808d169416928061199987339583612a25565b0390a4873b6119a457005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a487016119d8916126ff565b908487830301908701526119eb916126ff565b9184830301908401526119fd91612525565b03921691815a602094600091f160009181611a94575b50611a6c5750506001611a24612ab3565b6308c379a014611a35575b61061f57005b611a3d612ad1565b80611a485750611a2f565b60405162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916146103415760405162461bcd60e51b81528061063860048201612a6a565b611aad91925060203d81116106c3576106b48183612504565b9083611a13565b9796949060009993999692965b8551811015611b5957611ad4818761288b565b51611adf828961288b565b519080600052602060fb815260406000205491838310611b1857611b139493929160fb916000525203604060002055612859565b611ac1565b508b9067616c537570706c7960c01b8f6000805160206133938339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b50909496979892989591956118d1565b99969498959392919060005b8a51811015611b9d57808b61036a82611b91611b98958f61288b565b519261288b565b611b75565b509091929395989496996118cc565b50858a1660005260986020526040600020336000526020526118a860ff60406000205416905061189f565b346101be57611be5366125c1565b9160ff610161541661089b57602092611c409160405190611c05826124ce565b6001825285368184013760405192611c1c846124ce565b6001845286368186013785611c3084612868565b52611c3a84612868565b52612d1d565b604051908152f35b346101be5760403660031901126101be5760243560043560005261012e60205260406000209060405191611c7b836124ce565b546001600160a01b0380821680855260a09290921c6020850152929015611cd3575b6001600160601b036020820151169182810292818404149015171561093e57604092612710915116918351928352046020820152f35b50604051611ce0816124ce565b61012d54838116825260a01c6020820152611c9d565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611d2a903690600401612594565b9190611d34612733565b60ff610161541661089b57836000526101639160209280845260ff6002604060002001541615611e6057856000528352600180604060002001918511610e1457611d8885611d828454612494565b84612c69565b6000601f8611600114611de95791858060008051602061337383398151915297969593611dd995600093611dde575b501b906000198760031b1c19161790555b60405193838594855284019161315b565b0390a2005b85013592508a611db7565b601f1986169083600052856000209160005b818110611e4b575091879695939160008051602061337383398151915298611dd9969410611e31575b505085811b019055611dc8565b840135600019600389901b60f8161c191690558880611e24565b86830135845592840192918701918701611dfb565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576001600160401b036004358181116101be57611eaa903690600401612594565b602435916001600160a01b03604435818116938482036101be57611ecc612733565b60ff610161541661089b5785156120dd5784156109545761016295611ef18754612859565b809755604051606081018181108a821117610e1457604052818152611f1736848861266e565b986020998a83019081526040830191600183528a6000526101638c526040600020935184556001840191518051918211610e1457611f5f82611f598554612494565b85612c69565b8c908d601f841160011461206c5750918060029492611fad979694600092612061575b50508160011b916000199060031b1c19161790555b51151591019060ff801983541691151516179055565b61016754928760005261016889528360406000205560648402938085046064149015171561093e578794612010612056926001600160601b037fc07473765c308da8ff95c4974c60af7332d93777f002550fa063b77064a6f7b2971690886131db565b856000805160206133738339815191526120368c6040519181839283528201898d61315b565b0390a26033541695604051938493845260408b850152604084019161315b565b0390a4604051908152f35b015190508f80611f82565b9190601f1984168560005283600020936000905b8282106120c5575050926001928592611fad99989660029896106120ac575b505050811b019055611f97565b015160001960f88460031b161c191690558f808061209f565b80600186978294978701518155019601940190612080565b604051631dd0e19360e01b8152600490fd5b346101be576020806003193601126101be5760043560005261016381526001806040600020019082604051809360009080549061212b82612494565b80855291868116908115612250575060011461220f575b505061215092500383612504565b81511561216e5750905b6111db604051928284938452830190612525565b905060405190600090836099549161218583612494565b928386528582821691826000146121ef5750506001146121b5575b505050816121af910382612504565b9061215a565b91909250609960005282600020916000925b8284106121dc575050508201018183856121a0565b80548685018601529284019281016121c7565b60ff19168482015293151560051b840190920193508591508690506121a0565b9091506000528260002090846000925b828410612239575050509161215092820101859287612142565b80548885018701528794509285019286910161221f565b91505061215094925060ff191682840152151560051b820101859287612142565b346101be5761227f36612565565b90612288612733565b60ff610161541661089b576001600160a01b03169081156109545760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261016482526122ea8160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be5760405160009061015f80549061231b82612494565b9081845260019283811690816000146112205750600114612346576111db846111c781880382612504565b90935060005260209283600020916000925b82841061237457505050816111db936111c792820101936111b7565b8054858501870152928501928101612358565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be57602090635a08b45360e11b8114908115612430575b81156123d3575b506040519015158152f35b63152a902d60e11b8114915081156123ed575b50826123c8565b636cdb3d1360e11b81149150811561241f575b811561240e575b50826123e6565b6301ffc9a760e01b14905082612407565b6303a24d0760e21b81149150612400565b631030681960e21b811491506123c1565b346101be5760403660031901126101be576020611c4061245f612468565b602435906127d4565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c921680156124c4575b60208310146124ae57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124a3565b604081019081106001600160401b03821117610e1457604052565b602081019081106001600160401b03821117610e1457604052565b90601f801991011681019081106001600160401b03821117610e1457604052565b919082519283825260005b848110612551575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612530565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610e145760051b60200190565b929161260d826125eb565b9161261b6040519384612504565b829481845260208094019160051b81019283116101be57905b8282106126415750505050565b81358152908301908301612634565b9080601f830112156101be5781602061266b93359101612602565b90565b9291926001600160401b038211610e145760405191612697601f8201601f191660200184612504565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be5781602061266b9335910161266e565b9181601f840112156101be578235916001600160401b0383116101be576020808501948460051b0101116101be57565b90815180825260208080930193019160005b82811061271f575050505090565b835185529381019392810192600101612711565b6033546001600160a01b0316330361274757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561280157600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b600019811461093e5760010190565b8051156128755760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156128755760209160051b010190565b156128a657565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561290957565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561296357565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9190820180921161093e57565b156129cf57565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612a3c61266b936040845260408401906126ff565b9160208184039101526126ff565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612ac057565b905060046000803e60005160e01c90565b600060443d1061266b57604051600319913d83016004833e81516001600160401b03918282113d602484011117612b2e57818401948551938411612b36573d85010160208487010111612b2e575061266b92910160200190612504565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612ba1826124ce565b6001825260203681840137612bb582612868565b5290565b15612bc057565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612c1857565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c7757505050565b600091825260208220906020601f850160051c83019410612cb3575b601f0160051c01915b828110612ca857505050565b818155600101612c9c565b9092508290612c93565b15612cc457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b038083169291908315610954576033541633141580613141575b61312957835115613117578351815103613105578351926064938481116130e7575060015b8551811015612dd557612d78818761288b565b516000198201828111612dc057612d8f908861288b565b511015612d9e57600101612d65565b612daa6024918761288b565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612ebf57612df3868461288b565b519586600052610163602081815260409060ff60028360002001541615612ea757612e1e848961288b565b5115612e96578960005261016590818152612e488360002054612e41878c61288b565b51906129bb565b938b60005281528260002054808511612e74575060009a8b525290972096909655600190950194612de0565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612ed5876124e9565b60008752612ee686518551146129c8565b60005b8651811015612f285780612f00612f23928761288b565b51612f0b828a61288b565b5160005260fb602052610383886000209182546129bb565b612ee9565b5090919560005b8651811015612f795780612f46612f74928761288b565b51612f51828a61288b565b5160005260206097815288600020908c60005252610383886000209182546129bb565b612f2f565b5091969093958160008851600080516020613353833981519152339180612fa18a8d83612a25565b0390a43b612fb2575b505050505050565b6130056000602094613014895197889687958694612ff263bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a48801906126ff565b90600319948588840301908801526126ff565b91848303016084850152612525565b03925af1600091816130c7575b5061309b5750506001613032612ab3565b6308c379a014613065575b61304e57505b388080808080612faa565b5162461bcd60e51b81528061063860048201612b3f565b61306d612ad1565b80613078575061303d565b825162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916036130b05750613043565b5162461bcd60e51b81528061063860048201612a6a565b6130e091925060203d81116106c3576106b48183612504565b9038613021565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016460205260ff6040600020541615612d40565b908060209392818452848401376000828201840152601f01601f1916010190565b1561318357565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b916001600160601b0316906131f461271083111561317c565b6001600160a01b039081169283156132435760405193613213856124ce565b84526020808501938452600091825261012e9052604090209251915160a01b6001600160a01b0319169116179055565b60405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b6001600160a01b039081169190821561095457606482116133325760018060a01b0319926101668185825416179055826101675560648302928084046064149015171561093e57613320906001600160601b0384166132eb61271082111561317c565b60206040516132f9816124ce565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a2646970667358221220b7720fa90ac9df32d7bfb6ee34e640368972d81f7eb46827b58be3edc6478e5764736f6c63430008120033","sourceMap":"1123:14094:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;10028:12;1123:14094;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;;;;929:10:28;764:23:23;;:66;;;;1123:14094:37;743:159:23;;;:::i;:::-;11246:18:20;;;11238:66;11246:18;;11238:66;:::i;:::-;11379:21;;;:::i;:::-;11437:25;;;;:::i;:::-;1123:14094:37;;;;;;;:::i;:::-;;1658:156:24;;1123:14094:37;;1896:3:24;1123:14094:37;;1880:14:24;;;;;1932:6;;;;:::i;:::-;1123:14094:37;1973:10:24;;;;:::i;:::-;1123:14094:37;;;;;2018:12:24;1123:14094:37;;;;;;;;2060:16:24;;;;1123:14094:37;;;1896:3:24;1123:14094:37;;;;;;;;;;;;;1896:3:24;:::i;:::-;1865:13;;1123:14094:37;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:37;;;;-1:-1:-1;;;1123:14094:37;;;;;;;1880:14:24;1123:14094:37;1880:14:24;;;1123:14094:37;;;11572:9:20;1123:14094:37;;;;;;;;;;;;;;;11601:70:20;11609:21;;;;11601:70;:::i;:::-;1123:14094:37;;;11572:9:20;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;11773:54:20;1123:14094:37;929:10:28;11773:54:20;;1123:14094:37;;;;:::i;:::-;;1658:156:24;1701:13;;1123:14094:37;1732:3:24;1123:14094:37;;1716:14:24;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:37;1768:6:24;;;;:::i;:::-;1123:14094:37;;;1755:12:24;1123:14094:37;;1755:34:24;1123:14094:37;;;;;;1755:34:24;:::i;:::-;1123:14094:37;;1732:3:24;:::i;:::-;1701:13;;1716:14;;;;1658:156;;764:66:23;1123:14094:37;;;;3873:18:20;1123:14094:37;;;;;929:10:28;1123:14094:37;;;;743:159:23;1123:14094:37;;;;;;764:66:23;;;;1123:14094:37;;;;;;-1:-1:-1;;1123:14094:37;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;2402:22:17;1123:14094:37;;2496:8:17;;;:::i;1123:14094:37:-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;;;;929:10:28;4184:20:20;:60;;;;1123:14094:37;4163:153:20;;;:::i;:::-;1123:14094:37;;;5507:16:20;5499:66;5507:16;;5499:66;:::i;:::-;5640:21;1123:14094:37;;5640:21:20;:::i;:::-;5698:25;1123:14094:37;;5698:25:20;:::i;:::-;1123:14094:37;;;;1662:18:24;1658:156;;1123:14094:37;1824:424:24;;1123:14094:37;;;;;;;;;5827:9:20;1123:14094:37;;;;;;;;;;;;;;;;5856:76:20;1123:14094:37;;5864:21:20;;;5856:76;:::i;:::-;1123:14094:37;;;;5827:9:20;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;5827:9:20;1123:14094:37;;;;;;;;;;;;;;;6028:27:20;1123:14094:37;;;;6028:27:20;:::i;:::-;1123:14094:37;;;;;;;;;;;;;;;;;;;;;929:10:28;6071:46:20;1123:14094:37;929:10:28;6071:46:20;;1713:19:27;;15996:538:20;;1123:14094:37;15996:538:20;1123:14094:37;;;;;;;;;;;;;;;;;;;16035:83:20;;;;929:10:28;1123:14094:37;16035:83:20;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16035:83:20;1123:14094:37;;16035:83:20;;1123:14094:37;;16035:83:20;;;15996:538;-1:-1:-1;16031:493:20;;;;1123:14094:37;16031:493:20;;;:::i;:::-;;;;;;;;;1123:14094:37;16031:493:20;1123:14094:37;;-1:-1:-1;;;16447:62:20;;1123:14094:37;16447:62:20;1123:14094:37;16447:62:20;;;:::i;:::-;;;;16031:493;16341:81;;:::i;:::-;;;;;16031:493;;;16341:81;1123:14094:37;;;;;;;;;16393:14:20;;1123:14094:37;16393:14:20;;1123:14094:37;;;;;;:::i;16031:493:20:-;-1:-1:-1;;;;;;1123:14094:37;16163:163:20;;-1:-1:-1;16031:493:20;16163:163;1123:14094:37;;-1:-1:-1;;;16257:50:20;;1123:14094:37;16257:50:20;1123:14094:37;16257:50:20;;;:::i;16035:83::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1824:424:24;1865:13;;;;;;1123:14094:37;1896:3:24;1123:14094:37;;1880:14:24;;;;;1932:6;;;;:::i;:::-;1123:14094:37;1973:10:24;;;;;:::i;:::-;1123:14094:37;;;;2018:12:24;1123:14094:37;;;;;;2060:16:24;;;1123:14094:37;;1896:3:24;1123:14094:37;;;2018:12:24;1123:14094:37;;;;;;;1896:3:24;:::i;:::-;1865:13;;1123:14094:37;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:37;;;;-1:-1:-1;;;1123:14094:37;;;;;;;1880:14:24;;;;;;;;;1824:424;;;;1658:156;1701:13;;1123:14094:37;1701:13:24;;;;;;1732:3;1123:14094:37;;1716:14:24;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:37;1768:6:24;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;1658:156;;4184:60:20;1123:14094:37;;;;;;3873:18:20;1123:14094:37;;;;;929:10:28;1123:14094:37;;;;4163:153:20;1123:14094:37;;;;;;4184:60:20;;;;1123:14094:37;;;;;;-1:-1:-1;;1123:14094:37;;;;;;1372:29;1123:14094;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;3873:18:20;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;1303:62:17;;:::i;:::-;1123:14094:37;2881:8;1123:14094;;2877:41;;8351:22;1123:14094;8375:11;;1123:14094;;;-1:-1:-1;;;;;1123:14094:37;8375:11;:::i;2877:41::-;1123:14094;;-1:-1:-1;;;2898:20:37;;1123:14094;;2898:20;1123:14094;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;:::i;:::-;1303:62:17;;;:::i;:::-;1123:14094:37;2881:8;1123:14094;;2877:41;;1123:14094;;;3171:12;1123:14094;;;3171:29;1123:14094;;;3171:29;1123:14094;;3170:30;3166:70;;-1:-1:-1;;;;;1123:14094:37;;13268:23;13264:60;;1123:14094;;;13380:23;1123:14094;;;;;;;1558:3;1123:14094;;;;;;1558:3;1123:14094;;;;;;;-1:-1:-1;;;;;13373:68:37;1123:14094;;13373:68;;:::i;1123:14094::-;;;;;;;;;;;;13264:60;1123:14094;;-1:-1:-1;;;13300:24:37;;1123:14094;;13300:24;3166:70;1123:14094;;;;3209:27;;;;;;1123:14094;3209:27;;1123:14094;3209:27;1123:14094;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;1558:3;1123:14094;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;10202:16;1123:14094;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;1033:12:24;1123:14094:37;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;3301:14:19;3347:34;;;;;;1123:14094:37;3346:108:19;;;;1123:14094:37;;;;-1:-1:-1;;1123:14094:37;;;;;;;3562:65:19;;1123:14094:37;-1:-1:-1;1123:14094:37;;-1:-1:-1;;;;;1123:14094:37;3708:22;3704:59;;-1:-1:-1;;;;;1123:14094:37;;;;;;;3864:12;1123:14094;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3864:12;1123:14094;;-1:-1:-1;;;;;1123:14094:37;;;;;3886:16;1123:14094;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3886:16;1123:14094;;3912:16;1123:14094;;;;;;;5366:69:19;1123:14094:37;;;;;;5366:69:19;;;:::i;:::-;;:::i;:::-;1195:12:17;929:10:28;1195:12:17;:::i;:::-;1123:14094:37;;;:::i;:::-;;5366:69:19;1123:14094:37;;;;;;5366:69:19;;;:::i;:::-;1123:14094:37;;-1:-1:-1;;;;;1123:14094:37;;;;;8623:13:20;1123:14094:37;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:20;1123:14094:37;;5366:69:19;1123:14094:37;;;;;;5366:69:19;;;:::i;:::-;;;;:::i;:::-;12807:34:37;1123:14094;;-1:-1:-1;;;;;;1123:14094:37;;;-1:-1:-1;;;;;1123:14094:37;;;;1694:2;12851:38;1123:14094;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;;;;;;3314:35:26;;;;1123:14094:37;;;;-1:-1:-1;;;1123:14094:37;3292:57:26;1123:14094:37;;;4330:252;;1123:14094;;4710:8;1123:14094;;4710:8;:::i;:::-;3647:99:19;;1123:14094:37;3647:99:19;1123:14094:37;;;;;;;3721:14:19;1123:14094:37;;;;;;3721:14:19;1123:14094:37;4330:252;-1:-1:-1;;;;;1123:14094:37;;;;;4471:15;1123:14094;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;;;;4528:43;;;4330:252;;;1123:14094;;;;-1:-1:-1;1123:14094:37;;;;;;;;;;8623:13:20;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:20;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:20;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;3886:16;1123:14094;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3886:16;1123:14094;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3886:16;1123:14094;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;;-1:-1:-1;1123:14094:37;;;;;3864:12;1123:14094;;;;;-1:-1:-1;1123:14094:37;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;3864:12;1123:14094;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3864:12;1123:14094;;;;-1:-1:-1;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;-1:-1:-1;1123:14094:37;;;3562:65:19;-1:-1:-1;;1123:14094:37;;;;;3562:65:19;;;1123:14094:37;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;3346:108:19;3426:4;;1713:19:27;:23;3387:66:19;;3346:108;3387:66;1123:14094:37;;;;;3436:17:19;3346:108;;3347:34;1123:14094:37;;;;;3365:16:19;3347:34;;1123:14094:37;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;;;929:10:28;13309:17:20;;1123:14094:37;;929:10:28;1123:14094:37;;13382:18:20;1123:14094:37;;;;;;;;;;13382:46:20;1123:14094:37;;;;;;;;;;;;;;;;;;;13382:46:20;1123:14094:37;;;;;;;13443:41:20;1123:14094:37;929:10:28;13443:41:20;;1123:14094:37;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;1337:29;;1123:14094;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;1513:6:17;1123:14094:37;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;1303:62:17;;:::i;:::-;9274:15:37;1123:14094;;-1:-1:-1;;1123:14094:37;9285:4;1123:14094;;;9321:10;9304:28;-1:-1:-1;;9304:28:37;1123:14094;;;;;;;-1:-1:-1;;1123:14094:37;;;;1303:62:17;;:::i;1123:14094:37:-;;;;;;-1:-1:-1;;1123:14094:37;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;;;929:10:28;1080:23:23;;:66;;;;1123:14094:37;1059:159:23;;;:::i;:::-;12266:18:20;;12258:66;12266:18;;12258:66;:::i;:::-;12334:81;1123:14094:37;;;;12342:28:20;12334:81;:::i;:::-;1123:14094:37;;;;;;:::i;:::-;;1658:156:24;;1123:14094:37;;1896:3:24;1123:14094:37;;1880:14:24;;;;;1932:6;;;;:::i;:::-;1123:14094:37;1973:10:24;;;;:::i;:::-;1123:14094:37;;;;;2018:12:24;1123:14094:37;;;;;;;;2060:16:24;;;;1123:14094:37;;;1896:3:24;1123:14094:37;;;;;;;;;;;;;1896:3:24;:::i;:::-;1865:13;;1123:14094:37;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:37;;;;-1:-1:-1;;;1123:14094:37;;;;;;;1880:14:24;;;;1123:14094:37;12581:3:20;1123:14094:37;;12565:14:20;;;;;12613:6;;12581:3;12613:6;;;:::i;:::-;1123:14094:37;12650:10:20;;;;:::i;:::-;1123:14094:37;;;;;12697:9:20;1123:14094:37;;;;;;;;;;;;;;;;;12738:21:20;12730:70;12738:21;;;;12730:70;:::i;:::-;1123:14094:37;;;;;;;;;;;;;;;;;12581:3:20;:::i;:::-;12550:13;;12565:14;;;-1:-1:-1;;;;;;;;;;;12924:55:20;1123:14094:37;12565:14:20;1123:14094:37;;929:10:28;;;;12924:55:20;;;:::i;:::-;;;;1123:14094:37;;;;:::i;1658:156:24:-;1701:13;1123:14094:37;1701:13:24;;;1732:3;1123:14094:37;;1716:14:24;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:37;1768:6:24;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;1658:156;;1080:66:23;1123:14094:37;;;;3873:18:20;1123:14094:37;;;;;929:10:28;1123:14094:37;;;;1059:159:23;1123:14094:37;;;;;;1080:66:23;;;;1123:14094:37;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;1033:12:24;1123:14094:37;;;;;;;1229:44:24;;1123:14094:37;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;3146:29:20;1123:14094:37;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3347:3:20;1123:14094:37;;3326:19:20;;;;;3347:3;;3385:30;-1:-1:-1;;;;;3395:11:20;1123:14094:37;3395:11:20;;:::i;:::-;1123:14094:37;;3408:6:20;;;;:::i;:::-;1123:14094:37;3385:30:20;;:::i;:::-;3366:49;;;;:::i;:::-;1123:14094:37;3347:3:20;:::i;:::-;3311:13;;3326:19;;;;1123:14094:37;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;1513:6:17;1123:14094:37;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;1123:14094:37;2881:8;1123:14094;;2877:41;;8154:24;1123:14094;8154:24;;;:::i;1123:14094::-;;;;;;-1:-1:-1;;1123:14094:37;;;;-1:-1:-1;;;;;1123:14094:37;;:::i;:::-;;;;9863:15;1123:14094;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;2881:8;1123:14094;;2877:41;;1123:14094;;;5618:44;1123:14094;;;;:::i;:::-;;;;;:::i;:::-;5618:44;;:::i;1123:14094::-;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;;;929:10:28;4675:20:20;:60;;;;1123:14094:37;4654:153:20;;;:::i;:::-;6817:81;1123:14094:37;;;;6825:28:20;6817:81;:::i;:::-;1123:14094:37;;;6916:16:20;6908:66;6916:16;;6908:66;:::i;:::-;1123:14094:37;;;1662:18:24;1658:156;;1123:14094:37;1824:424:24;;1123:14094:37;;7134:3:20;1123:14094:37;;7118:14:20;;;;;7166:6;;7134:3;7166:6;;;:::i;:::-;1123:14094:37;7203:10:20;;;;;:::i;:::-;1123:14094:37;;;;;7250:9:20;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;7291:21:20;7283:76;7291:21;;;;7283:76;:::i;:::-;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7471:27:20;1123:14094:37;;;;;;7471:27:20;:::i;7134:3::-;7103:13;;7118:14;;;;;;;;;1123:14094:37;;;;-1:-1:-1;;;;;;;;;;;1123:14094:37;;;;;;929:10:28;;7524:47:20;929:10:28;;7524:47:20;;;:::i;:::-;;;;1713:19:27;;16774:580:20;;1123:14094:37;16774:580:20;1123:14094:37;;;;;;;;;;;16813:90:20;;;;929:10:28;1123:14094:37;16813:90:20;;1123:14094:37;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;16813:90:20;1123:14094:37;;16813:90:20;;;1123:14094:37;16813:90:20;1123:14094:37;16813:90:20;;1123:14094:37;;16813:90:20;;;16774:580;-1:-1:-1;16809:535:20;;;;1123:14094:37;16809:535:20;;:::i;:::-;;;;;;;;1123:14094:37;16809:535:20;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;1123:14094:37;;-1:-1:-1;;;17213:14:20;;1123:14094:37;;17213:14:20;;1123:14094:37;;;;;;;;;;;:::i;16809:535:20:-;-1:-1:-1;;;;;;1123:14094:37;16978:168:20;16809:535;16978:168;1123:14094:37;;-1:-1:-1;;;17077:50:20;;1123:14094:37;17077:50:20;1123:14094:37;17077:50:20;;;:::i;16813:90::-;;;;;1123:14094:37;16813:90:20;;;;;;;;;:::i;:::-;;;;;1824:424:24;1865:13;;;;1123:14094:37;1865:13:24;;;;;;1896:3;1123:14094:37;;1880:14:24;;;;;1932:6;;;;:::i;:::-;1123:14094:37;1973:10:24;;;;:::i;:::-;1123:14094:37;;;;;;2018:12:24;1123:14094:37;;;;;;2060:16:24;;;;1123:14094:37;;1896:3:24;1123:14094:37;;;;2018:12:24;1123:14094:37;;;;;;;;;1896:3:24;:::i;:::-;1865:13;;1123:14094:37;;;;-1:-1:-1;;;1123:14094:37;-1:-1:-1;;;;;;;;;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;1880:14:24;;;;;;;;;;;;1824:424;;1658:156;1701:13;;;;;;;;;1123:14094:37;1732:3:24;1123:14094:37;;1716:14:24;;;;;1779:10;;1768:6;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:37;1768:6:24;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;;1658:156;;4675:60:20;1123:14094:37;;;;;;3873:18:20;1123:14094:37;;;;;929:10:28;1123:14094:37;;;;4654:153:20;1123:14094:37;;;;;;4675:60:20;;;;1123:14094:37;;;;;;;:::i;:::-;;;2881:8;1123:14094;;2877:41;;1123:14094;;5387:7;1123:14094;;;;;;;:::i;:::-;5225:1;1123:14094;;;;;;;;;;;;;;:::i;:::-;5225:1;1123:14094;;;;;;;;5290:22;;;;:::i;:::-;1123:14094;5322:20;;;:::i;:::-;1123:14094;5387:7;:::i;:::-;1123:14094;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;2122:17:26;1123:14094:37;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;;;2163:30:26;2159:90;;1123:14094:37;-1:-1:-1;;;;;1123:14094:37;2296:23:26;;1123:14094:37;;;;;;;;;;;;;;;;;;;2756:5:26;1123:14094:37;;;;;;;;;;;;;;;2159:90:26;1123:14094:37;;;;;;:::i;:::-;2219:19:26;1123:14094:37;;;;;;;;;;;;2159:90:26;;1123:14094:37;;;;;;-1:-1:-1;;1123:14094:37;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;:::i;:::-;1303:62:17;;;;:::i;:::-;1123:14094:37;2881:8;1123:14094;;2877:41;;1123:14094;;;3171:12;1123:14094;;;;;;;3171:29;1123:14094;;;3171:29;1123:14094;;3170:30;3166:70;;1123:14094;;;;;;;;;;8933:31;1123:14094;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9060:24;;;1123:14094;;;;;;-1:-1:-1;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:70;1123:14094;;-1:-1:-1;;;3209:27:37;;1123:14094;3209:27;;1123:14094;;;;;3209:27;1123:14094;;;;;;-1:-1:-1;;1123:14094:37;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;1303:62:17;;:::i;:::-;1123:14094:37;2881:8;1123:14094;;2877:41;;11446:15;;11442:51;;11507:30;;11503:67;;11660:16;1123:14094;11660:16;1123:14094;;11660:16;:::i;:::-;1123:14094;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;11832:40;;;;1123:14094;;;;11832:40;;1123:14094;;;;;;;11808:12;1123:14094;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11917:24;1123:14094;;;;;11882:23;1123:14094;;;;;;;1558:3;1123:14094;;;;;;1558:3;1123:14094;;;;;;;;;11995:59;1946:3;1123:14094;-1:-1:-1;;;;;12197:71:37;1123:14094;;11995:59;;;:::i;:::-;1123:14094;-1:-1:-1;;;;;;;;;;;1123:14094:37;;;;;;;;;;;;;;;:::i;:::-;12159:23;;;1513:6:17;1123:14094:37;;;;;;;;;;;1946:3;;;;1123:14094;1946:3;;;;:::i;:::-;12197:71;;;1123:14094;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11442:51;1123:14094;;-1:-1:-1;;;11470:23:37;;1123:14094;;11470:23;1123:14094;;;;;;;;;;;;;;;;;10419:12;1123:14094;;;;;;;10419:31;1123:14094;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;10467:26;:59;;;;;1123:14094;;;;;;;;;;;;;:::i;10467:59::-;1123:14094;;;;;;;;2440:4:20;1123:14094:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10467:59;;;1123:14094;;;;;2440:4:20;1123:14094:37;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;-1:-1:-1;1123:14094:37;;-1:-1:-1;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1303:62:17;;;:::i;:::-;1123:14094:37;2881:8;1123:14094;;2877:41;;-1:-1:-1;;;;;1123:14094:37;;7727:21;;7723:58;;1123:14094;7934:41;1123:14094;;;;7883:15;1123:14094;;7883:36;1123:14094;;;;;;;;;;;;;;;;;;;7883:36;1123:14094;;;;;;;7934:41;1123:14094;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;1304:27;;1123:14094;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10775:46:37;;;:97;;;;1123:14094;10775:150;;;;1123:14094;;;;;;;;;;10775:150;-1:-1:-1;;;1810:52:26;;;-1:-1:-1;1810:92:26;;;;10775:150:37;;;;;1810:92:26;-1:-1:-1;;;1759:52:20;;;-1:-1:-1;1759:131:20;;;;1810:92:26;1759:183:20;;;;1810:92:26;;;;;1759:183:20;-1:-1:-1;;;1168:51:29;;-1:-1:-1;1759:183:20;;;:131;-1:-1:-1;;;1827:63:20;;;-1:-1:-1;1759:131:20;;10775:97:37;-1:-1:-1;;;10825:47:37;;;-1:-1:-1;10775:97:37;;1123:14094;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;1599:130:17;1513:6;1123:14094:37;-1:-1:-1;;;;;1123:14094:37;929:10:28;1662:23:17;1123:14094:37;;1599:130:17:o;1123:14094:37:-;;;;;;;;;;;;;;;;;;;;;;;;;2666:187:17;2758:6;1123:14094:37;;-1:-1:-1;;;;;1123:14094:37;;;-1:-1:-1;;;;;;1123:14094:37;;;;;;;;;;2806:40:17;-1:-1:-1;;2806:40:17;2666:187::o;2593:227:20:-;-1:-1:-1;;;;;1123:14094:37;;2706:21:20;;1123:14094:37;;2725:1:20;1123:14094:37;2791:9:20;1123:14094:37;;;2725:1:20;1123:14094:37;;2725:1:20;1123:14094:37;;;;2725:1:20;1123:14094:37;;2593:227:20;:::o;1123:14094:37:-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;;1123:14094:37;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;:::o;17366:193:20:-;1123:14094:37;;;;;;:::i;:::-;17499:1:20;1123:14094:37;;;;;;;;17511:18:20;;;:::i;:::-;1123:14094:37;17366:193:20;:::o;1123:14094:37:-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;5941:1549;;;-1:-1:-1;;;;;1123:14094:37;;;;5941:1549;;6289:23;;6285:60;;1513:6:17;1123:14094:37;;6359:10;:21;;:53;;;5941:1549;6355:94;;1123:14094;;13755:21;13751:46;;1123:14094;;;;13811:35;13807:69;;1123:14094;;1558:3;;13890:33;;;;13886:97;;13999:13;1123:14094;13999:13;1123:14094;;14014:20;;;;;14055:12;;;;:::i;:::-;1123:14094;-1:-1:-1;;1123:14094:37;;;;;;;14071:16;;;;:::i;:::-;1123:14094;-1:-1:-1;14055:32:37;14051:87;;1123:14094;;13999:13;;14051:87;14125:12;1123:14094;14125:12;;;:::i;:::-;1123:14094;;;14096:42;;;;;;;;;1123:14094;14096:42;1123:14094;;;;;;;;;;;;14014:20;;;;;;;;1123:14094;6509:817;6514:13;1123:14094;;6529:20;;;;;6584:12;;;;:::i;:::-;1123:14094;;;;;6615:12;1123:14094;;;;;;;6615:28;1123:14094;;;6615:28;1123:14094;;6614:29;6610:68;;6696:11;;;;:::i;:::-;1123:14094;6696:16;6692:49;;1123:14094;;;6870:16;1123:14094;;;;6870:39;1123:14094;;;;6898:11;;;;:::i;:::-;1123:14094;6870:39;;:::i;:::-;1123:14094;;;;;;;;;;6992:32;;;6988:104;;-1:-1:-1;1123:14094:37;;;;;;;;;;;;;;;;;6514:13;;6988:104;1123:14094;;;;;;7033:59;;;;;;;;;1123:14094;;;;;;;;;7033:59;6692:49;1123:14094;;-1:-1:-1;;;6721:20:37;;;;;6610:68;1123:14094;;-1:-1:-1;;;6652:26:37;;;;;1123:14094;;;;;6652:26;6529:20;;;;;;;;1123:14094;;;;;;;;:::i;:::-;;;;10313:81:20;1123:14094:37;;;;10321:28:20;10313:81;:::i;:::-;1123:14094:37;1732:3:24;1123:14094:37;;1716:14:24;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:37;1768:6:24;;;;:::i;:::-;1123:14094:37;;;1755:12:24;1123:14094:37;;1755:34:24;1123:14094:37;;;;;;1755:34:24;:::i;1732:3::-;1701:13;;1716:14;;;;;1123:14094:37;10560:3:20;1123:14094:37;;10544:14:20;;;;;10604:10;;10560:3;10604:10;;;:::i;:::-;1123:14094:37;10589:6:20;;;;:::i;:::-;1123:14094:37;;;;10579:9:20;1123:14094:37;;;;;;;;;;10579:35:20;1123:14094:37;;;;;;10579:35:20;:::i;10560:3::-;10529:13;;10544:14;;;;;;;1123:14094:37;;;;-1:-1:-1;;;;;;;;;;;6359:10:37;10640:53:20;;;;;;;:::i;:::-;;;;1713:19:27;16774:580:20;;10524:101;5941:1549:37;;;;;;:::o;16774:580:20:-;1123:14094:37;;;;;;;;;;;;;;;;;;16813:90:20;;;;6359:10:37;16813:90:20;;;1123:14094:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;16813:90:20;;;;1123:14094:37;;16813:90:20;;;16774:580;-1:-1:-1;16809:535:20;;;;1123:14094:37;16809:535:20;;:::i;:::-;;;;;;;;;;16774:580;;;;;;;;16809:535;1123:14094:37;-1:-1:-1;;;17267:62:20;;1123:14094:37;17267:62:20;16813:90;17267:62;;;:::i;16809:535::-;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;1123:14094:37;;-1:-1:-1;;;17213:14:20;;1123:14094:37;16813:90:20;17213:14;;1123:14094:37;;;;;;;;;;;:::i;16809:535:20:-;-1:-1:-1;;;;;;1123:14094:37;16982:71:20;16978:168;;16809:535;;;16978:168;1123:14094:37;-1:-1:-1;;;17077:50:20;;1123:14094:37;17077:50:20;16813:90;17077:50;;;:::i;16813:90::-;;;;;1123:14094:37;16813:90:20;;;;;;;;;:::i;:::-;;;;;13886:97:37;1123:14094;;;;;13932:51;;;;;;;;;1123:14094;;;;;13932:51;13807:69;1123:14094;;-1:-1:-1;;;13855:21:37;;;;;13751:46;1123:14094;;-1:-1:-1;;;13785:12:37;;;;;6355:94;1123:14094;;-1:-1:-1;;;6421:28:37;;6359:10;6421:28;;;1123:14094;;;6421:28;6359:53;:10;;6310:1;1123:14094;6385:15;1123:14094;;;;6310:1;1123:14094;;;6384:28;6359:53;;1123:14094;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;;;-1:-1:-1;;1123:14094:37;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;3790:351:26;;-1:-1:-1;;;;;1123:14094:37;3907:33:26;3899:88;2756:5;3907:33;;;3899:88;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;;;4005:22:26;;1123:14094:37;;;;;;;;:::i;:::-;;;4099:35:26;;;;1123:14094:37;;;-1:-1:-1;1123:14094:37;;;4070:17:26;1123:14094:37;;;;;;;;;;;-1:-1:-1;;;;;;1123:14094:37;;;;;;3790:351:26:o;1123:14094:37:-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;12499:484;-1:-1:-1;;;;;1123:14094:37;;;;12499:484;12596:23;;12592:60;;1558:3;12666:36;;12662:135;;1123:14094;;;;;;12807:34;;1123:14094;;;;;;;;;12851:38;1123:14094;1558:3;1123:14094;;;;;;1558:3;1123:14094;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;3123:88:26;2756:5;3131:33;;;3123:88;:::i;:::-;3314:35;1123:14094:37;;;;;:::i;:::-;;;;3314:35:26;1123:14094:37;3292:57:26;1123:14094:37;;-1:-1:-1;;;;;;1123:14094:37;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;3292:57:26;1123:14094:37;;;;;;;;;;;;12499:484::o;12662:135::-;1123:14094;;-1:-1:-1;;;12725:61:37;;;;;1123:14094;;;1558:3;1123:14094;;;;;;12725:61","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","burn(address,uint256,uint256)":"f5298aca","burnBatch(address,uint256[],uint256[])":"6b20c454","createToken(string,uint256,address)":"1542bb95","disableContract()":"894ba833","disabled()":"ee070805","exists(uint256)":"4f558e79","init(string,string,string,address,address)":"a7eae21c","isApprovedForAll(address,address)":"e985e9c5","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintBatchTo(address,uint256[],uint256[])":"3512639c","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","royaltyInfo(uint256,uint256)":"2a55205a","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","setDefaultRoyaltyPercentage(uint256)":"e27a41bf","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","setRoyaltyReceiverForToken(uint256,address)":"e2200a0b","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","totalSupply(uint256)":"bd85b039","transferOwnership(address)":"f2fde38b","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RoyaltyPercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"royaltyReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"burnBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_royaltyReceiver\",\"type\":\"address\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBatchTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_percentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRoyaltyPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setRoyaltyReceiverForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Clone-safe upgradeable-style implementation used behind minimal proxies. Token ids start at 1.\",\"errors\":{\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported percentage.\",\"supplied\":\"Percentage supplied by the caller.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"params\":{\"tokenId\":\"Token id that is not greater than the previous token id.\"}}]},\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,address,uint256,string)\":{\"params\":{\"creator\":\"Collection owner reported as creator when the token id is created.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"royaltyReceiver\":\"ERC2981 royalty receiver configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createToken(string,uint256,address)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_royaltyReceiver\":\"ERC2981 royalty receiver for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"exists(uint256)\":{\"details\":\"Indicates whether any token exist with a given id, or not.\"},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and ERC2981 royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintBatchTo(address,uint256[],uint256[])\":{\"details\":\"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.\",\"params\":{\"_amounts\":\"Quantities to mint for each token id.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenIds\":\"Existing token ids to mint.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"Minted token id.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"details\":\"Tokens created before this update keep their token-specific royalty percentage.\",\"params\":{\"_percentage\":\"New royalty percentage, expressed as whole percentage points.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"details\":\"Token-specific royalty receivers take precedence over this value.\",\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"details\":\"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.\",\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"setRoyaltyReceiverForToken(uint256,address)\":{\"details\":\"The token's existing royalty percentage is preserved.\",\"params\":{\"_receiver\":\"New token-specific royalty receiver.\",\"_tokenId\":\"Token id whose royalty receiver is updated.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"totalSupply(uint256)\":{\"details\":\"Total amount of tokens in with a given id.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"stateVariables\":{\"MAX_BATCH_SIZE\":{\"return\":\"Maximum supported batch item count.\",\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"disabled\":{\"return\":\"True when disabled.\",\"returns\":{\"_0\":\"True when disabled.\"}},\"name\":{\"return\":\"Collection name.\",\"returns\":{\"_0\":\"Collection name.\"}},\"symbol\":{\"return\":\"Collection symbol.\",\"returns\":{\"_0\":\"Collection symbol.\"}}},\"title\":\"RareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"BatchLengthMismatch()\":[{\"notice\":\"Reverted when parallel batch arrays have different lengths.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"notice\":\"Reverted when the default royalty percentage is above 100%.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,address,uint256,string)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch mint operations.\"},\"createToken(string,uint256,address)\":{\"notice\":\"Creates a new token type.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintBatchTo(address,uint256[],uint256[])\":{\"notice\":\"Mints existing token ids to a receiver.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints one existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"renounceOwnership()\":{\"notice\":\"Prevents the collection owner, and therefore creator proxy, from becoming the zero address.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"notice\":\"Updates the fallback ERC2981 royalty percentage.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the fallback ERC2981 royalty receiver.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes collection-wide minter approval for an address.\"},\"setRoyaltyReceiverForToken(uint256,address)\":{\"notice\":\"Updates the ERC2981 royalty receiver for one token id.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Basic RARE Protocol ERC1155 collection with creator and royalty support.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/RareERC1155.sol\":\"RareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7\",\"dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol\":{\"keccak256\":\"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98\",\"dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8\",\"dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol\":{\"keccak256\":\"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9\",\"dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/ERC1155/RareERC1155.sol\":{\"keccak256\":\"0x580c03eaabe68708b30d0627a8ea44ebb7de24150a0ad6047266ef44cf2731a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7320879b3bb31bc0226013499865f7cc605f2845b4fb6700daa94cf5e928622a\",\"dweb:/ipfs/QmesNVNev1i2iR57BFFAKa64xeBLqTTUqVBECDgYd46MT4\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[],"type":"error","name":"BatchLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"RoyaltyPercentageTooHigh"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"address","name":"royaltyReceiver","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"values","type":"uint256[]","indexed":false}],"type":"event","name":"TransferBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"TransferSingle","anonymous":false},{"inputs":[{"internalType":"string","name":"value","type":"string","indexed":false},{"internalType":"uint256","name":"id","type":"uint256","indexed":true}],"type":"event","name":"URI","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"burnBatch"},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"address","name":"_royaltyReceiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"mintBatchTo"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyPercentage"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyReceiverForToken"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"createToken(string,uint256,address)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_royaltyReceiver":"ERC2981 royalty receiver for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"exists(uint256)":{"details":"Indicates whether any token exist with a given id, or not."},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and ERC2981 royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedForAll(address,address)":{"details":"See {IERC1155-isApprovedForAll}."},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintBatchTo(address,uint256[],uint256[])":{"details":"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.","params":{"_amounts":"Quantities to mint for each token id.","_receiver":"Address that receives the minted tokens.","_tokenIds":"Existing token ids to mint."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"Minted token id."}},"owner()":{"details":"Returns the address of the current owner."},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"See {IERC1155-safeBatchTransferFrom}."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"See {IERC1155-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC1155-setApprovalForAll}."},"setDefaultRoyaltyPercentage(uint256)":{"details":"Tokens created before this update keep their token-specific royalty percentage.","params":{"_percentage":"New royalty percentage, expressed as whole percentage points."}},"setDefaultRoyaltyReceiver(address)":{"details":"Token-specific royalty receivers take precedence over this value.","params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"details":"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.","params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"setRoyaltyReceiverForToken(uint256,address)":{"details":"The token's existing royalty percentage is preserved.","params":{"_receiver":"New token-specific royalty receiver.","_tokenId":"Token id whose royalty receiver is updated."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"totalSupply(uint256)":{"details":"Total amount of tokens in with a given id."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch mint operations."},"createToken(string,uint256,address)":{"notice":"Creates a new token type."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintBatchTo(address,uint256[],uint256[])":{"notice":"Mints existing token ids to a receiver."},"mintTo(address,uint256,uint256)":{"notice":"Mints one existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"renounceOwnership()":{"notice":"Prevents the collection owner, and therefore creator proxy, from becoming the zero address."},"setDefaultRoyaltyPercentage(uint256)":{"notice":"Updates the fallback ERC2981 royalty percentage."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the fallback ERC2981 royalty receiver."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes collection-wide minter approval for an address."},"setRoyaltyReceiverForToken(uint256,address)":{"notice":"Updates the ERC2981 royalty receiver for one token id."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/RareERC1155.sol":"RareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol":{"keccak256":"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856","urls":["bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7","dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"keccak256":"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b","urls":["bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce","dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol":{"keccak256":"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8","urls":["bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83","dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol":{"keccak256":"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7","urls":["bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98","dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"keccak256":"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e","urls":["bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8","dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"keccak256":"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448","urls":["bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9","dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol":{"keccak256":"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f","urls":["bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9","dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a","urls":["bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7","dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/ERC1155/RareERC1155.sol":{"keccak256":"0x580c03eaabe68708b30d0627a8ea44ebb7de24150a0ad6047266ef44cf2731a3","urls":["bzz-raw://7320879b3bb31bc0226013499865f7cc605f2845b4fb6700daa94cf5e928622a","dweb:/ipfs/QmesNVNev1i2iR57BFFAKa64xeBLqTTUqVBECDgYd46MT4"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":37} \ No newline at end of file diff --git a/abis/RareERC1155ContractFactory.json b/abis/RareERC1155ContractFactory.json index 7381575..33b2485 100644 --- a/abis/RareERC1155ContractFactory.json +++ b/abis/RareERC1155ContractFactory.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createRareERC1155Contract","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"defaultMinter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"rareERC1155","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultMinter","inputs":[{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRareERC1155","inputs":[{"name":"_rareERC1155","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefaultMinterUpdated","inputs":[{"name":"defaultMinter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155ContractCreated","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155Updated","inputs":[{"name":"rareERC1155","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x608080604052346100b95760008054336001600160a01b031980831682178455936001600160a01b03939290919084167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08480a361301f818101906001600160401b038211838310176100a5579082916106a08339039082f09081156100995750169060015416176001556040516105e190816100bf8239f35b604051903d90823e3d90fd5b634e487b7160e01b84526041600452602484fd5b600080fdfe608060408181526004908136101561001657600080fd5b600092833560e01c908163014812a2146104da5750806318cf6f4214610473578063389dee181461044a578063715018a6146103ed5780638667f619146101f85780638da5cb5b146101cc578063e2be1a081461014a5763f2fde38b1461007c57600080fd5b34610146576020366003190112610146576001600160a01b03823581811693919290849003610142576100ad610532565b83156100f05750506000548260018060a01b0319821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8480fd5b8280fd5b5090346101465760203660031901126101465780356001600160a01b03811692908390036101c85761017a610532565b82156101bb575050600180546001600160a01b031916821790557fe329ca164c11428fa5ee865054c08ccee6f2d38eda61e9e6a35b3081a472daed8280a280f35b51637827912560e01b8152fd5b8380fd5b8382346101f457816003193601126101f457905490516001600160a01b039091168152602090f35b5080fd5b508290346101f457600319906060368301126101465767ffffffffffffffff84358181116101425761022d90369087016104ff565b91906024358281116103e95761024690369089016104ff565b95906044358481116103e55761025f9036908b016104ff565b600154608881901c62ffffff16763d602d80600a3d3981f3363d3d373d3d3d363d73000000178b5260781b6001600160781b0319166e5af43d82803e903d91602b57fd5bf3176020526001600160a01b039890929089603760098df016998a156103a95760025416958a3b156103a557938b9693610313610322948f979461030360a09a968f519e8f9c8d9c8d6329fab88760e21b90528d015260a48c019161058a565b91868a84030160248b015261058a565b9286840301604487015261058a565b903360648401526084830152038183885af1801561039b57610371575b5050602093505191817f0c069e30a19668076937a9266318f1876e9c7dabdae788aaad8f5c73599aea89339280a38152f35b81949294116103885760209450835291848061033f565b634e487b7160e01b825260418552602482fd5b83513d87823e3d90fd5b8b80fd5b895162461bcd60e51b81526020818f01526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606490fd5b8880fd5b8680fd5b8334610447578060031936011261044757610406610532565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b8382346101f457816003193601126101f45760025490516001600160a01b039091168152602090f35b5050346101f45760203660031901126101f457356001600160a01b038116908190036101f4576104a1610532565b600280546001600160a01b031916821790557feedfae894237292077aa1e4fcca7f9a0a2aabeda165c2ff69a08cfd365d7c9eb8280a280f35b8490346101f457816003193601126101f4576001546001600160a01b03168152602090f35b9181601f8401121561052d5782359167ffffffffffffffff831161052d576020838186019501011161052d57565b600080fd5b6000546001600160a01b0316330361054657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b908060209392818452848401376000828201840152601f01601f191601019056fea2646970667358221220c6cdc69dac480746e3b0a403a8be123871650849084015d4745cbdd2f7b9327664736f6c634300081200336080806040523461001657613003908161001c8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461248e57806301ffc9a7146123d457806306fdde03146123425780630de54ba0146122c95780630e89341c146121475780631542bb95146120de57806318e97fd114611f665780632a55205a14611ec55780632baf2acb14611beb5780632eb2c2d6146118115780633403c4e9146117e75780633a3d146f146117a75780633ebc82c51461175557806340c1a064146117205780634e1273f4146115825780634f558e79146115545780636b20c454146112fa578063715018a61461129d57806372b3b6201461122c578063894ba833146111dd5780638da5cb5b146111b457806395d89b41146110e1578063a22cb4651461100a578063a7eae21c14610997578063ab69607a14610978578063bd85b0391461094c578063c33ae88f1461091f578063e985e9c5146108c9578063ee070805146108a5578063efc32cd414610808578063f242432a1461043b578063f2fde38b146103ae578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101356020526020604060002054604051908152f35b600080fd5b346101be576101d1366125f3565b6001600160a01b0390921691903383148015610385575b6101f190612889565b8215926101fe8415612b5e565b61020782612b29565b9161021184612b29565b9460006040516102208161251b565b52610331575b60005b83518110156102c45761023c818561285f565b51610247828861285f565b51908060005260fb602081815260406000205492848410610280579061027b95949392916000525203604060002055612850565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020612fae833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612bb6565b8386526097602052604086208587526020520360408520556040519182526020820152600080516020612f6e83398151915260403392a461032f60405161251b565b005b929060005b835181101561037d578061034d610378928861285f565b51610358828761285f565b5160005260fb60205261037160406000209182546129a5565b9055612850565b610336565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103c76124b5565b6103cf61272a565b6001600160a01b038116156103e75761032f90612782565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be576104546124b5565b61045c6124cb565b90608480356001600160401b0381116101be5761047d9036906004016126d8565b6001600160a01b039190838316331480156107dd575b61049c90612889565b828516156104aa81156128ec565b6104b5604435612b29565b6104c0606435612b29565b918587161561079d575b6106ef575b505060443560005260209460978652604060002084861660005286526040600020546104ff606435821015612946565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061054a60643582546129a5565b90556040516044358152606435878201528482169085871690600080516020612f6e83398151915260403392a4803b61057f57005b60a060006105c9958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a4830190612557565b0393165af1600091816106c0575b506106965750506001906105e9612a9d565b6308c379a014610661575b506105fb57005b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608490fd5b0390fd5b610669612abb565b908161067557506105f4565b61065d60405192839262461bcd60e51b845260048401526024830190612557565b6001600160e01b03191614905061032f5760405162461bcd60e51b81528061065d60048201612a54565b6106e1919250843d86116106e8575b6106d98183612536565b810190612a34565b90846105d7565b503d6106cf565b92959194909360005b845181101561078e5761070b818661285f565b5190610717818861285f565b518260005260fb60205260406000205481811061074b576107469360005260fb60205203604060002055612850565b6106f8565b60405162461bcd60e51b81526020600482015260286024820152600080516020612fae833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104cf565b959260009794919592975b86518110156107cf57806107bf6107ca928b61285f565b51610358828a61285f565b6107a8565b5092959691949093966104ca565b50828416600052609860205260406000203360005260205261049c60ff604060002054169050610493565b346101be5760403660031901126101be576108216124b5565b6024359061082d61272a565b8160005261013560205260ff600260406000200154161561088c576001600160a01b031690811561087a57600090815261012f6020526040902080546001600160a01b0319169091179055005b604051637827912560e01b8152600490fd5b60405163c927e5bf60e01b815260048101839052602490fd5b346101be5760003660031901126101be57602060ff61013354166040519015158152f35b346101be5760403660031901126101be576108e26124b5565b6108ea6124cb565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be576004356000526101386020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760003660031901126101be57602061012e54604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be576109c79036906004016125c6565b906024356001600160401b0381116101be576109e79036906004016125c6565b6044939193356001600160401b0381116101be57610a099036906004016125c6565b6001600160a01b03959192909160643580881690036101be576084359487861686036101be576000549660ff8860081c161597888099610ffd575b8015610fe6575b15610f8a5760ff19811660011760005588610f78575b5088606435161561087a576001600160401b038211610d80578190610a88610131546124e1565b601f8111610f0a575b50600090601f8311600114610e8157600092610e76575b50508160011b916000199060031b1c191617610131555b6001600160401b038211610d8057610ad9610132546124e1565b601f8111610e14575b50600090601f8311600114610da157610b4d9493929160009183610d96575b50508160011b916000199060031b1c191617610132555b61013360ff198154169055610b3d60ff60005460081c16610b3881612c62565b612c62565b610b4633612782565b3691612692565b92610b6360ff60005460081c16610b3881612c62565b83516001600160401b038111610d8057610b7e6099546124e1565b601f8111610d1b575b50602094601f8211600114610cb457948192939495600092610ca9575b50508160011b916000199060031b1c1916176099555b610be160ff60005460081c16610bcf81612c62565b610bd881612c62565b610b3881612c62565b600a61012e5561012d80546001600160a01b0319166001600160a01b0360643516179055808216610c58575b5050610c1a606435612782565b610c2057005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6020817f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b592841660005261013782526040600020600160ff1982541617905560405193600185521692a28180610c0d565b015190508580610ba4565b601f198216956099600052806000209160005b888110610d0357508360019596979810610cea575b505050811b01609955610bba565b015160001960f88460031b161c19169055858080610cdc565b91926020600181928685015181550194019201610cc7565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610d76575b601f0160051c01905b818110610d6a5750610b87565b60008155600101610d5d565b9091508190610d54565b634e487b7160e01b600052604160045260246000fd5b013590508880610b01565b61013260005260206000209160005b601f1985168110610dfc5750918391600193610b4d979695601f19811610610de2575b505050811b0161013255610b18565b0135600019600384901b60f8161c19169055888080610dd3565b90926020600181928686013581550194019101610db0565b6101326000527fc53bdfd4aa1ab65dfdaf681ca6bda958ae4a123d4ed68c4277796592280e7835601f840160051c810160208510610e6f575b601f830160051c82018110610e63575050610ae2565b60008155600101610e4d565b5080610e4d565b013590508980610aa8565b610131600090815293507fbd987ad6ccdb7c7567f7335ea839f95dc944431abcf935b6924f70215963db73915b601f1984168510610ef2576001945083601f19811610610ed8575b505050811b0161013155610abf565b0135600019600384901b60f8161c19169055898080610ec9565b81810135835560209485019460019093019201610eae565b6101316000529091507fbd987ad6ccdb7c7567f7335ea839f95dc944431abcf935b6924f70215963db73601f840160051c810160208510610f71575b90849392915b601f830160051c82018110610f62575050610a91565b60008155859450600101610f4c565b5080610f46565b61ffff19166101011760005589610a61565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610a4b5750600160ff821614610a4b565b50600160ff821610610a44565b346101be5761101836612597565b6001600160a01b039091169033821461108a5733600052609860205260406000208260005260205261105a8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be57604051600090610132805490611107826124e1565b90818452600192838116908160001461118c575060011461114b575b6111478461113381880382612536565b604051918291602083526020830190612557565b0390f35b90935060005260209283600020916000925b8284106111795750505081611147936111339282010193611123565b805485850187015292850192810161115d565b61114796506111339450602092508593915060ff191682840152151560051b82010193611123565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be576111f661272a565b610133805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760403660031901126101be576004356001600160401b0381116101be5761125c9036906004016125c6565b61126461272a565b60ff610133541661128b57602091611283913391339160243591612ce3565b604051908152f35b604051637abbf1c960e01b8152600490fd5b346101be5760003660031901126101be576112b661272a565b603380546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101be5760603660031901126101be576113136124b5565b6024906001600160401b039082358281116101be57611336903690600401612634565b9160449081359081116101be57611351903690600401612634565b6001600160a01b0390921692338414801561152b575b61137090612889565b831561137c8115612b5e565b61138982518551146129b2565b60006040516113978161251b565b526114f3575b60005b8151811015611439576113b3818361285f565b516113be828661285f565b51908060005260fb6020818152604060002054928484106113f757906113f295949392916000525203604060002055612850565b6113a0565b60405162461bcd60e51b8152600481018390526028818d0152600080516020612fae833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b82518110156114ae57806114566114a9928561285f565b51611461828761285f565b519080600052609760209080825260406000208760005282526040600020549261148d85851015612bb6565b6000528152604060002090866000525203604060002055612850565b61143f565b50907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6114e5600094604051918291339583612a0f565b0390a461032f60405161251b565b9260009491945b8451811015611521578061151161151c928661285f565b51610358828861285f565b6114fa565b509293909361139d565b5083600052609860205260406000203360005260205261137060ff604060002054169050611367565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be578160040135906115bf8261261d565b926115cd6040519485612536565b82845260209260248486019160051b830101913683116101be57602401905b828210611701575050506024359081116101be5761160e903690600401612634565b82518151036116aa578251926116238461261d565b936116316040519586612536565b808552611640601f199161261d565b01368486013760005b81518110156116935761168e9061167e6001600160a01b0361166b838661285f565b5116611677838761285f565b51906127cb565b611688828861285f565b52612850565b611649565b5050506111476040519282849384528301906126f6565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115ec565b346101be5760203660031901126101be57600435600052610136602052602060018060a01b0360406000205416604051908152f35b346101be5760203660031901126101be5761176e6124b5565b61177661272a565b6001600160a01b0381161561087a5761012d80546001600160a01b0319166001600160a01b03909216919091179055005b346101be5760203660031901126101be576001600160a01b036117c86124b5565b16600052610137602052602060ff604060002054166040519015158152f35b346101be5760003660031901126101be5761012d546040516001600160a01b039091168152602090f35b346101be5760031960a0368201126101be5761182b6124b5565b906118346124cb565b6044908135926001600160401b03938481116101be57611858903690600401612634565b606480358681116101be57611871903690600401612634565b9460849687359081116101be5761188c9036906004016126d8565b6001600160a01b039489861633148015611bc0575b6118aa90612889565b6118b785518951146129b2565b858716156118c581156128ec565b868b1615611b7d575b611ac8575b60005b855181101561196b57806118ed611966928861285f565b518c6118f9838d61285f565b519180600052609790838c602094848652604060002082821660005286526040600020549161192a84841015612946565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c166000525261037160406000209182546129a5565b6118d6565b50888a989796949789604051887f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb89808d16941692806119ad87339583612a0f565b0390a4873b6119b857005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a487016119ec916126f6565b908487830301908701526119ff916126f6565b918483030190840152611a1191612557565b03921691815a602094600091f160009181611aa8575b50611a805750506001611a38612a9d565b6308c379a014611a49575b6105fb57005b611a51612abb565b80611a5c5750611a43565b60405162461bcd60e51b81526020600482015290819061065d906024830190612557565b6001600160e01b0319161461032f5760405162461bcd60e51b81528061065d60048201612a54565b611ac191925060203d81116106e8576106d98183612536565b9083611a27565b9796949060009993999692965b8551811015611b6d57611ae8818761285f565b51611af3828961285f565b519080600052602060fb815260406000205491838310611b2c57611b279493929160fb916000525203604060002055612850565b611ad5565b508b9067616c537570706c7960c01b8f600080516020612fae8339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b50909496979892989591956118d3565b99969498959392919060005b8a51811015611bb157808b61035882611ba5611bac958f61285f565b519261285f565b611b89565b509091929395989496996118ce565b50858a1660005260986020526040600020336000526020526118aa60ff6040600020541690506118a1565b346101be57611bf9366125f3565b60ff610133939293541661128b57826000526101359060209382855260ff6002604060002001541615611ead576001600160a01b038481169390841561087a576033541633141580611e94575b611e7c578215611e6a5781600052610138808752611c69846040600020546129a5565b91836000528752604060002054808311611e46575082600052865260406000205560405191611c978361251b565b60008352611ca482612b29565b93611cae82612b29565b9360005b888751821015611cf3575080611ccb611cee928861285f565b51611cd6828a61285f565b5160005260fb8b5261037160406000209182546129a5565b611cb2565b955050849087856000526097835260406000208460005283526040600020611d1c8682546129a5565b90558360006040518881528786820152600080516020612f6e83398151915260403392a43b611d4f575b50604051848152f35b600092611d939160405194858094819363f23a6e6160e01b998a84523360048501528460248501528b6044850152606484015260a0608484015260a4830190612557565b03925af160009181611e27575b50611dff5750506001611db1612a9d565b6308c379a014611dca575b6105fb575b82808381611d46565b611dd2612abb565b80611ddd5750611dbc565b8361065d60405192839262461bcd60e51b845260048401526024830190612557565b6001600160e01b03191614611dc15760405162461bcd60e51b81528061065d60048201612a54565b611e3f919250853d87116106e8576106d98183612536565b9085611da0565b836064918460405192630d6f5ed560e11b8452600484015260248301526044820152fd5b60405163d11b25af60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b5033600052610137865260ff6040600020541615611c46565b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760403660031901126101be57600435600090815261012f6020526040902054602435906001600160a01b039081168015611f5957905b6101306020526040600020548015611f4e57925b838102938185041490151715611f3857604092606491845193168352046020820152f35b634e487b7160e01b600052601160045260246000fd5b5061012e5492611f14565b508061012d541690611f00565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611f9a9036906004016125c6565b9190611fa461272a565b836000526101359160209280845260ff60026040600020015416156120c557856000528352600180604060002001918511610d8057611fed85611fe784546124e1565b84612c0e565b6000601f861160011461204e57918580600080516020612f8e8339815191529796959361203e95600093612043575b501b906000198760031b1c19161790555b604051938385948552840191612cc2565b0390a2005b85013592508a61201c565b601f1986169083600052856000209160005b8181106120b05750918796959391600080516020612f8e8339815191529861203e969410612096575b505085811b01905561202d565b840135600019600389901b60f8161c191690558880612089565b86830135845592840192918701918701612060565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576004356001600160401b0381116101be5761210e9036906004016125c6565b906044356001600160a01b03811681036101be5761212a61272a565b60ff610133541661128b5760209261128392339160243591612ce3565b346101be576020806003193601126101be57600435600052610135815260018060406000200190826040518093600090805490612183826124e1565b808552918681169081156122a85750600114612267575b50506121a892500383612536565b8151156121c65750905b611147604051928284938452830190612557565b90506040519060009083609954916121dd836124e1565b9283865285828216918260001461224757505060011461220d575b50505081612207910382612536565b906121b2565b91909250609960005282600020916000925b828410612234575050508201018183856121f8565b805486850186015292840192810161221f565b60ff19168482015293151560051b840190920193508591508690506121f8565b9091506000528260002090846000925b82841061229157505050916121a89282010185928761219a565b805488850187015287945092850192869101612277565b9150506121a894925060ff191682840152151560051b82010185928761219a565b346101be576122d736612597565b906122e061272a565b6001600160a01b031690811561087a5760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261013782526123378160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be57604051600090610131805490612368826124e1565b90818452600192838116908160001461118c5750600114612393576111478461113381880382612536565b90935060005260209283600020916000925b8284106123c15750505081611147936111339282010193611123565b80548585018701529285019281016123a5565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be5760209063d20de18960e01b811490811561247d575b8115612420575b506040519015158152f35b63152a902d60e11b81149150811561243a575b5082612415565b636cdb3d1360e11b81149150811561246c575b811561245b575b5082612433565b6301ffc9a760e01b14905082612454565b6303a24d0760e21b8114915061244d565b631030681960e21b8114915061240e565b346101be5760403660031901126101be5760206112836124ac6124b5565b602435906127cb565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c92168015612511575b60208310146124fb57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124f0565b602081019081106001600160401b03821117610d8057604052565b90601f801991011681019081106001600160401b03821117610d8057604052565b919082519283825260005b848110612583575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612562565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610d805760051b60200190565b81601f820112156101be5780359161264b8361261d565b926126596040519485612536565b808452602092838086019260051b8201019283116101be578301905b828210612683575050505090565b81358152908301908301612675565b9291926001600160401b038211610d8057604051916126bb601f8201601f191660200184612536565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be578160206126f393359101612692565b90565b90815180825260208080930193019160005b828110612716575050505090565b835185529381019392810192600101612708565b6033546001600160a01b0316330361273e57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b03169081156127f857600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b6000198114611f385760010190565b80518210156128735760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b1561289057565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b156128f357565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561294d57565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b91908201809211611f3857565b156129b957565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612a266126f3936040845260408401906126f6565b9160208184039101526126f6565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612aaa57565b905060046000803e60005160e01c90565b600060443d106126f357604051600319913d83016004833e81516001600160401b03918282113d602484011117612b1857818401948551938411612b20573d85010160208487010111612b1857506126f392910160200190612536565b949350505050565b50949350505050565b60405190604082018281106001600160401b03821117610d805760405260018252602082016020368237825115612873575290565b15612b6557565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612bbd57565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c1c57505050565b600091825260208220906020601f850160051c83019410612c58575b601f0160051c01915b828110612c4d57505050565b818155600101612c41565b9092508290612c38565b15612c6957565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9193908415612f5b576001600160a01b0382161561087a5761013494612d098654612850565b8096556040519260608401936001600160401b039481811086821117610d8057604052828152612d3a368588612692565b906020810191825260016040820152886000526101356020526040600020918151835551958651908111610d80578996612d8482612d7b60018701546124e1565b60018701612c0e565b602090601f8311600114612eb55760407f06ec8b3fb63a2a91fc1109b41eed7d76ac33c774d1d49f298836f97561ed07a4999a9484612dfc95612e949895600295600092612eaa575b50508160011b916000199060031b1c19161760018501555b0151151591019060ff801983541691151516179055565b8660005261013660205260406000209760018060a01b03169760018060a01b031990898282541617905561012f60205260406000209060018060a01b0385169082541617905561012e5461013060205260406000205586600080516020612f8e8339815191526040516020815280612e78602082018a87612cc2565b0390a26040519485948552606060208601526060850191612cc2565b6001600160a01b0390911660408301520390a390565b015190503880612dcd565b6001859493929a950160005260206000209060005b601f1984168110612f405750612dfc936001846002947f06ec8b3fb63a2a91fc1109b41eed7d76ac33c774d1d49f298836f97561ed07a49d9e604095612e949b9a98601f19811610612f27575b505050811b016001850155612de5565b015160001960f88460031b161c19169055388080612f17565b818c0151835560209b8c019b8e9b5060019093019201612eca565b604051631dd0e19360e01b8152600490fdfec3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f626bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a264697066735822122077965fa0e0e98965ee2091700b624025a480f5e36e32a78c2f0d090944ea05a164736f6c63430008120033","sourceMap":"542:1772:214:-:0;;;;;;;2518:6:86;542:1772:214;;719:10:111;-1:-1:-1;;;;;;542:1772:214;;;;;;;;-1:-1:-1;;;;;542:1772:214;2518:6:86;542:1772:214;;719:10:111;542:1772:214;;2566:40:86;2518:6;;2566:40;929:17:214;;;;;-1:-1:-1;;;;;929:17:214;;;;;;;;;;;;;;;;;;;;;;;542:1772;;;;;;;;;;;;;;;;;;929:17;542:1772;;;;;;;;;;929:17;-1:-1:-1;;;542:1772:214;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060408181526004908136101561001657600080fd5b600092833560e01c908163014812a2146104da5750806318cf6f4214610473578063389dee181461044a578063715018a6146103ed5780638667f619146101f85780638da5cb5b146101cc578063e2be1a081461014a5763f2fde38b1461007c57600080fd5b34610146576020366003190112610146576001600160a01b03823581811693919290849003610142576100ad610532565b83156100f05750506000548260018060a01b0319821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8480fd5b8280fd5b5090346101465760203660031901126101465780356001600160a01b03811692908390036101c85761017a610532565b82156101bb575050600180546001600160a01b031916821790557fe329ca164c11428fa5ee865054c08ccee6f2d38eda61e9e6a35b3081a472daed8280a280f35b51637827912560e01b8152fd5b8380fd5b8382346101f457816003193601126101f457905490516001600160a01b039091168152602090f35b5080fd5b508290346101f457600319906060368301126101465767ffffffffffffffff84358181116101425761022d90369087016104ff565b91906024358281116103e95761024690369089016104ff565b95906044358481116103e55761025f9036908b016104ff565b600154608881901c62ffffff16763d602d80600a3d3981f3363d3d373d3d3d363d73000000178b5260781b6001600160781b0319166e5af43d82803e903d91602b57fd5bf3176020526001600160a01b039890929089603760098df016998a156103a95760025416958a3b156103a557938b9693610313610322948f979461030360a09a968f519e8f9c8d9c8d6329fab88760e21b90528d015260a48c019161058a565b91868a84030160248b015261058a565b9286840301604487015261058a565b903360648401526084830152038183885af1801561039b57610371575b5050602093505191817f0c069e30a19668076937a9266318f1876e9c7dabdae788aaad8f5c73599aea89339280a38152f35b81949294116103885760209450835291848061033f565b634e487b7160e01b825260418552602482fd5b83513d87823e3d90fd5b8b80fd5b895162461bcd60e51b81526020818f01526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606490fd5b8880fd5b8680fd5b8334610447578060031936011261044757610406610532565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b8382346101f457816003193601126101f45760025490516001600160a01b039091168152602090f35b5050346101f45760203660031901126101f457356001600160a01b038116908190036101f4576104a1610532565b600280546001600160a01b031916821790557feedfae894237292077aa1e4fcca7f9a0a2aabeda165c2ff69a08cfd365d7c9eb8280a280f35b8490346101f457816003193601126101f4576001546001600160a01b03168152602090f35b9181601f8401121561052d5782359167ffffffffffffffff831161052d576020838186019501011161052d57565b600080fd5b6000546001600160a01b0316330361054657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b908060209392818452848401376000828201840152601f01601f191601019056fea2646970667358221220c6cdc69dac480746e3b0a403a8be123871650849084015d4745cbdd2f7b9327664736f6c63430008120033","sourceMap":"542:1772:214:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:214;;;;-1:-1:-1;;;;;542:1772:214;;;;;;;;;;;;;;1063:62:86;;:::i;:::-;2162:22;;542:1772:214;;;;;;;;;;;;;;;;;;;2566:40:86;542:1772:214;2566:40:86;;542:1772:214;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;542:1772:214;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:214;;;;;;-1:-1:-1;;;;;542:1772:214;;;;;;;;;1063:62:86;;:::i;:::-;1161:26:214;;1157:63;;-1:-1:-1;;542:1772:214;;;-1:-1:-1;;;;;;542:1772:214;;;;;1338:32;;;;542:1772;;1157:63;542:1772;-1:-1:-1;;;1196:24:214;;;542:1772;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:1772:214;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;2034:11;542:1772;1101:558:90;;;;;;;;;;;;-1:-1:-1;;;;;;1101:558:90;;;542:1772:214;1101:558:90;-1:-1:-1;;;;;542:1772:214;;;;;1101:558:90;;;;542:1772:214;1676:22:90;;;542:1772:214;;2207:13;542:1772;;2145:76;;;;;;542:1772;;;;;;;;;;;;;;;;;;;;;;;;;2145:76;;;;542:1772;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;2195:10;;542:1772;;;;;;;;2145:76;;;;;;;;;;;;542:1772;;;;;;;2195:10;;2237:45;2195:10;2237:45;;;542:1772;;;2145:76;542:1772;;;;;;;;;;;;2145:76;;;;;542:1772;-1:-1:-1;;;542:1772:214;;;;;;;;2145:76;542:1772;;;;;;;;;2145:76;542:1772;;;;;;-1:-1:-1;;;542:1772:214;;;;;;;;;;;;-1:-1:-1;;;542:1772:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;1063:62:86;;:::i;:::-;542:1772:214;;-1:-1:-1;;;;;;542:1772:214;;;;;;-1:-1:-1;;;;;542:1772:214;2566:40:86;542:1772:214;;2566:40:86;542:1772:214;;;;;;;;;;;;;;;;;;;665:37;542:1772;;;-1:-1:-1;;;;;542:1772:214;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:214;;;;;-1:-1:-1;;;;;542:1772:214;;;;;;;;1063:62:86;;:::i;:::-;1600:30:214;542:1772;;-1:-1:-1;;;;;;542:1772:214;;;;;1645:36;;;;542:1772;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:1772:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;1359:130:86;1273:6;542:1772:214;-1:-1:-1;;;;;542:1772:214;719:10:111;1422:23:86;542:1772:214;;1359:130:86:o;542:1772:214:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;542:1772:214;;;;;;;;-1:-1:-1;;542:1772:214;;;;:::o","linkReferences":{}},"methodIdentifiers":{"createRareERC1155Contract(string,string,string)":"8667f619","defaultMinter()":"389dee18","owner()":"8da5cb5b","rareERC1155()":"014812a2","renounceOwnership()":"715018a6","setDefaultMinter(address)":"18cf6f42","setRareERC1155(address)":"e2be1a08","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"defaultMinter\",\"type\":\"address\"}],\"name\":\"DefaultMinterUpdated\",\"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\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"RareERC1155ContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rareERC1155\",\"type\":\"address\"}],\"name\":\"RareERC1155Updated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createRareERC1155Contract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultMinter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rareERC1155\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"setDefaultMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rareERC1155\",\"type\":\"address\"}],\"name\":\"setRareERC1155\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Deploys EIP-1167 minimal proxies initialized with the caller as collection owner.\",\"events\":{\"DefaultMinterUpdated(address)\":{\"params\":{\"defaultMinter\":\"New default minter address. Zero address disables default minter approval.\"}},\"RareERC1155ContractCreated(address,address)\":{\"params\":{\"contractAddress\":\"Address of the newly created ERC1155 clone.\",\"owner\":\"Initial owner of the clone.\"}},\"RareERC1155Updated(address)\":{\"params\":{\"rareERC1155\":\"New ERC1155 implementation address.\"}}},\"kind\":\"dev\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"params\":{\"_baseURI\":\"Base URI used by the collection when a token id has no token-specific URI.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"},\"returns\":{\"_0\":\"Address of the newly created ERC1155 clone.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDefaultMinter(address)\":{\"params\":{\"_defaultMinter\":\"Address approved to mint on newly created clones, or zero address for none.\"}},\"setRareERC1155(address)\":{\"params\":{\"_rareERC1155\":\"Address of the replacement implementation.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"defaultMinter\":{\"return\":\"Default minter address. Zero address means no default minter.\",\"returns\":{\"_0\":\"Default minter address. Zero address means no default minter.\"}},\"rareERC1155\":{\"return\":\"ERC1155 implementation address.\",\"returns\":{\"_0\":\"ERC1155 implementation address.\"}}},\"title\":\"RareERC1155ContractFactory\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an implementation address is the zero address.\"}]},\"events\":{\"DefaultMinterUpdated(address)\":{\"notice\":\"Emitted when the owner changes the default minter for new clones.\"},\"RareERC1155ContractCreated(address,address)\":{\"notice\":\"Emitted when the factory creates and initializes a collection clone.\"},\"RareERC1155Updated(address)\":{\"notice\":\"Emitted when the owner changes the implementation cloned by the factory.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Deploys the initial ERC1155 implementation used for clones.\"},\"createRareERC1155Contract(string,string,string)\":{\"notice\":\"Creates a new initialized ERC1155 collection clone.\"},\"defaultMinter()\":{\"notice\":\"Returns the optional minter approved on each newly created collection.\"},\"rareERC1155()\":{\"notice\":\"Returns the ERC1155 implementation address cloned by the factory.\"},\"setDefaultMinter(address)\":{\"notice\":\"Updates the optional minter approved during clone initialization.\"},\"setRareERC1155(address)\":{\"notice\":\"Updates the ERC1155 implementation address cloned by future factory calls.\"}},\"notice\":\"Clone factory for RARE Protocol ERC1155 collections.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/RareERC1155ContractFactory.sol\":\"RareERC1155ContractFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7\",\"dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol\":{\"keccak256\":\"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98\",\"dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8\",\"dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/SafeMathUpgradeable.sol\":{\"keccak256\":\"0xb1561a6950b1aaa504c8f81b7d46bccfa77ccd10de3eb865cf34b1acd5ad505e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a56cb91629dacd161be24908fbf94315f3f45dd6fee8dad82b27af853cbc4ee\",\"dweb:/ipfs/QmNfEzdf4NTpxyhzWKAmeDwwSpJ6ZjNizK3GXw3TEuTTgn\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0x923b9774b81c1abfb992262ae7763b6e6de77b077a7180d53c6ebb7b1c8bd648\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53445dc0431f9b45c06f567c6091da961d4087bec0010cca5bd62100fa624a38\",\"dweb:/ipfs/QmNvBYpBv183czrAqNXr76E8M3LF93ouAJFeAcHfb59Rcx\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0x0e1fe02da411a6293004e5ee85bdd1facef5f1b6ef2aab8d36c73f0d77b448db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5bfd474499866fe24ac6b88eb92969395baf1e644a0f0b0054e66f9ae90c00e\",\"dweb:/ipfs/QmS5j268UauZARToNJazEBJDWvWM35j8kHx779PF3c5rib\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x9dc23a2064e31818e89092b5935ab96079a99b29e1aa1456565ee698d3fd23a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5aaa41dbed645e29ec41a7159bee7a10519ebaa71fb86187bd109aba732db40\",\"dweb:/ipfs/Qma3yM1SZuHAxo6HS16uFMX1yVVqikkXX9v6n5op5Tss1V\"]},\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":{\"keccak256\":\"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179\",\"dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb\"]},\"src/token/ERC1155/RareERC1155.sol\":{\"keccak256\":\"0x894e428a8afbd1d06d8f988574d1f73de6eb679327ae9a3d91183e993f105cae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1afeff73784717afd6f5c83f4546aaa155cfaad67aaf99399b31590e4d7f259\",\"dweb:/ipfs/QmRs8jAGq33XapRmDCEJ2Pi89HqcrDhVUgAQeWLB3koAtT\"]},\"src/token/ERC1155/RareERC1155ContractFactory.sol\":{\"keccak256\":\"0x1d75d40825831b017450e31e6b118bd27746a014099c3a3900b33f7e6c035036\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9584f968656c2d2c73993d8f3f4b2ae82dfb5788329544d1c620826d2d10b951\",\"dweb:/ipfs/QmT3VCoEuHKcBaVU3P6bRU9aroGmEQgjXB3QB6Liejdrjt\"]},\"src/token/extensions/ERC2981Upgradeable.sol\":{\"keccak256\":\"0x62c64c84a127c5a388397fa20c990b8c0dbd22a1fa1b7176f55c8aae3238383d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e540b90c23c363b1d5fb122286c7c583a44c8b907f2764ddf0f2c0e7793b5465\",\"dweb:/ipfs/QmPn163efSqFyhWHC4qFmeJXgMMbEmoENa6gRZjM4wedhA\"]},\"src/token/extensions/IERC2981.sol\":{\"keccak256\":\"0x2435b55e1011401b85ed792513721df4fe905013926fa7385f502aa3e97cdffd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056bca27c266998358654b0a64b4286a9b66c1b4db464f70a679d44de0f3fa4b\",\"dweb:/ipfs/QmW7zACzmmzoHKdrRQVRKh6eNiGuMjKZrZbvndNW819Z1w\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"defaultMinter","type":"address","indexed":true}],"type":"event","name":"DefaultMinterUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"RareERC1155ContractCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"rareERC1155","type":"address","indexed":true}],"type":"event","name":"RareERC1155Updated","anonymous":false},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createRareERC1155Contract","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultMinter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rareERC1155","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultMinter"},{"inputs":[{"internalType":"address","name":"_rareERC1155","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRareERC1155"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"createRareERC1155Contract(string,string,string)":{"params":{"_baseURI":"Base URI used by the collection when a token id has no token-specific URI.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."},"returns":{"_0":"Address of the newly created ERC1155 clone."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setDefaultMinter(address)":{"params":{"_defaultMinter":"Address approved to mint on newly created clones, or zero address for none."}},"setRareERC1155(address)":{"params":{"_rareERC1155":"Address of the replacement implementation."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Deploys the initial ERC1155 implementation used for clones."},"createRareERC1155Contract(string,string,string)":{"notice":"Creates a new initialized ERC1155 collection clone."},"defaultMinter()":{"notice":"Returns the optional minter approved on each newly created collection."},"rareERC1155()":{"notice":"Returns the ERC1155 implementation address cloned by the factory."},"setDefaultMinter(address)":{"notice":"Updates the optional minter approved during clone initialization."},"setRareERC1155(address)":{"notice":"Updates the ERC1155 implementation address cloned by future factory calls."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/RareERC1155ContractFactory.sol":"RareERC1155ContractFactory"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol":{"keccak256":"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856","urls":["bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7","dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"keccak256":"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b","urls":["bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce","dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol":{"keccak256":"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8","urls":["bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83","dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol":{"keccak256":"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7","urls":["bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98","dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"keccak256":"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e","urls":["bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8","dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"keccak256":"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448","urls":["bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9","dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a","urls":["bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7","dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/SafeMathUpgradeable.sol":{"keccak256":"0xb1561a6950b1aaa504c8f81b7d46bccfa77ccd10de3eb865cf34b1acd5ad505e","urls":["bzz-raw://9a56cb91629dacd161be24908fbf94315f3f45dd6fee8dad82b27af853cbc4ee","dweb:/ipfs/QmNfEzdf4NTpxyhzWKAmeDwwSpJ6ZjNizK3GXw3TEuTTgn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0x923b9774b81c1abfb992262ae7763b6e6de77b077a7180d53c6ebb7b1c8bd648","urls":["bzz-raw://53445dc0431f9b45c06f567c6091da961d4087bec0010cca5bd62100fa624a38","dweb:/ipfs/QmNvBYpBv183czrAqNXr76E8M3LF93ouAJFeAcHfb59Rcx"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0x0e1fe02da411a6293004e5ee85bdd1facef5f1b6ef2aab8d36c73f0d77b448db","urls":["bzz-raw://c5bfd474499866fe24ac6b88eb92969395baf1e644a0f0b0054e66f9ae90c00e","dweb:/ipfs/QmS5j268UauZARToNJazEBJDWvWM35j8kHx779PF3c5rib"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x9dc23a2064e31818e89092b5935ab96079a99b29e1aa1456565ee698d3fd23a6","urls":["bzz-raw://d5aaa41dbed645e29ec41a7159bee7a10519ebaa71fb86187bd109aba732db40","dweb:/ipfs/Qma3yM1SZuHAxo6HS16uFMX1yVVqikkXX9v6n5op5Tss1V"],"license":"MIT"},"src/token/ERC1155/IRareERC1155ContractFactory.sol":{"keccak256":"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63","urls":["bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179","dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb"],"license":"MIT"},"src/token/ERC1155/RareERC1155.sol":{"keccak256":"0x894e428a8afbd1d06d8f988574d1f73de6eb679327ae9a3d91183e993f105cae","urls":["bzz-raw://e1afeff73784717afd6f5c83f4546aaa155cfaad67aaf99399b31590e4d7f259","dweb:/ipfs/QmRs8jAGq33XapRmDCEJ2Pi89HqcrDhVUgAQeWLB3koAtT"],"license":"MIT"},"src/token/ERC1155/RareERC1155ContractFactory.sol":{"keccak256":"0x1d75d40825831b017450e31e6b118bd27746a014099c3a3900b33f7e6c035036","urls":["bzz-raw://9584f968656c2d2c73993d8f3f4b2ae82dfb5788329544d1c620826d2d10b951","dweb:/ipfs/QmT3VCoEuHKcBaVU3P6bRU9aroGmEQgjXB3QB6Liejdrjt"],"license":"MIT"},"src/token/extensions/ERC2981Upgradeable.sol":{"keccak256":"0x62c64c84a127c5a388397fa20c990b8c0dbd22a1fa1b7176f55c8aae3238383d","urls":["bzz-raw://e540b90c23c363b1d5fb122286c7c583a44c8b907f2764ddf0f2c0e7793b5465","dweb:/ipfs/QmPn163efSqFyhWHC4qFmeJXgMMbEmoENa6gRZjM4wedhA"],"license":"MIT"},"src/token/extensions/IERC2981.sol":{"keccak256":"0x2435b55e1011401b85ed792513721df4fe905013926fa7385f502aa3e97cdffd","urls":["bzz-raw://056bca27c266998358654b0a64b4286a9b66c1b4db464f70a679d44de0f3fa4b","dweb:/ipfs/QmW7zACzmmzoHKdrRQVRKh6eNiGuMjKZrZbvndNW819Z1w"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":214} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createRareERC1155Contract","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"defaultMinter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"rareERC1155","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultMinter","inputs":[{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRareERC1155","inputs":[{"name":"_rareERC1155","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefaultMinterUpdated","inputs":[{"name":"defaultMinter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155ContractCreated","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155Updated","inputs":[{"name":"rareERC1155","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x608080604052346100b95760008054336001600160a01b031980831682178455936001600160a01b03939290919084167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08480a3613519818101906001600160401b038211838310176100a5579082916106a08339039082f09081156100995750169060015416176001556040516105e190816100bf8239f35b604051903d90823e3d90fd5b634e487b7160e01b84526041600452602484fd5b600080fdfe608060408181526004908136101561001657600080fd5b600092833560e01c908163014812a2146104da5750806318cf6f4214610473578063389dee181461044a578063715018a6146103ed5780638667f619146101f85780638da5cb5b146101cc578063e2be1a081461014a5763f2fde38b1461007c57600080fd5b34610146576020366003190112610146576001600160a01b03823581811693919290849003610142576100ad610532565b83156100f05750506000548260018060a01b0319821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8480fd5b8280fd5b5090346101465760203660031901126101465780356001600160a01b03811692908390036101c85761017a610532565b82156101bb575050600180546001600160a01b031916821790557fe329ca164c11428fa5ee865054c08ccee6f2d38eda61e9e6a35b3081a472daed8280a280f35b51637827912560e01b8152fd5b8380fd5b8382346101f457816003193601126101f457905490516001600160a01b039091168152602090f35b5080fd5b508290346101f457600319906060368301126101465767ffffffffffffffff84358181116101425761022d90369087016104ff565b91906024358281116103e95761024690369089016104ff565b95906044358481116103e55761025f9036908b016104ff565b600154608881901c62ffffff16763d602d80600a3d3981f3363d3d373d3d3d363d73000000178b5260781b6001600160781b0319166e5af43d82803e903d91602b57fd5bf3176020526001600160a01b039890929089603760098df016998a156103a95760025416958a3b156103a557938b9693610313610322948f979461030360a09a968f519e8f9c8d9c8d6329fab88760e21b90528d015260a48c019161058a565b91868a84030160248b015261058a565b9286840301604487015261058a565b903360648401526084830152038183885af1801561039b57610371575b5050602093505191817f0c069e30a19668076937a9266318f1876e9c7dabdae788aaad8f5c73599aea89339280a38152f35b81949294116103885760209450835291848061033f565b634e487b7160e01b825260418552602482fd5b83513d87823e3d90fd5b8b80fd5b895162461bcd60e51b81526020818f01526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606490fd5b8880fd5b8680fd5b8334610447578060031936011261044757610406610532565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b8382346101f457816003193601126101f45760025490516001600160a01b039091168152602090f35b5050346101f45760203660031901126101f457356001600160a01b038116908190036101f4576104a1610532565b600280546001600160a01b031916821790557feedfae894237292077aa1e4fcca7f9a0a2aabeda165c2ff69a08cfd365d7c9eb8280a280f35b8490346101f457816003193601126101f4576001546001600160a01b03168152602090f35b9181601f8401121561052d5782359167ffffffffffffffff831161052d576020838186019501011161052d57565b600080fd5b6000546001600160a01b0316330361054657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b908060209392818452848401376000828201840152601f01601f191601019056fea26469706673582212202c39113f71e37d7694680563bbcddaf4b40177f6c8604ca920efaf328fb3058c64736f6c6343000812003360808060405234620000c6576000549060ff8260081c1662000074575060ff8082160362000038575b60405161344d9081620000cc8239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e146124a657806301ffc9a7146123ec57806306fdde031461235a5780630de54ba0146122d65780630e89341c146121545780631542bb9514611ec957806318e97fd114611d465780632a55205a14611c985780632baf2acb14611c275780632eb2c2d61461185f5780633512639c146117df5780633a3d146f1461179f5780633ebc82c51461176657806340c1a064146117315780634e1273f4146115935780634f558e79146115655780636b20c4541461131d578063715018a6146112c0578063894ba833146112715780638da5cb5b1461124857806395d89b4114611175578063a22cb4651461109e578063a7eae21c146109f3578063bd85b039146109c7578063c33ae88f1461099a578063cfdbf2541461097e578063e2200a0b146108ad578063e27a41bf1461085d578063e985e9c514610807578063ee070805146107e3578063f242432a1461044d578063f2fde38b146103c0578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101636020526020604060002054604051908152f35b600080fd5b346101be576101d136612626565b6001600160a01b0390921691903383148015610397575b6101f190612904565b8215926101fe8415612c1e565b61020782612bf9565b9161021184612bf9565b9460006040516102208161254e565b52610343575b60005b83518110156102c45761023c81856128f0565b5161024782886128f0565b51908060005260fb602081815260406000205492848410610280579061027b959493929160005252036040600020556128be565b610229565b60405162461bcd60e51b815260048101839052602860248201526000805160206133f8833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612c76565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a461034160405161254e565b005b929060005b835181101561038f578061035f61038a92886128f0565b5161036a82876128f0565b5160005260fb6020526103836040600020918254612a20565b90556128be565b610348565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103d96124cd565b6103e1612798565b6001600160a01b038116156103f957610341906127f0565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be576104666124cd565b61046e6124e3565b90608480356001600160401b0381116101be5761048f903690600401612719565b6001600160a01b039190838316331480156107b8575b6104ae90612904565b828516156104bc8115612967565b6104c7604435612bf9565b6104d2606435612bf9565b9185871615610778575b6106ca575b505060443560005260209460978652604060002084861660005286526040600020546105116064358210156129c1565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061055c6064358254612a20565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b6105a357005b60a060006105ed958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a483019061258a565b0393165af16000918161069b575b5061067157505060019061060d612b18565b6308c379a01461063c575b5061061f57005b60405162461bcd60e51b81528061063860048201612ba4565b0390fd5b610644612b36565b90816106505750610618565b61063860405192839262461bcd60e51b84526004840152602483019061258a565b6001600160e01b0319161490506103415760405162461bcd60e51b81528061063860048201612acf565b6106bc919250843d86116106c3575b6106b48183612569565b810190612aaf565b90846105fb565b503d6106aa565b92959194909360005b8451811015610769576106e681866128f0565b51906106f281886128f0565b518260005260fb602052604060002054818110610726576107219360005260fb602052036040600020556128be565b6106d3565b60405162461bcd60e51b815260206004820152602860248201526000805160206133f8833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104e1565b959260009794919592975b86518110156107aa578061079a6107a5928b6128f0565b5161036a828a6128f0565b610783565b5092959691949093966104dc565b5082841660005260986020526040600020336000526020526104ae60ff6040600020541690506104a5565b346101be5760003660031901126101be57602060ff61016154166040519015158152f35b346101be5760403660031901126101be576108206124cd565b6108286124e3565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be57610876612798565b60ff610161541661089b576101675461034190600435906001600160a01b03166132ed565b604051637abbf1c960e01b8152600490fd5b346101be5760403660031901126101be576004356108c96124e3565b906108d2612798565b60ff610161541661089b578060005261016360205260ff6002604060002001541615610966576001600160a01b0382161561095457806000526101696020526040600020549160648302928084046064149015171561093e576001600160601b03610341931691613240565b634e487b7160e01b600052601160045260246000fd5b604051637827912560e01b8152600490fd5b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760003660031901126101be57602060405160648152f35b346101be5760203660031901126101be576004356000526101666020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be57610a239036906004016125f9565b906024356001600160401b0381116101be57610a439036906004016125f9565b6044356001600160401b0381116101be57610a629036906004016125f9565b90929091906064356001600160a01b03811690036101be57608435956001600160a01b03871687036101be576000549560ff8760081c161596878098611091575b801561107a575b1561101e5760ff1981166001176000558761100c575b506064356001600160a01b031615610954576001600160401b038211610e14578190610aee61015f546124f9565b601f8111610f9e575b50600090601f8311600114610f1557600092610f0a575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610e1457610b3f610160546124f9565b601f8111610ea8575b50600090601f8311600114610e3557610bb39493929160009183610e2a575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ba360ff60005460081c16610b9e81612d22565b612d22565b610bac336127f0565b36916126d3565b91610bc960ff60005460081c16610b9e81612d22565b82516001600160401b038111610e1457610be46099546124f9565b601f8111610daf575b506020601f8211600114610d485781929394600092610d3d575b50508160011b916000199060031b1c1916176099555b610c3b60ff60005460081c16610c3281612d22565b610b9e81612d22565b61016780546001600160a01b0319166064356001600160a01b0316179055600a610168556040516103e890602090610c7281612533565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610ce5575b50610ca76064356127f0565b610cad57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101656020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610c9b565b015190508480610c07565b601f198216906099600052806000209160005b818110610d9757509583600195969710610d7e575b505050811b01609955610c1d565b015160001960f88460031b161c19169055848080610d70565b9192602060018192868b015181550194019201610d5b565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610e0a575b601f0160051c01905b818110610dfe5750610bed565b60008155600101610df1565b9091508190610de8565b634e487b7160e01b600052604160045260246000fd5b013590508780610b67565b61016060005260206000209160005b601f1985168110610e905750918391600193610bb3979695601f19811610610e76575b505050811b0161016055610b7e565b0135600019600384901b60f8161c19169055878080610e67565b90926020600181928686013581550194019101610e44565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610f03575b601f830160051c82018110610ef7575050610b48565b60008155600101610ee1565b5080610ee1565b013590508880610b0e565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610f86576001945083601f19811610610f6c575b505050811b0161015f55610b25565b0135600019600384901b60f8161c19169055888080610f5d565b81810135835560209485019460019093019201610f42565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510611005575b90849392915b601f830160051c82018110610ff6575050610af7565b60008155859450600101610fe0565b5080610fda565b61ffff19166101011760005588610ac0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610aaa5750600160ff821614610aaa565b50600160ff821610610aa3565b346101be576110ac366125ca565b6001600160a01b039091169033821461111e573360005260986020526040600020826000526020526110ee8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be5760405160009061016080549061119b826124f9565b90818452600192838116908160001461122057506001146111df575b6111db846111c781880382612569565b60405191829160208352602083019061258a565b0390f35b90935060005260209283600020916000925b82841061120d57505050816111db936111c792820101936111b7565b80548585018701529285019281016111f1565b6111db96506111c79450602092508593915060ff191682840152151560051b820101936111b7565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be5761128a612798565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760003660031901126101be576112d9612798565b603380546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101be5760603660031901126101be576113366124cd565b6024906001600160401b039082358281116101be576113599036906004016126b5565b9160449081359081116101be576113749036906004016126b5565b6001600160a01b0390921692338414801561153c575b61139390612904565b831561139f8115612c1e565b6113ac8251855114612a2d565b60006040516113ba8161254e565b52611504575b60005b815181101561145c576113d681836128f0565b516113e182866128f0565b51908060005260fb60208181526040600020549284841061141a5790611415959493929160005252036040600020556128be565b6113c3565b60405162461bcd60e51b8152600481018390526028818d01526000805160206133f8833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b82518110156114d157806114796114cc92856128f0565b5161148482876128f0565b51908060005260976020908082526040600020876000528252604060002054926114b085851015612c76565b60005281526040600020908660005252036040600020556128be565b611462565b50906000805160206133b88339815191526114f6600094604051918291339583612a8a565b0390a461034160405161254e565b9260009491945b8451811015611532578061152261152d92866128f0565b5161036a82886128f0565b61150b565b50929390936113c0565b5083600052609860205260406000203360005260205261139360ff60406000205416905061138a565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be578160040135906115d082612650565b926115de6040519485612569565b82845260209260248486019160051b830101913683116101be57602401905b828210611712575050506024359081116101be5761161f9036906004016126b5565b82518151036116bb5782519261163484612650565b936116426040519586612569565b808552611651601f1991612650565b01368486013760005b81518110156116a45761169f9061168f6001600160a01b0361167c83866128f0565b511661168883876128f0565b5190612839565b61169982886128f0565b526128be565b61165a565b5050506111db604051928284938452830190612764565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115fd565b346101be5760203660031901126101be57600435600052610164602052602060018060a01b0360406000205416604051908152f35b346101be5760203660031901126101be5761177f6124cd565b611787612798565b60ff610161541661089b5761016854610341916132ed565b346101be5760203660031901126101be576001600160a01b036117c06124cd565b16600052610165602052602060ff604060002054166040519015158152f35b346101be5760603660031901126101be576117f86124cd565b6001600160401b03906024358281116101be57611819903690600401612734565b926044359081116101be57611832903690600401612734565b919060ff610161541661089b5761185161185992610341963691612667565b923691612667565b91612d82565b346101be5760031960a0368201126101be576118796124cd565b906118826124e3565b6044908135926001600160401b03938481116101be576118a69036906004016126b5565b606480358681116101be576118bf9036906004016126b5565b9460849687359081116101be576118da903690600401612719565b6001600160a01b039489861633148015611bfc575b6118f890612904565b6119058551895114612a2d565b858716156119138115612967565b868b1615611bb9575b611b04575b60005b85518110156119b9578061193b6119b492886128f0565b518c611947838d6128f0565b519180600052609790838c6020948486526040600020828216600052865260406000205491611978848410156129c1565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c16600052526103836040600020918254612a20565b611924565b50888a989796949789604051886000805160206133b883398151915289808d16941692806119e987339583612a8a565b0390a4873b6119f457005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a48701611a2891612764565b90848783030190870152611a3b91612764565b918483030190840152611a4d9161258a565b03921691815a602094600091f160009181611ae4575b50611abc5750506001611a74612b18565b6308c379a014611a85575b61061f57005b611a8d612b36565b80611a985750611a7f565b60405162461bcd60e51b81526020600482015290819061063890602483019061258a565b6001600160e01b031916146103415760405162461bcd60e51b81528061063860048201612acf565b611afd91925060203d81116106c3576106b48183612569565b9083611a63565b9796949060009993999692965b8551811015611ba957611b2481876128f0565b51611b2f82896128f0565b519080600052602060fb815260406000205491838310611b6857611b639493929160fb9160005252036040600020556128be565b611b11565b508b9067616c537570706c7960c01b8f6000805160206133f88339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b5090949697989298959195611921565b99969498959392919060005b8a51811015611bed57808b61036a82611be1611be8958f6128f0565b51926128f0565b611bc5565b5090919293959894969961191c565b50858a1660005260986020526040600020336000526020526118f860ff6040600020541690506118ef565b346101be57611c3536612626565b9160ff610161541661089b57602092611c909160405190611c5582612533565b6001825285368184013760405192611c6c84612533565b6001845286368186013785611c80846128cd565b52611c8a846128cd565b52612d82565b604051908152f35b346101be5760403660031901126101be5760243560043560005261012e60205260406000209060405191611ccb83612533565b546001600160a01b0380821680855260a09290921c6020850152929015611d23575b6001600160601b036020820151169182810292818404149015171561093e57604092612710915116918351928352046020820152f35b50604051611d3081612533565b61012d54838116825260a01c6020820152611ced565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611d7a9036906004016125f9565b9190611d84612798565b60ff610161541661089b57836000526101639160209280845260ff6002604060002001541615611eb057856000528352600180604060002001918511610e1457611dd885611dd284546124f9565b84612cce565b6000601f8611600114611e39579185806000805160206133d883398151915297969593611e2995600093611e2e575b501b906000198760031b1c19161790555b6040519383859485528401916131c0565b0390a2005b85013592508a611e07565b601f1986169083600052856000209160005b818110611e9b57509187969593916000805160206133d883398151915298611e29969410611e81575b505085811b019055611e18565b840135600019600389901b60f8161c191690558880611e74565b86830135845592840192918701918701611e4b565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576001600160401b036004358181116101be57611efa9036906004016125f9565b6044356001600160a01b0381169190602435908381036101be57611f1c612798565b60ff610161541661089b5781156121425783156109545761016294611f4186546128be565b809655604051966060880188811082821117610e1457604052838852611f683686846126d3565b9760209889820190815260408201906001938483528a6000526101638c526040600020935184558484019151948551918211610e1457611fb282611fac85546124f9565b85612cce565b8c8d601f84116001146120d05750918080926002969594611ffd996000946120c5575b50501b916000199060031b1c19161790555b51151591019060ff801983541691151516179055565b60008681526101648852604080822080546001600160a01b03191633179055610168546101698a529120819055606480820294918015908604909114171561093e576120767fc07473765c308da8ff95c4974c60af7332d93777f002550fa063b77064a6f7b2936001600160601b038996169086613240565b836000805160206133d88339815191526040518a81528061209a8c82018a886131c0565b0390a26120ba604051928392835260408a840152339660408401916131c0565b0390a4604051908152f35b015192503880611fd5565b9193949596601f1984168660005283600020936000905b82821061212b57505091611ffd989795939185600298969410612112575b505050811b019055611fe7565b015160001960f88460031b161c191690558e8080612105565b8088869782949787015181550196019401906120e7565b604051631dd0e19360e01b8152600490fd5b346101be576020806003193601126101be57600435600052610163815260018060406000200190826040518093600090805490612190826124f9565b808552918681169081156122b55750600114612274575b50506121b592500383612569565b8151156121d35750905b6111db60405192828493845283019061258a565b90506040519060009083609954916121ea836124f9565b9283865285828216918260001461225457505060011461221a575b50505081612214910382612569565b906121bf565b91909250609960005282600020916000925b82841061224157505050820101818385612205565b805486850186015292840192810161222c565b60ff19168482015293151560051b84019092019350859150869050612205565b9091506000528260002090846000925b82841061229e57505050916121b5928201018592876121a7565b805488850187015287945092850192869101612284565b9150506121b594925060ff191682840152151560051b8201018592876121a7565b346101be576122e4366125ca565b906122ed612798565b60ff610161541661089b576001600160a01b03169081156109545760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b59183600052610165825261234f8160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be5760405160009061015f805490612380826124f9565b90818452600192838116908160001461122057506001146123ab576111db846111c781880382612569565b90935060005260209283600020916000925b8284106123d957505050816111db936111c792820101936111b7565b80548585018701529285019281016123bd565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be57602090635a08b45360e11b8114908115612495575b8115612438575b506040519015158152f35b63152a902d60e11b811491508115612452575b508261242d565b636cdb3d1360e11b811491508115612484575b8115612473575b508261244b565b6301ffc9a760e01b1490508261246c565b6303a24d0760e21b81149150612465565b631030681960e21b81149150612426565b346101be5760403660031901126101be576020611c906124c46124cd565b60243590612839565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c92168015612529575b602083101461251357565b634e487b7160e01b600052602260045260246000fd5b91607f1691612508565b604081019081106001600160401b03821117610e1457604052565b602081019081106001600160401b03821117610e1457604052565b90601f801991011681019081106001600160401b03821117610e1457604052565b919082519283825260005b8481106125b6575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612595565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610e145760051b60200190565b929161267282612650565b916126806040519384612569565b829481845260208094019160051b81019283116101be57905b8282106126a65750505050565b81358152908301908301612699565b9080601f830112156101be578160206126d093359101612667565b90565b9291926001600160401b038211610e1457604051916126fc601f8201601f191660200184612569565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be578160206126d0933591016126d3565b9181601f840112156101be578235916001600160401b0383116101be576020808501948460051b0101116101be57565b90815180825260208080930193019160005b828110612784575050505090565b835185529381019392810192600101612776565b6033546001600160a01b031633036127ac57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561286657600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b600019811461093e5760010190565b8051156128da5760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156128da5760209160051b010190565b1561290b57565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561296e57565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b156129c857565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9190820180921161093e57565b15612a3457565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612aa16126d093604084526040840190612764565b916020818403910152612764565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612b2557565b905060046000803e60005160e01c90565b600060443d106126d057604051600319913d83016004833e81516001600160401b03918282113d602484011117612b9357818401948551938411612b9b573d85010160208487010111612b9357506126d092910160200190612569565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612c0682612533565b6001825260203681840137612c1a826128cd565b5290565b15612c2557565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612c7d57565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612cdc57505050565b600091825260208220906020601f850160051c83019410612d18575b601f0160051c01915b828110612d0d57505050565b818155600101612d01565b9092508290612cf8565b15612d2957565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b0380831692919083156109545760335416331415806131a6575b61318e5783511561317c57835181510361316a5783519260649384811161314c575060015b8551811015612e3a57612ddd81876128f0565b516000198201828111612e2557612df490886128f0565b511015612e0357600101612dca565b612e0f602491876128f0565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612f2457612e5886846128f0565b519586600052610163602081815260409060ff60028360002001541615612f0c57612e8384896128f0565b5115612efb578960005261016690818152612ead8360002054612ea6878c6128f0565b5190612a20565b938b60005281528260002054808511612ed9575060009a8b525290972096909655600190950194612e45565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612f3a8761254e565b60008752612f4b8651855114612a2d565b60005b8651811015612f8d5780612f65612f8892876128f0565b51612f70828a6128f0565b5160005260fb60205261038388600020918254612a20565b612f4e565b5090919560005b8651811015612fde5780612fab612fd992876128f0565b51612fb6828a6128f0565b5160005260206097815288600020908c6000525261038388600020918254612a20565b612f94565b50919690939581600088516000805160206133b88339815191523391806130068a8d83612a8a565b0390a43b613017575b505050505050565b61306a600060209461307989519788968795869461305763bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a4880190612764565b9060031994858884030190880152612764565b9184830301608485015261258a565b03925af16000918161312c575b506131005750506001613097612b18565b6308c379a0146130ca575b6130b357505b38808080808061300f565b5162461bcd60e51b81528061063860048201612ba4565b6130d2612b36565b806130dd57506130a2565b825162461bcd60e51b81526020600482015290819061063890602483019061258a565b6001600160e01b0319160361311557506130a8565b5162461bcd60e51b81528061063860048201612acf565b61314591925060203d81116106c3576106b48183612569565b9038613086565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016560205260ff6040600020541615612da5565b908060209392818452848401376000828201840152601f01601f1916010190565b156131e857565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b916001600160601b0316906132596127108311156131e1565b6001600160a01b039081169283156132a8576040519361327885612533565b84526020808501938452600091825261012e9052604090209251915160a01b6001600160a01b0319169116179055565b60405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b6001600160a01b039081169190821561095457606482116133975760018060a01b0319926101678185825416179055826101685560648302928084046064149015171561093e57613385906001600160601b0384166133506127108211156131e1565b602060405161335e81612533565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a264697066735822122026b8813d0baac9420a99d9afd9e56ef504790238a57fbfb1fe400c37ea7dfbfc64736f6c63430008120033","sourceMap":"542:1772:222:-:0;;;;;;;2518:6:88;542:1772:222;;719:10:113;-1:-1:-1;;;;;;542:1772:222;;;;;;;;-1:-1:-1;;;;;542:1772:222;2518:6:88;542:1772:222;;719:10:113;542:1772:222;;2566:40:88;2518:6;;2566:40;929:17:222;;;;;-1:-1:-1;;;;;929:17:222;;;;;;;;;;;;;;;;;;;;;;;542:1772;;;;;;;;;;;;;;;;;;929:17;542:1772;;;;;;;;;;929:17;-1:-1:-1;;;542:1772:222;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060408181526004908136101561001657600080fd5b600092833560e01c908163014812a2146104da5750806318cf6f4214610473578063389dee181461044a578063715018a6146103ed5780638667f619146101f85780638da5cb5b146101cc578063e2be1a081461014a5763f2fde38b1461007c57600080fd5b34610146576020366003190112610146576001600160a01b03823581811693919290849003610142576100ad610532565b83156100f05750506000548260018060a01b0319821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8480fd5b8280fd5b5090346101465760203660031901126101465780356001600160a01b03811692908390036101c85761017a610532565b82156101bb575050600180546001600160a01b031916821790557fe329ca164c11428fa5ee865054c08ccee6f2d38eda61e9e6a35b3081a472daed8280a280f35b51637827912560e01b8152fd5b8380fd5b8382346101f457816003193601126101f457905490516001600160a01b039091168152602090f35b5080fd5b508290346101f457600319906060368301126101465767ffffffffffffffff84358181116101425761022d90369087016104ff565b91906024358281116103e95761024690369089016104ff565b95906044358481116103e55761025f9036908b016104ff565b600154608881901c62ffffff16763d602d80600a3d3981f3363d3d373d3d3d363d73000000178b5260781b6001600160781b0319166e5af43d82803e903d91602b57fd5bf3176020526001600160a01b039890929089603760098df016998a156103a95760025416958a3b156103a557938b9693610313610322948f979461030360a09a968f519e8f9c8d9c8d6329fab88760e21b90528d015260a48c019161058a565b91868a84030160248b015261058a565b9286840301604487015261058a565b903360648401526084830152038183885af1801561039b57610371575b5050602093505191817f0c069e30a19668076937a9266318f1876e9c7dabdae788aaad8f5c73599aea89339280a38152f35b81949294116103885760209450835291848061033f565b634e487b7160e01b825260418552602482fd5b83513d87823e3d90fd5b8b80fd5b895162461bcd60e51b81526020818f01526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606490fd5b8880fd5b8680fd5b8334610447578060031936011261044757610406610532565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b8382346101f457816003193601126101f45760025490516001600160a01b039091168152602090f35b5050346101f45760203660031901126101f457356001600160a01b038116908190036101f4576104a1610532565b600280546001600160a01b031916821790557feedfae894237292077aa1e4fcca7f9a0a2aabeda165c2ff69a08cfd365d7c9eb8280a280f35b8490346101f457816003193601126101f4576001546001600160a01b03168152602090f35b9181601f8401121561052d5782359167ffffffffffffffff831161052d576020838186019501011161052d57565b600080fd5b6000546001600160a01b0316330361054657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b908060209392818452848401376000828201840152601f01601f191601019056fea26469706673582212202c39113f71e37d7694680563bbcddaf4b40177f6c8604ca920efaf328fb3058c64736f6c63430008120033","sourceMap":"542:1772:222:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:222;;;;-1:-1:-1;;;;;542:1772:222;;;;;;;;;;;;;;1063:62:88;;:::i;:::-;2162:22;;542:1772:222;;;;;;;;;;;;;;;;;;;2566:40:88;542:1772:222;2566:40:88;;542:1772:222;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;542:1772:222;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:222;;;;;;-1:-1:-1;;;;;542:1772:222;;;;;;;;;1063:62:88;;:::i;:::-;1161:26:222;;1157:63;;-1:-1:-1;;542:1772:222;;;-1:-1:-1;;;;;;542:1772:222;;;;;1338:32;;;;542:1772;;1157:63;542:1772;-1:-1:-1;;;1196:24:222;;;542:1772;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:1772:222;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;2034:11;542:1772;1101:558:92;;;;;;;;;;;;-1:-1:-1;;;;;;1101:558:92;;;542:1772:222;1101:558:92;-1:-1:-1;;;;;542:1772:222;;;;;1101:558:92;;;;542:1772:222;1676:22:92;;;542:1772:222;;2207:13;542:1772;;2145:76;;;;;;542:1772;;;;;;;;;;;;;;;;;;;;;;;;;2145:76;;;;542:1772;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;2195:10;;542:1772;;;;;;;;2145:76;;;;;;;;;;;;542:1772;;;;;;;2195:10;;2237:45;2195:10;2237:45;;;542:1772;;;2145:76;542:1772;;;;;;;;;;;;2145:76;;;;;542:1772;-1:-1:-1;;;542:1772:222;;;;;;;;2145:76;542:1772;;;;;;;;;2145:76;542:1772;;;;;;-1:-1:-1;;;542:1772:222;;;;;;;;;;;;-1:-1:-1;;;542:1772:222;;;;;;;;;;;;;;;;;;;;;;;;;;;;1063:62:88;;:::i;:::-;542:1772:222;;-1:-1:-1;;;;;;542:1772:222;;;;;;-1:-1:-1;;;;;542:1772:222;2566:40:88;542:1772:222;;2566:40:88;542:1772:222;;;;;;;;;;;;;;;;;;;665:37;542:1772;;;-1:-1:-1;;;;;542:1772:222;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:222;;;;;-1:-1:-1;;;;;542:1772:222;;;;;;;;1063:62:88;;:::i;:::-;1600:30:222;542:1772;;-1:-1:-1;;;;;;542:1772:222;;;;;1645:36;;;;542:1772;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:1772:222;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;1359:130:88;1273:6;542:1772:222;-1:-1:-1;;;;;542:1772:222;719:10:113;1422:23:88;542:1772:222;;1359:130:88:o;542:1772:222:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;542:1772:222;;;;;;;;-1:-1:-1;;542:1772:222;;;;:::o","linkReferences":{}},"methodIdentifiers":{"createRareERC1155Contract(string,string,string)":"8667f619","defaultMinter()":"389dee18","owner()":"8da5cb5b","rareERC1155()":"014812a2","renounceOwnership()":"715018a6","setDefaultMinter(address)":"18cf6f42","setRareERC1155(address)":"e2be1a08","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"defaultMinter\",\"type\":\"address\"}],\"name\":\"DefaultMinterUpdated\",\"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\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"RareERC1155ContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rareERC1155\",\"type\":\"address\"}],\"name\":\"RareERC1155Updated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createRareERC1155Contract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultMinter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rareERC1155\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"setDefaultMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rareERC1155\",\"type\":\"address\"}],\"name\":\"setRareERC1155\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Deploys EIP-1167 minimal proxies initialized with the caller as collection owner.\",\"events\":{\"DefaultMinterUpdated(address)\":{\"params\":{\"defaultMinter\":\"New default minter address. Zero address disables default minter approval.\"}},\"RareERC1155ContractCreated(address,address)\":{\"params\":{\"contractAddress\":\"Address of the newly created ERC1155 clone.\",\"owner\":\"Initial owner of the clone.\"}},\"RareERC1155Updated(address)\":{\"params\":{\"rareERC1155\":\"New ERC1155 implementation address.\"}}},\"kind\":\"dev\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"params\":{\"_baseURI\":\"Base URI used by the collection when a token id has no token-specific URI.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"},\"returns\":{\"_0\":\"Address of the newly created ERC1155 clone.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDefaultMinter(address)\":{\"params\":{\"_defaultMinter\":\"Address approved to mint on newly created clones, or zero address for none.\"}},\"setRareERC1155(address)\":{\"params\":{\"_rareERC1155\":\"Address of the replacement implementation.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"defaultMinter\":{\"return\":\"Default minter address. Zero address means no default minter.\",\"returns\":{\"_0\":\"Default minter address. Zero address means no default minter.\"}},\"rareERC1155\":{\"return\":\"ERC1155 implementation address.\",\"returns\":{\"_0\":\"ERC1155 implementation address.\"}}},\"title\":\"RareERC1155ContractFactory\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an implementation address is the zero address.\"}]},\"events\":{\"DefaultMinterUpdated(address)\":{\"notice\":\"Emitted when the owner changes the default minter for new clones.\"},\"RareERC1155ContractCreated(address,address)\":{\"notice\":\"Emitted when the factory creates and initializes a collection clone.\"},\"RareERC1155Updated(address)\":{\"notice\":\"Emitted when the owner changes the implementation cloned by the factory.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Deploys the initial ERC1155 implementation used for clones.\"},\"createRareERC1155Contract(string,string,string)\":{\"notice\":\"Creates a new initialized ERC1155 collection clone.\"},\"defaultMinter()\":{\"notice\":\"Returns the optional minter approved on each newly created collection.\"},\"rareERC1155()\":{\"notice\":\"Returns the ERC1155 implementation address cloned by the factory.\"},\"setDefaultMinter(address)\":{\"notice\":\"Updates the optional minter approved during clone initialization.\"},\"setRareERC1155(address)\":{\"notice\":\"Updates the ERC1155 implementation address cloned by future factory calls.\"}},\"notice\":\"Clone factory for RARE Protocol ERC1155 collections.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/RareERC1155ContractFactory.sol\":\"RareERC1155ContractFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7\",\"dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol\":{\"keccak256\":\"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98\",\"dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8\",\"dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol\":{\"keccak256\":\"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9\",\"dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0x923b9774b81c1abfb992262ae7763b6e6de77b077a7180d53c6ebb7b1c8bd648\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53445dc0431f9b45c06f567c6091da961d4087bec0010cca5bd62100fa624a38\",\"dweb:/ipfs/QmNvBYpBv183czrAqNXr76E8M3LF93ouAJFeAcHfb59Rcx\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0x0e1fe02da411a6293004e5ee85bdd1facef5f1b6ef2aab8d36c73f0d77b448db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5bfd474499866fe24ac6b88eb92969395baf1e644a0f0b0054e66f9ae90c00e\",\"dweb:/ipfs/QmS5j268UauZARToNJazEBJDWvWM35j8kHx779PF3c5rib\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e\",\"dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC\"]},\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":{\"keccak256\":\"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179\",\"dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb\"]},\"src/token/ERC1155/RareERC1155.sol\":{\"keccak256\":\"0x998a8406854565bcdf650cf62d5f6aac5b0b7a52d1f3204b58e304c7d1f73f00\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48980945ff2d2aba042abd5d0eabee6c80026ad2361aaab7bb35e7c4154a427a\",\"dweb:/ipfs/QmXdQTaFPa7WZPc1JnrRuwNwQ7U49raHUqSSdduzpPbLdt\"]},\"src/token/ERC1155/RareERC1155ContractFactory.sol\":{\"keccak256\":\"0x1d75d40825831b017450e31e6b118bd27746a014099c3a3900b33f7e6c035036\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9584f968656c2d2c73993d8f3f4b2ae82dfb5788329544d1c620826d2d10b951\",\"dweb:/ipfs/QmT3VCoEuHKcBaVU3P6bRU9aroGmEQgjXB3QB6Liejdrjt\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"defaultMinter","type":"address","indexed":true}],"type":"event","name":"DefaultMinterUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"RareERC1155ContractCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"rareERC1155","type":"address","indexed":true}],"type":"event","name":"RareERC1155Updated","anonymous":false},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createRareERC1155Contract","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultMinter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rareERC1155","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultMinter"},{"inputs":[{"internalType":"address","name":"_rareERC1155","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRareERC1155"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"createRareERC1155Contract(string,string,string)":{"params":{"_baseURI":"Base URI used by the collection when a token id has no token-specific URI.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."},"returns":{"_0":"Address of the newly created ERC1155 clone."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setDefaultMinter(address)":{"params":{"_defaultMinter":"Address approved to mint on newly created clones, or zero address for none."}},"setRareERC1155(address)":{"params":{"_rareERC1155":"Address of the replacement implementation."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Deploys the initial ERC1155 implementation used for clones."},"createRareERC1155Contract(string,string,string)":{"notice":"Creates a new initialized ERC1155 collection clone."},"defaultMinter()":{"notice":"Returns the optional minter approved on each newly created collection."},"rareERC1155()":{"notice":"Returns the ERC1155 implementation address cloned by the factory."},"setDefaultMinter(address)":{"notice":"Updates the optional minter approved during clone initialization."},"setRareERC1155(address)":{"notice":"Updates the ERC1155 implementation address cloned by future factory calls."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/RareERC1155ContractFactory.sol":"RareERC1155ContractFactory"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol":{"keccak256":"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856","urls":["bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7","dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"keccak256":"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b","urls":["bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce","dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol":{"keccak256":"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8","urls":["bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83","dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol":{"keccak256":"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7","urls":["bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98","dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"keccak256":"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e","urls":["bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8","dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"keccak256":"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448","urls":["bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9","dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol":{"keccak256":"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f","urls":["bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9","dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a","urls":["bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7","dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0x923b9774b81c1abfb992262ae7763b6e6de77b077a7180d53c6ebb7b1c8bd648","urls":["bzz-raw://53445dc0431f9b45c06f567c6091da961d4087bec0010cca5bd62100fa624a38","dweb:/ipfs/QmNvBYpBv183czrAqNXr76E8M3LF93ouAJFeAcHfb59Rcx"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0x0e1fe02da411a6293004e5ee85bdd1facef5f1b6ef2aab8d36c73f0d77b448db","urls":["bzz-raw://c5bfd474499866fe24ac6b88eb92969395baf1e644a0f0b0054e66f9ae90c00e","dweb:/ipfs/QmS5j268UauZARToNJazEBJDWvWM35j8kHx779PF3c5rib"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052","urls":["bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e","dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC"],"license":"MIT"},"src/token/ERC1155/IRareERC1155ContractFactory.sol":{"keccak256":"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63","urls":["bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179","dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb"],"license":"MIT"},"src/token/ERC1155/RareERC1155.sol":{"keccak256":"0x998a8406854565bcdf650cf62d5f6aac5b0b7a52d1f3204b58e304c7d1f73f00","urls":["bzz-raw://48980945ff2d2aba042abd5d0eabee6c80026ad2361aaab7bb35e7c4154a427a","dweb:/ipfs/QmXdQTaFPa7WZPc1JnrRuwNwQ7U49raHUqSSdduzpPbLdt"],"license":"MIT"},"src/token/ERC1155/RareERC1155ContractFactory.sol":{"keccak256":"0x1d75d40825831b017450e31e6b118bd27746a014099c3a3900b33f7e6c035036","urls":["bzz-raw://9584f968656c2d2c73993d8f3f4b2ae82dfb5788329544d1c620826d2d10b951","dweb:/ipfs/QmT3VCoEuHKcBaVU3P6bRU9aroGmEQgjXB3QB6Liejdrjt"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":222} \ No newline at end of file diff --git a/abis/RareERC1155Marketplace.json b/abis/RareERC1155Marketplace.json new file mode 100644 index 0000000..8a333e6 --- /dev/null +++ b/abis/RareERC1155Marketplace.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_CHECKOUT_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"acceptOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"cancelOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkout","inputs":[{"name":"_items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","components":[{"name":"summary","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","components":[{"name":"filledCount","type":"uint256","internalType":"uint256"},{"name":"skippedCount","type":"uint256","internalType":"uint256"},{"name":"ethSpent","type":"uint256","internalType":"uint256"},{"name":"ethRefunded","type":"uint256","internalType":"uint256"}]},{"name":"items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","components":[{"name":"itemIndex","type":"uint256","internalType":"uint256"},{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"filled","type":"bool","internalType":"bool"},{"name":"failureStage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","internalType":"bytes4"},{"name":"failureData","type":"bytes","internalType":"bytes"},{"name":"totalPaid","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"payable"},{"type":"function","name":"getDirectSaleConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleConfig","components":[{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getERC1155ApprovalManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getMarketConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct MarketConfigV2.Config","components":[{"name":"networkBeneficiary","type":"address","internalType":"address"},{"name":"marketplaceSettings","type":"address","internalType":"contract IMarketplaceSettings"},{"name":"spaceOperatorRegistry","type":"address","internalType":"contract ISpaceOperatorRegistry"},{"name":"royaltyEngine","type":"address","internalType":"contract IRoyaltyEngineV1"},{"name":"payments","type":"address","internalType":"contract IPayments"},{"name":"approvedTokenRegistry","type":"address","internalType":"contract IApprovedTokenRegistry"},{"name":"stakingSettings","type":"address","internalType":"contract IStakingSettings"},{"name":"stakingRegistry","type":"address","internalType":"contract IRareStakingRegistry"},{"name":"erc20ApprovalManager","type":"address","internalType":"contract IERC20ApprovalManager"},{"name":"erc721ApprovalManager","type":"address","internalType":"contract IERC721ApprovalManager"}]}],"stateMutability":"view"},{"type":"function","name":"getOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.Offer","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.SalePrice","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getSettlement","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getTokenAllowListConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfig","components":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenMintsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"},{"name":"_marketplaceSettings","type":"address","internalType":"address"},{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"},{"name":"_royaltyEngine","type":"address","internalType":"address"},{"name":"_payments","type":"address","internalType":"address"},{"name":"_approvedTokenRegistry","type":"address","internalType":"address"},{"name":"_stakingSettings","type":"address","internalType":"address"},{"name":"_stakingRegistry","type":"address","internalType":"address"},{"name":"_erc20ApprovalManager","type":"address","internalType":"address"},{"name":"_erc721ApprovalManager","type":"address","internalType":"address"},{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"},{"name":"_settlement","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"makeOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"prepareMintDirectSales","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovedTokenRegistry","inputs":[{"name":"_approvedTokenRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setContractPaused","inputs":[{"name":"_isPaused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC1155ApprovalManager","inputs":[{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20ApprovalManager","inputs":[{"name":"_erc20ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC721ApprovalManager","inputs":[{"name":"_erc721ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketplaceSettings","inputs":[{"name":"_marketplaceSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkBeneficiary","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPayments","inputs":[{"name":"_payments","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyEngine","inputs":[{"name":"_royaltyEngine","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSettlement","inputs":[{"name":"_settlement","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpaceOperatorRegistry","inputs":[{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingRegistry","inputs":[{"name":"_stakingRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingSettings","inputs":[{"name":"_stakingSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenAllowListConfigs","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenMintLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenTxLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeTo","inputs":[{"name":"newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"DirectSettlementCallUnsupported","inputs":[]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SettlementCannotBeZero","inputs":[]},{"type":"error","name":"SettlementDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x60a08060405234620000e157306080526000549060ff8260081c166200008f575060ff8082160362000053575b604051615bd69081620000e78239608051818181610ebd0152818161153b01526137970152f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a1386200002c565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80630a6ce313146102f75780630b800f48146102f2578063176ab440146102ed57806321ede032146102e857806328fbba03146102e35780632c0c49ee146102de5780632c740844146102d95780632f79f335146102d45780633492e5a8146102cf5780633659cfe6146102ca578063369679a4146102c5578063373a9412146102c05780634f1ef286146102bb57806352d1902d146102b6578063552f791d146102b15780635a501f8f146102ac578063614bd944146102a75780636442950e146102a25780636e2f4d8b1461029d578063715018a6146102985780637777e6d7146102935780637f3582301461028e5780638760251a14610289578063882796f1146102845780638da5cb5b1461027f5780638f4e6f371461027a578063a3eaf4d914610275578063af231a5814610270578063b187bd261461026b578063b38df71f14610266578063b8e6b50f14610261578063be5421411461025c578063bf3d90f814610257578063c7c83d1714610252578063c7ec1b981461024d578063cfdbf25414610248578063d7a9fb7c14610243578063d80b23e31461023e578063defad60c14610239578063e3409ce314610234578063e4e87e3b1461022f578063e92f94d11461022a578063f103574414610225578063f2fde38b14610220578063ff3a52d41461021b5763ff5c83a41461021657600080fd5b6132f6565b612f10565b612e7f565b612dac565b612d86565b612cac565b612b98565b612b62565b612a88565b6129af565b612993565b6128bc565b612886565b612816565b6125bc565b612498565b6120e9565b6120b9565b611fee565b611fd2565b611f6f565b611f46565b611ed7565b611ea8565b611dce565b611c96565b611c38565b611b57565b6119ef565b61174f565b611626565b6115e8565b611528565b6114a2565b611189565b6110b8565b610e96565b610dc0565b610c1a565b610b47565b61096c565b610700565b610603565b610521565b610477565b61036b565b6001600160a01b0381160361030d57565b600080fd5b6101443590610320826102fc565b565b6101643590610320826102fc565b3590610320826102fc565b9181601f8401121561030d578235916001600160401b03831161030d576020808501946060850201011161030d57565b608036600319011261030d57600435610383816102fc565b60243561038f816102fc565b60443561039b816102fc565b6064356001600160401b03811161030d57836103bc8492369060040161033b565b90936103c661461d565b6103ce6154a6565b60408051630a6ce31360e01b6020808301919091526001600160a01b03958616602483015295851660448201529390911660648401526080608484015260a4830182905260c48301949293600091905b83831061044e576104418661043c818a03601f198101835282611405565b615439565b5061044c6001606555565b005b84358752848101358782015284820135878301526060968701969094019360019092019161041e565b3461030d5761018036600319011261030d5761044c600435610498816102fc565b6024356104a4816102fc565b6044356104b0816102fc565b6064356104bc816102fc565b6084356104c8816102fc565b60a4356104d4816102fc565b60c435906104e1826102fc565b60e435926104ee846102fc565b61010435946104fc866102fc565b610124359661050a886102fc565b610512610312565b9861051b610322565b9a613961565b3461030d57602036600319011261030d5760043561053e816102fc565b610546613367565b61054f816155b3565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d5760405163ed56be5b60e01b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe576105e5575b50734d41524b4554504c4143455f53455454494e475360601b600080516020615b21833981519152600080a3005b806105f26105f892611314565b8061151d565b386105b7565b613535565b3461030d57602036600319011261030d57600435610620816102fc565b610628613367565b610631816155f2565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d5760405163143df10960e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe576106c1575b506d524f59414c54595f454e47494e4560901b600080516020615b21833981519152600080a3005b806105f26106ce92611314565b38610699565b606090600319011261030d576004356106ec816102fc565b90602435906044356106fd816102fc565b90565b3461030d576020610762610713366106d4565b6001600160a01b0392831660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f86526040808220938252928652828120919093168352602052902090565b54604051908152f35b9181601f8401121561030d578235916001600160401b03831161030d576020808501948460051b01011161030d57565b9060068210156107a85752565b634e487b7160e01b600052602160045260246000fd5b60005b8381106107d15750506000910152565b81810151838201526020016107c1565b906020916107fa815180928185528580860191016107be565b601f01601f1916010190565b9060209182815260c09283820191835193845183830152828501516040908184015283818701516060978891828701520151926080938486015201519660a0908180860152885180975260e0918286019487848a60051b8901019b01996000975b8a891061087d5750505050505050505050505090565b909192939495969798999a9b8a806001928f60df19868303018d525190815181526108b0838301518483019060ff169052565b818c01516001600160a01b0316818d01528187015181880152878201516001600160a01b031688820152818901516001600160a01b0316818a0152818a0151818b01528a8201518b8201526101008083015115159082015261091b610120808401519083019061079b565b610140828101516001600160e01b0319169082015261094b61016080840151906101a080918501528301906107e1565b91610180809101519101529e0199019901979a999896959493929190610867565b60208060031936011261030d576004356001600160401b03811161030d5761099890369060040161076b565b90916040918251936109a98561132c565b8351906109b582611347565b600091828152828582015282868201528460609782858a80950152815201526109dc61461d565b6109e46154a6565b84519263160624f760e11b85850152806044850186602487015252606484019260648260051b8601019783825b848410610a5e57610a5a8a610a458b610a388f61043c8e809203601f198101835282611405565b8051810182019101614c63565b90610a506001606555565b5191829182610806565b0390f35b90919293949599606319888203018b52863560fe1984360301811215610b435789610b316001938d610ad5888596019160ff8335610a9b81613fcb565b168452610abb610aac878501610330565b6001600160a01b031685880152565b610ac6818401610330565b6001600160a01b031690840152565b610af2610ae38a8301610330565b6001600160a01b0316838b0152565b6080808201359083015260a0808201359083015260c08082013590830152610b1f60e09182810190614997565b919092610100809282015201916149cb565b9c919091019701959401929190610a11565b8280fd5b3461030d57602036600319011261030d57600435610b64816102fc565b610b6c613367565b610b758161562b565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d5760405163632c2a3160e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57610c07575b506f5354414b494e475f524547495354525960801b600080516020615b21833981519152600080a3005b806105f2610c1492611314565b38610bdd565b3461030d5760408060031936011261030d576004908135610c3a816102fc565b6024356001600160401b03811161030d57610c58903690850161076b565b929093610c6361461d565b610c6c84615a45565b60015b848110610d37575050506001600160a01b03811660005b838110610c975761044c6001606555565b80610ca6610d2c92868861475c565b356002610ce033610cc984610cba8a614182565b90600052602052604060002090565b9060018060a01b0316600052602052604060002090565b015415610d3157610d00610cfb33610cc984610cba8a614182565b61476c565b83337f46227bd805037a939224e05cd991a64cb464f4b5c5317858af210838e59ce390600080a4614081565b610c86565b50614081565b610d4281868861475c565b60001982019035828211610dbb57610d5b82888a61475c565b351015610d715750610d6c90614081565b610c6f565b9286610d8e8388610d87610db79698828661475c565b359361475c565b915163f48f718f60e01b8152938401948552602085015235604084015290918291606090910190565b0390fd5b61406b565b3461030d57602036600319011261030d57600435610ddd816102fc565b610de5613367565b610dee81615666565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d5760405163148282a760e21b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57610e83575b50724e4554574f524b5f42454e454649434941525960681b600080516020615b21833981519152600080a3005b806105f2610e9092611314565b38610e56565b3461030d57602036600319011261030d57600435610eb3816102fc565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169190610eec30841415613464565b610f09600080516020615b018339815191529382855416146134c5565b610f11613367565b60405190610f1e826113cf565b600082527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610f5857505061044c91506135ee565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181610faf575b50610f9c5760405162461bcd60e51b815280610db76004820161359f565b61044c93610faa9114613541565b61367e565b610fd191925060203d8111610fd8575b610fc98183611405565b810190613526565b9038610f7e565b503d610fbf565b90815180825260208080930193019160005b828110610fff575050505090565b83516001600160a01b031685529381019392810192600101610ff1565b90815180825260208080930193019160005b82811061103c575050505090565b835160ff168552938101939281019260010161102e565b906106fd916020815260018060a01b03825116602082015260208201516040820152604082015160608201526060820151608082015260a06110a3608084015160c08385015260e0840190610fdf565b9201519060c0601f198285030191015261101c565b3461030d57610a5a6111276110cc366106d4565b906040939284916111098351926110e284611362565b606060a0600095868152866020820152868882015286838201528260808201520152614182565b908252602052209060018060a01b0316600052602052604060002090565b9061117a600582519361113985611362565b80546001600160a01b03168552600181015460208601526002810154848601526003810154606086015261116f60048201614cf0565b608086015201614d48565b60a08301525191829182611053565b3461030d5760408060031936011261030d576004356111a7816102fc565b6024356001600160401b03811161030d576111c690369060040161033b565b9190926111d161461d565b6111d96154a6565b6111ea6111e633846159ae565b1590565b6112dd57916111f98185615525565b6001600160a01b0382169060005b8181106112185761044c6001606555565b806112276112d8928489614673565b356112328187615923565b847fa3f36b03a37e1948b5a4d52ddc1d9f62ab7d4e887e3a0a03e0c68d40f6075f3f89896112be86898c6112ab8661129a8b610cba6020958a6112848a8a8a61127c83838c614673565b013598614673565b013561128e611426565b958652878601526141bb565b906020600191805184550151910155565b6112b6838388614673565b013594614673565b8b519283520135602082015280604081015b0390a3614081565b611207565b51600162bed83560e01b0319815291508190610db790339060048401613f8a565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161132757604052565b6112fe565b604081019081106001600160401b0382111761132757604052565b608081019081106001600160401b0382111761132757604052565b60c081019081106001600160401b0382111761132757604052565b61014081019081106001600160401b0382111761132757604052565b60e081019081106001600160401b0382111761132757604052565b60a081019081106001600160401b0382111761132757604052565b602081019081106001600160401b0382111761132757604052565b606081019081106001600160401b0382111761132757604052565b90601f801991011681019081106001600160401b0382111761132757604052565b604051906103208261132c565b604051906103208261137d565b60405190610320826113b4565b6040519061032082611399565b6040519061032082611362565b604051906101a082018281106001600160401b0382111761132757604052565b6001600160401b03811161132757601f01601f191660200190565b604036600319011261030d576004356114ba816102fc565b602435906001600160401b03821161030d573660238301121561030d578160040135906114e682611487565b916114f46040519384611405565b808352366024828601011161030d57602081600092602461044c9701838701378401015261378d565b600091031261030d57565b3461030d57600036600319011261030d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361158257604051600080516020615b018339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b3461030d57604036600319011261030d5761160d600435611608816102fc565b6141f4565b6024356000526020526020604060002054604051908152f35b3461030d576020610762611639366106d4565b6001600160a01b0392831660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d51186526040808220938252928652828120919093168352602052902090565b81516001600160a01b031681526101408101929161032091906020818101516001600160a01b0316908301526040818101516001600160a01b0316908301526060818101516001600160a01b0316908301526080818101516001600160a01b03169083015260a0818101516001600160a01b03169083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120908101516001600160a01b0316910152565b3461030d5760008060031936011261199457610a5a906119886040516117748161137d565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152610100928084830152610120809201526119576117bc611433565b600080516020615ac1833981519152546001600160a01b0316815293600080516020615ae183398151915254611806906001600160a01b03165b6001600160a01b03166020870152565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d502546001600160a01b031660408601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d503546001600160a01b031660608601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d504546001600160a01b031660808601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d505546001600160a01b031660a08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d506546001600160a01b031660c08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d507546001600160a01b031660e08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d508546001600160a01b031690850152565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d509546001600160a01b031690830152565b60405191829182611688565b80fd5b604060031982011261030d576004356119af816102fc565b916024356001600160401b039283821161030d578060238301121561030d57816004013593841161030d5760248460061b8301011161030d576024019190565b3461030d576119fd36611997565b611a0892919261461d565b611a106154a6565b611a1d6111e633846159ae565b611ac657611a2b818461556c565b60005b818110611a3f5761044c6001606555565b80611a4e611ac1928487614683565b35611a598186615923565b602080611a6784878a614683565b0135611a7683610cba896141f4565b55611a82838689614683565b60405191013581526001600160a01b038616907f2f2a73977f9734e3b74f4efe888b44cdcca6903d8ab2b5be49c3969cc6cb1b629080602081016112d0565b611a2e565b604051600162bed83560e01b0319815280610db7338560048401613f8a565b906106fd916020815260018060a01b0380835116602083015260208301511660408201526040820151606082015260608201516080820152608082015160a082015260c0611b4260a084015160e083850152610100840190610fdf565b9201519060e0601f198285030191015261101c565b3461030d5760408060031936011261030d5780610a5a91600435611b7a816102fc565b611bb6825191611b8983611399565b606060c0600094858152856020820152858782015285838201528560808201528260a0820152015261422d565b60243582526020522090611c296006825193611bd185611399565b80546001600160a01b031685526001810154611bf5906001600160a01b03166117f6565b6002810154848601526003810154606086015260048101546080860152611c1e60058201614cf0565b60a086015201614d48565b60c08301525191829182611ae5565b3461030d5760008060031936011261199457611c52613367565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b60608060031936011261030d5760043590611cb0826102fc565b60243590611cbd826102fc565b6044356001600160401b03811161030d57611cdc90369060040161076b565b611ce792919261461d565b611cef6154a6565b60408051637777e6d760e01b6020808301919091526001600160a01b0397881660248301529690951660448601526064850183905260848501829052600582901b850160a490810196916000918701865b858410611d5e576104418961043c818d03601f198101835282611405565b909192939495969860a3198982030183528935607e198336030181121561030d5786611dbc6001938b611dab878596018035845285810135868501528a8101358b85015282810190614997565b9190926080809282015201916149cb565b9b019301940192919695949390611d40565b3461030d57602036600319011261030d57600435611deb816102fc565b611df3613367565b611dfc816156a4565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d576040516362cd1f1560e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57611e95575b507653504143455f4f50455241544f525f524547495354525960481b600080516020615b21833981519152600080a3005b806105f2611ea292611314565b38611e64565b3461030d57604036600319011261030d5761160d600435611ec8816102fc565b614266565b8015150361030d57565b3461030d57602036600319011261030d577fae6fb668d2dacbb6cc6e620b898a7166d67d7838c94ddeff2dbdf55995e9b1926020600435611f1781611ecd565b611f1f613367565b1515600080516020615b6183398151915260ff1981541660ff8316179055604051908152a1005b3461030d57600036600319011261030d576033546040516001600160a01b039091168152602090f35b3461030d57602036600319011261030d57600435611f8c816102fc565b611f94613367565b611f9d816157b8565b611fa6816133bf565b6001600160a01b03166914d1551513115351539560b21b600080516020615b21833981519152600080a3005b3461030d57600036600319011261030d57602060405160328152f35b3461030d57602036600319011261030d5760043561200b816102fc565b612013613367565b61201c816156e6565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d57604051631d1d389760e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe576120a6575b50675041594d454e545360c01b600080516020615b21833981519152600080a3005b806105f26120b392611314565b38612084565b3461030d57600036600319011261030d57602060ff600080516020615b6183398151915254166040519015158152f35b60c036600319011261030d576004803590612103826102fc565b6024359160443591612114836102fc565b606435936084359160a4359461212861461d565b6121306154a6565b612139856157da565b73__$11854c5905aa23948096e0e4d7059bb9de$__92833b1561030d57604094855198635e157ccf60e11b8a526000998a8180612178888a8301613fa4565b03818a5af480156105fe57612485575b508015612475578115612465578815158061245b575b61243a576121ac82826142d8565b600080516020615ae1833981519152549098906121d9906001600160a01b03165b6001600160a01b031690565b9860208951809b6361fe24a960e11b825281806121fd868d83019190602083019252565b03915afa998a156105fe578c9a612416575b508961221a916147dc565b988b883b156119945789516338fa83e760e01b8152600080516020615ac18339815191528982019081526001600160a01b0389166020820152604081019c909c529a8b90819060600103818b5af49182156105fe578c9a7ec827db726736dd1c3f5c4643456d97cc22d1613afeae6f8576124e65e8e1bc93612403575b506123976122ca6122c589610cc96122b28b610cba8861429f565b3360009081526020919091526040902090565b6147e9565b9c6123598c886122d8611440565b6001600160a01b038d168152918960208401528201528560608201528260808201526123108b610cc98c610cc93391610cba8b61429f565b815181546001600160a01b0319166001600160a01b0391909116178155906004906080906020810151600185015560408101516002850155606081015160038501550151910155565b8b516001600160a01b038a811682526020820197909752604081019790975260608701939093526080860192909252909216923392819060a0820190565b0390a4602086015193606081880151970151843b156123ff576123cf915197889687958695634c4c261960e01b87523391870161482e565b03915af480156105fe576123ec575b506123e96001606555565b80f35b806105f26123f992611314565b386123de565b8680fd5b806105f261241092611314565b38612297565b61221a919a506124339060203d8111610fd857610fc98183611405565b999061220f565b8651633312a4fd60e21b81528086018a815242602082015281906040010390fd5b504289111561219e565b865163c6b949a960e01b81528590fd5b865163473ae14d60e01b81528590fd5b806105f261249292611314565b38612188565b3461030d5761010036600319011261030d576004356124b6816102fc565b604435906124c3826102fc565b6064356124cf816102fc565b6001600160401b039260c43584811161030d576124f090369060040161076b565b9160e43595861161030d5761250c61044c96369060040161076b565b95909460a4359260843592602435906149ef565b9060a060031983011261030d57600435612539816102fc565b91602435612546816102fc565b91604435916001600160401b039081841161030d578060238501121561030d5783600401359382851161030d578160248660071b8301011161030d57602401939260643583811161030d578261259e9160040161076b565b9390939260843591821161030d576125b89160040161076b565b9091565b3461030d576125ca36612520565b969492939091956125d961461d565b6125e16154a6565b6125ee6111e633886159ae565b6127f7576125fc82856154d1565b73__$11854c5905aa23948096e0e4d7059bb9de$__97883b1561030d57604093845199635e157ccf60e11b8b5260009a8b818061263c8860048301613fa4565b0381855af480156105fe576127e4575b508a813b15611994578284928c8b6126798b51968795869485946376fb859760e01b865260048601613fd6565b03915af480156105fe576127d1575b50895b84811061269d578a6123e96001606555565b8888888888888f888a916126b28a86896140a6565b35976126be898b615923565b8a602087898b84846126d18286856140a6565b0135936126dd926140a6565b0135898c60609586926126ef926140a6565b0135906126fa61144d565b338152926001600160a01b038b1684860152838d01528483015260808201526127243686866140d2565b60a08201528b8d612736368a8a61412a565b60c08401526127449061422d565b6000918252602052604090209061275a9161447b565b6127658d898c6140a6565b0135988c89612775828b856140a6565b013598612781926140a6565b01359651968796339b600160a01b60019003169961279f97896145d7565b037f4c048dfd080dcfa2cccc41ef603e5f0ed6602ca215a41581d653aadf841a560b91a46127cc90614081565b61268b565b806105f26127de92611314565b38612688565b806105f26127f192611314565b3861264c565b604051600162bed83560e01b0319815280610db7338960048401613f8a565b3461030d5760408060031936011261030d57612850600435612837816102fc565b6000602084516128468161132c565b82815201526141bb565b6024356000526020528060002081516128688161132c565b60206001835493848452015491019081528251918252516020820152f35b3461030d57600036600319011261030d57600080516020615b81833981519152546040516001600160a01b039091168152602090f35b3461030d576128ca36611997565b6128d592919261461d565b6128dd6154a6565b6128ea6111e633846159ae565b611ac6576128f8818461556c565b60005b81811061290c5761044c6001606555565b8061291b61298e928487614683565b356129268186615923565b60208061293484878a614683565b013561294383610cba89614266565b5561294f838689614683565b60405191013581526001600160a01b038616907feead0384c6f48c02c0099b2433359d43617492f06d8e3a59cbe786b9970f7e619080602081016112d0565b6128fb565b3461030d57600036600319011261030d576020604051604b8152f35b3461030d57602036600319011261030d576004356129cc816102fc565b6129d4613367565b6129dd81615796565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d576040516328b80cf560e21b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57612a75575b507522a92199182fa0a8282927ab20a62fa6a0a720a3a2a960511b600080516020615b21833981519152600080a3005b806105f2612a8292611314565b38612a45565b3461030d57602036600319011261030d57600435612aa5816102fc565b612aad613367565b612ab681615796565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d57604051631f1afd0d60e01b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57612b4f575b507622a9219b9918afa0a8282927ab20a62fa6a0a720a3a2a960491b600080516020615b21833981519152600080a3005b806105f2612b5c92611314565b38612b1e565b3461030d57600036600319011261030d57600080516020615b41833981519152546040516001600160a01b039091168152602090f35b3461030d57608036600319011261030d57610a5a612c0c612c2c600435612bbe816102fc565b610cc9604435612bcd816102fc565b60643592612bda846102fc565b608060409687928351612bec816113b4565b60009381858093528260208201528287820152826060820152015261429f565b6024358252602052209060018060a01b0316600052602052604060002090565b906004815192612c3b846113b4565b60018060a01b038154168452600181015460208501526002810154838501526003810154606085015201546080830152519182918291909160808060a083019460018060a01b0381511684526020810151602085015260408101516040850152606081015160608501520151910152565b3461030d57602036600319011261030d57600435612cc9816102fc565b612cd1613367565b612cda81615719565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d57604051632867932b60e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57612d73575b5076415050524f5645445f544f4b454e5f524547495354525960481b600080516020615b21833981519152600080a3005b806105f2612d8092611314565b38612d42565b3461030d57612da5612d97366106d4565b91612da061461d565b614874565b6001606555005b3461030d57602036600319011261030d57600435612dc9816102fc565b612dd1613367565b612dda8161575b565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d57604051632d8b49e160e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57612e6c575b506f5354414b494e475f53455454494e475360801b600080516020615b21833981519152600080a3005b806105f2612e7992611314565b38612e42565b3461030d57602036600319011261030d57600435612e9c816102fc565b612ea4613367565b6001600160a01b03811615612ebc5761044c9061341b565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461030d57612f1e36612520565b90612f2e9792969395949761461d565b612f366154a6565b612f4088866154d1565b73__$11854c5905aa23948096e0e4d7059bb9de$__3b1561030d57604051635e157ccf60e11b815260008180612f798860048301613fa4565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af480156105fe576132e3575b5073__$11854c5905aa23948096e0e4d7059bb9de$__3b1561030d576040516376fb859760e01b815260008180612fda86868d8d60048601613fd6565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af480156105fe576132d0575b50613008836157da565b600080516020615b818339815191525461304c90602090613031906001600160a01b03166121cd565b6040518093819263e985e9c560e01b83523360048401613f8a565b03816001600160a01b0388165afa9081156105fe576000916132a1575b50156132855760005b8881106130835761044c6001606555565b61308e818a886140a6565b35868a60606130bc8560406130b3828660206130ab83838c6140a6565b0135986140a6565b0135938c6140a6565b013582156132735781156132615780151580613257575b61323757604051627eeac760e11b8152336004820152602481018590526020816044816001600160a01b038d165afa9081156105fe57600091613218575b508281106131db57507fe4cf997ce4def583f8220b51e6c89b5dbf6eeded5de4d1d78884a25d2bf46d5d8392896131ce8f8f8c918f97918d926131b78a6131d69f9e9d8e6131b29161317361316461145a565b6001600160a01b039095168552565b60208401528b604084015284606084015261318f3688886140d2565b608084015261319f368a8a61412a565b60a0840152610cc93391610cba8d614182565b6146b3565b60405197889760018060a01b03169b339b896145d7565b0390a4614081565b613072565b604051636906ef1760e11b81523360048201526001600160a01b038a1660248201526044810186905260648101849052608481019190915260a490fd5b613231915060203d602011610fd857610fc98183611405565b38613111565b6040516346a836ff60e11b81526004810191909152426024820152604490fd5b50428111156130d3565b60405163c6b949a960e01b8152600490fd5b6040516331cc996d60e11b8152600490fd5b60405163d65b0d6960e01b815280610db7853360048401613f8a565b6132c3915060203d6020116132c9575b6132bb8183611405565b81019061469e565b38613069565b503d6132b1565b806105f26132dd92611314565b38612ffe565b806105f26132f092611314565b38612f9d565b3461030d57602036600319011261030d57600435613313816102fc565b61331b613367565b61332481615796565b6001600160a01b0316613336816133ed565b7722a92198989a9aafa0a8282927ab20a62fa6a0a720a3a2a960411b600080516020615b21833981519152600080a3005b6033546001600160a01b0316330361337b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600080516020615b4183398151915280546001600160a01b0319166001600160a01b03909216919091179055565b600080516020615b8183398151915280546001600160a01b0319166001600160a01b03909216919091179055565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b1561346b57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b156134cc57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b9081602091031261030d575190565b6040513d6000823e3d90fd5b1561354857565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b60809060208152602e60208201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960408201526d6f6e206973206e6f74205555505360901b60608201520190565b803b1561362357600080516020615b0183398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b90613688826135ee565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613732575b6136ca575050565b61372f91600080604051936136de856113ea565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020860152660819985a5b195960ca1b6040860152602081519101845af4613729613898565b916138c8565b50565b5060006136c2565b90613744826135ee565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613785576136ca575050565b5060016136c2565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692906137c630851415613464565b6137e3600080516020615b018339815191529482865416146134c5565b6137eb613367565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561382157505061032091506135ee565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181613878575b506138655760405162461bcd60e51b815280610db76004820161359f565b610320936138739114613541565b61373a565b61389191925060203d8111610fd857610fc98183611405565b9038613847565b3d156138c3573d906138a982611487565b916138b76040519384611405565b82523d6000602084013e565b606090565b9192901561392a57508151156138dc575090565b3b156138e55790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b82519091501561393d5750805190602001fd5b60405162461bcd60e51b815260206004820152908190610db79060248301906107e1565b99979593919a98969492909a6000549b60ff8d60081c1615809d819e613a89575b8115613a69575b5015613a0d576139af9b8d6139a6600160ff196000541617600055565b6139f457613d5f565b6139b557565b6139c561ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b613a0861010061ff00196000541617600055565b613d5f565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b15915081613a7b575b5038613989565b6001915060ff161438613a74565b600160ff8216109150613982565b5190610320826102fc565b908161014091031261030d57613ab6611433565b90613ac081613a97565b8252613ace60208201613a97565b6020830152613adf60408201613a97565b6040830152613af060608201613a97565b6060830152613b0160808201613a97565b6080830152613b1260a08201613a97565b60a0830152613b2360c08201613a97565b60c0830152613b3460e08201613a97565b60e0830152610100613b47818301613a97565b90830152613b59610120809201613a97565b9082015290565b8051600080516020615ac183398151915280546001600160a01b03199081166001600160a01b03938416179091556020830151600080516020615ae18339815191528054831691841691909117905560408301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5028054831691841691909117905560608301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5038054831691841691909117905560808301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5048054831691841691909117905560a08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5058054831691841691909117905560c08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5068054831691841691909117905560e08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d507805483169184169190911790556101008301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50880549092169083161790556101209091015161032091167f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50980546001600160a01b0319166001600160a01b03909216919091179055565b93959a9997919a98929498969096613d7685615666565b613d7f886155b3565b613d888c6156a4565b613d91866155f2565b613d9a876156e6565b613da38a615719565b613dac8161575b565b613db58261562b565b613dbe83615796565b613dc784615796565b613dd089615796565b613dd98b6157b8565b60405163ef8c824960e01b81526001600160a01b03958616600482015297851660248901529a841660448801529383166064870152938216608486015295811660a485015296871660c4840152861660e48301528516610104820152919093166101248201526101409283826101448173__$c98ca6a62396e5a7a1471db151198a1f31$__5af49384156105fe57613e9594613e9093613e8292600092613ead575b5050613b60565b6001600160a01b03166133ed565b6133bf565b613e9d613f3a565b613ea5613f6e565b610320613f5d565b613ecc9250803d10613ed3575b613ec48183611405565b810190613aa2565b3880613e7b565b503d613eba565b15613ee157565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b613f5460ff60005460081c16613f4f81613eda565b613eda565b6103203361341b565b61032060ff60005460081c16613eda565b613f8360ff60005460081c16613f4f81613eda565b6001606555565b6001600160a01b0391821681529116602082015260400190565b600080516020615ac183398151915281526001600160a01b03909116602082015260400190565b60ff81160361030d57565b909293918060408301604084525260608201939060005b81811061403e57505050808303602091820152818352918201929160005b828110614019575050505090565b90919293828060019260ff883561402f81613fcb565b1681520195019392910161400b565b909193946001908535614050816102fc565b60a083901b8390031681526020908101969501929101613fed565b634e487b7160e01b600052601160045260246000fd5b6000198114610dbb5760010190565b634e487b7160e01b600052603260045260246000fd5b91908110156140b65760071b0190565b614090565b6001600160401b0381116113275760051b60200190565b92916140dd826140bb565b916140eb6040519384611405565b829481845260208094019160051b810192831161030d57905b8282106141115750505050565b838091833561411f816102fc565b815201910190614104565b9291614135826140bb565b916141436040519384611405565b829481845260208094019160051b810192831161030d57905b8282106141695750505050565b838091833561417781613fcb565b81520191019061415c565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5126020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5106020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5136020526040902090565b81810292918115918404141715610dbb57565b8181106142f6575050565b600081556001016142eb565b90600160401b81116113275781549080835581811061432057505050565b61032092600052602060002091820191016142eb565b90600160401b811161132757815481835580821061435357505050565b61032092600052601f6020600020918180850160051c840194168061437f575b500160051c01906142eb565b600019908186019182549160200360031b1c16905538614373565b9080516001600160401b038111611327576143b58184614336565b6143c9602080930193600052602060002090565b908060051c9260005b8481106144455750601f19821690910390816143f0575b5050505050565b9390600094855b82811061440e5750505050015538808080806143e9565b909192958261443a600192846144258b5160ff1690565b919060ff809160031b9316831b921b19161790565b9701939291016143f7565b6000805b83811061445d5750848201556001016143d2565b9690836144726001928a614425865160ff1690565b92019701614449565b815181546001600160a01b0319166001600160a01b03918216178255909190602082810151600185810180549285166001600160a01b03166001600160a01b03199093169290921790915591604084015160028601556060840151600386015560808401516004860155600585019060a0850151928351936001600160401b03851161132757819061450d8686614302565b0192600052806000209160005b85811061453a575050505050505090600660c0610320930151910161439a565b845182168482015593820193860161451a565b91908082526020809201929160005b82811061456a575050505090565b909192938280600192873561457e816102fc565b848060a01b0316815201950191019291909261455c565b91908082526020809201929160005b8281106145b2575050505090565b90919293828060019260ff88356145c881613fcb565b168152019501939291016145a4565b9694926106fd98969261460f959260018060a01b0316895260208901526040880152606087015260c0608087015260c086019161454d565b9260a0818503910152614595565b60026065541461462e576002606555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b91908110156140b6576060020190565b91908110156140b65760061b0190565b519061032082611ecd565b9081602091031261030d57516106fd81611ecd565b815181546001600160a01b0319166001600160a01b039182161782559091906020808301519160019283860155604084015160028601556060840151600386015560048501906080850151928351936001600160401b03851161132757819061471c8686614302565b0192600052806000209160005b858110614749575050505050505090600560a0610320930151910161439a565b8451821684820155938201938601614729565b91908110156140b65760051b0190565b6005600091828155826001820155826002820155826003820155600481018054848255806147c2575b50500190815490808355816147a957505050565b60208161032094601f935220910160051c8101906142eb565b6147d591855260208520908101906142eb565b3880614795565b91908201809211610dbb57565b906040516147f6816113b4565b82546001600160a01b031681526001830154602082015260028301546040820152600383015460608201526004909201546080830152565b600080516020615ac183398151915281526001600160a01b039182166020820152911660408201526060810191909152608081019190915260a081019190915260c00190565b91909161488e6122c583610cc96122b287610cba8761429f565b60408101938451156143e9576148d06148b285610cc933610cc986610cba8a61429f565b60046000918281558260018201558260028201558260038201550155565b60208281018051875160609586018051604080516001600160a01b038c8116825297810195909552840192909252958201529394909391169033907fb00a321de530b83262da5c2b572508a21b98c8d189dba9939e0359e8c9fbfeac90608090a473__$11854c5905aa23948096e0e4d7059bb9de$__90519351915193813b1561030d5760009361497960405196879586948594634c4c261960e01b865233906004870161482e565b03915af480156105fe5761498a5750565b806105f261032092611314565b9035601e198236030181121561030d5701602081359101916001600160401b03821161030d578160051b3603831361030d57565b81835290916001600160fb1b03831161030d5760209260051b809284830137010190565b979396614a7b9561043c98614a68949893614a899c96614a0d61461d565b614a156154a6565b6040519c8d9b8c9363b8e6b50f60e01b6020860152604460018060a01b039586809516602482015201521660648c01521660848a015260a489015260c488015261010060e488015261012487019161454d565b8481036023190161010486015291614595565b03601f198101835282611405565b506103206001606555565b519061032082613fcb565b5190600682101561030d57565b51906001600160e01b03198216820361030d57565b81601f8201121561030d578051614ad781611487565b92614ae56040519485611405565b8184526020828401011161030d576106fd91602080850191016107be565b81601f8201121561030d57805190614b1a826140bb565b92604092614b2a84519586611405565b808552602093848087019260051b8501019383851161030d57858101925b858410614b59575050505050505090565b83516001600160401b039081811161030d578301916101a09283601f19828a03011261030d57614b87611467565b908a8101518252614b99878201614a94565b8b830152606094614bab868301613a97565b88840152608095868301519084015260a095614bc8878401613a97565b9084015260c095614bda878401613a97565b9084015260e095868301519084015261010095868301519084015261012095614c04878401614693565b9084015261014095614c17878401614a9f565b9084015261016095614c2a878401614aac565b90840152610180918281015195861161030d578c96614c4e8c898099850101614ac1565b90850152015190820152815201930192614b48565b9060208282031261030d5781516001600160401b039283821161030d5701908181039260a0841261030d57608060405194614c9d8661132c565b1261030d57604051614cae81611347565b835181526020840151602082015260408401516040820152606084015160608201528452608083015190811161030d57614ce89201614b03565b602082015290565b9060405191828154918282526020928383019160005283600020936000905b828210614d255750505061032092500383611405565b85546001600160a01b031684526001958601958895509381019390910190614d0f565b90604080518093805492614d6f614d63858560209181520190565b92600052602060002090565b9360005b81601f82011061518b57610320955492828210615175575b82821061515b575b828210615141575b828210615127575b82821061510d575b8282106150f3575b8282106150d9575b8282106150bf575b8282106150a8575b50818110615090575b818110615078575b818110615060575b818110615048575b818110615030575b818110615018575b818110615000575b818110614fe8575b818110614fd0575b818110614fb8575b818110614fa0575b818110614f88575b818110614f70575b818110614f58575b818110614f40575b818110614f28575b818110614f10575b818110614ef8575b818110614ee0575b818110614ec8575b818110614eb0575b818110614e98575b10614e8a575b500383611405565b60f81c815260200138614e82565b60f083901c60ff168452926001906020019301614e7c565b60e883901c60ff168452926001906020019301614e74565b60e083901c60ff168452926001906020019301614e6c565b60d883901c60ff168452926001906020019301614e64565b60d083901c60ff168452926001906020019301614e5c565b60c883901c60ff168452926001906020019301614e54565b60c083901c60ff168452926001906020019301614e4c565b60b883901c60ff168452926001906020019301614e44565b60b083901c60ff168452926001906020019301614e3c565b60a883901c60ff168452926001906020019301614e34565b60a083901c60ff168452926001906020019301614e2c565b609883901c60ff168452926001906020019301614e24565b609083901c60ff168452926001906020019301614e1c565b608883901c60ff168452926001906020019301614e14565b608083901c60ff168452926001906020019301614e0c565b607883901c60ff168452926001906020019301614e04565b607083901c60ff168452926001906020019301614dfc565b606883901c60ff168452926001906020019301614df4565b606083901c60ff168452926001906020019301614dec565b605883901c60ff168452926001906020019301614de4565b605083901c60ff168452926001906020019301614ddc565b604883901c60ff168452926001906020019301614dd4565b83901c60ff16845292600190602001930138614dcb565b603884901c60ff1685529093600190602001940190614dc3565b603084901c60ff1685529093600190602001940190614dbb565b602884901c60ff1685529093600190602001940190614db3565b602084811c60ff1686529194909160019101940190614dab565b601884901c60ff1685529093600190602001940190614da3565b601084901c60ff1685529093600190602001940190614d9b565b600884901c60ff1685529093600190602001940190614d93565b60ff841685529093600190602001940190614d8b565b919350916001610400602092615429885461541e60ff6151af8582851660ff169052565b6153f761525c6153a78d615357896153078e6151d48184018a8d60081c1660ff169052565b6151e78584018a8d60101c1660ff169052565b888b610200606095615202878201858560181c1660ff169052565b6152176080958585888501921c1660ff169052565b6152bd60a097615230898401878760281c1660ff169052565b61526d60c09b6152498d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b6152826101208401878760481c1660ff169052565b6152976101408401878760501c1660ff169052565b6152ac6101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b6152d26101a08201858560681c1660ff169052565b6152e76101c08201858560701c1660ff169052565b6152fc6101e08201858560781c1660ff169052565b01921c1660ff169052565b61531c6102208c01888b60881c1660ff169052565b6153316102408c01888b60901c1660ff169052565b6153466102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b61536c6102a08a01868960a81c1660ff169052565b6153816102c08a01868960b01c1660ff169052565b6153966102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b6153bc6103208801848760c81c1660ff169052565b6153d16103408801848760d01c1660ff169052565b6153e66103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b61540c6103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b0195019101918693919492614d73565b600080516020615b4183398151915254815160009283926020909101906001600160a01b03165af4615469613898565b90156154725790565b80511561548157602081519101fd5b604051637dd68d8560e01b815260206004820152908190610db79060248301906107e1565b60ff600080516020615b6183398151915254166154bf57565b60405163ab35696f60e01b8152600490fd5b6154da82615a45565b60015b8281106154e957505050565b600019810190808211610dbb5761551b6155076155209386866140a6565b356155138387876140a6565b359083615a87565b614081565b6154dd565b61552e82615a45565b60015b82811061553d57505050565b600019810190808211610dbb5761551b61555b615567938686614673565b35615513838787614673565b615531565b61557582615a45565b60015b82811061558457505050565b600019810190808211610dbb5761551b6155a26155ae938686614683565b35615513838787614683565b615578565b6001600160a01b0316156155c357565b60405163602d6df560e01b8152734d41524b4554504c4143455f53455454494e475360601b6004820152602490fd5b6001600160a01b03161561560257565b60405163602d6df560e01b81526d524f59414c54595f454e47494e4560901b6004820152602490fd5b6001600160a01b03161561563b57565b60405163602d6df560e01b81526f5354414b494e475f524547495354525960801b6004820152602490fd5b6001600160a01b03161561567657565b60405163602d6df560e01b8152724e4554574f524b5f42454e454649434941525960681b6004820152602490fd5b6001600160a01b0316156156b457565b60405163602d6df560e01b81527653504143455f4f50455241544f525f524547495354525960481b6004820152602490fd5b6001600160a01b0316156156f657565b60405163602d6df560e01b8152675041594d454e545360c01b6004820152602490fd5b6001600160a01b03161561572957565b60405163602d6df560e01b815276415050524f5645445f544f4b454e5f524547495354525960481b6004820152602490fd5b6001600160a01b03161561576b57565b60405163602d6df560e01b81526f5354414b494e475f53455454494e475360801b6004820152602490fd5b6001600160a01b0316156157a657565b60405163c49074af60e01b8152600490fd5b6001600160a01b0316156157c857565b604051634e04f1e560e01b8152600490fd5b803b15801561580d575b6157eb5750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b808352602482015260248152615836816113ea565b519084617530fa6000513d8261588a575b5081615880575b5080615870575b80615861575b156157e4565b5061586b816158f3565b61585b565b5061587a81615896565b15615855565b905015153861584e565b60201115915038615847565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b6024820152602481526158c6816113ea565b5191617530fa6000513d826158e7575b50816158e0575090565b9050151590565b602011159150386158d6565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b6024820152602481526158c6816113ea565b6040516001620b695760e21b03198152600481018390526020816024816001600160a01b0386165afa9081156105fe57600091615990575b5015615965575050565b604051632be7c7f360e01b81526001600160a01b039190911660048201526024810191909152604490fd5b6159a8915060203d8111610fd857610fc98183611405565b3861595b565b6000806040516020810190638da5cb5b60e01b8252600481526159d08161132c565b5190845afa906159de613898565b91158015615a3a575b615a18575060208180518101031261030d576020015190615a07826102fc565b6001600160a01b0391821691161490565b60405163915b8f1d60e01b81526001600160a01b039091166004820152602490fd5b5060208251106159e7565b8015615a7557604b8111615a565750565b6044906040519063f80a484560e01b82526004820152604b6024820152fd5b60405163c2e5347d60e01b8152600490fd5b909182811115615a9657505050565b60405163f48f718f60e01b8152600481019290925260248201929092526044810191909152606490fdfe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5005e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d501360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc376c367a1420063e9671cc85404673694901b9db2c20dc84b5acbf060f7ee37a5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50b5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5145e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50aa264697066735822122006d47f961c8a43f2754a8dddf33fb039c6a2b29a982ed3666039c0b0fe71cd0c64736f6c63430008120033","sourceMap":"1305:22469:72:-:0;;;;;;;1332:4:24;1324:13;;6007::23;1305:22469:72;;;;;;;;;;;;;;6078:31:23;6074:139;;-1:-1:-1;1305:22469:72;;;;;;;;1324:13:24;1305:22469:72;;;;;;;;;;;;;;;;6074:139:23;1305:22469:72;;;;;;6007:13:23;1305:22469:72;6174:28:23;1305:22469:72;;;;;;6174:28:23;6074:139;;;1305:22469:72;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":8738,"length":20},{"start":9957,"length":20},{"start":12329,"length":20},{"start":12388,"length":20},{"start":12423,"length":20},{"start":12485,"length":20},{"start":18970,"length":20}]},"src/v2/utils/MarketConfigV2.sol":{"MarketConfigV2":[{"start":1592,"length":20},{"start":1818,"length":20},{"start":3166,"length":20},{"start":3799,"length":20},{"start":7909,"length":20},{"start":8453,"length":20},{"start":10950,"length":20},{"start":11167,"length":20},{"start":11715,"length":20},{"start":11971,"length":20},{"start":16178,"length":20}]}}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c80630a6ce313146102f75780630b800f48146102f2578063176ab440146102ed57806321ede032146102e857806328fbba03146102e35780632c0c49ee146102de5780632c740844146102d95780632f79f335146102d45780633492e5a8146102cf5780633659cfe6146102ca578063369679a4146102c5578063373a9412146102c05780634f1ef286146102bb57806352d1902d146102b6578063552f791d146102b15780635a501f8f146102ac578063614bd944146102a75780636442950e146102a25780636e2f4d8b1461029d578063715018a6146102985780637777e6d7146102935780637f3582301461028e5780638760251a14610289578063882796f1146102845780638da5cb5b1461027f5780638f4e6f371461027a578063a3eaf4d914610275578063af231a5814610270578063b187bd261461026b578063b38df71f14610266578063b8e6b50f14610261578063be5421411461025c578063bf3d90f814610257578063c7c83d1714610252578063c7ec1b981461024d578063cfdbf25414610248578063d7a9fb7c14610243578063d80b23e31461023e578063defad60c14610239578063e3409ce314610234578063e4e87e3b1461022f578063e92f94d11461022a578063f103574414610225578063f2fde38b14610220578063ff3a52d41461021b5763ff5c83a41461021657600080fd5b6132f6565b612f10565b612e7f565b612dac565b612d86565b612cac565b612b98565b612b62565b612a88565b6129af565b612993565b6128bc565b612886565b612816565b6125bc565b612498565b6120e9565b6120b9565b611fee565b611fd2565b611f6f565b611f46565b611ed7565b611ea8565b611dce565b611c96565b611c38565b611b57565b6119ef565b61174f565b611626565b6115e8565b611528565b6114a2565b611189565b6110b8565b610e96565b610dc0565b610c1a565b610b47565b61096c565b610700565b610603565b610521565b610477565b61036b565b6001600160a01b0381160361030d57565b600080fd5b6101443590610320826102fc565b565b6101643590610320826102fc565b3590610320826102fc565b9181601f8401121561030d578235916001600160401b03831161030d576020808501946060850201011161030d57565b608036600319011261030d57600435610383816102fc565b60243561038f816102fc565b60443561039b816102fc565b6064356001600160401b03811161030d57836103bc8492369060040161033b565b90936103c661461d565b6103ce6154a6565b60408051630a6ce31360e01b6020808301919091526001600160a01b03958616602483015295851660448201529390911660648401526080608484015260a4830182905260c48301949293600091905b83831061044e576104418661043c818a03601f198101835282611405565b615439565b5061044c6001606555565b005b84358752848101358782015284820135878301526060968701969094019360019092019161041e565b3461030d5761018036600319011261030d5761044c600435610498816102fc565b6024356104a4816102fc565b6044356104b0816102fc565b6064356104bc816102fc565b6084356104c8816102fc565b60a4356104d4816102fc565b60c435906104e1826102fc565b60e435926104ee846102fc565b61010435946104fc866102fc565b610124359661050a886102fc565b610512610312565b9861051b610322565b9a613961565b3461030d57602036600319011261030d5760043561053e816102fc565b610546613367565b61054f816155b3565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d5760405163ed56be5b60e01b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe576105e5575b50734d41524b4554504c4143455f53455454494e475360601b600080516020615b21833981519152600080a3005b806105f26105f892611314565b8061151d565b386105b7565b613535565b3461030d57602036600319011261030d57600435610620816102fc565b610628613367565b610631816155f2565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d5760405163143df10960e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe576106c1575b506d524f59414c54595f454e47494e4560901b600080516020615b21833981519152600080a3005b806105f26106ce92611314565b38610699565b606090600319011261030d576004356106ec816102fc565b90602435906044356106fd816102fc565b90565b3461030d576020610762610713366106d4565b6001600160a01b0392831660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f86526040808220938252928652828120919093168352602052902090565b54604051908152f35b9181601f8401121561030d578235916001600160401b03831161030d576020808501948460051b01011161030d57565b9060068210156107a85752565b634e487b7160e01b600052602160045260246000fd5b60005b8381106107d15750506000910152565b81810151838201526020016107c1565b906020916107fa815180928185528580860191016107be565b601f01601f1916010190565b9060209182815260c09283820191835193845183830152828501516040908184015283818701516060978891828701520151926080938486015201519660a0908180860152885180975260e0918286019487848a60051b8901019b01996000975b8a891061087d5750505050505050505050505090565b909192939495969798999a9b8a806001928f60df19868303018d525190815181526108b0838301518483019060ff169052565b818c01516001600160a01b0316818d01528187015181880152878201516001600160a01b031688820152818901516001600160a01b0316818a0152818a0151818b01528a8201518b8201526101008083015115159082015261091b610120808401519083019061079b565b610140828101516001600160e01b0319169082015261094b61016080840151906101a080918501528301906107e1565b91610180809101519101529e0199019901979a999896959493929190610867565b60208060031936011261030d576004356001600160401b03811161030d5761099890369060040161076b565b90916040918251936109a98561132c565b8351906109b582611347565b600091828152828582015282868201528460609782858a80950152815201526109dc61461d565b6109e46154a6565b84519263160624f760e11b85850152806044850186602487015252606484019260648260051b8601019783825b848410610a5e57610a5a8a610a458b610a388f61043c8e809203601f198101835282611405565b8051810182019101614c63565b90610a506001606555565b5191829182610806565b0390f35b90919293949599606319888203018b52863560fe1984360301811215610b435789610b316001938d610ad5888596019160ff8335610a9b81613fcb565b168452610abb610aac878501610330565b6001600160a01b031685880152565b610ac6818401610330565b6001600160a01b031690840152565b610af2610ae38a8301610330565b6001600160a01b0316838b0152565b6080808201359083015260a0808201359083015260c08082013590830152610b1f60e09182810190614997565b919092610100809282015201916149cb565b9c919091019701959401929190610a11565b8280fd5b3461030d57602036600319011261030d57600435610b64816102fc565b610b6c613367565b610b758161562b565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d5760405163632c2a3160e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57610c07575b506f5354414b494e475f524547495354525960801b600080516020615b21833981519152600080a3005b806105f2610c1492611314565b38610bdd565b3461030d5760408060031936011261030d576004908135610c3a816102fc565b6024356001600160401b03811161030d57610c58903690850161076b565b929093610c6361461d565b610c6c84615a45565b60015b848110610d37575050506001600160a01b03811660005b838110610c975761044c6001606555565b80610ca6610d2c92868861475c565b356002610ce033610cc984610cba8a614182565b90600052602052604060002090565b9060018060a01b0316600052602052604060002090565b015415610d3157610d00610cfb33610cc984610cba8a614182565b61476c565b83337f46227bd805037a939224e05cd991a64cb464f4b5c5317858af210838e59ce390600080a4614081565b610c86565b50614081565b610d4281868861475c565b60001982019035828211610dbb57610d5b82888a61475c565b351015610d715750610d6c90614081565b610c6f565b9286610d8e8388610d87610db79698828661475c565b359361475c565b915163f48f718f60e01b8152938401948552602085015235604084015290918291606090910190565b0390fd5b61406b565b3461030d57602036600319011261030d57600435610ddd816102fc565b610de5613367565b610dee81615666565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d5760405163148282a760e21b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57610e83575b50724e4554574f524b5f42454e454649434941525960681b600080516020615b21833981519152600080a3005b806105f2610e9092611314565b38610e56565b3461030d57602036600319011261030d57600435610eb3816102fc565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169190610eec30841415613464565b610f09600080516020615b018339815191529382855416146134c5565b610f11613367565b60405190610f1e826113cf565b600082527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610f5857505061044c91506135ee565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181610faf575b50610f9c5760405162461bcd60e51b815280610db76004820161359f565b61044c93610faa9114613541565b61367e565b610fd191925060203d8111610fd8575b610fc98183611405565b810190613526565b9038610f7e565b503d610fbf565b90815180825260208080930193019160005b828110610fff575050505090565b83516001600160a01b031685529381019392810192600101610ff1565b90815180825260208080930193019160005b82811061103c575050505090565b835160ff168552938101939281019260010161102e565b906106fd916020815260018060a01b03825116602082015260208201516040820152604082015160608201526060820151608082015260a06110a3608084015160c08385015260e0840190610fdf565b9201519060c0601f198285030191015261101c565b3461030d57610a5a6111276110cc366106d4565b906040939284916111098351926110e284611362565b606060a0600095868152866020820152868882015286838201528260808201520152614182565b908252602052209060018060a01b0316600052602052604060002090565b9061117a600582519361113985611362565b80546001600160a01b03168552600181015460208601526002810154848601526003810154606086015261116f60048201614cf0565b608086015201614d48565b60a08301525191829182611053565b3461030d5760408060031936011261030d576004356111a7816102fc565b6024356001600160401b03811161030d576111c690369060040161033b565b9190926111d161461d565b6111d96154a6565b6111ea6111e633846159ae565b1590565b6112dd57916111f98185615525565b6001600160a01b0382169060005b8181106112185761044c6001606555565b806112276112d8928489614673565b356112328187615923565b847fa3f36b03a37e1948b5a4d52ddc1d9f62ab7d4e887e3a0a03e0c68d40f6075f3f89896112be86898c6112ab8661129a8b610cba6020958a6112848a8a8a61127c83838c614673565b013598614673565b013561128e611426565b958652878601526141bb565b906020600191805184550151910155565b6112b6838388614673565b013594614673565b8b519283520135602082015280604081015b0390a3614081565b611207565b51600162bed83560e01b0319815291508190610db790339060048401613f8a565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161132757604052565b6112fe565b604081019081106001600160401b0382111761132757604052565b608081019081106001600160401b0382111761132757604052565b60c081019081106001600160401b0382111761132757604052565b61014081019081106001600160401b0382111761132757604052565b60e081019081106001600160401b0382111761132757604052565b60a081019081106001600160401b0382111761132757604052565b602081019081106001600160401b0382111761132757604052565b606081019081106001600160401b0382111761132757604052565b90601f801991011681019081106001600160401b0382111761132757604052565b604051906103208261132c565b604051906103208261137d565b60405190610320826113b4565b6040519061032082611399565b6040519061032082611362565b604051906101a082018281106001600160401b0382111761132757604052565b6001600160401b03811161132757601f01601f191660200190565b604036600319011261030d576004356114ba816102fc565b602435906001600160401b03821161030d573660238301121561030d578160040135906114e682611487565b916114f46040519384611405565b808352366024828601011161030d57602081600092602461044c9701838701378401015261378d565b600091031261030d57565b3461030d57600036600319011261030d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361158257604051600080516020615b018339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b3461030d57604036600319011261030d5761160d600435611608816102fc565b6141f4565b6024356000526020526020604060002054604051908152f35b3461030d576020610762611639366106d4565b6001600160a01b0392831660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d51186526040808220938252928652828120919093168352602052902090565b81516001600160a01b031681526101408101929161032091906020818101516001600160a01b0316908301526040818101516001600160a01b0316908301526060818101516001600160a01b0316908301526080818101516001600160a01b03169083015260a0818101516001600160a01b03169083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120908101516001600160a01b0316910152565b3461030d5760008060031936011261199457610a5a906119886040516117748161137d565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152610100928084830152610120809201526119576117bc611433565b600080516020615ac1833981519152546001600160a01b0316815293600080516020615ae183398151915254611806906001600160a01b03165b6001600160a01b03166020870152565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d502546001600160a01b031660408601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d503546001600160a01b031660608601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d504546001600160a01b031660808601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d505546001600160a01b031660a08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d506546001600160a01b031660c08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d507546001600160a01b031660e08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d508546001600160a01b031690850152565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d509546001600160a01b031690830152565b60405191829182611688565b80fd5b604060031982011261030d576004356119af816102fc565b916024356001600160401b039283821161030d578060238301121561030d57816004013593841161030d5760248460061b8301011161030d576024019190565b3461030d576119fd36611997565b611a0892919261461d565b611a106154a6565b611a1d6111e633846159ae565b611ac657611a2b818461556c565b60005b818110611a3f5761044c6001606555565b80611a4e611ac1928487614683565b35611a598186615923565b602080611a6784878a614683565b0135611a7683610cba896141f4565b55611a82838689614683565b60405191013581526001600160a01b038616907f2f2a73977f9734e3b74f4efe888b44cdcca6903d8ab2b5be49c3969cc6cb1b629080602081016112d0565b611a2e565b604051600162bed83560e01b0319815280610db7338560048401613f8a565b906106fd916020815260018060a01b0380835116602083015260208301511660408201526040820151606082015260608201516080820152608082015160a082015260c0611b4260a084015160e083850152610100840190610fdf565b9201519060e0601f198285030191015261101c565b3461030d5760408060031936011261030d5780610a5a91600435611b7a816102fc565b611bb6825191611b8983611399565b606060c0600094858152856020820152858782015285838201528560808201528260a0820152015261422d565b60243582526020522090611c296006825193611bd185611399565b80546001600160a01b031685526001810154611bf5906001600160a01b03166117f6565b6002810154848601526003810154606086015260048101546080860152611c1e60058201614cf0565b60a086015201614d48565b60c08301525191829182611ae5565b3461030d5760008060031936011261199457611c52613367565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b60608060031936011261030d5760043590611cb0826102fc565b60243590611cbd826102fc565b6044356001600160401b03811161030d57611cdc90369060040161076b565b611ce792919261461d565b611cef6154a6565b60408051637777e6d760e01b6020808301919091526001600160a01b0397881660248301529690951660448601526064850183905260848501829052600582901b850160a490810196916000918701865b858410611d5e576104418961043c818d03601f198101835282611405565b909192939495969860a3198982030183528935607e198336030181121561030d5786611dbc6001938b611dab878596018035845285810135868501528a8101358b85015282810190614997565b9190926080809282015201916149cb565b9b019301940192919695949390611d40565b3461030d57602036600319011261030d57600435611deb816102fc565b611df3613367565b611dfc816156a4565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d576040516362cd1f1560e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57611e95575b507653504143455f4f50455241544f525f524547495354525960481b600080516020615b21833981519152600080a3005b806105f2611ea292611314565b38611e64565b3461030d57604036600319011261030d5761160d600435611ec8816102fc565b614266565b8015150361030d57565b3461030d57602036600319011261030d577fae6fb668d2dacbb6cc6e620b898a7166d67d7838c94ddeff2dbdf55995e9b1926020600435611f1781611ecd565b611f1f613367565b1515600080516020615b6183398151915260ff1981541660ff8316179055604051908152a1005b3461030d57600036600319011261030d576033546040516001600160a01b039091168152602090f35b3461030d57602036600319011261030d57600435611f8c816102fc565b611f94613367565b611f9d816157b8565b611fa6816133bf565b6001600160a01b03166914d1551513115351539560b21b600080516020615b21833981519152600080a3005b3461030d57600036600319011261030d57602060405160328152f35b3461030d57602036600319011261030d5760043561200b816102fc565b612013613367565b61201c816156e6565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d57604051631d1d389760e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe576120a6575b50675041594d454e545360c01b600080516020615b21833981519152600080a3005b806105f26120b392611314565b38612084565b3461030d57600036600319011261030d57602060ff600080516020615b6183398151915254166040519015158152f35b60c036600319011261030d576004803590612103826102fc565b6024359160443591612114836102fc565b606435936084359160a4359461212861461d565b6121306154a6565b612139856157da565b73__$11854c5905aa23948096e0e4d7059bb9de$__92833b1561030d57604094855198635e157ccf60e11b8a526000998a8180612178888a8301613fa4565b03818a5af480156105fe57612485575b508015612475578115612465578815158061245b575b61243a576121ac82826142d8565b600080516020615ae1833981519152549098906121d9906001600160a01b03165b6001600160a01b031690565b9860208951809b6361fe24a960e11b825281806121fd868d83019190602083019252565b03915afa998a156105fe578c9a612416575b508961221a916147dc565b988b883b156119945789516338fa83e760e01b8152600080516020615ac18339815191528982019081526001600160a01b0389166020820152604081019c909c529a8b90819060600103818b5af49182156105fe578c9a7ec827db726736dd1c3f5c4643456d97cc22d1613afeae6f8576124e65e8e1bc93612403575b506123976122ca6122c589610cc96122b28b610cba8861429f565b3360009081526020919091526040902090565b6147e9565b9c6123598c886122d8611440565b6001600160a01b038d168152918960208401528201528560608201528260808201526123108b610cc98c610cc93391610cba8b61429f565b815181546001600160a01b0319166001600160a01b0391909116178155906004906080906020810151600185015560408101516002850155606081015160038501550151910155565b8b516001600160a01b038a811682526020820197909752604081019790975260608701939093526080860192909252909216923392819060a0820190565b0390a4602086015193606081880151970151843b156123ff576123cf915197889687958695634c4c261960e01b87523391870161482e565b03915af480156105fe576123ec575b506123e96001606555565b80f35b806105f26123f992611314565b386123de565b8680fd5b806105f261241092611314565b38612297565b61221a919a506124339060203d8111610fd857610fc98183611405565b999061220f565b8651633312a4fd60e21b81528086018a815242602082015281906040010390fd5b504289111561219e565b865163c6b949a960e01b81528590fd5b865163473ae14d60e01b81528590fd5b806105f261249292611314565b38612188565b3461030d5761010036600319011261030d576004356124b6816102fc565b604435906124c3826102fc565b6064356124cf816102fc565b6001600160401b039260c43584811161030d576124f090369060040161076b565b9160e43595861161030d5761250c61044c96369060040161076b565b95909460a4359260843592602435906149ef565b9060a060031983011261030d57600435612539816102fc565b91602435612546816102fc565b91604435916001600160401b039081841161030d578060238501121561030d5783600401359382851161030d578160248660071b8301011161030d57602401939260643583811161030d578261259e9160040161076b565b9390939260843591821161030d576125b89160040161076b565b9091565b3461030d576125ca36612520565b969492939091956125d961461d565b6125e16154a6565b6125ee6111e633886159ae565b6127f7576125fc82856154d1565b73__$11854c5905aa23948096e0e4d7059bb9de$__97883b1561030d57604093845199635e157ccf60e11b8b5260009a8b818061263c8860048301613fa4565b0381855af480156105fe576127e4575b508a813b15611994578284928c8b6126798b51968795869485946376fb859760e01b865260048601613fd6565b03915af480156105fe576127d1575b50895b84811061269d578a6123e96001606555565b8888888888888f888a916126b28a86896140a6565b35976126be898b615923565b8a602087898b84846126d18286856140a6565b0135936126dd926140a6565b0135898c60609586926126ef926140a6565b0135906126fa61144d565b338152926001600160a01b038b1684860152838d01528483015260808201526127243686866140d2565b60a08201528b8d612736368a8a61412a565b60c08401526127449061422d565b6000918252602052604090209061275a9161447b565b6127658d898c6140a6565b0135988c89612775828b856140a6565b013598612781926140a6565b01359651968796339b600160a01b60019003169961279f97896145d7565b037f4c048dfd080dcfa2cccc41ef603e5f0ed6602ca215a41581d653aadf841a560b91a46127cc90614081565b61268b565b806105f26127de92611314565b38612688565b806105f26127f192611314565b3861264c565b604051600162bed83560e01b0319815280610db7338960048401613f8a565b3461030d5760408060031936011261030d57612850600435612837816102fc565b6000602084516128468161132c565b82815201526141bb565b6024356000526020528060002081516128688161132c565b60206001835493848452015491019081528251918252516020820152f35b3461030d57600036600319011261030d57600080516020615b81833981519152546040516001600160a01b039091168152602090f35b3461030d576128ca36611997565b6128d592919261461d565b6128dd6154a6565b6128ea6111e633846159ae565b611ac6576128f8818461556c565b60005b81811061290c5761044c6001606555565b8061291b61298e928487614683565b356129268186615923565b60208061293484878a614683565b013561294383610cba89614266565b5561294f838689614683565b60405191013581526001600160a01b038616907feead0384c6f48c02c0099b2433359d43617492f06d8e3a59cbe786b9970f7e619080602081016112d0565b6128fb565b3461030d57600036600319011261030d576020604051604b8152f35b3461030d57602036600319011261030d576004356129cc816102fc565b6129d4613367565b6129dd81615796565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d576040516328b80cf560e21b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57612a75575b507522a92199182fa0a8282927ab20a62fa6a0a720a3a2a960511b600080516020615b21833981519152600080a3005b806105f2612a8292611314565b38612a45565b3461030d57602036600319011261030d57600435612aa5816102fc565b612aad613367565b612ab681615796565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d57604051631f1afd0d60e01b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57612b4f575b507622a9219b9918afa0a8282927ab20a62fa6a0a720a3a2a960491b600080516020615b21833981519152600080a3005b806105f2612b5c92611314565b38612b1e565b3461030d57600036600319011261030d57600080516020615b41833981519152546040516001600160a01b039091168152602090f35b3461030d57608036600319011261030d57610a5a612c0c612c2c600435612bbe816102fc565b610cc9604435612bcd816102fc565b60643592612bda846102fc565b608060409687928351612bec816113b4565b60009381858093528260208201528287820152826060820152015261429f565b6024358252602052209060018060a01b0316600052602052604060002090565b906004815192612c3b846113b4565b60018060a01b038154168452600181015460208501526002810154838501526003810154606085015201546080830152519182918291909160808060a083019460018060a01b0381511684526020810151602085015260408101516040850152606081015160608501520151910152565b3461030d57602036600319011261030d57600435612cc9816102fc565b612cd1613367565b612cda81615719565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d57604051632867932b60e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57612d73575b5076415050524f5645445f544f4b454e5f524547495354525960481b600080516020615b21833981519152600080a3005b806105f2612d8092611314565b38612d42565b3461030d57612da5612d97366106d4565b91612da061461d565b614874565b6001606555005b3461030d57602036600319011261030d57600435612dc9816102fc565b612dd1613367565b612dda8161575b565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d57604051632d8b49e160e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57612e6c575b506f5354414b494e475f53455454494e475360801b600080516020615b21833981519152600080a3005b806105f2612e7992611314565b38612e42565b3461030d57602036600319011261030d57600435612e9c816102fc565b612ea4613367565b6001600160a01b03811615612ebc5761044c9061341b565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461030d57612f1e36612520565b90612f2e9792969395949761461d565b612f366154a6565b612f4088866154d1565b73__$11854c5905aa23948096e0e4d7059bb9de$__3b1561030d57604051635e157ccf60e11b815260008180612f798860048301613fa4565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af480156105fe576132e3575b5073__$11854c5905aa23948096e0e4d7059bb9de$__3b1561030d576040516376fb859760e01b815260008180612fda86868d8d60048601613fd6565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af480156105fe576132d0575b50613008836157da565b600080516020615b818339815191525461304c90602090613031906001600160a01b03166121cd565b6040518093819263e985e9c560e01b83523360048401613f8a565b03816001600160a01b0388165afa9081156105fe576000916132a1575b50156132855760005b8881106130835761044c6001606555565b61308e818a886140a6565b35868a60606130bc8560406130b3828660206130ab83838c6140a6565b0135986140a6565b0135938c6140a6565b013582156132735781156132615780151580613257575b61323757604051627eeac760e11b8152336004820152602481018590526020816044816001600160a01b038d165afa9081156105fe57600091613218575b508281106131db57507fe4cf997ce4def583f8220b51e6c89b5dbf6eeded5de4d1d78884a25d2bf46d5d8392896131ce8f8f8c918f97918d926131b78a6131d69f9e9d8e6131b29161317361316461145a565b6001600160a01b039095168552565b60208401528b604084015284606084015261318f3688886140d2565b608084015261319f368a8a61412a565b60a0840152610cc93391610cba8d614182565b6146b3565b60405197889760018060a01b03169b339b896145d7565b0390a4614081565b613072565b604051636906ef1760e11b81523360048201526001600160a01b038a1660248201526044810186905260648101849052608481019190915260a490fd5b613231915060203d602011610fd857610fc98183611405565b38613111565b6040516346a836ff60e11b81526004810191909152426024820152604490fd5b50428111156130d3565b60405163c6b949a960e01b8152600490fd5b6040516331cc996d60e11b8152600490fd5b60405163d65b0d6960e01b815280610db7853360048401613f8a565b6132c3915060203d6020116132c9575b6132bb8183611405565b81019061469e565b38613069565b503d6132b1565b806105f26132dd92611314565b38612ffe565b806105f26132f092611314565b38612f9d565b3461030d57602036600319011261030d57600435613313816102fc565b61331b613367565b61332481615796565b6001600160a01b0316613336816133ed565b7722a92198989a9aafa0a8282927ab20a62fa6a0a720a3a2a960411b600080516020615b21833981519152600080a3005b6033546001600160a01b0316330361337b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600080516020615b4183398151915280546001600160a01b0319166001600160a01b03909216919091179055565b600080516020615b8183398151915280546001600160a01b0319166001600160a01b03909216919091179055565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b1561346b57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b156134cc57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b9081602091031261030d575190565b6040513d6000823e3d90fd5b1561354857565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b60809060208152602e60208201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960408201526d6f6e206973206e6f74205555505360901b60608201520190565b803b1561362357600080516020615b0183398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b90613688826135ee565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613732575b6136ca575050565b61372f91600080604051936136de856113ea565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020860152660819985a5b195960ca1b6040860152602081519101845af4613729613898565b916138c8565b50565b5060006136c2565b90613744826135ee565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613785576136ca575050565b5060016136c2565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692906137c630851415613464565b6137e3600080516020615b018339815191529482865416146134c5565b6137eb613367565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561382157505061032091506135ee565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181613878575b506138655760405162461bcd60e51b815280610db76004820161359f565b610320936138739114613541565b61373a565b61389191925060203d8111610fd857610fc98183611405565b9038613847565b3d156138c3573d906138a982611487565b916138b76040519384611405565b82523d6000602084013e565b606090565b9192901561392a57508151156138dc575090565b3b156138e55790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b82519091501561393d5750805190602001fd5b60405162461bcd60e51b815260206004820152908190610db79060248301906107e1565b99979593919a98969492909a6000549b60ff8d60081c1615809d819e613a89575b8115613a69575b5015613a0d576139af9b8d6139a6600160ff196000541617600055565b6139f457613d5f565b6139b557565b6139c561ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b613a0861010061ff00196000541617600055565b613d5f565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b15915081613a7b575b5038613989565b6001915060ff161438613a74565b600160ff8216109150613982565b5190610320826102fc565b908161014091031261030d57613ab6611433565b90613ac081613a97565b8252613ace60208201613a97565b6020830152613adf60408201613a97565b6040830152613af060608201613a97565b6060830152613b0160808201613a97565b6080830152613b1260a08201613a97565b60a0830152613b2360c08201613a97565b60c0830152613b3460e08201613a97565b60e0830152610100613b47818301613a97565b90830152613b59610120809201613a97565b9082015290565b8051600080516020615ac183398151915280546001600160a01b03199081166001600160a01b03938416179091556020830151600080516020615ae18339815191528054831691841691909117905560408301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5028054831691841691909117905560608301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5038054831691841691909117905560808301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5048054831691841691909117905560a08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5058054831691841691909117905560c08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5068054831691841691909117905560e08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d507805483169184169190911790556101008301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50880549092169083161790556101209091015161032091167f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50980546001600160a01b0319166001600160a01b03909216919091179055565b93959a9997919a98929498969096613d7685615666565b613d7f886155b3565b613d888c6156a4565b613d91866155f2565b613d9a876156e6565b613da38a615719565b613dac8161575b565b613db58261562b565b613dbe83615796565b613dc784615796565b613dd089615796565b613dd98b6157b8565b60405163ef8c824960e01b81526001600160a01b03958616600482015297851660248901529a841660448801529383166064870152938216608486015295811660a485015296871660c4840152861660e48301528516610104820152919093166101248201526101409283826101448173__$c98ca6a62396e5a7a1471db151198a1f31$__5af49384156105fe57613e9594613e9093613e8292600092613ead575b5050613b60565b6001600160a01b03166133ed565b6133bf565b613e9d613f3a565b613ea5613f6e565b610320613f5d565b613ecc9250803d10613ed3575b613ec48183611405565b810190613aa2565b3880613e7b565b503d613eba565b15613ee157565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b613f5460ff60005460081c16613f4f81613eda565b613eda565b6103203361341b565b61032060ff60005460081c16613eda565b613f8360ff60005460081c16613f4f81613eda565b6001606555565b6001600160a01b0391821681529116602082015260400190565b600080516020615ac183398151915281526001600160a01b03909116602082015260400190565b60ff81160361030d57565b909293918060408301604084525260608201939060005b81811061403e57505050808303602091820152818352918201929160005b828110614019575050505090565b90919293828060019260ff883561402f81613fcb565b1681520195019392910161400b565b909193946001908535614050816102fc565b60a083901b8390031681526020908101969501929101613fed565b634e487b7160e01b600052601160045260246000fd5b6000198114610dbb5760010190565b634e487b7160e01b600052603260045260246000fd5b91908110156140b65760071b0190565b614090565b6001600160401b0381116113275760051b60200190565b92916140dd826140bb565b916140eb6040519384611405565b829481845260208094019160051b810192831161030d57905b8282106141115750505050565b838091833561411f816102fc565b815201910190614104565b9291614135826140bb565b916141436040519384611405565b829481845260208094019160051b810192831161030d57905b8282106141695750505050565b838091833561417781613fcb565b81520191019061415c565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5126020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5106020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5136020526040902090565b81810292918115918404141715610dbb57565b8181106142f6575050565b600081556001016142eb565b90600160401b81116113275781549080835581811061432057505050565b61032092600052602060002091820191016142eb565b90600160401b811161132757815481835580821061435357505050565b61032092600052601f6020600020918180850160051c840194168061437f575b500160051c01906142eb565b600019908186019182549160200360031b1c16905538614373565b9080516001600160401b038111611327576143b58184614336565b6143c9602080930193600052602060002090565b908060051c9260005b8481106144455750601f19821690910390816143f0575b5050505050565b9390600094855b82811061440e5750505050015538808080806143e9565b909192958261443a600192846144258b5160ff1690565b919060ff809160031b9316831b921b19161790565b9701939291016143f7565b6000805b83811061445d5750848201556001016143d2565b9690836144726001928a614425865160ff1690565b92019701614449565b815181546001600160a01b0319166001600160a01b03918216178255909190602082810151600185810180549285166001600160a01b03166001600160a01b03199093169290921790915591604084015160028601556060840151600386015560808401516004860155600585019060a0850151928351936001600160401b03851161132757819061450d8686614302565b0192600052806000209160005b85811061453a575050505050505090600660c0610320930151910161439a565b845182168482015593820193860161451a565b91908082526020809201929160005b82811061456a575050505090565b909192938280600192873561457e816102fc565b848060a01b0316815201950191019291909261455c565b91908082526020809201929160005b8281106145b2575050505090565b90919293828060019260ff88356145c881613fcb565b168152019501939291016145a4565b9694926106fd98969261460f959260018060a01b0316895260208901526040880152606087015260c0608087015260c086019161454d565b9260a0818503910152614595565b60026065541461462e576002606555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b91908110156140b6576060020190565b91908110156140b65760061b0190565b519061032082611ecd565b9081602091031261030d57516106fd81611ecd565b815181546001600160a01b0319166001600160a01b039182161782559091906020808301519160019283860155604084015160028601556060840151600386015560048501906080850151928351936001600160401b03851161132757819061471c8686614302565b0192600052806000209160005b858110614749575050505050505090600560a0610320930151910161439a565b8451821684820155938201938601614729565b91908110156140b65760051b0190565b6005600091828155826001820155826002820155826003820155600481018054848255806147c2575b50500190815490808355816147a957505050565b60208161032094601f935220910160051c8101906142eb565b6147d591855260208520908101906142eb565b3880614795565b91908201809211610dbb57565b906040516147f6816113b4565b82546001600160a01b031681526001830154602082015260028301546040820152600383015460608201526004909201546080830152565b600080516020615ac183398151915281526001600160a01b039182166020820152911660408201526060810191909152608081019190915260a081019190915260c00190565b91909161488e6122c583610cc96122b287610cba8761429f565b60408101938451156143e9576148d06148b285610cc933610cc986610cba8a61429f565b60046000918281558260018201558260028201558260038201550155565b60208281018051875160609586018051604080516001600160a01b038c8116825297810195909552840192909252958201529394909391169033907fb00a321de530b83262da5c2b572508a21b98c8d189dba9939e0359e8c9fbfeac90608090a473__$11854c5905aa23948096e0e4d7059bb9de$__90519351915193813b1561030d5760009361497960405196879586948594634c4c261960e01b865233906004870161482e565b03915af480156105fe5761498a5750565b806105f261032092611314565b9035601e198236030181121561030d5701602081359101916001600160401b03821161030d578160051b3603831361030d57565b81835290916001600160fb1b03831161030d5760209260051b809284830137010190565b979396614a7b9561043c98614a68949893614a899c96614a0d61461d565b614a156154a6565b6040519c8d9b8c9363b8e6b50f60e01b6020860152604460018060a01b039586809516602482015201521660648c01521660848a015260a489015260c488015261010060e488015261012487019161454d565b8481036023190161010486015291614595565b03601f198101835282611405565b506103206001606555565b519061032082613fcb565b5190600682101561030d57565b51906001600160e01b03198216820361030d57565b81601f8201121561030d578051614ad781611487565b92614ae56040519485611405565b8184526020828401011161030d576106fd91602080850191016107be565b81601f8201121561030d57805190614b1a826140bb565b92604092614b2a84519586611405565b808552602093848087019260051b8501019383851161030d57858101925b858410614b59575050505050505090565b83516001600160401b039081811161030d578301916101a09283601f19828a03011261030d57614b87611467565b908a8101518252614b99878201614a94565b8b830152606094614bab868301613a97565b88840152608095868301519084015260a095614bc8878401613a97565b9084015260c095614bda878401613a97565b9084015260e095868301519084015261010095868301519084015261012095614c04878401614693565b9084015261014095614c17878401614a9f565b9084015261016095614c2a878401614aac565b90840152610180918281015195861161030d578c96614c4e8c898099850101614ac1565b90850152015190820152815201930192614b48565b9060208282031261030d5781516001600160401b039283821161030d5701908181039260a0841261030d57608060405194614c9d8661132c565b1261030d57604051614cae81611347565b835181526020840151602082015260408401516040820152606084015160608201528452608083015190811161030d57614ce89201614b03565b602082015290565b9060405191828154918282526020928383019160005283600020936000905b828210614d255750505061032092500383611405565b85546001600160a01b031684526001958601958895509381019390910190614d0f565b90604080518093805492614d6f614d63858560209181520190565b92600052602060002090565b9360005b81601f82011061518b57610320955492828210615175575b82821061515b575b828210615141575b828210615127575b82821061510d575b8282106150f3575b8282106150d9575b8282106150bf575b8282106150a8575b50818110615090575b818110615078575b818110615060575b818110615048575b818110615030575b818110615018575b818110615000575b818110614fe8575b818110614fd0575b818110614fb8575b818110614fa0575b818110614f88575b818110614f70575b818110614f58575b818110614f40575b818110614f28575b818110614f10575b818110614ef8575b818110614ee0575b818110614ec8575b818110614eb0575b818110614e98575b10614e8a575b500383611405565b60f81c815260200138614e82565b60f083901c60ff168452926001906020019301614e7c565b60e883901c60ff168452926001906020019301614e74565b60e083901c60ff168452926001906020019301614e6c565b60d883901c60ff168452926001906020019301614e64565b60d083901c60ff168452926001906020019301614e5c565b60c883901c60ff168452926001906020019301614e54565b60c083901c60ff168452926001906020019301614e4c565b60b883901c60ff168452926001906020019301614e44565b60b083901c60ff168452926001906020019301614e3c565b60a883901c60ff168452926001906020019301614e34565b60a083901c60ff168452926001906020019301614e2c565b609883901c60ff168452926001906020019301614e24565b609083901c60ff168452926001906020019301614e1c565b608883901c60ff168452926001906020019301614e14565b608083901c60ff168452926001906020019301614e0c565b607883901c60ff168452926001906020019301614e04565b607083901c60ff168452926001906020019301614dfc565b606883901c60ff168452926001906020019301614df4565b606083901c60ff168452926001906020019301614dec565b605883901c60ff168452926001906020019301614de4565b605083901c60ff168452926001906020019301614ddc565b604883901c60ff168452926001906020019301614dd4565b83901c60ff16845292600190602001930138614dcb565b603884901c60ff1685529093600190602001940190614dc3565b603084901c60ff1685529093600190602001940190614dbb565b602884901c60ff1685529093600190602001940190614db3565b602084811c60ff1686529194909160019101940190614dab565b601884901c60ff1685529093600190602001940190614da3565b601084901c60ff1685529093600190602001940190614d9b565b600884901c60ff1685529093600190602001940190614d93565b60ff841685529093600190602001940190614d8b565b919350916001610400602092615429885461541e60ff6151af8582851660ff169052565b6153f761525c6153a78d615357896153078e6151d48184018a8d60081c1660ff169052565b6151e78584018a8d60101c1660ff169052565b888b610200606095615202878201858560181c1660ff169052565b6152176080958585888501921c1660ff169052565b6152bd60a097615230898401878760281c1660ff169052565b61526d60c09b6152498d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b6152826101208401878760481c1660ff169052565b6152976101408401878760501c1660ff169052565b6152ac6101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b6152d26101a08201858560681c1660ff169052565b6152e76101c08201858560701c1660ff169052565b6152fc6101e08201858560781c1660ff169052565b01921c1660ff169052565b61531c6102208c01888b60881c1660ff169052565b6153316102408c01888b60901c1660ff169052565b6153466102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b61536c6102a08a01868960a81c1660ff169052565b6153816102c08a01868960b01c1660ff169052565b6153966102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b6153bc6103208801848760c81c1660ff169052565b6153d16103408801848760d01c1660ff169052565b6153e66103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b61540c6103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b0195019101918693919492614d73565b600080516020615b4183398151915254815160009283926020909101906001600160a01b03165af4615469613898565b90156154725790565b80511561548157602081519101fd5b604051637dd68d8560e01b815260206004820152908190610db79060248301906107e1565b60ff600080516020615b6183398151915254166154bf57565b60405163ab35696f60e01b8152600490fd5b6154da82615a45565b60015b8281106154e957505050565b600019810190808211610dbb5761551b6155076155209386866140a6565b356155138387876140a6565b359083615a87565b614081565b6154dd565b61552e82615a45565b60015b82811061553d57505050565b600019810190808211610dbb5761551b61555b615567938686614673565b35615513838787614673565b615531565b61557582615a45565b60015b82811061558457505050565b600019810190808211610dbb5761551b6155a26155ae938686614683565b35615513838787614683565b615578565b6001600160a01b0316156155c357565b60405163602d6df560e01b8152734d41524b4554504c4143455f53455454494e475360601b6004820152602490fd5b6001600160a01b03161561560257565b60405163602d6df560e01b81526d524f59414c54595f454e47494e4560901b6004820152602490fd5b6001600160a01b03161561563b57565b60405163602d6df560e01b81526f5354414b494e475f524547495354525960801b6004820152602490fd5b6001600160a01b03161561567657565b60405163602d6df560e01b8152724e4554574f524b5f42454e454649434941525960681b6004820152602490fd5b6001600160a01b0316156156b457565b60405163602d6df560e01b81527653504143455f4f50455241544f525f524547495354525960481b6004820152602490fd5b6001600160a01b0316156156f657565b60405163602d6df560e01b8152675041594d454e545360c01b6004820152602490fd5b6001600160a01b03161561572957565b60405163602d6df560e01b815276415050524f5645445f544f4b454e5f524547495354525960481b6004820152602490fd5b6001600160a01b03161561576b57565b60405163602d6df560e01b81526f5354414b494e475f53455454494e475360801b6004820152602490fd5b6001600160a01b0316156157a657565b60405163c49074af60e01b8152600490fd5b6001600160a01b0316156157c857565b604051634e04f1e560e01b8152600490fd5b803b15801561580d575b6157eb5750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b808352602482015260248152615836816113ea565b519084617530fa6000513d8261588a575b5081615880575b5080615870575b80615861575b156157e4565b5061586b816158f3565b61585b565b5061587a81615896565b15615855565b905015153861584e565b60201115915038615847565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b6024820152602481526158c6816113ea565b5191617530fa6000513d826158e7575b50816158e0575090565b9050151590565b602011159150386158d6565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b6024820152602481526158c6816113ea565b6040516001620b695760e21b03198152600481018390526020816024816001600160a01b0386165afa9081156105fe57600091615990575b5015615965575050565b604051632be7c7f360e01b81526001600160a01b039190911660048201526024810191909152604490fd5b6159a8915060203d8111610fd857610fc98183611405565b3861595b565b6000806040516020810190638da5cb5b60e01b8252600481526159d08161132c565b5190845afa906159de613898565b91158015615a3a575b615a18575060208180518101031261030d576020015190615a07826102fc565b6001600160a01b0391821691161490565b60405163915b8f1d60e01b81526001600160a01b039091166004820152602490fd5b5060208251106159e7565b8015615a7557604b8111615a565750565b6044906040519063f80a484560e01b82526004820152604b6024820152fd5b60405163c2e5347d60e01b8152600490fd5b909182811115615a9657505050565b60405163f48f718f60e01b8152600481019290925260248201929092526044810191909152606490fdfe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5005e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d501360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc376c367a1420063e9671cc85404673694901b9db2c20dc84b5acbf060f7ee37a5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50b5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5145e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50aa264697066735822122006d47f961c8a43f2754a8dddf33fb039c6a2b29a982ed3666039c0b0fe71cd0c64736f6c63430008120033","sourceMap":"1305:22469:72:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;:::i;:::-;2471:103:25;;;;:::i;:::-;1607:61:72;;:::i;:::-;1305:22469;;;-1:-1:-1;;;1305:22469:72;14051:150;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;14051:150;;1305:22469;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;14016:195;14051:150;;;;;;;;;;;;;:::i;:::-;14016:195;:::i;:::-;;2536:1:25;1787;2065:22;1787:1;1985:109;2536:1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;1786:2034;1305:22469;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;1786:2034;;:::i;1305:22469::-;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;18271:26:72;;;:::i;:::-;18308:60;:82;;;;;;1305:22469;;-1:-1:-1;;;18308:82:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;18308:82;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;18308:82;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;18405:78:72;1305:22469;18308:82;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;1305:22469::-;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;19005:20:72;;;:::i;:::-;19036:54;:70;;;;;;1305:22469;;-1:-1:-1;;;19036:70:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;19036:70;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;19036:70;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;19121:66:72;1305:22469;19036:70;;;;;;:::i;:::-;;;;1305:22469;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;16169:80;1305:22469;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;-1:-1:-1;1305:22469:72;;;16169:42;1305:22469;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;16169:80;1305:22469;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;-1:-1:-1;1305:22469:72;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14051:150;1305:22469;-1:-1:-1;;1305:22469:72;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:103:25;;:::i;:::-;1607:61:72;;:::i;:::-;1305:22469;;15197:40;;;;15174:72;;;;1305:22469;;;;15174:72;;;;1305:22469;;;;;;;;;;;;;;;;;;;;;;;15174:72;15128:162;15174:72;15152:95;15174:72;;;;;;14051:150;;15174:72;;;;;;:::i;15152:95::-;1305:22469;;15128:162;;;;;;;:::i;:::-;2536:1:25;;1787;2065:22;1787:1;1985:109;2536:1;1305:22469:72;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;20327:22:72;;;:::i;:::-;20360:56;:74;;;;;;1305:22469;;-1:-1:-1;;;20360:74:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;20360:74;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;20360:74;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;20449:70:72;1305:22469;20360:74;;;;;;:::i;:::-;;;;1305:22469;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;6154:16:74;;;:::i;:::-;6198:1;6201:20;;;;;;-1:-1:-1;;;;;;;;1305:22469:72;;;10359:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;10381:3:72;10418:12;;10381:3;10418:12;;;;:::i;:::-;1305:22469;10448:80;:71;10508:10;10448:59;:50;;;;:::i;:::-;1305:22469;;;;;;;;;;10448:59;1305:22469;;;;;;;;;;;;;;;;10448:71;:80;1305:22469;10448:85;10444:132;;10590:78;10597:71;10508:10;10597:59;:50;;;;:::i;:71::-;10590:78;:::i;:::-;10508:10;;10687:57;1305:22469;10687:57;;10381:3;:::i;:::-;10344:13;;10444:132;10553:8;10381:3;:::i;6223::74:-;6246:12;;;;;:::i;:::-;-1:-1:-1;;1305:22469:72;;;;;;;;;6262:16:74;;;;;:::i;:::-;1305:22469:72;-1:-1:-1;6246:32:74;6242:141;;6223:3;;;;:::i;:::-;6186:13;;6242:141;6337:16;;6355:12;6337:16;;;6305:63;6337:16;;;;;:::i;:::-;1305:22469:72;6355:12:74;;:::i;:::-;1305:22469:72;;-1:-1:-1;;;6305:63:74;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;6305:63:74;;;;1305:22469:72;;:::i;:::-;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;17909:25:72;;;:::i;:::-;17945:59;:80;;;;;;1305:22469;;-1:-1:-1;;;17945:80:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;17945:80;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;17945:80;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;18040:76:72;1305:22469;17945:80;;;;;;:::i;:::-;;;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1898:6:24;1305:22469:72;;;;1873:80:24;1889:4;1881:23;;;1873:80;:::i;:::-;1963:87;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;;;1971:30:24;1963:87;:::i;:::-;1303:62:17;;:::i;:::-;1305:22469:72;;;;;;:::i;:::-;-1:-1:-1;1305:22469:72;;971:66:21;;1305:22469:72;;971:66:21;;;3330:17;;;;;;:::i;3232:526::-;1305:22469:72;;;;;;;;971:66:21;;;;;;;3383:63;;1305:22469:72;;3383:63:21;;-1:-1:-1;;3383:63:21;;;3232:526;-1:-1:-1;3379:302:21;;1305:22469:72;;-1:-1:-1;;;3610:56:21;;1305:22469:72;3610:56:21;1305:22469:72;3610:56:21;;;:::i;3379:302::-;3737:9;3496:28;3488:82;3496:28;;3488:82;:::i;:::-;3737:9;:::i;3383:63::-;;;;;1305:22469:72;3383:63:21;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1305:22469:72;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14051:150;1305:22469;14051:150;;1305:22469;;;;;;;;:::i;:::-;;;;;16885:69;1305:22469;;;:::i;:::-;;;;;;;16885:50;1305:22469;;;;;;:::i;:::-;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;16885:50;:::i;:::-;1305:22469;;;;;;;;;;;;;;;;;;;;;;16885:69;1305:22469;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;1607:61:72;;:::i;:::-;5763:47;5764:46;5799:10;5764:46;;:::i;:::-;5763:47;;1305:22469;5763:47;5759:131;;5932:9;;;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;-1:-1:-1;5973:20:72;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;5995:3:72;6032:12;;5995:3;6032:12;;;;:::i;:::-;1305:22469;6107:7;;;;:::i;:::-;1305:22469;6318:96;1305:22469;;6388:12;1305:22469;;;;;6129:68;1305:22469;6129:59;1305:22469;6239:12;;6272;6239;;;;;;;;:::i;:::-;:17;1305:22469;6272:12;;:::i;:::-;:25;1305:22469;;;:::i;:::-;;;;6216:83;;;1305:22469;6129:59;:::i;:68::-;1305:22469;;;;;;1787:1:25;;1305:22469:72;;;;1787:1:25;1305:22469:72;;6369:12;;;;;:::i;:::-;:17;1305:22469;6388:12;;:::i;:::-;1305:22469;;;;;6388:25;1305:22469;;;;;;;;;6318:96;;;;5995:3;:::i;:::-;5958:13;;5759:131;1305:22469;-1:-1:-1;;;;;;5833:46:72;;1305:22469;-1:-1:-1;1305:22469:72;;5833:46;;5799:10;;1305:22469;5833:46;;;:::i;1305:22469::-;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;14051:150;;;1305:22469;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;-1:-1:-1;;;;;1305:22469:72;;;;14051:150;1305:22469;-1:-1:-1;;1305:22469:72;;;;:::o;:::-;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;3901:220:24;1305:22469:72;;;;;;;;;;3901:220:24;:::i;1305:22469:72:-;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1305:22469:72;;;;2333:6:24;-1:-1:-1;;;;;1305:22469:72;2324:4:24;2316:23;1305:22469:72;;;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;16380:52;1305:22469;;;;;:::i;:::-;16380:52;:::i;:::-;1305:22469;;-1:-1:-1;1305:22469:72;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;16625:78;1305:22469;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;-1:-1:-1;1305:22469:72;;;16625:40;1305:22469;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;;;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;-1:-1:-1;;;;;1305:22469:72;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;1607:61:72;;:::i;:::-;7322:47;7323:46;7358:10;7323:46;;:::i;7322:47::-;7318:131;;7486:9;;;;:::i;:::-;7524:1;7527:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;7549:3:72;7586:12;;7549:3;7586:12;;;;:::i;:::-;1305:22469;7661:7;;;;:::i;:::-;7747:18;:12;;;;;;:::i;:::-;:18;1305:22469;7683:61;:52;;;;:::i;:61::-;1787:1:25;7827:12:72;;;;;:::i;:::-;1305:22469;;7827:18;;1305:22469;;;-1:-1:-1;;;;;1305:22469:72;;;7784:62;;1305:22469;;;;7784:62;1305:22469;7549:3;7512:13;;7318:131;1305:22469;;-1:-1:-1;;;;;;7392:46:72;;1305:22469;7392:46;7358:10;1305:22469;;7392:46;;;:::i;1305:22469::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14051:150;1305:22469;14051:150;;1305:22469;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15469:57;1305:22469;;;;;;:::i;:::-;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15469:57;:::i;:::-;1305:22469;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1303:62:17;;:::i;:::-;2758:6;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;;;;;;;-1:-1:-1;;;;;1305:22469:72;2806:40:17;1305:22469:72;;2806:40:17;1305:22469:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;1607:61:72;;:::i;:::-;1305:22469;;;-1:-1:-1;;;1305:22469:72;13633:152;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;13633:152;;1305:22469;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;13598:197;13633:152;;;;;14051:150;;13633:152;;;;;;:::i;1305:22469::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;18644:29:72;;;:::i;:::-;18684:62;:86;;;;;;1305:22469;;-1:-1:-1;;;18684:86:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;18684:86;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;18684:86;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;18785:83:72;1305:22469;18684:86;;;;;;:::i;:::-;;;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;15920:54;1305:22469;;;;;:::i;:::-;15920:54;:::i;1305:22469::-;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1305:22469:72;;;;21964:32;1305:22469;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;1305:22469:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;;;;;;;;;;;;;;21964:32;1305:22469;;;;;;;-1:-1:-1;;1305:22469:72;;;;1513:6:17;1305:22469:72;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;21682:11:72;;;:::i;:::-;21704:46;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;-1:-1:-1;;;;;;;;;;;;;;;;21765:59:72;1305:22469;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;1091:2:74;1305:22469:72;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;19309:14:72;;;:::i;:::-;19334:49;:60;;;;;;1305:22469;;-1:-1:-1;;;19334:60:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;19334:60;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;19334:60;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;19409:55:72;1305:22469;19334:60;;;;;;:::i;:::-;;;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;;;-1:-1:-1;;;;;;;;;;;971:66:21;1305:22469:72;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;2471:103:25;;;:::i;:::-;1607:61:72;;:::i;:::-;11045:16;;;:::i;:::-;11134:40;:58;;;;;;1305:22469;;;;971:66:21;;;;11134:58:72;;-1:-1:-1;11134:58:72;;;;;;;;;;:::i;:::-;;;;;;;;;;;;1305:22469;11206:11;;;11202:48;;11264:14;;11260:49;;11323:20;;;:58;;;1305:22469;11319:152;;11503:18;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;;11556:58;;-1:-1:-1;;;;;1305:22469:72;;-1:-1:-1;;;;;1305:22469:72;;;11556:58;1305:22469;;;;971:66:21;;;;;11556:71:72;;;;;;;;;1305:22469;;;;;;;;11556:71;;;;;;;;;;;;;;1305:22469;11693:28;;;;;:::i;:::-;11637:85;;;;;;;1305:22469;;-1:-1:-1;;;11637:85:72;;-1:-1:-1;;;;;;;;;;;11637:85:72;;;1305:22469;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;11637:85;;;;;;;;;;;;12145:141;11637:85;;;1305:22469;11762:26;12145:141;1305:22469;11762:66;:26;:48;:36;:26;;;;:::i;:36::-;11799:10;1305:22469;;;;;;;;;;;;;;11762:66;1305:22469;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;11907:222;;1305:22469;11907:222;;1305:22469;11907:222;;1305:22469;11907:222;1305:22469;11907:222;;1305:22469;11907:222;1305:22469;11907:222;;1305:22469;11838:66;11799:10;11838:48;11799:10;11838:36;11799:10;11838:26;;;;:::i;:66::-;1698:18:74;;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;1787:1:25;1305:22469:72;;;;;;;1787:1:25;1305:22469:72;;;;;;;1787:1:25;1305:22469:72;;;;1787:1:25;1305:22469:72;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11799:10;;1305:22469;;;;;;;12145:141;;;;1305:22469;12425:19;;1305:22469;12462:22;1305:22469;12462:22;;;1305:22469;12502:37;;1305:22469;12297:256;;;;;;1305:22469;;971:66:21;;;;;;;;;;12297:256:72;;11799:10;12297:256;;;;:::i;:::-;;;;;;;;;;;1305:22469;2536:1:25;;1787;2065:22;1787:1;1985:109;2536:1;1305:22469:72;;12297:256;;;;;;:::i;:::-;;;;;1305:22469;;;11637:85;;;;;;:::i;:::-;;;;11556:71;11693:28;11556:71;;;;;1305:22469;11556:71;;;;;;;;;:::i;:::-;;;;;11319:152;1305:22469;;-1:-1:-1;;;11404:56:72;;;;;1305:22469;;;11444:15;1305:22469;;;;;;;;6305:63:74;;;11323:58:72;11366:15;;11347:34;;;11323:58;;11260:49;1305:22469;;-1:-1:-1;;;11287:22:72;;1305:22469;;11287:22;11202:48;1305:22469;;-1:-1:-1;;;11226:24:72;;1305:22469;;11226:24;11134:58;;;;;;:::i;:::-;;;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;14224:712;1305:22469;;;;;;:::i;:::-;;;;;;;;;;;;14224:712;;:::i;1305:22469::-;;;-1:-1:-1;;1305:22469:72;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;2471:103:25;;;;;;;;;:::i;:::-;1607:61:72;;:::i;:::-;4247:47;4248:46;4283:10;4248:46;;:::i;4247:47::-;4243:131;;4411:9;;;;:::i;:::-;4431:60;:78;;;;;;1305:22469;;;;971:66:21;;;;4431:78:72;;:34;:78;;;;;;1305:22469;4431:78;;;:::i;:::-;;;;;;;;;;;;1305:22469;4519:74;;;;;;;1305:22469;;;;;4519:74;1305:22469;;971:66:21;;;;;;;;;;4519:74:72;;1305:22469;4519:74;;;:::i;:::-;;;;;;;;;;;1305:22469;4609:13;;4624:20;;;;;;2536:1:25;;1787;2065:22;1787:1;1985:109;4646:3:72;4683:12;;;;;;;;;;;;;;;:::i;:::-;1305:22469;4758:7;;;;;:::i;:::-;4979:18;;:12;;;;;;;;;;:::i;:::-;:18;1305:22469;5026:12;;;;:::i;:::-;:22;1305:22469;5076:21;;;:12;;;;;;:::i;:::-;:21;1305:22469;;;;:::i;:::-;4283:10;1305:22469;;4283:10;-1:-1:-1;;;;;1305:22469:72;;4850:356;;;1305:22469;4850:356;;;1305:22469;4850:356;;;1305:22469;4850:356;;;1305:22469;;;;;;:::i;:::-;4850:356;;;1305:22469;;;;;;;;:::i;:::-;4850:356;;;1305:22469;4781:57;;;:::i;:::-;1305:22469;;;;;;;;;;;;;:::i;:::-;5386:12;;;;;:::i;:::-;:18;1305:22469;5422:12;;;;;;;;:::i;:::-;:22;1305:22469;5462:12;;;;:::i;:::-;:21;1305:22469;;;4283:10;;;;1305:22469;;;;;;;;5226:335;;;;;:::i;:::-;;;;;4646:3;;;:::i;:::-;4609:13;;4519:74;;;;;;:::i;:::-;;;;4431:78;;;;;;:::i;:::-;;;;4243:131;1305:22469;;-1:-1:-1;;;;;;4317:46:72;;1305:22469;4317:46;4283:10;1305:22469;;4317:46;;;:::i;1305:22469::-;;;;;;;;;;;;;15718:59;1305:22469;;;;;:::i;:::-;-1:-1:-1;1305:22469:72;;;;;;:::i;:::-;;;;;;15718:59;:::i;:::-;1305:22469;;-1:-1:-1;1305:22469:72;;;;-1:-1:-1;1305:22469:72;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;1607:61:72;;:::i;:::-;6605:47;6606:46;6641:10;6606:46;;:::i;6605:47::-;6601:131;;6769:9;;;;:::i;:::-;6807:1;6810:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;6832:3:72;6869:12;;6832:3;6869:12;;;;:::i;:::-;1305:22469;6944:7;;;;:::i;:::-;7032:18;:12;;;;;;:::i;:::-;:18;1305:22469;6966:63;:54;;;;:::i;:63::-;1787:1:25;7114:12:72;;;;;:::i;:::-;1305:22469;;7114:18;;1305:22469;;;-1:-1:-1;;;;;1305:22469:72;;;7069:64;;1305:22469;;;;7069:64;1305:22469;6832:3;6795:13;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;1039:2:74;1305:22469:72;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;20650:21:72;;;:::i;:::-;20682:61;:84;;;;;;1305:22469;;-1:-1:-1;;;20682:84:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;20682:84;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;20682:84;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;20781:81:72;1305:22469;20682:84;;;;;;:::i;:::-;;;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;20995:22:72;;;:::i;:::-;21028:62;:86;;;;;;1305:22469;;-1:-1:-1;;;21028:86:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;21028:86;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;21028:86;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;21129:83:72;1305:22469;21028:86;;;;;;:::i;:::-;;;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;17153:46;:82;1305:22469;;;;;:::i;:::-;17153:64;1305:22469;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;17153:46;:::i;:::-;1305:22469;;;;;;;;;;;;;;;;;;;;;;;17153:82;1305:22469;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;19625:29:72;;;:::i;:::-;19665:62;:86;;;;;;1305:22469;;-1:-1:-1;;;19665:86:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;19665:86;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;19665:86;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;19766:83:72;1305:22469;19665:86;;;;;;:::i;:::-;;;;1305:22469;;;;2536:1:25;1305:22469:72;;;:::i;:::-;2471:103:25;;;:::i;:::-;2536:1;:::i;:::-;1787;2065:22;1787:1;1305:22469:72;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;19992:22:72;;;:::i;:::-;20025:56;:74;;;;;;1305:22469;;-1:-1:-1;;;20025:74:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;20025:74;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;20025:74;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;20114:70:72;1305:22469;20025:74;;;;;;:::i;:::-;;;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;2402:22:17;1305:22469:72;;2496:8:17;;;:::i;1305:22469:72:-;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;;;;;;:::i;:::-;1607:61:72;;:::i;:::-;8174:9;;;;:::i;:::-;8194:60;:78;;;;1305:22469;;-1:-1:-1;;;8194:78:72;;:34;1305:22469;;8194:78;;1305:22469;8194:78;;;:::i;:::-;;:60;;:78;;;;;;;;1305:22469;8194:60;;8282:74;;;;1305:22469;;-1:-1:-1;;;8282:74:72;;8194:34;1305:22469;;8282:74;;;;;1305:22469;8282:74;;;:::i;:::-;;8194:60;;8282:74;;;;;;;;1305:22469;8391:16;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1305:22469:72;8479:91;;;;8516:53;;-1:-1:-1;;;;;1305:22469:72;;;8516:53;1305:22469;;971:66:21;;;;;;;8479:91:72;;8504:10;1305:22469;8479:91;;;:::i;:::-;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;8479:91;;;;;;;8194:34;8479:91;;;1305:22469;8478:92;;8474:182;;8194:34;8686:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;8708:3:72;8745:12;;;;;:::i;:::-;1305:22469;8795:12;;8906:27;:12;8795;1305:22469;8846:12;8795;;8479:91;8795:12;;;;;:::i;:::-;:18;1305:22469;8846:12;;:::i;:::-;:21;1305:22469;8906:12;;;:::i;:::-;:27;1305:22469;8952:10;;8948:46;;9012:13;;9008:48;;9074:19;;;:56;;;8708:3;9070:161;;1305:22469;;-1:-1:-1;;;9269:38:72;;8504:10;1305:22469;9269:38;;1305:22469;;;;;;;8479:91;1305:22469;;;-1:-1:-1;;;;;1305:22469:72;;9269:38;;;;;;;8194:34;9269:38;;;8708:3;9325:24;;;;9321:158;;1305:22469;9871:292;1305:22469;;;9871:292;1305:22469;;;;;;;;;;;8708:3;1305:22469;;;;9493:71;1305:22469;9567:284;1305:22469;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;;9567:284;8479:91;9567:284;;1305:22469;9567:284;1305:22469;9567:284;;1305:22469;9567:284;8906:27;9567:284;;1305:22469;;;;;;:::i;:::-;9567:284;;;1305:22469;;;;;;:::i;:::-;;9567:284;;1305:22469;9493:59;8504:10;9493:50;;;;:::i;:71::-;1305:22469;:::i;:::-;;;;;;;;;;;;8504:10;;9871:292;;;:::i;:::-;;;;8708:3;:::i;:::-;8671:13;;9321:158;1305:22469;;-1:-1:-1;;;9376:88:72;;8504:10;1305:22469;9376:88;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;6305:63:74;9269:38:72;;;;8479:91;9269:38;8479:91;9269:38;;;;;;;:::i;:::-;;;;9070:161;1305:22469;;-1:-1:-1;;;9157:59:72;;1305:22469;9157:59;;1305:22469;;;;9200:15;1305:22469;;;;;;6305:63:74;9074:56:72;9115:15;;9097:33;;;9074:56;;9008:48;1305:22469;;-1:-1:-1;;;9034:22:72;;1305:22469;;9034:22;8948:46;1305:22469;;-1:-1:-1;;;8971:23:72;;1305:22469;;8971:23;8474:182;1305:22469;;-1:-1:-1;;;8593:52:72;;1305:22469;8593:52;1305:22469;8504:10;1305:22469;8593:52;;;:::i;8479:91::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;8282:74;;;;;;:::i;:::-;;;;8194:78;;;;;;:::i;:::-;;;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;21347:23:72;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;21381:95;1305:22469;21381:95;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;21491:85:72;1305:22469;1599:130:17;1513:6;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;929:10:34;1662:23:17;1305:22469:72;;1599:130:17:o;1305:22469:72:-;;;;3610:56:21;;;1305:22469:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;:::o;2666:187:17:-;2758:6;1305:22469:72;;-1:-1:-1;;;;;1305:22469:72;;;-1:-1:-1;;;;;;1305:22469:72;;;;;;;;;;2806:40:17;-1:-1:-1;;2806:40:17;2666:187::o;1305:22469:72:-;;;;:::o;:::-;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;971:66:21;;;;;;;;;;;:::o;:::-;1305:22469:72;;971:66:21;;;;;;;;;;;:::o;:::-;1305:22469:72;;-1:-1:-1;;;971:66:21;;;;;;;;;;;1305:22469:72;971:66:21;1305:22469:72;;;971:66:21;-1:-1:-1;;;971:66:21;;;;;;;;;;;;;;;;;1305:22469:72;971:66:21;1305:22469:72;;;971:66:21;-1:-1:-1;;;971:66:21;;;;;;:::o;1699:281::-;1713:19:33;;:23;1305:22469:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;1699:281:21:o;1305:22469:72:-;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;2372:276:21;;2171:17;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;2204:27:21;-1:-1:-1;;2204:27:21;1305:22469:72;;2523:15:21;;;:28;;;2372:276;2519:123;;2372:276;;:::o;2519:123::-;7318:69:33;1305:22469:72;-1:-1:-1;1305:22469:72;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;7276:25:33;;;;;;;;;:::i;:::-;7318:69;;:::i;:::-;;2372:276:21:o;2523:28::-;;-1:-1:-1;2523:28:21;;2372:276;;2171:17;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;2204:27:21;;;;1305:22469:72;;2523:15:21;;;:28;;;2519:123;;2372:276;;:::o;2523:28::-;;1305:22469:72;2523:28:21;;1842:226:24;-1:-1:-1;;;;;1898:6:24;1305:22469:72;;;;1873:80:24;1889:4;1881:23;;;1873:80;:::i;:::-;1963:87;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;;;1971:30:24;1963:87;:::i;:::-;1303:62:17;;:::i;:::-;971:66:21;;1305:22469:72;;971:66:21;;;3330:17;;;;;;:::i;3232:526::-;3383:63;;1305:22469:72;;;;;;971:66:21;;;;;;;3383:63;;1305:22469:72;;3383:63:21;;;;;;;3232:526;-1:-1:-1;3379:302:21;;1305:22469:72;;-1:-1:-1;;;3610:56:21;;1305:22469:72;3610:56:21;3383:63;3610:56;;;:::i;3379:302::-;3737:9;3496:28;3488:82;3496:28;;3488:82;:::i;:::-;3737:9;:::i;3383:63::-;;;;;;;;;;;;;;;:::i;:::-;;;;;1305:22469:72;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1305:22469:72;;;;:::o;:::-;;;:::o;7682:628:33:-;;;;7886:418;;;1305:22469:72;;;7917:22:33;7913:286;;8212:17;;:::o;7913:286::-;1713:19;:23;1305:22469:72;;8212:17:33;:::o;1305:22469:72:-;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;7886:418:33;1305:22469:72;;;;-1:-1:-1;8991:21:33;:17;;9163:142;;;;;;;8987:379;1305:22469:72;;-1:-1:-1;;;9335:20:33;;1305:22469:72;9335:20:33;;;1305:22469:72;;;;;;;;;;;:::i;3246:506:23:-;;;;;;;;;;;;;3302:13;1305:22469:72;;;;;;;3301:14:23;3347:34;;;;;;3246:506;3346:108;;;;3246:506;1305:22469:72;;;;3636:1:23;3536:16;;;1305:22469:72;;;3302:13:23;1305:22469:72;;;3302:13:23;1305:22469:72;;3536:16:23;3562:65;;3636:1;:::i;:::-;3647:99;;3246:506::o;3647:99::-;3681:21;1305:22469:72;;3302:13:23;1305:22469:72;;3302:13:23;1305:22469:72;;3681:21:23;1305:22469:72;;3551:1:23;1305:22469:72;;3721:14:23;;1305:22469:72;;3721:14:23;3246:506::o;3562:65::-;3596:20;1305:22469:72;;;3302:13:23;1305:22469:72;;;3302:13:23;1305:22469:72;;3596:20:23;3636:1;:::i;1305:22469:72:-;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;3346:108:23;3426:4;1713:19:33;:23;;-1:-1:-1;1713:23:33;3387:66:23;;3346:108;;;;;3387:66;3452:1;1305:22469:72;;;;3436:17:23;3387:66;;;3347:34;3380:1;1305:22469:72;;;3365:16:23;;-1:-1:-1;3347:34:23;;1698:18:74;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;1698:18:74;;;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;;;;;;;;;;;1698:18:74;;;;;1305:22469:72;;;;;;;;;;;;;1698:18:74;;;;;1305:22469:72;;;;;;;;;;;;;1698:18:74;;;;;1305:22469:72;;;;;;;;;;;;;1698:18:74;;;;;1305:22469:72;;;;;;;;;;;;;1698:18:74;;;;;1305:22469:72;;;;;;;;;;;;;1698:18:74;;;;;1305:22469:72;;;;;;;;;;;;;1698:18:74;;;;;1305:22469:72;;;;;;;;;;;1698:18:74;;;;;;;1305:22469:72;1698:18:74;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;1786:2034;;;;;;;;;;;;;;;2324:25;;;:::i;:::-;2411:26;;;:::i;:::-;2501:29;;;:::i;:::-;2586:20;;;:::i;:::-;2657:14;;;:::i;:::-;2735:29;;;:::i;:::-;2822:22;;;:::i;:::-;2902;;;:::i;:::-;2960:21;;;:::i;:::-;3017:22;;;:::i;:::-;3075:23;;;:::i;:::-;3129:11;;;:::i;:::-;1305:22469;;-1:-1:-1;;;3231:366:72;;-1:-1:-1;;;;;1305:22469:72;;;3231:366;;;1305:22469;;;;1698:18:74;;;1305:22469:72;;;;1698:18:74;;;1305:22469:72;;;;1698:18:74;;;1305:22469:72;;;;1698:18:74;;;1305:22469:72;;;;1698:18:74;;;1305:22469:72;;;;1698:18:74;;;1305:22469:72;;;1698:18:74;;;1305:22469:72;;;1698:18:74;;;1305:22469:72;;;;;1698:18:74;;;1305:22469:72;3231:366;;;1305:22469;1698:18:74;1305:22469:72;3231:14;:366;;;;;;;3692:26;3231:366;3607:75;3231:366;1698:18:74;3231:366:72;-1:-1:-1;3231:366:72;;;1786:2034;1698:18:74;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;3607:75;:::i;:::-;3692:26;:::i;:::-;1003:95:17;;:::i;:::-;1868:111:25;;:::i;:::-;1042:67:24;;:::i;3231:366:72:-;;;;;;-1:-1:-1;3231:366:72;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1305:22469;;;;:::o;:::-;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;5328:125:23;5366:69;1305:22469:72;5374:13:23;1305:22469:72;;;;5366:69:23;;;:::i;:::-;;:::i;:::-;1195:12:17;929:10:34;1195:12:17;:::i;5328:125:23:-;5366:69;1305:22469:72;5374:13:23;1305:22469:72;;;;5366:69:23;:::i;5328:125::-;5366:69;1305:22469:72;5374:13:23;1305:22469:72;;;;5366:69:23;;;:::i;:::-;1787:1:25;2065:22;1787:1;5328:125:23:o;1305:22469:72:-;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1305:22469:72;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;10448:32;1305:22469;;;;;;:::o;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;6129:41;1305:22469;;;;;;:::o;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;16380:34;1305:22469;;;;;;:::o;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;15469:39;1305:22469;;;;;;:::o;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;15920:36;1305:22469;;;;;;:::o;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;11762:8;1305:22469;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1305:22469:72;;-1:-1:-1;1305:22469:72;;;;;;;:::i;:::-;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1305:22469:72;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1698:18:74;;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;1698:18:74;1305:22469:72;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;-1:-1:-1;;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;1787:1:25;1305:22469:72;;;;;;;1787:1:25;1305:22469:72;;;;;;;1787:1:25;1305:22469:72;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1305:22469:72;;-1:-1:-1;1305:22469:72;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;2580:287:25:-;1830:1;2712:7;1305:22469:72;2712:19:25;1830:1;;;2712:7;1787:1;2580:287::o;1830:1::-;1305:22469:72;;-1:-1:-1;;;1830:1:25;;;;;;;;;;;1305:22469:72;1830:1:25;1305:22469:72;;;1830:1:25;;;;1305:22469:72;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;1698:18:74;;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;1787:1:25;1305:22469:72;;;;;;;1787:1:25;1305:22469:72;;;;;;;1787:1:25;1305:22469:72;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1305:22469:72;;-1:-1:-1;1305:22469:72;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;10356:1;1305:22469;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1305:22469:72;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12566:825::-;;;;1305:22469;12772:66;:26;:48;:36;:26;;;;:::i;1305:22469::-;12852:14;;;1305:22469;;;12852:19;12848:32;;12890:73;12897:66;12809:10;12897:48;12809:10;12897:36;:26;;;;:::i;:66::-;1305:22469;12870:1;1305:22469;;;;;;;;;;;;;;;;;;;;;;12890:73;13113:11;;;;1305:22469;;;;13166:29;;;;1305:22469;;12852:14;1305:22469;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;13166:29;;13113:11;;1305:22469;;;12809:10;;12979:226;;1305:22469;;12979:226;13216:48;1305:22469;;;;;;13216:168;;;;;;-1:-1:-1;1305:22469:72;13216:168;12852:14;1305:22469;971:66:21;;;;;;;;;;13216:168:72;;12809:10;13216:168;;;;;:::i;:::-;;;;;;;;;;;12566:825;:::o;13216:168::-;;;;;;:::i;1305:22469::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;:::o;2471:103:25:-;;;;1305:22469:72;2471:103:25;14589:330:72;2471:103:25;1305:22469:72;2471:103:25;;;14554:375:72;2471:103:25;;;;:::i;:::-;1607:61:72;;:::i;:::-;1305:22469;;14629:43;;;;;;;;14589:330;;;;1305:22469;;;;;;;;;;;14589:330;;;1305:22469;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1305:22469:72;;;;;;;:::i;:::-;14589:330;14051:150;;14589:330;;;;;;:::i;14554:375::-;;2536:1:25;1787;2065:22;1787:1;1985:109;1305:22469:72;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;;1305:22469:72;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;14051:150;;;;1305:22469;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;1698:18:74;1305:22469:72;;;1698:18:74;:::i;:::-;1305:22469:72;;;;;;;;;;;;;;;;1698:18:74;1305:22469:72;;;1698:18:74;:::i;:::-;1305:22469:72;;;;;;1698:18:74;1305:22469:72;;;1698:18:74;:::i;:::-;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;-1:-1:-1;1305:22469:72;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22009:415;-1:-1:-1;;;;;;;;;;;1305:22469:72;22141:56;;-1:-1:-1;;;;22141:56:72;;;;;-1:-1:-1;;;;;1305:22469:72;22141:56;;;;:::i;:::-;22211:8;;22207:190;;22009:415;:::o;22207:190::-;1305:22469;;22239:16;22235:63;;22141:56;22312:75;;;;;22235:63;1305:22469;;-1:-1:-1;;;22264:34:72;;22141:56;22264:34;;;1305:22469;;;;;;;;;;;:::i;22430:110::-;1305:22469;-1:-1:-1;;;;;;;;;;;971:66:21;1305:22469:72;22476:57;;22430:110::o;22476:57::-;1305:22469;;-1:-1:-1;;;22517:16:72;;;;;22546:300;22666:16;;;:::i;:::-;22710:1;22713:20;;;;;;22546:300;;;:::o;22735:3::-;-1:-1:-1;;1305:22469:72;;;;;;;;22808:20;22782:16;22735:3;22782:16;;;;:::i;:::-;1305:22469;22808:12;;;;;:::i;:::-;1305:22469;22808:20;;;:::i;:::-;22735:3;:::i;:::-;22698:13;;22852:310;22982:16;;;:::i;:::-;23026:1;23029:20;;;;;;22852:310;;;:::o;23051:3::-;-1:-1:-1;;1305:22469:72;;;;;;;;23124:20;23098:16;23051:3;23098:16;;;;:::i;:::-;1305:22469;23124:12;;;;;:::i;23051:3::-;23014:13;;23168:300;23288:16;;;:::i;:::-;23332:1;23335:20;;;;;;23168:300;;;:::o;23357:3::-;-1:-1:-1;;1305:22469:72;;;;;;;;23430:20;23404:16;23357:3;23404:16;;;;:::i;:::-;1305:22469;23430:12;;;;;:::i;23357:3::-;23320:13;;4608:177:74;-1:-1:-1;;;;;1305:22469:72;4708:22:74;4704:74;;4608:177::o;4704:74::-;1305:22469:72;;-1:-1:-1;;;4739:39:74;;-1:-1:-1;;;4739:39:74;;;1305:22469:72;;;4739:39:74;4608:177;-1:-1:-1;;;;;1305:22469:72;4708:22:74;4704:74;;4608:177::o;4704:74::-;1305:22469:72;;-1:-1:-1;;;4739:39:74;;-1:-1:-1;;;4739:39:74;;;1305:22469:72;;;4739:39:74;4608:177;-1:-1:-1;;;;;1305:22469:72;4708:22:74;4704:74;;4608:177::o;4704:74::-;1305:22469:72;;-1:-1:-1;;;4739:39:74;;-1:-1:-1;;;4739:39:74;;;1305:22469:72;;;4739:39:74;4608:177;-1:-1:-1;;;;;1305:22469:72;4708:22:74;4704:74;;4608:177::o;4704:74::-;1305:22469:72;;-1:-1:-1;;;4739:39:74;;-1:-1:-1;;;4739:39:74;;;1305:22469:72;;;4739:39:74;4608:177;-1:-1:-1;;;;;1305:22469:72;4708:22:74;4704:74;;4608:177::o;4704:74::-;1305:22469:72;;-1:-1:-1;;;4739:39:74;;-1:-1:-1;;;4739:39:74;;;1305:22469:72;;;4739:39:74;4608:177;-1:-1:-1;;;;;1305:22469:72;4708:22:74;4704:74;;4608:177::o;4704:74::-;1305:22469:72;;-1:-1:-1;;;4739:39:74;;-1:-1:-1;;;4739:39:74;;;1305:22469:72;;;4739:39:74;4608:177;-1:-1:-1;;;;;1305:22469:72;4708:22:74;4704:74;;4608:177::o;4704:74::-;1305:22469:72;;-1:-1:-1;;;4739:39:74;;-1:-1:-1;;;4739:39:74;;;1305:22469:72;;;4739:39:74;4608:177;-1:-1:-1;;;;;1305:22469:72;4708:22:74;4704:74;;4608:177::o;4704:74::-;1305:22469:72;;-1:-1:-1;;;4739:39:74;;-1:-1:-1;;;4739:39:74;;;1305:22469:72;;;4739:39:74;4791:163;-1:-1:-1;;;;;1305:22469:72;4879:30:74;4875:72;;4791:163::o;4875:72::-;1305:22469:72;;-1:-1:-1;;;4918:29:74;;;;;4960:143;-1:-1:-1;;;;;1305:22469:72;5038:25:74;5034:62;;4960:143::o;5034:62::-;1305:22469:72;;-1:-1:-1;;;5072:24:74;;;;;5109:321;5210:28;;:33;:131;;;;5109:321;5193:231;;5109:321;:::o;5193:231::-;1305:22469:72;;-1:-1:-1;;;5373:40:74;;-1:-1:-1;;;;;1305:22469:72;;;5373:40:74;;;1305:22469:72;;;5373:40:74;5210:131;1305:22469:72;4592:71:62;-1:-1:-1;1305:22469:72;;4592:71:62;;;1017:25;;;;4592:71;;;;;;1305:22469:72;4592:71:62;;;;;;:::i;:::-;4784:212;;;;;-1:-1:-1;4784:212:62;;5013:29;;;5210:131:74;5013:48:62;;;;5210:131:74;975:149:62;;;;5210:131:74;1543:81:62;;;5210:131:74;5263:78;5210:131;;1543:81:62;1570:54;;;;:::i;:::-;1543:81;;975:149;1060:64;;;;:::i;:::-;1059:65;975:149;;5013:48;5046:15;;;;5013:48;;;:29;4592:71;-1:-1:-1;5024:18:62;;-1:-1:-1;5013:29:62;;;4421:647;-1:-1:-1;4592:71:62;4421:647;1305:22469:72;;4592:71:62;;;1017:25;;;;4592:71;;1305:22469:72;;;4592:71:62;;;1305:22469:72;4592:71:62;;;;;;:::i;:::-;4784:212;;;;-1:-1:-1;4784:212:62;;5013:29;;;4421:647;5013:48;;;;5006:55;4421:647;:::o;5013:48::-;5046:15;;;;4421:647;:::o;5013:29::-;4592:71;-1:-1:-1;5024:18:62;;-1:-1:-1;5013:29:62;;;4421:647;-1:-1:-1;4592:71:62;4421:647;1305:22469:72;;4592:71:62;;;1017:25;;;;4592:71;;5314:26:74;;;4592:71:62;;;1305:22469:72;4592:71:62;;;;;;:::i;5436:248:74:-;1305:22469:72;;-1:-1:-1;;;;;;5540:58:74;;;;;1305:22469:72;;;5540:58:74;1305:22469:72;;;-1:-1:-1;;;;;1305:22469:72;;5540:58:74;;;;;;;-1:-1:-1;5540:58:74;;;5436:248;5540:63;;5536:142;;5436:248;;:::o;5536:142::-;1305:22469:72;;-1:-1:-1;;;5626:41:74;;-1:-1:-1;;;;;1305:22469:72;;;;5540:58:74;5626:41;;1305:22469:72;;;;;;;;;;6305:63:74;5540:58;;;;;;;;;;;;;;:::i;:::-;;;;5690:358;5863:34;1305:22469:72;;;5863:34:74;;;;;;;;;;;;;;;:::i;:::-;5835:63;;;;;;;;:::i;:::-;5912:8;;1305:22469:72;;5912:28:74;;5690:358;5908:77;;1305:22469:72;5863:34:74;1305:22469:72;;;6002:27:74;;1305:22469:72;;;;5863:34:74;6002:27;1305:22469:72;;;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;6002:39:74;;5690:358::o;5908:77::-;1305:22469:72;;-1:-1:-1;;;5949:36:74;;-1:-1:-1;;;;;1305:22469:72;;;5863:34:74;5949:36;;1305:22469:72;5863:34:74;;5949:36;5912:28;1305:22469:72;5863:34:74;1305:22469:72;;5924:16:74;5912:28;;6405:202;6478:12;;6474:37;;1039:2;6525:24;;6521:79;;6405:202;:::o;6521:79::-;1305:22469:72;;;;6558:42:74;;;;;;;;;1305:22469:72;1039:2:74;1305:22469:72;;;;6558:42:74;6474:37;1305:22469:72;;-1:-1:-1;;;6499:12:74;;;;;6830:254;;;6952:28;;;;6948:130;;6830:254;;;:::o;6948:130::-;1305:22469:72;;-1:-1:-1;;;7003:64:74;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;6305:63:74","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":8507,"length":20},{"start":9726,"length":20},{"start":12098,"length":20},{"start":12157,"length":20},{"start":12192,"length":20},{"start":12254,"length":20},{"start":18739,"length":20}]},"src/v2/utils/MarketConfigV2.sol":{"MarketConfigV2":[{"start":1361,"length":20},{"start":1587,"length":20},{"start":2935,"length":20},{"start":3568,"length":20},{"start":7678,"length":20},{"start":8222,"length":20},{"start":10719,"length":20},{"start":10936,"length":20},{"start":11484,"length":20},{"start":11740,"length":20},{"start":15947,"length":20}]}},"immutableReferences":{"30045":[{"start":3773,"length":32},{"start":5435,"length":32},{"start":14231,"length":32}]}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","MAX_CHECKOUT_SIZE()":"a3eaf4d9","acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":"b8e6b50f","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","cancelOffer(address,uint256,address)":"e92f94d1","cancelSalePrices(address,uint256[])":"2f79f335","checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":"2c0c49ee","getDirectSaleConfig(address,uint256)":"6e2f4d8b","getERC1155ApprovalManager()":"c7c83d17","getMarketConfig()":"614bd944","getOffer(address,uint256,address,address)":"e3409ce3","getSalePrice(address,uint256,address)":"369679a4","getSettlement()":"defad60c","getTokenAllowListConfig(address,uint256)":"bf3d90f8","getTokenMintLimit(address,uint256)":"8760251a","getTokenMintsPerAddress(address,uint256,address)":"28fbba03","getTokenTxLimit(address,uint256)":"552f791d","getTokenTxsPerAddress(address,uint256,address)":"5a501f8f","initialize(address,address,address,address,address,address,address,address,address,address,address,address)":"0b800f48","isPaused()":"b187bd26","makeOffer(address,uint256,address,uint256,uint256,uint256)":"b38df71f","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7","owner()":"8da5cb5b","prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"be542141","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","setApprovedTokenRegistry(address)":"e4e87e3b","setContractPaused(bool)":"882796f1","setERC1155ApprovalManager(address)":"ff5c83a4","setERC20ApprovalManager(address)":"d7a9fb7c","setERC721ApprovalManager(address)":"d80b23e3","setMarketplaceSettings(address)":"176ab440","setNetworkBeneficiary(address)":"3492e5a8","setPayments(address)":"af231a58","setRoyaltyEngine(address)":"21ede032","setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"ff3a52d4","setSettlement(address)":"8f4e6f37","setSpaceOperatorRegistry(address)":"7f358230","setStakingRegistry(address)":"2c740844","setStakingSettings(address)":"f1035744","setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":"373a9412","setTokenMintLimits(address,(uint256,uint256)[])":"c7ec1b98","setTokenTxLimits(address,(uint256,uint256)[])":"6442950e","transferOwnership(address)":"f2fde38b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectSettlementCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SettlementCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"SettlementDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"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\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"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\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CHECKOUT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"acceptOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"cancelOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"cancelSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem[]\",\"name\":\"_items\",\"type\":\"tuple[]\"}],\"name\":\"checkout\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutSummary\",\"name\":\"summary\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]\",\"name\":\"items\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutExecution\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDirectSaleConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.DirectSaleConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC1155ApprovalManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"contract IPayments\",\"name\":\"payments\",\"type\":\"address\"},{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IStakingSettings\",\"name\":\"stakingSettings\",\"type\":\"address\"},{\"internalType\":\"contract IRareStakingRegistry\",\"name\":\"stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IERC20ApprovalManager\",\"name\":\"erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC721ApprovalManager\",\"name\":\"erc721ApprovalManager\",\"type\":\"address\"}],\"internalType\":\"struct MarketConfigV2.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"getOffer\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.Offer\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"getSalePrice\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.SalePrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSettlement\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenAllowListConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.AllowListConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenMintLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTokenMintsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenTxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTokenTxsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_settlement\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"makeOffer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"prepareMintDirectSales\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"}],\"name\":\"setApprovedTokenRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isPaused\",\"type\":\"bool\"}],\"name\":\"setContractPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC1155ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC20ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC721ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"}],\"name\":\"setMarketplaceSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"}],\"name\":\"setNetworkBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"}],\"name\":\"setPayments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"}],\"name\":\"setRoyaltyEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"setSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_settlement\",\"type\":\"address\"}],\"name\":\"setSettlement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"}],\"name\":\"setSpaceOperatorRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"}],\"name\":\"setStakingRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"}],\"name\":\"setStakingSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenAllowListConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenMintLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenTxLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"The marketplace is the UUPS proxy-facing contract and owns all marketplace storage. Settlement execution is routed through delegatecall so settlement reads and writes the marketplace proxy's ERC-7201 storage namespace.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"cancelSalePrices(address,uint256[])\":{\"details\":\"Token ids must be strictly ascending.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Best-effort execution returns one result per item. All-skipped checkouts complete successfully.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"RareERC1155Marketplace\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Accepts all or part of an ERC1155 token offer through the settlement module.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings through the settlement module.\"},\"cancelOffer(address,uint256,address)\":{\"notice\":\"Cancels the caller's offer for one token id and currency.\"},\"cancelSalePrices(address,uint256[])\":{\"notice\":\"Cancels the caller's secondary listings for token ids.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases.\"},\"initialize(address,address,address,address,address,address,address,address,address,address,address,address)\":{\"notice\":\"Initializes the UUPS marketplace proxy.\"},\"makeOffer(address,uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Creates or replaces a token-level ERC1155 offer.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales through the settlement module.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Configures or replaces primary mint sales for token ids.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Creates or replaces secondary fixed-price listings.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"notice\":\"Sets token id allowlist configurations.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets max quantity each address may mint for token ids while a limit is enabled.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets max mint transactions each address may submit for token ids while a limit is enabled.\"}},\"notice\":\"ERC1155 marketplace state, escrow, configuration, and settlement entrypoint.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155Marketplace.sol\":\"RareERC1155Marketplace\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol\":{\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0\",\"dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x584ebdf9c1118a7c773f98788e3f3ede01982bdf8932aa06f5acc7d54876e161\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9826c7edf276ff48b99ee217358393097c30448a71d345d287c2f6961bb1f159\",\"dweb:/ipfs/QmYXBTY9wDvffGU47yMRFJ1NFyKwpbj94VHzRzhsm6R7Gz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xb607cb94c27e89750f5ae2ccebcb94e654e926f6125f4fd4c6262c89875118ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33e8f8d863c6943ea046fcf4972b4e815c04ab06bad195dba1d93f8ebeb8420d\",\"dweb:/ipfs/QmTQzxQTuuzPDk3eqVmYy7hv2RCXM1yt1NtubXpRbzYjaj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025\",\"dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685\",\"dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155Marketplace.sol\":{\"keccak256\":\"0x32be29c47c7b138de86eb1886c38763ebecda9949379e10720285f1a15cca6a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fea0ed0ae4cade3cd51f53d72024391341260201f1d8d32dd281eeeb26b9585\",\"dweb:/ipfs/QmVmFghURASWCVn6PKZhCR4XxLVVAjx8nKmZ4q2guETeCv\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350\",\"dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K\"]},\"src/marketplace/IRareERC1155Settlement.sol\":{\"keccak256\":\"0x7ba101acc638ecd2eb5c780e625d6d82d6d00e36aa392f7a60a131cbf25d9d1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33355c9a7d70f3e97c076c71344a088a8a00cf79f5b52f017508cc442903b06c\",\"dweb:/ipfs/QmYowpKw4Y9LJUCeQhSRaLf6LkCTKbwJcTX3pU8hjbaaqA\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155Marketplace.sol\":{\"keccak256\":\"0x9c18d33a545e584efe051d701e58df686f532d57eb51b133454e9dea23f20cd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82c9f919f87fe1958f1e1a28c03742727212fcbf4c45f8c7fbcffc248d3e3823\",\"dweb:/ipfs/QmQvubhoqgiMkjuvuAXHTi2UcASoz9BrTeX1ccEXbC4RVP\"]},\"src/marketplace/RareERC1155MarketplacePayments.sol\":{\"keccak256\":\"0x53d345e5b50ecbede9f57d71ea952279c61a3a68dbdc3e5437311d26af6385c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6456557338e5ad27b23a06dd75c8e91b024caf7002d57873c12b0419466feae\",\"dweb:/ipfs/QmYTenZhNjk4dMHbU25pphtUueaWQBvdVHU37pPFdj2h5v\"]},\"src/marketplace/RareERC1155MarketplaceStorage.sol\":{\"keccak256\":\"0xe7b315f4c7e8da495637acec91648113ad26cf6cf37a783632baaf81998e012e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f83d84dfbe0c43d476c137eb6c4b63ca88dff555c37123a8fc0e17884885cd5\",\"dweb:/ipfs/QmNT27NUUzmawaa8kpGXFepvBTiRiZtwdt3ozRFCbiEuPp\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e\",\"dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[],"type":"error","name":"DirectSettlementCallUnsupported"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[],"type":"error","name":"SettlementCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"SettlementDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CHECKOUT_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"acceptOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"cancelOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"cancelSalePrices"},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","name":"_items","type":"tuple[]","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"checkout","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","name":"","type":"tuple","components":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","name":"summary","type":"tuple","components":[{"internalType":"uint256","name":"filledCount","type":"uint256"},{"internalType":"uint256","name":"skippedCount","type":"uint256"},{"internalType":"uint256","name":"ethSpent","type":"uint256"},{"internalType":"uint256","name":"ethRefunded","type":"uint256"}]},{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","name":"items","type":"tuple[]","components":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bool","name":"filled","type":"bool"},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8"},{"internalType":"bytes4","name":"reason","type":"bytes4"},{"internalType":"bytes","name":"failureData","type":"bytes"},{"internalType":"uint256","name":"totalPaid","type":"uint256"}]}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDirectSaleConfig","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleConfig","name":"","type":"tuple","components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getERC1155ApprovalManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMarketConfig","outputs":[{"internalType":"struct MarketConfigV2.Config","name":"","type":"tuple","components":[{"internalType":"address","name":"networkBeneficiary","type":"address"},{"internalType":"contract IMarketplaceSettings","name":"marketplaceSettings","type":"address"},{"internalType":"contract ISpaceOperatorRegistry","name":"spaceOperatorRegistry","type":"address"},{"internalType":"contract IRoyaltyEngineV1","name":"royaltyEngine","type":"address"},{"internalType":"contract IPayments","name":"payments","type":"address"},{"internalType":"contract IApprovedTokenRegistry","name":"approvedTokenRegistry","type":"address"},{"internalType":"contract IStakingSettings","name":"stakingSettings","type":"address"},{"internalType":"contract IRareStakingRegistry","name":"stakingRegistry","type":"address"},{"internalType":"contract IERC20ApprovalManager","name":"erc20ApprovalManager","type":"address"},{"internalType":"contract IERC721ApprovalManager","name":"erc721ApprovalManager","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"stateMutability":"view","type":"function","name":"getOffer","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.Offer","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"stateMutability":"view","type":"function","name":"getSalePrice","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.SalePrice","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSettlement","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenAllowListConfig","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfig","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenTxsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"},{"internalType":"address","name":"_marketplaceSettings","type":"address"},{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"},{"internalType":"address","name":"_royaltyEngine","type":"address"},{"internalType":"address","name":"_payments","type":"address"},{"internalType":"address","name":"_approvedTokenRegistry","type":"address"},{"internalType":"address","name":"_stakingSettings","type":"address"},{"internalType":"address","name":"_stakingRegistry","type":"address"},{"internalType":"address","name":"_erc20ApprovalManager","type":"address"},{"internalType":"address","name":"_erc721ApprovalManager","type":"address"},{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"},{"internalType":"address","name":"_settlement","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"stateMutability":"payable","type":"function","name":"makeOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"prepareMintDirectSales"},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"_approvedTokenRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setApprovedTokenRegistry"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setContractPaused"},{"inputs":[{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC1155ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc20ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC20ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc721ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC721ApprovalManager"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketplaceSettings"},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkBeneficiary"},{"inputs":[{"internalType":"address","name":"_payments","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPayments"},{"inputs":[{"internalType":"address","name":"_royaltyEngine","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyEngine"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"setSalePrices"},{"inputs":[{"internalType":"address","name":"_settlement","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSettlement"},{"inputs":[{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSpaceOperatorRegistry"},{"inputs":[{"internalType":"address","name":"_stakingRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingRegistry"},{"inputs":[{"internalType":"address","name":"_stakingSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingSettings"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenAllowListConfigs"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenMintLimits"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenTxLimits"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgradeTo"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"}],"devdoc":{"kind":"dev","methods":{"cancelSalePrices(address,uint256[])":{"details":"Token ids must be strictly ascending."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"details":"Best-effort execution returns one result per item. All-skipped checkouts complete successfully."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"owner()":{"details":"Returns the address of the current owner."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"details":"Request token ids must be strictly ascending."},"setTokenMintLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending."},"setTokenTxLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"notice":"Accepts all or part of an ERC1155 token offer through the settlement module."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings through the settlement module."},"cancelOffer(address,uint256,address)":{"notice":"Cancels the caller's offer for one token id and currency."},"cancelSalePrices(address,uint256[])":{"notice":"Cancels the caller's secondary listings for token ids."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"notice":"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases."},"initialize(address,address,address,address,address,address,address,address,address,address,address,address)":{"notice":"Initializes the UUPS marketplace proxy."},"makeOffer(address,uint256,address,uint256,uint256,uint256)":{"notice":"Creates or replaces a token-level ERC1155 offer."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales through the settlement module."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Configures or replaces primary mint sales for token ids."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Creates or replaces secondary fixed-price listings."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"notice":"Sets token id allowlist configurations."},"setTokenMintLimits(address,(uint256,uint256)[])":{"notice":"Sets max quantity each address may mint for token ids while a limit is enabled."},"setTokenTxLimits(address,(uint256,uint256)[])":{"notice":"Sets max mint transactions each address may submit for token ids while a limit is enabled."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155Marketplace.sol":"RareERC1155Marketplace"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol":{"keccak256":"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b","urls":["bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0","dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol":{"keccak256":"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f","urls":["bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053","dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"keccak256":"0x584ebdf9c1118a7c773f98788e3f3ede01982bdf8932aa06f5acc7d54876e161","urls":["bzz-raw://9826c7edf276ff48b99ee217358393097c30448a71d345d287c2f6961bb1f159","dweb:/ipfs/QmYXBTY9wDvffGU47yMRFJ1NFyKwpbj94VHzRzhsm6R7Gz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol":{"keccak256":"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908","urls":["bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1","dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xb607cb94c27e89750f5ae2ccebcb94e654e926f6125f4fd4c6262c89875118ad","urls":["bzz-raw://33e8f8d863c6943ea046fcf4972b4e815c04ab06bad195dba1d93f8ebeb8420d","dweb:/ipfs/QmTQzxQTuuzPDk3eqVmYy7hv2RCXM1yt1NtubXpRbzYjaj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0","urls":["bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025","dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol":{"keccak256":"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908","urls":["bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685","dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155Marketplace.sol":{"keccak256":"0x32be29c47c7b138de86eb1886c38763ebecda9949379e10720285f1a15cca6a8","urls":["bzz-raw://1fea0ed0ae4cade3cd51f53d72024391341260201f1d8d32dd281eeeb26b9585","dweb:/ipfs/QmVmFghURASWCVn6PKZhCR4XxLVVAjx8nKmZ4q2guETeCv"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9","urls":["bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350","dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K"],"license":"MIT"},"src/marketplace/IRareERC1155Settlement.sol":{"keccak256":"0x7ba101acc638ecd2eb5c780e625d6d82d6d00e36aa392f7a60a131cbf25d9d1b","urls":["bzz-raw://33355c9a7d70f3e97c076c71344a088a8a00cf79f5b52f017508cc442903b06c","dweb:/ipfs/QmYowpKw4Y9LJUCeQhSRaLf6LkCTKbwJcTX3pU8hjbaaqA"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155Marketplace.sol":{"keccak256":"0x9c18d33a545e584efe051d701e58df686f532d57eb51b133454e9dea23f20cd0","urls":["bzz-raw://82c9f919f87fe1958f1e1a28c03742727212fcbf4c45f8c7fbcffc248d3e3823","dweb:/ipfs/QmQvubhoqgiMkjuvuAXHTi2UcASoz9BrTeX1ccEXbC4RVP"],"license":"MIT"},"src/marketplace/RareERC1155MarketplacePayments.sol":{"keccak256":"0x53d345e5b50ecbede9f57d71ea952279c61a3a68dbdc3e5437311d26af6385c8","urls":["bzz-raw://c6456557338e5ad27b23a06dd75c8e91b024caf7002d57873c12b0419466feae","dweb:/ipfs/QmYTenZhNjk4dMHbU25pphtUueaWQBvdVHU37pPFdj2h5v"],"license":"MIT"},"src/marketplace/RareERC1155MarketplaceStorage.sol":{"keccak256":"0xe7b315f4c7e8da495637acec91648113ad26cf6cf37a783632baaf81998e012e","urls":["bzz-raw://4f83d84dfbe0c43d476c137eb6c4b63ca88dff555c37123a8fc0e17884885cd5","dweb:/ipfs/QmNT27NUUzmawaa8kpGXFepvBTiRiZtwdt3ozRFCbiEuPp"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052","urls":["bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e","dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":72} \ No newline at end of file diff --git a/abis/RareERC1155MarketplacePayments.json b/abis/RareERC1155MarketplacePayments.json new file mode 100644 index 0000000..9ec4217 --- /dev/null +++ b/abis/RareERC1155MarketplacePayments.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"checkSplits","inputs":[{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"pure"},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x6080806040523461001c576116c090816100228239308160070152f35b600080fdfe6080604052307f000000000000000000000000000000000000000000000000000000000000000014600436101561003557600080fd5b60003560e01c806330863baf146109a657806338fa83e71461098f5780634c4c2619146109575780635ea509b51461094057806376fb8597146107bb5780637baf92a31461078b578063981e8fc5146104e1578063bc2af99e1461043c578063c3924158146101d1578063e6e1b2dc1461016f5763f0859688146100b857600080fd5b61016a5760a036600319011261016a576100d06109e6565b6001600160401b0360643581811161016a576100f0903690600401610b0b565b60843591821161016a573660238301121561016a5781600401359261011484610af4565b926101226040519485610ad3565b84845260209460248686019160051b8301019136831161016a57602401905b82821061015b576101598686604435876004356114c5565b005b81358152908601908601610141565b600080fd5b5061016a5760a036600319011261016a576101886109e6565b6001600160401b039060643582811161016a576101a9903690600401610b0b565b60843592831161016a576101c4610159933690600401610b79565b91604435906004356113c2565b5061016a5761010036600319011261016a576004356101ee6109e6565b6101f66109fc565b6001600160a01b039260a4358481169392909160643585840361016a576001600160401b039460c43586811161016a57610234903690600401610b0b565b9560e43590811161016a5761024d903690600401610b79565b9661025e8396608435858888610eee565b886002850154169060405190635dc22eff60e01b82528060048301526020938483602481875afa80156103a657859360009161040f575b50156103b25750602460405180948193632260494f60e01b835260048301525afa80156103a65760ff91600091610379575b505b1697606489116103595760646102e26101599a85610eaa565b0492836102f3575b505050506113c2565b8361035094975061030391610c28565b956040519161031183610a6c565b6001835283368185013785541661032783610ebd565b526040519261033584610a6c565b6001845236818501378061034884610ebd565b5285856114c5565b388080806102ea565b60405163d6849ff160e01b8152600481018a905260646024820152604490fd5b6103999150833d851161039f575b6103918183610ad3565b810190610e91565b386102c7565b503d610387565b6040513d6000823e3d90fd5b600187015460405163b28a7bad60e01b8152918d16600483015290935083915060249082908d165afa80156103a65760ff916000916103f2575b506102c9565b6104099150833d851161039f576103918183610ad3565b386103ec565b61042f9150843d8611610435575b6104278183610ad3565b810190610be1565b38610295565b503d61041d565b604036600319011261016a576001600160a01b03806104596109e6565b16908115159081610484575b5061046c57005b6024906040519063cd5f748960e01b82526004820152fd5b60249150602090600560043501541660405192838092632d5ad3d560e01b82528660048301525afa9081156103a6576000916104c3575b501582610465565b6104db915060203d8111610435576104278183610ad3565b826104bb565b5061016a5761012036600319011261016a576104fb6109e6565b6001600160a01b03606435808216900361016a5760c43590808216820361016a576001600160401b0360e43581811161016a5761053c903690600401610b0b565b93610104359180831161016a5760006105c161055d82953690600401610b79565b936105766084359860a435608435606435600435610eee565b6004803560030154604051637a99dc0160e11b81526001600160a01b039093169183019190915260448035602484015260843590830152909586929188169183919082906064820190565b03925af19384156103a657600093600095610679575b5050506000946000955b845187101561060e57610602610608916105fb8988610eda565b5190610e84565b96610e41565b956105e1565b8590856084358211610658576101599582610632575b5050506064356004356113c2565b82935061064461065093608435610c28565b936064356004356114c5565b848080610624565b6040516344783bd360e11b8152600481018390526084356024820152604490fd5b9193509193503d90816000823e6106908282610ad3565b604081838101031261016a57805184811161016a578101828201601f8201121561016a578051906106c082610af4565b946106ce6040519687610ad3565b82865260208087019360051b83010191858501831161016a57602001925b8284106107725750505050602081015193841161016a57818101601f85830101121561016a57838101519061072082610af4565b9461072e6040519687610ad3565b82865260208087019360051b8284010101938201841161016a5701602001905b8282106107625750505090913880806105d7565b815181526020918201910161074e565b8351828116810361016a578152602093840193016106ec565b5061016a57608036600319011261016a576101596107a76109e6565b6107af6109fc565b60643591600435611176565b604036600319011261016a576001600160401b0360043581811161016a576107e7903690600401610a3c565b90602492833590811161016a57610802903690600401610a3c565b90831561092e576005841161090f578184036108f2579291906000936000935b8285106108525786866064810361083557005b6064604492604051926357623e5560e01b84526004840152820152fd5b9091929394610862868387610e50565b356001600160a01b0381169081900361016a57156108da5760ff8061089061088b898888610e50565b610e76565b16156108c2576108b9916108b3916108ac61088b8a8989610e50565b1690610e84565b95610e41565b93929190610822565b60405163d4c1893560e01b8152600481018890528890fd5b6040516306f5730d60e41b8152600481018790528790fd5b604484838760405192632db4fb2960e01b84526004840152820152fd5b6040516366a4d05560e01b815260048101859052600581870152604490fd5b60405163d218e6a560e01b8152600490fd5b5061016a5761015961095136610a12565b91610bf9565b5061016a5760c036600319011261016a576101596109736109e6565b61097b6109fc565b60a4359160843591606435916004356110be565b5061016a576101596109a036610a12565b91610c4b565b5061016a5760a036600319011261016a576109bf6109e6565b6084356001600160a01b038116810361016a57610159916064359060443590600435610eee565b602435906001600160a01b038216820361016a57565b604435906001600160a01b038216820361016a57565b606090600319011261016a57600435906024356001600160a01b038116810361016a579060443590565b9181601f8401121561016a578235916001600160401b03831161016a576020808501948460051b01011161016a57565b604081019081106001600160401b03821117610a8757604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b03821117610a8757604052565b608081019081106001600160401b03821117610a8757604052565b90601f801991011681019081106001600160401b03821117610a8757604052565b6001600160401b038111610a875760051b60200190565b81601f8201121561016a57803591610b2283610af4565b92610b306040519485610ad3565b808452602092838086019260051b82010192831161016a578301905b828210610b5a575050505090565b81356001600160a01b038116810361016a578152908301908301610b4c565b81601f8201121561016a57803591610b9083610af4565b92610b9e6040519485610ad3565b808452602092838086019260051b82010192831161016a578301905b828210610bc8575050505090565b813560ff8116810361016a578152908301908301610bba565b9081602091031261016a5751801515810361016a5790565b91908115610c0c57610c0a92610c4b565b565b50505034610c1657565b60405163429465b160e01b8152600490fd5b91908203918211610c3557565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281169060008215610e145734610e02576040938451926370a0823160e01b9081855230600486015260209283866024818a5afa958615610df8578596610dc4575b506008015416803b15610dc05783809160848b8a519485938492630aed65f560e11b84528c600485015233602485015230604485015260648401525af18015610db657610d88575b508190602487518097819382523060048301525afa918215610d7d5791610d4d575b50610d0a9250610c28565b90838203610d185750505050565b51636ff596f360e01b81526001600160a01b0392909216600483015260248201929092526044810191909152606490fd5b0390fd5b905082813d8311610d76575b610d638183610ad3565b8101031261016a57610d0a915138610cff565b503d610d59565b8551903d90823e3d90fd5b6001600160401b038194929411610da25786529181610cdd565b634e487b7160e01b82526041600452602482fd5b87513d86823e3d90fd5b8380fd5b9095508381813d8311610df1575b610ddc8183610ad3565b81010312610ded5751946008610c95565b8480fd5b503d610dd2565b88513d87823e3d90fd5b60405163d9efa38960e01b8152600490fd5b5050505050803403610e235750565b604490604051906305e4640960e21b82526004820152346024820152fd5b6000198114610c355760010190565b9190811015610e605760051b0190565b634e487b7160e01b600052603260045260246000fd5b3560ff8116810361016a5790565b91908201809211610c3557565b9081602091031261016a575160ff8116810361016a5790565b81810292918115918404141715610c3557565b805115610e605760200190565b805160011015610e605760400190565b8051821015610e605760209160051b010190565b91929094939481156110b65760018060a01b039283600682015416946040805196879263470d6ed960e11b845260048401528260246020998a935afa9182156110ab5760009261107c575b5084821161105f57805195610f4d87610a9d565b600287528136898901378084541680610f6589610ebd565b526007850154835163e286ef3360e01b81529b831660048d015289908c90602490829086165afa9a8b156110545760009b611017575b5081610c0a9a9b16610fac89610eca565b5281610fb789610eca565b511661100457905b610fc888610eca565b91169052805196610fd888610a9d565b600288523690880137610feb8185610c28565b610ff487610ebd565b52610ffe86610eca565b526114c5565b508061100f88610eca565b511690610fbf565b8981813d831161104d575b61102c8183610ad3565b8101031261104957519a828c168c03611046575081610f9b565b80fd5b8b80fd5b503d611022565b83513d6000823e3d90fd5b60449185915191639bdfbb5160e01b835260048301526024820152fd5b90918782813d83116110a4575b6110938183610ad3565b810103126110465750519038610f39565b503d611089565b50513d6000823e3d90fd5b505050509050565b92949390919381156110ef576110da6110df92610c0a97610eaa565b610e84565b926001600160a01b031691611176565b505050505050565b3d15611131573d906001600160401b038211610a875760405191611125601f8201601f191660200184610ad3565b82523d6000602084013e565b606090565b919082519283825260005b848110611162575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201611141565b92918215611211576001600160a01b0391821693841561119d5750610c0a93911690611217565b600094509282600486950154169260405190602082019363410085df60e01b8552166024820152816044820152604481526111d781610ab8565b51925af16111e36110f7565b90156111ec5750565b604051635519d77560e11b815260206004820152908190610d49906024830190611136565b50505050565b91906112a191600080604051936020968786019463a9059cbb60e01b865260018060a01b03809316602488015260448701526044865261125686610ab8565b16926040519461126586610a6c565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af161129b6110f7565b91611329565b805190828215928315611311575b505050156112ba5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b6113219350820181019101610be1565b3882816112af565b9192901561138b575081511561133d575090565b3b156113465790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b82519091501561139e5750805190602001fd5b60405162461bcd60e51b815260206004820152908190610d49906024830190611136565b949194939093835182518082036114a75750508351936113e185610af4565b946113ef6040519687610ad3565b8086526113fe601f1991610af4565b013660208701378693600091825b81518082101561149557600019810190811161148157810361144257808761143761143d938b610eda565b52610e41565b61140c565b9561060261143d9160646114648d60ff61145c8d8d610eda565b511690610eaa565b0461146f8a8c610eda565b5261147a898b610eda565b5190610c28565b634e487b7160e01b85526011600452602485fd5b505094509692505093610c0a946114c5565b6044925060405191632db4fb2960e01b835260048301526024820152fd5b9194909392938451845180820361166c575050600094855b85518710156114fd576106026114f7916105fb8989610eda565b956114dd565b909295509590929581810361164e57506001600160a01b0392831695861561155d57505060005b81518110156110b657806115538461153f6115589486610eda565b511661154b8388610eda565b519089611217565b610e41565b611524565b83929650600490939193015416916040516020948582019363c176e63960e01b85526064830160406024850152895180915287608485019a01916000905b828210611635575050505081880360231901604483015280518089529086019786019060005b818110611621575050600095969750906115e881879695949303601f198101835282610ad3565b51925af1906115f56110f7565b91156115ff575050565b610d49604051928392634c0fe4a160e11b845260048401526024830190611136565b8951835298870198918701916001016115c1565b835181168c529a89019a9289019260019091019061159b565b6044925060405191633bc6f52760e21b835260048301526024820152fd5b60449250604051916345e8c29760e11b835260048301526024820152fdfea2646970667358221220a2555de9b654ddef2b36d90dd859edf136e2146fc8bb7c7add19b1699a9d680864736f6c63430008120033","sourceMap":"538:9900:167:-:0;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052307f000000000000000000000000000000000000000000000000000000000000000014600436101561003557600080fd5b60003560e01c806330863baf146109a657806338fa83e71461098f5780634c4c2619146109575780635ea509b51461094057806376fb8597146107bb5780637baf92a31461078b578063981e8fc5146104e1578063bc2af99e1461043c578063c3924158146101d1578063e6e1b2dc1461016f5763f0859688146100b857600080fd5b61016a5760a036600319011261016a576100d06109e6565b6001600160401b0360643581811161016a576100f0903690600401610b0b565b60843591821161016a573660238301121561016a5781600401359261011484610af4565b926101226040519485610ad3565b84845260209460248686019160051b8301019136831161016a57602401905b82821061015b576101598686604435876004356114c5565b005b81358152908601908601610141565b600080fd5b5061016a5760a036600319011261016a576101886109e6565b6001600160401b039060643582811161016a576101a9903690600401610b0b565b60843592831161016a576101c4610159933690600401610b79565b91604435906004356113c2565b5061016a5761010036600319011261016a576004356101ee6109e6565b6101f66109fc565b6001600160a01b039260a4358481169392909160643585840361016a576001600160401b039460c43586811161016a57610234903690600401610b0b565b9560e43590811161016a5761024d903690600401610b79565b9661025e8396608435858888610eee565b886002850154169060405190635dc22eff60e01b82528060048301526020938483602481875afa80156103a657859360009161040f575b50156103b25750602460405180948193632260494f60e01b835260048301525afa80156103a65760ff91600091610379575b505b1697606489116103595760646102e26101599a85610eaa565b0492836102f3575b505050506113c2565b8361035094975061030391610c28565b956040519161031183610a6c565b6001835283368185013785541661032783610ebd565b526040519261033584610a6c565b6001845236818501378061034884610ebd565b5285856114c5565b388080806102ea565b60405163d6849ff160e01b8152600481018a905260646024820152604490fd5b6103999150833d851161039f575b6103918183610ad3565b810190610e91565b386102c7565b503d610387565b6040513d6000823e3d90fd5b600187015460405163b28a7bad60e01b8152918d16600483015290935083915060249082908d165afa80156103a65760ff916000916103f2575b506102c9565b6104099150833d851161039f576103918183610ad3565b386103ec565b61042f9150843d8611610435575b6104278183610ad3565b810190610be1565b38610295565b503d61041d565b604036600319011261016a576001600160a01b03806104596109e6565b16908115159081610484575b5061046c57005b6024906040519063cd5f748960e01b82526004820152fd5b60249150602090600560043501541660405192838092632d5ad3d560e01b82528660048301525afa9081156103a6576000916104c3575b501582610465565b6104db915060203d8111610435576104278183610ad3565b826104bb565b5061016a5761012036600319011261016a576104fb6109e6565b6001600160a01b03606435808216900361016a5760c43590808216820361016a576001600160401b0360e43581811161016a5761053c903690600401610b0b565b93610104359180831161016a5760006105c161055d82953690600401610b79565b936105766084359860a435608435606435600435610eee565b6004803560030154604051637a99dc0160e11b81526001600160a01b039093169183019190915260448035602484015260843590830152909586929188169183919082906064820190565b03925af19384156103a657600093600095610679575b5050506000946000955b845187101561060e57610602610608916105fb8988610eda565b5190610e84565b96610e41565b956105e1565b8590856084358211610658576101599582610632575b5050506064356004356113c2565b82935061064461065093608435610c28565b936064356004356114c5565b848080610624565b6040516344783bd360e11b8152600481018390526084356024820152604490fd5b9193509193503d90816000823e6106908282610ad3565b604081838101031261016a57805184811161016a578101828201601f8201121561016a578051906106c082610af4565b946106ce6040519687610ad3565b82865260208087019360051b83010191858501831161016a57602001925b8284106107725750505050602081015193841161016a57818101601f85830101121561016a57838101519061072082610af4565b9461072e6040519687610ad3565b82865260208087019360051b8284010101938201841161016a5701602001905b8282106107625750505090913880806105d7565b815181526020918201910161074e565b8351828116810361016a578152602093840193016106ec565b5061016a57608036600319011261016a576101596107a76109e6565b6107af6109fc565b60643591600435611176565b604036600319011261016a576001600160401b0360043581811161016a576107e7903690600401610a3c565b90602492833590811161016a57610802903690600401610a3c565b90831561092e576005841161090f578184036108f2579291906000936000935b8285106108525786866064810361083557005b6064604492604051926357623e5560e01b84526004840152820152fd5b9091929394610862868387610e50565b356001600160a01b0381169081900361016a57156108da5760ff8061089061088b898888610e50565b610e76565b16156108c2576108b9916108b3916108ac61088b8a8989610e50565b1690610e84565b95610e41565b93929190610822565b60405163d4c1893560e01b8152600481018890528890fd5b6040516306f5730d60e41b8152600481018790528790fd5b604484838760405192632db4fb2960e01b84526004840152820152fd5b6040516366a4d05560e01b815260048101859052600581870152604490fd5b60405163d218e6a560e01b8152600490fd5b5061016a5761015961095136610a12565b91610bf9565b5061016a5760c036600319011261016a576101596109736109e6565b61097b6109fc565b60a4359160843591606435916004356110be565b5061016a576101596109a036610a12565b91610c4b565b5061016a5760a036600319011261016a576109bf6109e6565b6084356001600160a01b038116810361016a57610159916064359060443590600435610eee565b602435906001600160a01b038216820361016a57565b604435906001600160a01b038216820361016a57565b606090600319011261016a57600435906024356001600160a01b038116810361016a579060443590565b9181601f8401121561016a578235916001600160401b03831161016a576020808501948460051b01011161016a57565b604081019081106001600160401b03821117610a8757604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b03821117610a8757604052565b608081019081106001600160401b03821117610a8757604052565b90601f801991011681019081106001600160401b03821117610a8757604052565b6001600160401b038111610a875760051b60200190565b81601f8201121561016a57803591610b2283610af4565b92610b306040519485610ad3565b808452602092838086019260051b82010192831161016a578301905b828210610b5a575050505090565b81356001600160a01b038116810361016a578152908301908301610b4c565b81601f8201121561016a57803591610b9083610af4565b92610b9e6040519485610ad3565b808452602092838086019260051b82010192831161016a578301905b828210610bc8575050505090565b813560ff8116810361016a578152908301908301610bba565b9081602091031261016a5751801515810361016a5790565b91908115610c0c57610c0a92610c4b565b565b50505034610c1657565b60405163429465b160e01b8152600490fd5b91908203918211610c3557565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281169060008215610e145734610e02576040938451926370a0823160e01b9081855230600486015260209283866024818a5afa958615610df8578596610dc4575b506008015416803b15610dc05783809160848b8a519485938492630aed65f560e11b84528c600485015233602485015230604485015260648401525af18015610db657610d88575b508190602487518097819382523060048301525afa918215610d7d5791610d4d575b50610d0a9250610c28565b90838203610d185750505050565b51636ff596f360e01b81526001600160a01b0392909216600483015260248201929092526044810191909152606490fd5b0390fd5b905082813d8311610d76575b610d638183610ad3565b8101031261016a57610d0a915138610cff565b503d610d59565b8551903d90823e3d90fd5b6001600160401b038194929411610da25786529181610cdd565b634e487b7160e01b82526041600452602482fd5b87513d86823e3d90fd5b8380fd5b9095508381813d8311610df1575b610ddc8183610ad3565b81010312610ded5751946008610c95565b8480fd5b503d610dd2565b88513d87823e3d90fd5b60405163d9efa38960e01b8152600490fd5b5050505050803403610e235750565b604490604051906305e4640960e21b82526004820152346024820152fd5b6000198114610c355760010190565b9190811015610e605760051b0190565b634e487b7160e01b600052603260045260246000fd5b3560ff8116810361016a5790565b91908201809211610c3557565b9081602091031261016a575160ff8116810361016a5790565b81810292918115918404141715610c3557565b805115610e605760200190565b805160011015610e605760400190565b8051821015610e605760209160051b010190565b91929094939481156110b65760018060a01b039283600682015416946040805196879263470d6ed960e11b845260048401528260246020998a935afa9182156110ab5760009261107c575b5084821161105f57805195610f4d87610a9d565b600287528136898901378084541680610f6589610ebd565b526007850154835163e286ef3360e01b81529b831660048d015289908c90602490829086165afa9a8b156110545760009b611017575b5081610c0a9a9b16610fac89610eca565b5281610fb789610eca565b511661100457905b610fc888610eca565b91169052805196610fd888610a9d565b600288523690880137610feb8185610c28565b610ff487610ebd565b52610ffe86610eca565b526114c5565b508061100f88610eca565b511690610fbf565b8981813d831161104d575b61102c8183610ad3565b8101031261104957519a828c168c03611046575081610f9b565b80fd5b8b80fd5b503d611022565b83513d6000823e3d90fd5b60449185915191639bdfbb5160e01b835260048301526024820152fd5b90918782813d83116110a4575b6110938183610ad3565b810103126110465750519038610f39565b503d611089565b50513d6000823e3d90fd5b505050509050565b92949390919381156110ef576110da6110df92610c0a97610eaa565b610e84565b926001600160a01b031691611176565b505050505050565b3d15611131573d906001600160401b038211610a875760405191611125601f8201601f191660200184610ad3565b82523d6000602084013e565b606090565b919082519283825260005b848110611162575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201611141565b92918215611211576001600160a01b0391821693841561119d5750610c0a93911690611217565b600094509282600486950154169260405190602082019363410085df60e01b8552166024820152816044820152604481526111d781610ab8565b51925af16111e36110f7565b90156111ec5750565b604051635519d77560e11b815260206004820152908190610d49906024830190611136565b50505050565b91906112a191600080604051936020968786019463a9059cbb60e01b865260018060a01b03809316602488015260448701526044865261125686610ab8565b16926040519461126586610a6c565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af161129b6110f7565b91611329565b805190828215928315611311575b505050156112ba5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b6113219350820181019101610be1565b3882816112af565b9192901561138b575081511561133d575090565b3b156113465790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b82519091501561139e5750805190602001fd5b60405162461bcd60e51b815260206004820152908190610d49906024830190611136565b949194939093835182518082036114a75750508351936113e185610af4565b946113ef6040519687610ad3565b8086526113fe601f1991610af4565b013660208701378693600091825b81518082101561149557600019810190811161148157810361144257808761143761143d938b610eda565b52610e41565b61140c565b9561060261143d9160646114648d60ff61145c8d8d610eda565b511690610eaa565b0461146f8a8c610eda565b5261147a898b610eda565b5190610c28565b634e487b7160e01b85526011600452602485fd5b505094509692505093610c0a946114c5565b6044925060405191632db4fb2960e01b835260048301526024820152fd5b9194909392938451845180820361166c575050600094855b85518710156114fd576106026114f7916105fb8989610eda565b956114dd565b909295509590929581810361164e57506001600160a01b0392831695861561155d57505060005b81518110156110b657806115538461153f6115589486610eda565b511661154b8388610eda565b519089611217565b610e41565b611524565b83929650600490939193015416916040516020948582019363c176e63960e01b85526064830160406024850152895180915287608485019a01916000905b828210611635575050505081880360231901604483015280518089529086019786019060005b818110611621575050600095969750906115e881879695949303601f198101835282610ad3565b51925af1906115f56110f7565b91156115ff575050565b610d49604051928392634c0fe4a160e11b845260048401526024830190611136565b8951835298870198918701916001016115c1565b835181168c529a89019a9289019260019091019061159b565b6044925060405191633bc6f52760e21b835260048301526024820152fd5b60449250604051916345e8c29760e11b835260048301526024820152fdfea2646970667358221220a2555de9b654ddef2b36d90dd859edf136e2146fc8bb7c7add19b1699a9d680864736f6c63430008120033","sourceMap":"538:9900:167:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;538:9900:167;;;;;;:::i;:::-;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;538:9900:167;;;;;;:::i;:::-;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;538:9900:167;;;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;3621:33;3739:7;3621:33;538:9900;;;3739:7;;;;:::i;:::-;3787:29;;;;538:9900;;;;;;;;;3787:62;;;538:9900;3787:62;;538:9900;;3787:62;;;538:9900;3787:62;;;;;;;;;;538:9900;3787:62;;;538:9900;-1:-1:-1;3787:239:167;;;538:9900;;;;;;;;;;;3864:60;;538:9900;3864:60;;538:9900;3864:60;;;;;;538:9900;3864:60;538:9900;3864:60;;;3787:239;;;538:9900;4040:24;538:9900;4040:24;;4036:142;;538:9900;4211:28;4792:12;4211:28;;;:::i;:::-;538:9900;4260:15;;4256:451;;3787:239;4792:12;;;;;:::i;4256:451::-;4291:30;4680:15;4291:30;;;;;;:::i;:::-;538:9900;;;;;;;:::i;:::-;;;;;;;;;;;;;4420:59;;;:::i;:::-;538:9900;;;;;;;:::i;:::-;;;;;;;;;4558:32;;;;:::i;:::-;538:9900;4680:15;;;:::i;:::-;4256:451;;;;;;4036:142;538:9900;;-1:-1:-1;;;4087:80:167;;538:9900;4087:80;;538:9900;;;;;;;;;;4087:80;3864:60;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;538:9900;;;;;;;;;3787:239;538:9900;3939:27;;538:9900;;;-1:-1:-1;;;3939:87:167;;538:9900;;;;3939:87;;538:9900;;;-1:-1:-1;538:9900:167;;-1:-1:-1;538:9900:167;;;;;;3939:87;;;;;;538:9900;3939:87;538:9900;3939:87;;;3787:239;;;;3939:87;;;;;;;;;;;;;;:::i;:::-;;;;3787:62;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;538:9900;;;-1:-1:-1;;538:9900:167;;;;-1:-1:-1;;;;;538:9900:167;;;:::i;:::-;;742:30;;;;:98;;;;538:9900;738:202;;;538:9900;738:202;538:9900;;;;863:66;;;;;;538:9900;863:66;;538:9900;863:66;742:98;538:9900;;;;;777:29;538:9900;;777:29;538:9900;;;;;;;;;;;777:63;;;538:9900;777:63;;538:9900;777:63;;;;;;;538:9900;777:63;;;742:98;776:64;;742:98;;;777:63;;;;538:9900;777:63;;;;;;;;;:::i;:::-;;;;538:9900;;;;;;-1:-1:-1;;538:9900:167;;;;;;:::i;:::-;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;5394:69;538:9900;;;;;;;;:::i;:::-;;5296:7;538:9900;;;;;;;;;;;5296:7;:::i;:::-;538:9900;;;;5394:21;538:9900;;;-1:-1:-1;;;5394:69:167;;-1:-1:-1;;;;;538:9900:167;;;5394:69;;;538:9900;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5394:69;;;;;;;;;;538:9900;;;5394:69;;;538:9900;5474:26;;;538:9900;5515:13;538:9900;5510:102;5552:3;538:9900;;5530:20;;;;;5571:30;5552:3;5589:12;;;;;:::i;:::-;538:9900;5571:30;;:::i;:::-;5552:3;;:::i;:::-;5515:13;;;5530:20;;;;538:9900;;5626:32;;5622:157;;6049:12;5793:18;;5789:175;;5510:102;538:9900;;;;;;;6049:12;:::i;5789:175::-;538:9900;;;5827:33;5943:9;538:9900;;;5827:33;:::i;:::-;538:9900;;;;;5943:9;:::i;:::-;5789:175;;;;;5622:157;538:9900;;-1:-1:-1;;;5681:87:167;;538:9900;5681:87;;538:9900;;;;;;;;;;;5681:87;5394:69;;;;;;;;;;538:9900;5394:69;;;;;;:::i;:::-;538:9900;5394:69;;;;538:9900;;;;;;;;;;;;;5394:69;;;538:9900;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;5394:69;;;;538:9900;;;;;;;;;;;;;;;;;;;;;;;;;;5394:69;;;538:9900;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;5394:69;;;538:9900;;;;;;;;;;;;;;5394:69;;;;;;;;;;538:9900;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;538:9900:167;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;-1:-1:-1;;538:9900:167;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;2340:28;;;2336:95;;2471:1;2445:27;;2441:148;;2602:46;;;2598:178;;2786:22;;;538:9900;2823:13;538:9900;2818:355;2838:23;;;;;;3187:17;;3201:3;3187:17;;3183:93;;538:9900;3183:93;3201:3;538:9900;;;;3213:63;;;;;;538:9900;3213:63;;538:9900;;;;3213:63;2863:3;2886:19;;;;;;;;;;:::i;:::-;538:9900;-1:-1:-1;;;;;538:9900:167;;;;;;;;2886:33;2882:137;;538:9900;3036:15;;;;;;;:::i;:::-;;:::i;:::-;538:9900;3036:20;3032:87;;2863:3;3147:15;3133:29;3147:15;;;;;;;:::i;:::-;538:9900;3133:29;;:::i;:::-;2863:3;;:::i;:::-;2823:13;;;;;;3032:87;538:9900;;-1:-1:-1;;;3065:54:167;;538:9900;3065:54;;538:9900;;;;;3065:54;2882:137;538:9900;;-1:-1:-1;;;2946:58:167;;538:9900;2946:58;;538:9900;;;;;2946:58;2598:178;538:9900;;;;;;2671:94;;;;;;538:9900;2671:94;;538:9900;;;;2671:94;2441:148;538:9900;;-1:-1:-1;;;2495:83:167;;538:9900;2495:83;;538:9900;;;2471:1;538:9900;;;;;;2495:83;2336:95;538:9900;;-1:-1:-1;;;2377:54:167;;538:9900;;2377:54;538:9900;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;-1:-1:-1;;538:9900:167;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;-1:-1:-1;;538:9900:167;;;;;;:::i;:::-;;;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;538:9900:167;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;538:9900:167;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;:::o;:::-;-1:-1:-1;;;;;538:9900:167;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;952:352::-;;;1094:12;;1090:139;;1289:7;;;:::i;:::-;952:352::o;1090:139::-;1126:9;;;;1122:76;;1212:7::o;1122:76::-;538:9900;;-1:-1:-1;;;1149:49:167;;;;;538:9900;;;;;;;;;;:::o;:::-;;;;;;;;;;;;1310:901;-1:-1:-1;;;;;538:9900:167;;;;1485:1;1457:30;;1453:181;;1648:9;1644:85;;538:9900;;;;;;;;1813:30;;;;1837:4;1813:30;;;538:9900;1813:30;;;;538:9900;1813:30;;;;;;;;;;;;;1310:901;1854:28;;;538:9900;;1854:95;;;;;538:9900;;;;;;;;;;;;;;;1854:95;;;1813:30;1854:95;;538:9900;1914:10;538:9900;;;;1837:4;538:9900;;;;;;;;1854:95;;;;;;;;1310:901;538:9900;;;;;;1985:30;;;;;;1837:4;1813:30;1985;;538:9900;1985:30;;;;;;;;;;1310:901;1985:46;;;;;:::i;:::-;2045:25;;;;2041:164;;1310:901;;;;:::o;2041:164::-;538:9900;-1:-1:-1;;;2093:101:167;;-1:-1:-1;;;;;538:9900:167;;;;1813:30;2093:101;;538:9900;;;;;;;;;;;;;;;;;2093:101;;;;;1985:30;;;;;;;;;;;;;;;:::i;:::-;;;538:9900;;;;1985:46;538:9900;;1985:30;;;;;;;;;538:9900;;;;;;;;;;1854:95;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;1854:95;;538:9900;-1:-1:-1;;;538:9900:167;;;1813:30;538:9900;;;;1854:95;538:9900;;;;;;;;;1854:95;538:9900;;;1813:30;;;;;;;;;;;;;;;;;:::i;:::-;;;538:9900;;;;;;1854:28;1813:30;;538:9900;;;;1813:30;;;;;;538:9900;;;;;;;;;1644:85;538:9900;;-1:-1:-1;;;1671:58:167;;;;;1453:181;1507:9;;;;;;;:20;1503:100;;1617:7;:::o;1503:100::-;538:9900;;;;1536:67;;;;;;;;;538:9900;1507:9;538:9900;;;;1536:67;538:9900;-1:-1:-1;;538:9900:167;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;6751:1;538:9900;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;6075:1099::-;;;;;;;6296:20;;6292:57;;538:9900;;;;;6380:23;;;;;538:9900;;;;;;;;;;;;6380:52;;;;;538:9900;6380:52;538:9900;6380:52;;;;;;;;;;;6315:1;6380:52;;;6075:1099;6446:28;;;;6442:155;;538:9900;;;;;;:::i;:::-;6667:1;538:9900;;;;;;;;;;;;6679:51;;;;:::i;:::-;538:9900;6764:23;;;538:9900;;;-1:-1:-1;;;6764:67:167;;538:9900;;;6380:52;6764:67;;538:9900;6764:23;;538:9900;;;;;;;;6764:67;;;;;;;6315:1;6764:67;;;6075:1099;538:9900;;7159:7;538:9900;;;6740:92;;;:::i;:::-;538:9900;6858:13;;;;:::i;:::-;538:9900;;6858:81;;;;6842:97;;;:::i;:::-;538:9900;;;;;;;;;;:::i;:::-;6667:1;538:9900;;;;;;;7016:28;;;;:::i;:::-;7003:41;;;:::i;:::-;538:9900;7054:23;;;:::i;:::-;538:9900;7159:7;:::i;6858:81::-;6926:13;;;;;:::i;:::-;538:9900;;6858:81;;;6764:67;;;;;;;;;;;;;;:::i;:::-;;;538:9900;;;;;;;;;;;;;6764:67;;;;538:9900;;;;;;;6764:67;;;;;;538:9900;;;6315:1;538:9900;;;;;6442:155;538:9900;;;;;6497:89;;;;;;6380:52;6497:89;;538:9900;;;;;6497:89;6380:52;;;;;;;;;;;;;;;;:::i;:::-;;;538:9900;;;;;;6380:52;;;;;;;;;;538:9900;;;6315:1;538:9900;;;;;6292:57;6332:7;;;;;;:::o;7180:418::-;;;;;;;7435:14;;7431:51;;7544:18;7543:47;7544:18;7543:47;7544:18;;:::i;:::-;7543:47;:::i;:::-;538:9900;-1:-1:-1;;;;;538:9900:167;;7543:47;:::i;7431:51::-;7465:7;;;;;;:::o;538:9900::-;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;-1:-1:-1;;538:9900:167;;;;;:::i;:::-;;;;-1:-1:-1;538:9900:167;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;7604:669;;;7789:12;;7785:49;;-1:-1:-1;;;;;538:9900:167;;;;7848:30;;7844:354;;-1:-1:-1;8208:58:167;;538:9900;;;8208:58;:::i;7844:354::-;7800:1;7938:16;;;;;;;;538:9900;;;;;7994:77;;;;538:9900;;;;7994:77;;538:9900;7994:77;;;538:9900;;;;;;;7994:77;;;;;:::i;:::-;7930:155;;;;;;:::i;:::-;8103:8;;8099:68;;8181:7;:::o;8099:68::-;538:9900;;-1:-1:-1;;;8120:47:167;;7994:77;7938:16;8120:47;;538:9900;;;;;;7994:77;538:9900;;;;:::i;7785:49::-;7817:7;;;;:::o;941:175:107:-;;;5535:69:112;941:175:107;-1:-1:-1;538:9900:167;;;1050:58:107;;;;;;538:9900:167;;;;1050:58:107;;538:9900:167;;;;;;;;1050:58:107;;;538:9900:167;;;;;;1050:58:107;;;;;:::i;:::-;538:9900:167;;;;;;;;:::i;:::-;;;;;;;;;5487:31:112;;;;;;;;:::i;:::-;5535:69;;:::i;:::-;538:9900:167;;5705:22:107;;;;:56;;;;;941:175;538:9900:167;;;;;;941:175:107;:::o;538:9900:167:-;;;;;;;;;;;;;;;;1050:58:107;538:9900:167;;;;;;;;-1:-1:-1;;;538:9900:167;;;;;5705:56:107;5731:30;;-1:-1:-1;5731:30:107;;;;;;;:::i;:::-;5705:56;;;;;7671:628:112;;;;7875:418;;;538:9900:167;;;7906:22:112;7902:286;;8201:17;;:::o;7902:286::-;1702:19;:23;538:9900:167;;8201:17:112;:::o;538:9900:167:-;;;-1:-1:-1;;;538:9900:167;;;;;;;;;;;;;;;;;;;;7875:418:112;538:9900:167;;;;-1:-1:-1;8980:21:112;:17;;9152:142;;;;;;;8976:379;538:9900:167;;-1:-1:-1;;;9324:20:112;;538:9900:167;9324:20:112;;;538:9900:167;;;;;;;;;;;:::i;8279:949::-;;;;;;;538:9900;;;;8522:46;;;8518:178;;538:9900;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;8781:33;8830:13;-1:-1:-1;8830:13:167;;8874:3;538:9900;;8845:27;;;;;;-1:-1:-1;;538:9900:167;;;;;;;8897:32;;;;8949:28;;;8874:3;8949:28;;;:::i;:::-;538:9900;8874:3;:::i;:::-;8830:13;;8893:231;9040:15;9080:29;8874:3;9040:15;9059:3;9030:25;9040:15;538:9900;9040:15;;;;:::i;:::-;538:9900;;9030:25;;:::i;:::-;538:9900;9016:46;;;;:::i;:::-;538:9900;9099:10;;;;:::i;:::-;538:9900;9080:29;;:::i;538:9900::-;-1:-1:-1;;;538:9900:167;;;;;;;;8845:27;;;;;;;;;;9213:7;8845:27;9213:7;:::i;8518:178::-;538:9900;;;;;2671:94;;;;8591;;;;;538:9900;;;;;8591:94;9234:1202;;;;;;;538:9900;;;;9472:37;;;9468:161;;9639:23;;-1:-1:-1;9677:13:167;;9713:3;538:9900;;9692:19;;;;;9732:26;9713:3;9747:11;;;;;:::i;9713:3::-;9677:13;;;9692:19;;;;;;;;;9782:22;;;9778:105;;-1:-1:-1;;;;;;538:9900:167;;;;9898:30;;9894:356;;10314:13;;-1:-1:-1;10353:3:167;538:9900;;10329:22;;;;;10391:14;10372:47;10391:14;;10353:3;10391:14;;;:::i;:::-;538:9900;;10407:11;;;;:::i;:::-;538:9900;10372:47;;;:::i;:::-;10353:3;:::i;:::-;10314:13;;9894:356;9988:16;;;;;;;;;;538:9900;;;;;10044:79;;;;;538:9900;;;;10044:79;;538:9900;;;;10044:79;;;538:9900;;;;;;;;;;;;;-1:-1:-1;538:9900:167;;;;;;;-1:-1:-1;;;;538:9900:167;;;-1:-1:-1;;538:9900:167;;;;;;;;;;;;;;;;;-1:-1:-1;538:9900:167;;;;;;10044:79;;-1:-1:-1;10044:79:167;;;;;;;;;;;;;538:9900;;10044:79;;;;;;:::i;:::-;9980:157;;;;;;;:::i;:::-;10155:8;;10151:68;;10233:7;;:::o;10151:68::-;538:9900;;;10172:47;;;;;;;;9988:16;10172:47;;538:9900;10044:79;538:9900;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9778:105;538:9900;;;;;9813:70;;;;;;;;;538:9900;;;;;9813:70;9468:161;538:9900;;;;;9532:86;;;;;;;;;538:9900;;;;;9532:86","linkReferences":{},"immutableReferences":{"library_deploy_address":[{"start":7,"length":32}]}},"methodIdentifiers":{"checkAmountAndTransfer(MarketConfigV2.Config storage,address,uint256)":"38fa83e7","checkBatchPayment(MarketConfigV2.Config storage,address,uint256)":"5ea509b5","checkIfCurrencyIsApproved(MarketConfigV2.Config storage,address)":"bc2af99e","checkSplits(address[],uint8[])":"76fb8597","payoutMarketplaceFee(MarketConfigV2.Config storage,address,uint256,uint256,address)":"30863baf","payoutPrimary(MarketConfigV2.Config storage,address,address,uint256,uint256,address,address[],uint8[])":"c3924158","payoutSecondary(MarketConfigV2.Config storage,address,uint256,address,uint256,uint256,address,address[],uint8[])":"981e8fc5","payoutSplits(MarketConfigV2.Config storage,address,uint256,address[],uint8[])":"e6e1b2dc","performPayouts(MarketConfigV2.Config storage,address,uint256,address[],uint256[])":"f0859688","refund(MarketConfigV2.Config storage,address,address,uint256)":"7baf92a3","refundRemainingOffer(MarketConfigV2.Config storage,address,address,uint256,uint256,uint256)":"4c4c2619"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"checkSplits\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"RareERC1155MarketplacePayments\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Shared payment, refund, royalty, staking fee, and split payout helpers for ERC1155 marketplaces.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155MarketplacePayments.sol\":\"RareERC1155MarketplacePayments\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350\",\"dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155MarketplacePayments.sol\":{\"keccak256\":\"0x53d345e5b50ecbede9f57d71ea952279c61a3a68dbdc3e5437311d26af6385c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6456557338e5ad27b23a06dd75c8e91b024caf7002d57873c12b0419466feae\",\"dweb:/ipfs/QmYTenZhNjk4dMHbU25pphtUueaWQBvdVHU37pPFdj2h5v\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"pure","type":"function","name":"checkSplits"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155MarketplacePayments.sol":"RareERC1155MarketplacePayments"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9","urls":["bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350","dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155MarketplacePayments.sol":{"keccak256":"0x53d345e5b50ecbede9f57d71ea952279c61a3a68dbdc3e5437311d26af6385c8","urls":["bzz-raw://c6456557338e5ad27b23a06dd75c8e91b024caf7002d57873c12b0419466feae","dweb:/ipfs/QmYTenZhNjk4dMHbU25pphtUueaWQBvdVHU37pPFdj2h5v"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":167} \ No newline at end of file diff --git a/abis/RareERC1155MarketplaceStorage.json b/abis/RareERC1155MarketplaceStorage.json new file mode 100644 index 0000000..856f513 --- /dev/null +++ b/abis/RareERC1155MarketplaceStorage.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_CHECKOUT_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"DirectSettlementCallUnsupported","inputs":[]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SettlementCannotBeZero","inputs":[]},{"type":"error","name":"SettlementDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","MAX_CHECKOUT_SIZE()":"a3eaf4d9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectSettlementCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SettlementCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"SettlementDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CHECKOUT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"This is not a deployable marketplace. `RareERC1155Marketplace` owns this storage behind the proxy, and `RareERC1155Settlement` uses the same namespace when executed through delegatecall from the marketplace.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"MARKETPLACE_STORAGE_LOCATION\":{\"details\":\"cast index-erc7201 superrare.storage.RareERC1155Marketplace\"}},\"title\":\"RareERC1155MarketplaceStorage\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"ERC-7201 storage namespace and validation helpers for the ERC1155 marketplace.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155MarketplaceStorage.sol\":\"RareERC1155MarketplaceStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350\",\"dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155MarketplaceStorage.sol\":{\"keccak256\":\"0xe7b315f4c7e8da495637acec91648113ad26cf6cf37a783632baaf81998e012e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f83d84dfbe0c43d476c137eb6c4b63ca88dff555c37123a8fc0e17884885cd5\",\"dweb:/ipfs/QmNT27NUUzmawaa8kpGXFepvBTiRiZtwdt3ozRFCbiEuPp\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e\",\"dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[],"type":"error","name":"DirectSettlementCallUnsupported"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[],"type":"error","name":"SettlementCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"SettlementDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CHECKOUT_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155MarketplaceStorage.sol":"RareERC1155MarketplaceStorage"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9","urls":["bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350","dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155MarketplaceStorage.sol":{"keccak256":"0xe7b315f4c7e8da495637acec91648113ad26cf6cf37a783632baaf81998e012e","urls":["bzz-raw://4f83d84dfbe0c43d476c137eb6c4b63ca88dff555c37123a8fc0e17884885cd5","dweb:/ipfs/QmNT27NUUzmawaa8kpGXFepvBTiRiZtwdt3ozRFCbiEuPp"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052","urls":["bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e","dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":168} \ No newline at end of file diff --git a/abis/RareERC1155Settlement.json b/abis/RareERC1155Settlement.json new file mode 100644 index 0000000..96fdb1d --- /dev/null +++ b/abis/RareERC1155Settlement.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_CHECKOUT_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"acceptOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"checkout","inputs":[{"name":"_items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[{"name":"execution","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","components":[{"name":"summary","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","components":[{"name":"filledCount","type":"uint256","internalType":"uint256"},{"name":"skippedCount","type":"uint256","internalType":"uint256"},{"name":"ethSpent","type":"uint256","internalType":"uint256"},{"name":"ethRefunded","type":"uint256","internalType":"uint256"}]},{"name":"items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","components":[{"name":"itemIndex","type":"uint256","internalType":"uint256"},{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"filled","type":"bool","internalType":"bool"},{"name":"failureStage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","internalType":"bytes4"},{"name":"failureData","type":"bytes","internalType":"bytes"},{"name":"totalPaid","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"payable"},{"type":"function","name":"executeCheckoutItem","inputs":[{"name":"_item","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"_remainingEth","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_grossAmount","type":"uint256","internalType":"uint256"},{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[{"name":"totalPaid","type":"uint256","internalType":"uint256"},{"name":"newRemainingEth","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"executeCheckoutPayout","inputs":[{"name":"_item","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"_seller","type":"address","internalType":"address"},{"name":"_grossAmount","type":"uint256","internalType":"uint256"},{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"DirectSettlementCallUnsupported","inputs":[]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SettlementCannotBeZero","inputs":[]},{"type":"error","name":"SettlementDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x60a080604052346100245730608052615db290816200002a8239608051816110bb0152f35b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c9081630a6ce3131461009a575080632c0c49ee1461009557806359a8a40a146100905780637777e6d71461008b578063a3eaf4d914610086578063b8e6b50f14610081578063cfdbf2541461007c5763d65852a61461007757600080fd5b610ad2565b610ab6565b610a2c565b610a10565b61047d565b6103ea565b610347565b6080366003190112610119576004356100b28161011c565b6024356100be8161011c565b604435916100cb8361011c565b606435926001600160401b039283851161011557366023860112156101155784600401359384116101155736602460608602870101116101155760246101129501926110fc565b80f35b8580fd5b80fd5b6001600160a01b0381160361012d57565b600080fd5b359061013d8261011c565b565b9181601f8401121561012d578235916001600160401b03831161012d576020808501948460051b01011161012d57565b634e487b7160e01b600052602160045260246000fd5b6006111561018f57565b61016f565b90600682101561018f5752565b919082519283825260005b8481106101cd575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016101ac565b9060209182815260c09283820191835193845183830152828501516040908184015283818701516060978891828701520151926080938486015201519660a0908180860152885180975260e0918286019487848a60051b8901019b01996000975b8a89106102585750505050505050505050505090565b909192939495969798999a9b8a806001928f60df19868303018d5251908151815261028b838301518483019060ff169052565b818c01516001600160a01b0316818d01528187015181880152878201516001600160a01b031688820152818901516001600160a01b0316818a0152818a0151818b01528a8201518b820152610100808301511515908201526102f66101208084015190830190610194565b610140828101516001600160e01b0319169082015261032661016080840151906101a080918501528301906101a1565b91610180809101519101529e0199019901979a999896959493929190610242565b602036600319011261012d576001600160401b0360043581811161012d5761037390369060040161013f565b604051929161038184610b6d565b6040519360808501938411858510176103d6576103d2946103c69460405260008152600060208201526000604082015260006060820152815260606020820152611e38565b604051918291826101e1565b0390f35b610b57565b908161010091031261012d5790565b60e036600319011261012d576001600160401b0360043581811161012d576104169036906004016103db565b604435906104238261011c565b60a43583811161012d5761043b90369060040161013f565b9060c43594851161012d5761045761046b95369060040161013f565b94909360843591606435916024359061246f565b60408051928352602083019190915290f35b606036600319011261012d5761049460043561011c565b61049f60243561011c565b6044356001600160401b03811161012d576104be90369060040161013f565b6104c66110b8565b6104d08183615bff565b73__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d57604051635e157ccf60e11b81526000818061050b60243560048301610c0d565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561079a576109f2575b5061053981610c77565b9061054381610c77565b61054c82610cdd565b926000805b848110610885575073__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d5760006105979160405180938192635ea509b560e01b835260243560048401610dc3565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561079a57610872575b5060005b8381106107b257506004356001600160a01b03163b1561012d57604051630d4498e760e21b815291600091839182916105fd91903360048501610f7c565b0381836004356001600160a01b03165af1801561079a5761079f575b5060005b81811061062657005b60206106328285610d6a565b5101516106be575b8061064760019285610d6a565b515161066760606106588488610d6a565b5101516001600160a01b031690565b90604061067584878a610d43565b0135600080516020615d3d8339815191526106b56020610696878a8d610d43565b013560405191829133978a8060a01b036004351696602435918561108d565b0390a40161061d565b60206106ca8285610d6a565b5101519060406106da8286610d6a565b510151916106ed60606106588488610d6a565b9260806106fa8488610d6a565b5101519160a061070a8589610d6a565b5101519273__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d57600093610751916040519788958695631872482b60e31b875260243560043560048901611029565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af491821561079a57600192610781575b50905061063a565b8061078e61079492610b88565b80610a05565b38610779565b610c34565b8061078e6107ac92610b88565b38610619565b806107c06001928689610d43565b356107df816107d0600435610df2565b90600052602052604060002090565b5461083e575b6107f4816107d0600435610e64565b54610801575b50016105bf565b61082c9061081533916107d0600435610e9d565b9060018060a01b0316600052602052604060002090565b6108368154610da3565b9055386107fa565b604061084b83888b610d43565b013561086b61086333610815856107d0600435610e2b565b918254610db6565b90556107e5565b8061078e61087f92610b88565b386105bb565b61089f61089382878a610d43565b336024356004356144b1565b6108a98288610d6a565b526108b48187610d6a565b506020806108c28389610d6a565b510151610905575b50806108d860019288610d6a565b51516108e48286610d6a565b5260406108f282888b610d43565b01356108fe8287610d6a565b5201610551565b9091610968908261093961092d600080516020615d1d8339815191525460018060a01b031690565b6001600160a01b031690565b81610944878c610d6a565b5101519060405180809681946361fe24a960e11b8352600483019190602083019252565b03915afa91821561079a576001936109be936109b8926000916109c5575b506040610993888d610d6a565b5101526109a0868b610d6a565b51015160406109af878c610d6a565b51015190610db6565b90610db6565b91906108ca565b6109e59150823d84116109eb575b6109dd8183610bec565b810190610d7e565b38610986565b503d6109d3565b8061078e6109ff92610b88565b3861052f565b600091031261012d57565b3461012d57600036600319011261012d57602060405160328152f35b3461012d5761010036600319011261012d57600435610a4a8161011c565b60443590610a578261011c565b606435610a638161011c565b6001600160401b039260c43584811161012d57610a8490369060040161013f565b9160e43595861161012d57610aa0610ab496369060040161013f565b95909460a435926084359260243590611adf565b005b3461012d57600036600319011261012d576020604051604b8152f35b60c036600319011261012d576001600160401b0360043581811161012d57610afe9036906004016103db565b60243590610b0b8261011c565b60843583811161012d57610b2390369060040161013f565b9060a43594851161012d57610b3f610ab495369060040161013f565b949093610b4a6110b8565b606435916044359161297f565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176103d657604052565b6001600160401b0381116103d657604052565b60c081019081106001600160401b038211176103d657604052565b606081019081106001600160401b038211176103d657604052565b602081019081106001600160401b038211176103d657604052565b90601f801991011681019081106001600160401b038211176103d657604052565b600080516020615cfd83398151915281526001600160a01b03909116602082015260400190565b6040513d6000823e3d90fd5b604051906101a082018281106001600160401b038211176103d657604052565b6001600160401b0381116103d65760051b60200190565b90610c8182610c60565b610c8e6040519182610bec565b8281528092610c9f601f1991610c60565b0190602036910137565b60405190610cb682610b9b565b606060a0836000815260006020820152600060408201526000838201528260808201520152565b90610ce782610c60565b610cf46040519182610bec565b8281528092610d05601f1991610c60565b019060005b828110610d1657505050565b602090610d21610ca9565b82828501015201610d0a565b634e487b7160e01b600052603260045260246000fd5b9190811015610d655760051b81013590607e198136030182121561012d570190565b610d2d565b8051821015610d655760209160051b010190565b9081602091031261012d575190565b634e487b7160e01b600052601160045260246000fd5b9060018201809211610db157565b610d8d565b91908201809211610db157565b600080516020615cfd83398151915281526001600160a01b039091166020820152604081019190915260600190565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5106020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5116020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5126020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c6020526040902090565b90815180825260208080930193019160005b828110610f68575050505090565b835185529381019392810192600101610f5a565b6001600160a01b039091168152606060208201819052610fb2939192610fa491840190610f48565b916040818403910152610f48565b90565b90815180825260208080930193019160005b828110610fd5575050505090565b83516001600160a01b031685529381019392810192600101610fc7565b90815180825260208080930193019160005b828110611012575050505090565b835160ff1685529381019392810192600101611004565b95929361107f94610fb2989692600080516020615cfd833981519152895260018060a01b03948580921660208b0152166040890152606088015260808701521660a08501526101008060c0860152840190610fb5565b9160e0818403910152610ff2565b6001600160a01b03918216815260208101929092529091166040820152606081019190915260800190565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146110ea57565b604051636a5f212f60e11b8152600490fd5b92936111066110b8565b6111108186615cb5565b6001600160a01b039233838516146116cc5773__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d57604051635e157ccf60e11b81526000818061115b8560048301610c0d565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561079a576116b9575b5061118985611964565b600080516020615d5d833981519152546111cd906020906111b2906001600160a01b031661092d565b6040518093819263e985e9c560e01b83528860048401611705565b0381888a165afa90811561079a5760009161168a575b501561166e576111f282610c77565b906111fc83610c77565b6112058461175c565b9260008061122a61092d600080516020615d1d8339815191525460018060a01b031690565b878c888d898d8588106114ba57505050505050505073__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d57600061127b9160405180938192635ea509b560e01b83528860048401610dc3565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561079a576114a7575b5090859160005b89878c81841061141357505050506112c1925033878a6158d2565b60005b8381106112d5575050505050505050565b6112df8184610d6a565b51519060206112ee8286610d6a565b51015160406112fd8387610d6a565b51015192606061130d8488610d6a565b51015191608061131d8589610d6a565b5101519473__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d5786956000948b611363938f956040519a8b98899863981e8fc560e01b8a5260048a016118d5565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af491821561079a5786867f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d7886948a8c6113f78f60406113e18a6113c98f829060019f9d8a9e611400575b50610d6a565b51519860206113d98383886117ac565b0135946117ac565b0135908b60405195869516993399169785611940565b0390a4016112c4565b8061078e61140d92610b88565b386113c3565b95839160019596976114458361081561142b88610ed6565b6114368887876117ac565b35600052602052604060002090565b611463600260406114578887876117ac565b01359201918254611818565b8091551561147b575b505050505001908692916112a6565b611436611498946108159361149261149d98610ed6565b936117ac565b611865565b898189898e61146c565b8061078e6114b492610b88565b3861129f565b926114e7886114e188958895839d9b9c986114db8560409d61150f9d6117ac565b9261450a565b92610d6a565b526114f2838d610d6a565b506114fe8383836117ac565b35611509848b610d6a565b526117ac565b013561151b8487610d6a565b5261154b60208b8d8c61152e888a610d6a565b5192604051809681958294627eeac760e11b8452600484016117bc565b0392165afa90811561079a5760009161164f575b5061156a8487610d6a565b51811061161457506115a4602080611582868b610d6a565b510151604051809381926361fe24a960e11b8352600483019190602083019252565b0381865afa91821561079a576001926115ed926000916115f5575b5060406115cc878c610d6a565b5101526109b860206115de878c610d6a565b51015160406109af888d610d6a565b92019061122a565b61160e915060203d6020116109eb576109dd8183610bec565b386115bf565b8961164b8d928861163088611629818c610d6a565b5192610d6a565b5190604051958695636906ef1760e11b8752600487016117d7565b0390fd5b611668915060203d6020116109eb576109dd8183610bec565b3861155f565b60405163d65b0d6960e01b81528061164b878660048401611705565b6116ac915060203d6020116116b2575b6116a48183610bec565b8101906116ed565b386111e3565b503d61169a565b8061078e6116c692610b88565b3861117f565b60405163aac1ae8b60e01b81526001600160a01b0384166004820152602490fd5b9081602091031261012d5751801515810361012d5790565b6001600160a01b0391821681529116602082015260400190565b6040519060a082018281106001600160401b038211176103d657604052606060808360008152600060208201526000604082015282808201520152565b9061176682610c60565b6117736040519182610bec565b8281528092611784601f1991610c60565b019060005b82811061179557505050565b6020906117a061171f565b82828501015201611789565b9190811015610d65576060020190565b6001600160a01b039091168152602081019190915260400190565b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b606319810191908211610db157565b91908203918211610db157565b908160011b9180830460021490151715610db157565b81810292918115918404141715610db157565b818110611859575050565b6000815560010161184e565b6005600091828155826001820155826002820155826003820155600481018054848255806118bb575b50500190815490808355816118a257505050565b60208161013d94601f935220910160051c81019061184e565b6118ce918552602085209081019061184e565b388061188e565b96936119319591610fb299979394600080516020615cfd8339815191528a5260018060a01b03958680931660208c015260408b0152166060890152608088015260a08701521660c08501526101208060e0860152840190610fb5565b91610100818403910152610ff2565b909493926060926080830196835260018060a01b0316602083015260408201520152565b803b158015611997575b6119755750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b506119a1816119a7565b1561196e565b6040519060208083018160006301ffc9a760e01b95868452866024820152602481526119d281610bb6565b51617530938685fa933d6000519086611a77575b5085611a6d575b5084611a0a575b50505081611a00575090565b610fb29150611a82565b83945090600091839460405185810192835263ffffffff60e01b602482015260248152611a3681610bb6565b5192fa60005190913d83611a62575b505081611a58575b5015903880806119f4565b9050151538611a4d565b101591503880611a45565b15159450386119ed565b8411159550386119e6565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152611ab281610bb6565b5191617530fa6000513d82611ad3575b5081611acc575090565b9050151590565b60201115915038611ac2565b9491959296909397611aef6110b8565b60409384519a611afe8c610b9b565b6001600160a01b039788168c5260208c01968752978716858c0181815299881660608d0190815260808d019b8c5260a08d01958652999890338114611e1657508b51611b52906001600160a01b0316611964565b895173__$11854c5905aa23948096e0e4d7059bb9de$__93906001600160a01b031694843b1561012d578751635e157ccf60e11b8152600096879082908190611b9e9060048301610c0d565b0381895af4801561079a57611e03575b50843b156101155787516376fb859760e01b8152868180611bd58787878b60048601612ac4565b0381895af4801561079a57611df0575b50865115611ddf57918d939161092d9897969593611c5d6020611c1f61092d611c0d8a615293565b9a519a9e909a6001600160a01b031690565b600080516020615d5d83398151915254611c41906001600160a01b031661092d565b908c51808095819463e985e9c560e01b83523360048401611705565b03915afa90811561079a578891611dc1575b5015611d9957908f91611cc08f94938f611cb3908f8d90611ca7611c99865160018060a01b031690565b93516001600160a01b031690565b90519151923390615561565b516001600160a01b031690565b8c5194516001600160a01b03169590873b15611d955790611cfc949392918c519d8e9a8b998a9963981e8fc560e01b8b52339460048c01612910565b03915af4801561079a57611d68611d58611d4a7fd6c105ec24ddd771e44ffc25e8a8603b6b78ba980a72645a26740b3d8437388599611d7d978a95611d82575b50516001600160a01b031690565b9b516001600160a01b031690565b955198516001600160a01b031690565b98519151925195869516991697339785611940565b0390a4565b8061078e611d8f92610b88565b38611d3c565b8980fd5b8f51895163d65b0d6960e01b815290819061164b906001600160a01b03163360048401611705565b611dd9915060203d81116116b2576116a48183610bec565b38611c6f565b875163c6b949a960e01b8152600490fd5b8061078e611dfd92610b88565b38611be5565b8061078e611e1092610b88565b38611bae565b8651630bfa508960e41b81526001600160a01b03919091166004820152602490fd5b9190611e426110b8565b611e4b826120eb565b611e548261206f565b91602092838501908152349260005b838110611f4d57505050508060608451015280611ed0575b50815180519181015160408083015160609384015182519586526020860193909352908401529082015233907ff769e48349f9b4903ef362e95411b2c4778d3bdaf9dc87b0d25f29f2813ea16390608090a290565b73__$11854c5905aa23948096e0e4d7059bb9de$__803b1561012d57604051637baf92a360e01b8152600080516020615cfd833981519152600482015260006024820181905233604483015260648201939093529190829060849082905af4801561079a5715611e7b578061078e611f4792610b88565b38611e7b565b611f628582611f5d8188876120bf565b612195565b91969015611fe4575090611fc1600192968951611f7f8151610da3565b9052838060a01b03611f9d6060611f97868b8a6120bf565b016120e1565b1615611fc7575b611fbb83875183611fb58383610d6a565b52610d6a565b50613d68565b01611e63565b610180810151611fdd60408c5101918251610db6565b9052611fa4565b956001929150611fc190888a5101611fdd8151610da3565b604051906101a082018281106001600160401b038211176103d657604052816101806000918281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201528261014082015260606101608201520152565b9061207982610c60565b6120866040519182610bec565b8281528092612097601f1991610c60565b019060005b8281106120a857505050565b6020906120b3611ffc565b8282850101520161209c565b9190811015610d655760051b8101359060fe198136030182121561012d570190565b35610fb28161011c565b801561211b57603281116120fc5750565b6044906040519063f80a484560e01b8252600482015260326024820152fd5b60405163c2e5347d60e01b8152600490fd5b6040519061213a82610bd1565b60008252565b3d1561217a573d906001600160401b0382116103d6576040519161216e601f8201601f191660200184610bec565b82523d6000602084013e565b606090565b919082604091031261012d576020825192015190565b90816121a9916121a3611ffc565b50613bcf565b90826121b482612c8a565b8051909392906001600160a01b031680612279575b501561226a57507f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50b546000938493909261220c926001600160a01b03169361239d565b90602082519201905af461221e612140565b9015612250576122399192506020808251830101910161217f565b600161010084015291906101808201529160019190565b61225c61226391613e41565b9083613cd2565b9160009190565b91509350612263915082613ca9565b6001600160a01b03166080870152386121c9565b60ff81160361012d57565b9035601e198236030181121561012d5701602081359101916001600160401b03821161012d578160051b3603831361012d57565b81835290916001600160fb1b03831161012d5760209260051b809284830137010190565b9061238a610fb29260ff81356123058161228d565b16835260208101356123168161011c565b6001600160a01b0316602084015261234361233360408301610132565b6001600160a01b03166040850152565b61236261235260608301610132565b6001600160a01b03166060850152565b6080810135608084015260a081013560a084015260c081013560c084015260e0810190612298565b9091610100908160e082015201916122cc565b825160208085015160408087015160608801516080909801519151632cd4520560e11b8186015260e060248201529796889692956001600160a01b03949193908516906123ef906101048a01906122f0565b9360448901526064880152608487015260a486015260231992838683030160c48701528080885193848152019701926000905b8382106124525750505050508284030160e4830152610fb29261244491610ff2565b03601f198101835282610bec565b845181168952978201978997509382019360019190910190612422565b9061248898979695949392916124836110b8565b61250e565b9091565b35610fb28161228d565b906040610fb2926001815281602082015201906101a1565b906040610fb2926002815281602082015201906101a1565b906040610fb2926003815281602082015201906101a1565b906040610fb2926004815281602082015201906101a1565b906040610fb2926005815281602082015201906101a1565b989796959493929190600060ff8b356125268161228d565b16156125995750600160ff61253a8c61248c565b161461258f5761164b6124446125766125528d61248c565b60405163bb75025d60e01b602082015260ff90911660248201529182906044820190565b604051631ee0c01d60e31b815291829160048301612496565b6124889899612aeb565b91826125c69895939b96929794999b5087936125b5818c610db6565b9a6125cb8a8d60608c019d8e6120e1565b6132ef565b80516128045750602089016125e76125e2826120e1565b610df2565b9a61260160808c0135809d90600052602052604060002090565b5415158b8d61261b816107d0612616886120e1565b610e64565b541515926127d4575b5050612798575b61263a61092d61092d846120e1565b946126448d614476565b60c08d01359661265388614476565b91813b1561279457604051630d4498e760e21b81529392849291839185918391612681913360048501610f7c565b03925af19081612781575b506126b55761164b61269c612140565b604051631ee0c01d60e31b8152918291600483016124c6565b6001600160a01b0397886126c88f6120e1565b1661274557506126d98e8c92611818565b9f600080516020615d3d8339815191529a60a09a612728996127149761270e975b8b8161272f575b50505050505050506120e1565b996120e1565b90604051958695339b16980135928561108d565b0390a49190565b61273897613aa8565b893880808080808b612701565b9f8b9150600080516020615d3d8339815191529a8f9a8f996127149761270e9761277c60a09f6127776127289f6120e1565b613537565b6126fa565b8061078e61278e92610b88565b3861268c565b8380fd5b6127c36127b08d6107d06127ab866120e1565b610e9d565b3360009081526020919091526040902090565b6127cd8154610da3565b905561262b565b60c06127f16127b06127fb936107d06127ec8a6120e1565b610e2b565b9201358254610db6565b90558b8d612624565b604051631ee0c01d60e31b815290819061164b90600483016124ae565b91908082526020809201929160005b82811061283e575050505090565b90919293828060019287356128528161011c565b848060a01b03168152019501910192919092612830565b91908082526020809201929160005b828110612886575050505090565b90919293828060019260ff883561289c8161228d565b16815201950193929101612878565b979593610fb29997936129029692600080516020615cfd8339815191528b5260018060a01b03948580921660208d01521660408b015260608a015260808901521660a08701526101008060c0880152860191612821565b9260e0818503910152612869565b9896949093610fb29a98946020946129709894600080516020615cfd8339815191528d528c60018060a01b03978880951691015260408d01521660608b015260808a015260a08901521660c08701526101208060e0880152860191612821565b92610100818503910152612869565b97969592919094939560ff6129938a61248c565b1615612a6057600160ff6129a68b61248c565b16146129d95761164b6129b88a61248c565b60405163bb75025d60e01b815260ff90911660048201529081906024820190565b979192939495969773__$11854c5905aa23948096e0e4d7059bb9de$__94612a03602085016120e1565b96612a10606086016120e1565b99873b1561012d57600099608097612a42966040519d8e9c8d9b8c9b63981e8fc560e01b8d5201359060048c01612910565b03915af4801561079a57612a535750565b8061078e61013d92610b88565b9791969794909493929373__$11854c5905aa23948096e0e4d7059bb9de$__94612a986060612a91602087016120e1565b95016120e1565b94863b1561012d57600098612a42946040519b8c9a8b998a99631872482b60e31b8b5260048b016128ab565b9290612add90610fb29593604086526040860191612821565b926020818503910152612869565b949895909792969193988899612b01818a610db6565b99612b13818c6125c660608c016120e1565b9b8c51612c6f579a9b508b9a6001600160a01b03612b3360608b016120e1565b16612c505750612bc0969798999a612b4a91611818565b995b6002612b7d896108158c6080612b6c612b67602084016120e1565b610ed6565b910135600052602052604060002090565b01612b8d60c08b01358254611818565b80915515612c2c575b612bb9612ba560208b016120e1565b60c08b01359060808c0135908b33916137d0565b8789613aa8565b612bcc602083016120e1565b917f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d788694611d7d612bfd606084016120e1565b6040516001600160a01b03968716963396169490928392909160c08101359160a0820135916080013585611940565b612c4b611498896108158c6107d0612b676020608084013593016120e1565b612b96565b9a88999a9150612c6a906127776060612bc09a9b016120e1565b612b4c565b604051631ee0c01d60e31b81528061164b8f600483016124ae565b90612c9361171f565b908235612c9f8161228d565b60ff8116938415612d0457612cb38261228d565b60018514612cef5750612cc59061228d565b6040519263bb75025d60e01b6020850152602484015260248352612ce883610bb6565b6000929190565b91935050612cfd9150612f0b565b9192909190565b91935050612cfd9150612d47565b903590601e198136030182121561012d57018035906001600160401b03821161012d57602001918160051b3603831361012d57565b612d4f61171f565b9060608101612d6c612d68612d63836120e1565b6143d0565b1590565b612ec157612db160209283810192612d83846120e1565b90612dbb612d90826120e1565b9260808501359360a086013595868660c0830135998360e08c950190612d12565b9590943391614d14565b60608101516001600160a01b03168a5296909115612e955750505050505081810151808385015280612e0d575b5060a091506080810151606084015201516080820152600191612e0961212d565b9190565b600080516020615d1d83398151915254612e55918491612e35906001600160a01b031661092d565b60405180809581946361fe24a960e11b8352600483019190602083019252565b03915afa90811561079a5760a093600092612e78575b5050604084015238612de8565b612e8e9250803d106109eb576109dd8183610bec565b3880612e6b565b612eb99750612ea9919293949596506120e1565b612eb333936120e1565b91613f10565b916000929190565b612efd939150612ed3612ce8916120e1565b60405163cd5f748960e01b60208201526001600160a01b0390911660248201529384906044820190565b03601f198101855284610bec565b90612f1461171f565b90604080840190612f34612f27836120e1565b6001600160a01b03168552565b612f4061092d836120e1565b33146132b55760209081860195612f61612d68612f5c896120e1565b61445e565b61327757612f6d61171f565b50612f77876120e1565b90612f81856120e1565b9160c0612faf6060840192612f95846120e1565b946080810135809660a08301359586930135988994615168565b9390911561324f57505050612fc961092d61092d8b6120e1565b61301386612fd6896120e1565b600080516020615d5d83398151915254612ff8906001600160a01b031661092d565b885163e985e9c560e01b815293849283929060048401611705565b0381855afa60009181613230575b5061305e575050505050612efd9061304461303e612ce8956120e1565b976120e1565b905196879363d65b0d6960e01b9085015260248401611705565b9692949395961561321757868561309292613078866120e1565b8751809581948293627eeac760e11b8452600484016117bc565b03915afa600091816131f8575b5061310057505091612ce89493916130bc61270e612efd956120e1565b9051988995636906ef1760e11b90870152602486019093600093608093969560a084019760018060a01b038092168552166020840152604083015260608201520152565b92949182849a959297989a106131c05750505050828401805186860152600080516020615d1d8339815191525461316a939250859190613148906001600160a01b031661092d565b905190835180809681946361fe24a960e11b8352600483019190602083019252565b03915afa91821561079a576080946000936131a1575b50508401526060810151606084015201516080820152600191612e0961212d565b6131b8929350803d106109eb576109dd8183610bec565b903880613180565b612ce89650946131de6131d8612efd969b99976120e1565b9a6120e1565b9051998a96636906ef1760e11b90880152602487016117d7565b613210919250883d8a116109eb576109dd8183610bec565b903861309f565b5050612ce8949350612efd925061303e613044916120e1565b613248919250883d8a116116b2576116a48183610bec565b9038613021565b93955093969150945061327161326b61326b612eb9999b6120e1565b926120e1565b9261425b565b5094612ce8925061328a612efd916120e1565b9551630f20e39960e21b928101929092526001600160a01b0390951660248201529384906044820190565b612efd94506132c6612ce8926120e1565b905163aac1ae8b60e01b60208201526001600160a01b0390911660248201529384906044820190565b91811561352c576001600160a01b0383169081156134ea5750604080516370a0823160e01b8152336004820152602092908381602481855afa600091816134cb575b50613371575050516364db3d5960e01b918101919091526001600160a01b039092166024830152604482015260006064820152610fb28160848101612444565b84811061348c57507f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d508546133cf9184916133b3906001600160a01b031661092d565b9084518080958194636eb1769f60e11b83523360048401611705565b03915afa6000918161346d575b5061341b5750516337a950bb60e01b918101919091526001600160a01b039092166024830152604482015260006064820152610fb28160848101612444565b83811061342f575050505050610fb261212d565b90516337a950bb60e01b928101929092526001600160a01b03909316602482015260448101919091526064810191909152610fb28160848101612444565b613485919250843d86116109eb576109dd8183610bec565b90386133dc565b91516364db3d5960e01b93810193909352506001600160a01b03909316602482015260448101919091526064810191909152610fb28160848101612444565b6134e3919250853d87116109eb576109dd8183610bec565b9038613331565b92505080821015613522576040516310da2c1360e21b602082015260248101919091526044810191909152610fb28160648101612444565b5050610fb261212d565b505050610fb261212d565b9091821561375b57604080516370a0823160e01b8082523060048084019190915292959294926020929091906001600160a01b0385169060008582602481865afa90918161373c575b506135a857888861164b613592612140565b9251631ee0c01d60e31b815292839283016124ae565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d508549092906135df906001600160a01b031661092d565b803b1561012d578951630aed65f560e11b81526001600160a01b038816818b0190815233602082015230604082015260608101879052909160009183919082908490829060800103925af19081613729575b5061364357888861164b613592612140565b8851908152308882019081529091600091869184918290819060200103915afa90918161370a575b5061367d57878761164b613592612140565b949693959460009190818110613702576136979250611818565b905b8082036136a857505050505050565b8351636ff596f360e01b938101939093526001600160a01b03959095166024830152604482019490945260648082019490945292835261164b906136ed608485610bec565b51631ee0c01d60e31b815292839283016124ae565b505090613699565b613722919250853d87116109eb576109dd8183610bec565b903861366b565b8061078e61373692610b88565b38613631565b613754919250863d88116109eb576109dd8183610bec565b9038613580565b915050565b9391909260e0959360018060a01b03928380921687521660208601521660408401526060830152608082015260c060a0820152600060c08201520190565b6001600160a01b0391821681526020810192909252918216604082015291166060820152608081019190915260a00190565b60408051627eeac760e11b8082529196929560209593949290916001600160a01b03881691906000888280613809888a600484016117bc565b0381875afa909181613a89575b5061383f5761164b8a613827612140565b9051631ee0c01d60e31b8152918291600483016124de565b90868210613a5d578951818152600089828061385f898c600484016117bc565b0381885afa909181613a3e575b5061387d5761164b8b613827612140565b600080516020615d5d833981519152549093906138a2906001600160a01b031661092d565b803b1561012d576000888792898f8f6138d28f8793519889978896879563eb46c45b60e01b875260048701613760565b03925af19081613a2b575b506138ee5761164b8b613827612140565b8a5182815260008a82806139068a8c600484016117bc565b0381865afa909181613a0c575b506139245761164b8c613827612140565b8b5192835291906000908a90839081806139428b8e600484016117bc565b03915afa9091816139ed575b5061395f5761164b8b613827612140565b9061396f8880939c9b9c94611818565b14928315936139d8575b5050506139895750505050505050565b61164b9750916139c19493916139b3938751988996638791019960e01b908801526024870161379e565b03601f198101845283610bec565b51631ee0c01d60e31b8152918291600483016124de565b6139e3929350610db6565b1415388581613979565b613a059192508a3d8c116109eb576109dd8183610bec565b903861394e565b613a249192508b3d8d116109eb576109dd8183610bec565b9038613913565b8061078e613a3892610b88565b386138dd565b613a569192508a3d8c116109eb576109dd8183610bec565b903861386c565b508851636906ef1760e11b8189015261164b918a906139c19083906139b3908b898f8c602487016117d7565b613aa1919250893d8b116109eb576109dd8183610bec565b9038613816565b9497969795919593929360018060a01b0390817f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50b5416976040519660209184613b09848b019b636b2c295360e11b8d5260c060248d015260e48c01906122f0565b961660448a0152606489015260848801528060231994858982030160a48a01528381520195926000905b838210613b91575050505050926124448360009899613b5f948a999897858098030160c4860152612869565b51915af4613b6b612140565b9015613b745750565b604051631ee0c01d60e31b815290819061164b90600483016124f6565b90919293968380600192848b35613ba78161011c565b1681520198019493920190613b33565b604051613bc381610bd1565b60008152906000368137565b90613bd8611ffc565b5060c0613be48261248c565b91613c70613bf4602083016120e1565b613c60613c03604085016120e1565b613c44613c12606087016120e1565b93613c34613c1e613bb7565b99613c27610c40565b9b8c5260ff1660208c0152565b6001600160a01b031660408a0152565b60808581013560608a01526001600160a01b0390911690880152565b6001600160a01b031660a0860152565b60a081013582850152013560e0830152600061010083015260006101208301526000610140830152610160820152600061018082015290565b6001610120820152610160906001600160e01b0319613cc78461449b565b166101408201520152565b600682101561018f576101609161012082015263ffffffff60e01b613cc78461449b565b9081526001600160a01b039182166020820152911660408201526060810191909152608081019190915290151560a082015294939261012092613d6392613d419060c0890190610194565b6001600160e01b03191660e087015261014061010087018190528601906101a1565b930152565b8051906020810151613d7a9060ff1690565b60408201519092906001600160a01b031660608301516080840151909391906001600160a01b031660a08301519094906001600160a01b03169260c08101519060e0810151610100820151613dce90151590565b61012083015190613dde82610185565b6101408401516001600160e01b0319169261016085015194610180015195604051998a99600160a01b60019003169d60ff169c613e1b998b613cf6565b037f844491b54cb1a58801f9eb51fecfaf5076847131d8f6ec580232d9766e3fae4f91a4565b90613e4b82613e5d565b91613e5857505060059190565b925090565b631ee0c01d60e31b6001600160e01b0319613e778361449b565b1614801590613f05575b613ef6576024810151916044820151606483019283519160058611908115613eea575b50613ed757613eb39051611809565b10613ec857613ec183610185565b6001929190565b60009250829150610fb261212d565b5050915050600090600090610fb261212d565b60409150141538613ea4565b50600090600090610fb261212d565b506064815110613e81565b949293959195613f23816107d084610f0f565b956001600160e01b03191694634ed1072f60e11b808714614236575063915b8f1d60e01b8681146142015750600162bed83560e01b03198681146141e3575063e2cf60cb60e01b8681146141af575063c6b949a960e01b8681146141905750636d03a2e560e01b86811461411a575063ae3586c560e01b918683146140ab5750635bdd08f560e01b9250505083811461407a575063456afd0b60e01b90508281146140515750631d6bbb8d60e11b8281146140225750632e834cbf60e11b9182149050613ff557505050610fb261212d565b61244461400e6001610fb294015460018060a01b031690565b604051948593602085015260248401611705565b60029390930154604051602081019490945260248401919091526044830152509050610fb28160648101612444565b935050506003610fb2910154916124446040519384926020840152602483019190602083019252565b92509350506124446004610fb293015460405194859360208501526024840160209093929193604081019481520152565b92975092509350610fb2945061244492506140c9816107d088610e64565b54916140dc81610815846107d08b610e9d565b5491604051978896602088015260248701919594939060809360a084019760018060a01b038093168552602085015216604083015260608201520152565b95509290919650610fb295506124449350614138826107d089610df2565b549261414b81610815856107d08c610e2b565b5492604051988997602089015260248801929060a09491979695929760c0850198600180881b0380931686526020860152166040840152606083015260808201520152565b97505050505050505060405190602082015260048152610fb281610b6d565b60405160208101919091526001600160a01b0390911660248201529650610fb2955086945050604484019250612444915050565b955050509450505061244461400e610fb2935460018060a01b031690565b60405160208101919091526001600160a01b03909316602484015250909550610fb29450859350506044830191506124449050565b95505091509450610fb2935061244491506040519485936020850152602484016117bc565b94929161426f81610815876107d086610ed6565b956001600160e01b0319169463c6b949a960e01b8087146141905750630bac95f560e21b8681146143905750635493bdef60e11b918683146143675750632e834cbf60e11b925050508381146143495750631d6bbb8d60e11b905082811461431a57506364b7fccd60e11b91821490506142ee57505050610fb261212d565b6124446002610fb293015460405194859360208501526024840160209093929193604081019481520152565b60019390930154604051602081019490945260248401919091526044830152509050610fb28160648101612444565b9354909450610fb293925061244491506001600160a01b031661400e565b9297509250935061244492506003610fb29501549160405196879560208701526024860161108d565b60405160208101919091526001600160a01b0393841660248201526044810191909152911660648201529450610fb2935084925050608482019050612444565b6001600160a01b03908116908115614457576020907f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d505541691602460405180948193632d5ad3d560e01b835260048301525afa60009181614437575b50610fb25750600090565b61445091925060203d81116116b2576116a48183610bec565b903861442c565b5050600190565b803b1515908161446c575090565b610fb291506119a7565b906040519161448483610b6d565b60018352602083016020368237835115610d655752565b60048151106144ab576020015190565b50600090565b92916144bb610ca9565b508235906020840135926144e76144db6040870135966060810190612d12565b9087878787878d614d14565b9791156144f8575050505050505090565b6145029750613f10565b602081519101fd5b92909161451561171f565b50813590604060208401359301359361453285858585858b615168565b979115614543575050505050505090565b614502975061425b565b9060405191828154918282526020928383019160005283600020936000905b8282106145825750505061013d92500383610bec565b85546001600160a01b03168452600195860195889550938101939091019061456c565b906040805180938054926145cc6145c0858560209181520190565b92600052602060002090565b9360005b81601f8201106149e85761013d9554928282106149d2575b8282106149b8575b82821061499e575b828210614984575b82821061496a575b828210614950575b828210614936575b82821061491c575b828210614905575b508181106148ed575b8181106148d5575b8181106148bd575b8181106148a5575b81811061488d575b818110614875575b81811061485d575b818110614845575b81811061482d575b818110614815575b8181106147fd575b8181106147e5575b8181106147cd575b8181106147b5575b81811061479d575b818110614785575b81811061476d575b818110614755575b81811061473d575b818110614725575b81811061470d575b8181106146f5575b106146e7575b500383610bec565b60f81c8152602001386146df565b60f083901c60ff1684529260019060200193016146d9565b60e883901c60ff1684529260019060200193016146d1565b60e083901c60ff1684529260019060200193016146c9565b60d883901c60ff1684529260019060200193016146c1565b60d083901c60ff1684529260019060200193016146b9565b60c883901c60ff1684529260019060200193016146b1565b60c083901c60ff1684529260019060200193016146a9565b60b883901c60ff1684529260019060200193016146a1565b60b083901c60ff168452926001906020019301614699565b60a883901c60ff168452926001906020019301614691565b60a083901c60ff168452926001906020019301614689565b609883901c60ff168452926001906020019301614681565b609083901c60ff168452926001906020019301614679565b608883901c60ff168452926001906020019301614671565b608083901c60ff168452926001906020019301614669565b607883901c60ff168452926001906020019301614661565b607083901c60ff168452926001906020019301614659565b606883901c60ff168452926001906020019301614651565b606083901c60ff168452926001906020019301614649565b605883901c60ff168452926001906020019301614641565b605083901c60ff168452926001906020019301614639565b604883901c60ff168452926001906020019301614631565b83901c60ff16845292600190602001930138614628565b603884901c60ff1685529093600190602001940190614620565b603084901c60ff1685529093600190602001940190614618565b602884901c60ff1685529093600190602001940190614610565b602084811c60ff1686529194909160019101940190614608565b601884901c60ff1685529093600190602001940190614600565b601084901c60ff16855290936001906020019401906145f8565b600884901c60ff16855290936001906020019401906145f0565b60ff8416855290936001906020019401906145e8565b919350916001610400602092614c868854614c7b60ff614a0c8582851660ff169052565b614c54614ab9614c048d614bb489614b648e614a318184018a8d60081c1660ff169052565b614a448584018a8d60101c1660ff169052565b888b610200606095614a5f878201858560181c1660ff169052565b614a746080958585888501921c1660ff169052565b614b1a60a097614a8d898401878760281c1660ff169052565b614aca60c09b614aa68d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b614adf6101208401878760481c1660ff169052565b614af46101408401878760501c1660ff169052565b614b096101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b614b2f6101a08201858560681c1660ff169052565b614b446101c08201858560701c1660ff169052565b614b596101e08201858560781c1660ff169052565b01921c1660ff169052565b614b796102208c01888b60881c1660ff169052565b614b8e6102408c01888b60901c1660ff169052565b614ba36102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b614bc96102a08a01868960a81c1660ff169052565b614bde6102c08a01868960b01c1660ff169052565b614bf36102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b614c196103208801848760c81c1660ff169052565b614c2e6103408801848760d01c1660ff169052565b614c436103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b614c696103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b01950191019186939194926145d0565b9060405160e081018181106001600160401b038211176103d65760405282546001600160a01b039081168252600184015416602082015291829060c090614d0f90600690600281015460408601526003810154606086015260048101546080860152614d046005820161454d565b60a0860152016145a5565b910152565b9092969493959196614d24610ca9565b97614d3a614d35836107d086610f0f565b614c96565b828a5280516001600160a01b031660608b01529687516001600160a01b03959086168015614f7957614d6c9086614f94565b9015614f5e5715614f4157614d8791612d6891848688615019565b614f29578515614f1157614d9e826107d085610df2565b54614db082610815856107d088610e2b565b5490878115159283614efd575b505050614ee557610815826107d0614ddb614de2956107d088610e64565b5495610e9d565b54908015159182614ed2575b5050614ebd5760808401518015159081614eb3575b50614e9e5760608401514210614e895760408401518503614e7457602084015191811691166001600160a01b031603614e615760c092614e429161183b565b602084015260a08101516080840152015160a082015260019160009190565b50600093632e834cbf60e11b9392509050565b50600095631d6bbb8d60e11b95945092505050565b5060009563456afd0b60e01b95945092505050565b50600095635bdd08f560e01b95945092505050565b9050831138614e03565b5060009563ae3586c560e01b95945092505050565b614edd919250610da3565b113880614dee565b50600098636d03a2e560e01b98975095505050505050565b614f08929350610db6565b11388781614dbd565b5060009863c6b949a960e01b98975095505050505050565b5060009863e2cf60cb60e01b98975095505050505050565b5060009a600162bed83560e01b03199a9950975050505050505050565b5060009b63915b8f1d60e01b9b9a5098505050505050505050565b5060009b634ed1072f60e11b9b9a5098505050505050505050565b604051638da5cb5b60e01b602082019081526004825292939290614fb781610b6d565b6000928392839251915afa90614fcb612140565b9115801561500e575b61500757602082805181010312610119575060200151614ff38161011c565b6001926001600160a01b0391821691161490565b9250508190565b506020825110614fd4565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d60209081526040808320938352928152828220835196949061506988610b6d565b6001815491828a5201549081848a01521590811561514e575b506151425783929195949351868101916bffffffffffffffffffffffff199060601b168252601481526150b481610b6d565b5190209551959481945b8486106150cf575050505050501490565b909192939495615112908760051b8301358082111560001461511c57865185810192835260208301919091526151088160408401612444565b5190205b96615159565b94939291906150be565b865185810191825260208201929092529061513a8160408401612444565b51902061510c565b50505050505050600190565b905042101538615082565b6000198114610db15760010190565b9493929061517461171f565b95828752851561527d5761518e926107d061081592610ed6565b906002820154908115615268576003830154801515908161525d575b506152485782546001600160a01b03918216911603615234578260018301540361522057831161520d576151e36005926151ff9461183b565b60208501526151f46004820161454d565b6060850152016145a5565b608082015260019160009190565b506000936364b7fccd60e11b9392509050565b50600094631d6bbb8d60e11b949350915050565b50600094632e834cbf60e11b949350915050565b50600095635493bdef60e11b95945092505050565b9050421015386151aa565b50600095630bac95f560e21b95945092505050565b5060009663c6b949a960e01b9695509350505050565b80516001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d51360205260409020909190916152e760208201938451600052602052604060002090565b9060409361531885830193615302855160018060a01b031690565b60018060a01b0316600052602052604060002090565b6060830180519091615332916001600160a01b0316615302565b93600285015492831561547157600486015480151580615467575b615423575050845461537291506001600160a01b03165b91516001600160a01b031690565b6001600160a01b0381811690831603615408575050600183015491608081019283518082036153e757505060a001948551908282116153c757505050906153bf610fb2925185519061183b565b9351906154d9565b5163587ced0f60e01b815260048101919091526024810191909152604490fd5b8751631d6bbb8d60e11b815260048101919091526024810191909152604490fd5b61164b8751928392632e834cbf60e11b845260048401611705565b61164b90898561544f61536461543f8b5160018060a01b031690565b965197516001600160a01b031690565b915163581fa6b560e01b81529586956004870161379e565b504281111561534d565b61164b888461549c61536461548c8a5160018060a01b031690565b955196516001600160a01b031690565b915163b9c59b5760e01b81526001600160a01b03948516600482015260248101959095528316604485015291909116606483015281906084820190565b9190916002810190815490818514615534576003019182546154fb868261183b565b831561551e57839004958303928311610db15761551a92869255611818565b9055565b634e487b7160e01b600052601260045260246000fd5b6000809394955060049250600382018181549660018060a01b031985541685558160018601555555015590565b60408051627eeac760e11b8082529296600496909594939092916001600160a01b03891691602091828180615599898b8f84016117bc565b0381875afa90811561079a57600091615790575b5088811061577157908291869493898c6155d18951988993849388855284016117bc565b0381875afa94851561079a57600095615752575b50600080516020615d5d83398151915254615608906001600160a01b031661092d565b803b1561012d576000898b928f8f8f9061563886928f8f51998a988997889663eb46c45b60e01b88528701613760565b03925af1801561079a5761573f575b508683898d6156608a51948593849389855284016117bc565b0381885afa92831561079a5788958d8c928794600097615720575b506156918b51998a9586948594855284016117bc565b03915afa93841561079a578a936000956156fb575b5050826156b291611818565b14928315936156e6575b5050506156cc5750505050505050565b51638791019960e01b81529650869561164b95870161379e565b6156f1929350610db6565b14153886816156bc565b6156b292955084918161571992903d106109eb576109dd8183610bec565b94916156a6565b615738919750853d87116109eb576109dd8183610bec565b953861567b565b8061078e61574c92610b88565b38615647565b61576a919550833d85116109eb576109dd8183610bec565b93386155e5565b8961164b88928b898f8a51968796636906ef1760e11b885287016117d7565b6157a79150833d85116109eb576109dd8183610bec565b386155ad565b602090818184031261012d578051906001600160401b03821161012d57019180601f8401121561012d5782516157e281610c60565b936157f06040519586610bec565b818552838086019260051b82010192831161012d578301905b828210615817575050505090565b81518152908301908301615809565b9092916040820191604081528451809352606081019260208096019060005b81811061585f57505050610fb29394818403910152610f48565b82516001600160a01b031686529487019491870191600101615845565b93602095926158c1946158b39360018060a01b0392838092168952168888015216604086015260c0606086015260c0850190610f48565b908382036080850152610f48565b9060a0818303910152600081520190565b835190949093926001600160a01b0386169290916158f76158f287611825565b610c77565b946159046158f288611825565b809660005b898110615b8157506040968751916313849cfd60e21b918284528084808460049e8f83019161593792615826565b03815a93600094fa93841561079a57600094615b66575b5060005b8c8110615af65750600080516020615d5d8339815191525461597c906001600160a01b031661092d565b92833b1561012d576000898f958c968f8f906159ae8e8e8894519c8d9889978896637ee7f69b60e01b8852870161587c565b03925af190811561079a576000948d92615ae3575b506159d98c519788958694859485528401615826565b03915afa91821561079a57600092615ac0575b5060005b898110615a04575050505050505050505050565b615a0d81611825565b615a178185610d6a565b51615a37615a258386610d6a565b51615a30858a610d6a565b5190611818565b1490811591615a7c575b50615a4e576001016159f0565b61164b9899508092506116299150615a6593610d6a565b519351638791019960e01b8152968796870161379e565b9050615ab8615aa6615aa0615a99615a9385610da3565b88610d6a565b5193610da3565b85610d6a565b51615ab18489610d6a565b5190610db6565b141538615a41565b615adc91923d8091833e615ad48183610bec565b8101906157ad565b90386159ec565b8061078e615af092610b88565b386159c3565b615aff81611825565b615b098187610d6a565b51615b14838b610d6a565b5111615b235750600101615952565b8c8f8d888c61164b938f96615b4f908f8a615b4181615b4893610d6a565b5195610d6a565b5194610d6a565b519351636906ef1760e11b815296879687016117d7565b615b7a91943d8091833e615ad48183610bec565b923861594e565b6001919250615b8f81611825565b615bac87615b9d8387610d6a565b6001600160a01b039091169052565b615bc288615b9d615bbc84610da3565b87610d6a565b615bcc8286610d6a565b51615bd7828c610d6a565b52615bf5615bef615be88488610d6a565b5192610da3565b8b610d6a565b5201908791615909565b615c0882615c53565b60015b828110615c1757505050565b600019810190808211610db157615c49615c35615c4e938686610d43565b35615c41838787610d43565b359083615c83565b615159565b615c0b565b801561211b57604b8111615c645750565b6044906040519063f80a484560e01b82526004820152604b6024820152fd5b919080821115615c9257505050565b606493506040519263f48f718f60e01b8452600484015260248301526044820152fd5b615cbe82615c53565b60015b828110615ccd57505050565b600019810190808211610db157615c49615ceb615cf79386866117ac565b35615c418387876117ac565b615cc156fe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5005e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50162f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50aa264697066735822122021551e17cf731138ae2156496b9e33f430ab60311f2b323732364712508edc7664736f6c63430008120033","sourceMap":"1047:53966:75:-:0;;;;;;;1251:4;1243:13;;1047:53966;;;;;;1243:13;1047:53966;;;;;;;;;","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":1276,"length":20},{"start":1337,"length":20},{"start":1413,"length":20},{"start":1477,"length":20},{"start":1850,"length":20},{"start":1919,"length":20},{"start":4430,"length":20},{"start":4489,"length":20},{"start":4715,"length":20},{"start":4777,"length":20},{"start":4941,"length":20},{"start":5009,"length":20},{"start":7040,"length":20},{"start":7932,"length":20},{"start":10765,"length":20},{"start":10902,"length":20}]}}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b6000803560e01c9081630a6ce3131461009a575080632c0c49ee1461009557806359a8a40a146100905780637777e6d71461008b578063a3eaf4d914610086578063b8e6b50f14610081578063cfdbf2541461007c5763d65852a61461007757600080fd5b610ad2565b610ab6565b610a2c565b610a10565b61047d565b6103ea565b610347565b6080366003190112610119576004356100b28161011c565b6024356100be8161011c565b604435916100cb8361011c565b606435926001600160401b039283851161011557366023860112156101155784600401359384116101155736602460608602870101116101155760246101129501926110fc565b80f35b8580fd5b80fd5b6001600160a01b0381160361012d57565b600080fd5b359061013d8261011c565b565b9181601f8401121561012d578235916001600160401b03831161012d576020808501948460051b01011161012d57565b634e487b7160e01b600052602160045260246000fd5b6006111561018f57565b61016f565b90600682101561018f5752565b919082519283825260005b8481106101cd575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016101ac565b9060209182815260c09283820191835193845183830152828501516040908184015283818701516060978891828701520151926080938486015201519660a0908180860152885180975260e0918286019487848a60051b8901019b01996000975b8a89106102585750505050505050505050505090565b909192939495969798999a9b8a806001928f60df19868303018d5251908151815261028b838301518483019060ff169052565b818c01516001600160a01b0316818d01528187015181880152878201516001600160a01b031688820152818901516001600160a01b0316818a0152818a0151818b01528a8201518b820152610100808301511515908201526102f66101208084015190830190610194565b610140828101516001600160e01b0319169082015261032661016080840151906101a080918501528301906101a1565b91610180809101519101529e0199019901979a999896959493929190610242565b602036600319011261012d576001600160401b0360043581811161012d5761037390369060040161013f565b604051929161038184610b6d565b6040519360808501938411858510176103d6576103d2946103c69460405260008152600060208201526000604082015260006060820152815260606020820152611e38565b604051918291826101e1565b0390f35b610b57565b908161010091031261012d5790565b60e036600319011261012d576001600160401b0360043581811161012d576104169036906004016103db565b604435906104238261011c565b60a43583811161012d5761043b90369060040161013f565b9060c43594851161012d5761045761046b95369060040161013f565b94909360843591606435916024359061246f565b60408051928352602083019190915290f35b606036600319011261012d5761049460043561011c565b61049f60243561011c565b6044356001600160401b03811161012d576104be90369060040161013f565b6104c66110b8565b6104d08183615bff565b73__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d57604051635e157ccf60e11b81526000818061050b60243560048301610c0d565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561079a576109f2575b5061053981610c77565b9061054381610c77565b61054c82610cdd565b926000805b848110610885575073__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d5760006105979160405180938192635ea509b560e01b835260243560048401610dc3565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561079a57610872575b5060005b8381106107b257506004356001600160a01b03163b1561012d57604051630d4498e760e21b815291600091839182916105fd91903360048501610f7c565b0381836004356001600160a01b03165af1801561079a5761079f575b5060005b81811061062657005b60206106328285610d6a565b5101516106be575b8061064760019285610d6a565b515161066760606106588488610d6a565b5101516001600160a01b031690565b90604061067584878a610d43565b0135600080516020615d3d8339815191526106b56020610696878a8d610d43565b013560405191829133978a8060a01b036004351696602435918561108d565b0390a40161061d565b60206106ca8285610d6a565b5101519060406106da8286610d6a565b510151916106ed60606106588488610d6a565b9260806106fa8488610d6a565b5101519160a061070a8589610d6a565b5101519273__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d57600093610751916040519788958695631872482b60e31b875260243560043560048901611029565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af491821561079a57600192610781575b50905061063a565b8061078e61079492610b88565b80610a05565b38610779565b610c34565b8061078e6107ac92610b88565b38610619565b806107c06001928689610d43565b356107df816107d0600435610df2565b90600052602052604060002090565b5461083e575b6107f4816107d0600435610e64565b54610801575b50016105bf565b61082c9061081533916107d0600435610e9d565b9060018060a01b0316600052602052604060002090565b6108368154610da3565b9055386107fa565b604061084b83888b610d43565b013561086b61086333610815856107d0600435610e2b565b918254610db6565b90556107e5565b8061078e61087f92610b88565b386105bb565b61089f61089382878a610d43565b336024356004356144b1565b6108a98288610d6a565b526108b48187610d6a565b506020806108c28389610d6a565b510151610905575b50806108d860019288610d6a565b51516108e48286610d6a565b5260406108f282888b610d43565b01356108fe8287610d6a565b5201610551565b9091610968908261093961092d600080516020615d1d8339815191525460018060a01b031690565b6001600160a01b031690565b81610944878c610d6a565b5101519060405180809681946361fe24a960e11b8352600483019190602083019252565b03915afa91821561079a576001936109be936109b8926000916109c5575b506040610993888d610d6a565b5101526109a0868b610d6a565b51015160406109af878c610d6a565b51015190610db6565b90610db6565b91906108ca565b6109e59150823d84116109eb575b6109dd8183610bec565b810190610d7e565b38610986565b503d6109d3565b8061078e6109ff92610b88565b3861052f565b600091031261012d57565b3461012d57600036600319011261012d57602060405160328152f35b3461012d5761010036600319011261012d57600435610a4a8161011c565b60443590610a578261011c565b606435610a638161011c565b6001600160401b039260c43584811161012d57610a8490369060040161013f565b9160e43595861161012d57610aa0610ab496369060040161013f565b95909460a435926084359260243590611adf565b005b3461012d57600036600319011261012d576020604051604b8152f35b60c036600319011261012d576001600160401b0360043581811161012d57610afe9036906004016103db565b60243590610b0b8261011c565b60843583811161012d57610b2390369060040161013f565b9060a43594851161012d57610b3f610ab495369060040161013f565b949093610b4a6110b8565b606435916044359161297f565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176103d657604052565b6001600160401b0381116103d657604052565b60c081019081106001600160401b038211176103d657604052565b606081019081106001600160401b038211176103d657604052565b602081019081106001600160401b038211176103d657604052565b90601f801991011681019081106001600160401b038211176103d657604052565b600080516020615cfd83398151915281526001600160a01b03909116602082015260400190565b6040513d6000823e3d90fd5b604051906101a082018281106001600160401b038211176103d657604052565b6001600160401b0381116103d65760051b60200190565b90610c8182610c60565b610c8e6040519182610bec565b8281528092610c9f601f1991610c60565b0190602036910137565b60405190610cb682610b9b565b606060a0836000815260006020820152600060408201526000838201528260808201520152565b90610ce782610c60565b610cf46040519182610bec565b8281528092610d05601f1991610c60565b019060005b828110610d1657505050565b602090610d21610ca9565b82828501015201610d0a565b634e487b7160e01b600052603260045260246000fd5b9190811015610d655760051b81013590607e198136030182121561012d570190565b610d2d565b8051821015610d655760209160051b010190565b9081602091031261012d575190565b634e487b7160e01b600052601160045260246000fd5b9060018201809211610db157565b610d8d565b91908201809211610db157565b600080516020615cfd83398151915281526001600160a01b039091166020820152604081019190915260600190565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5106020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5116020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5126020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c6020526040902090565b90815180825260208080930193019160005b828110610f68575050505090565b835185529381019392810192600101610f5a565b6001600160a01b039091168152606060208201819052610fb2939192610fa491840190610f48565b916040818403910152610f48565b90565b90815180825260208080930193019160005b828110610fd5575050505090565b83516001600160a01b031685529381019392810192600101610fc7565b90815180825260208080930193019160005b828110611012575050505090565b835160ff1685529381019392810192600101611004565b95929361107f94610fb2989692600080516020615cfd833981519152895260018060a01b03948580921660208b0152166040890152606088015260808701521660a08501526101008060c0860152840190610fb5565b9160e0818403910152610ff2565b6001600160a01b03918216815260208101929092529091166040820152606081019190915260800190565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146110ea57565b604051636a5f212f60e11b8152600490fd5b92936111066110b8565b6111108186615cb5565b6001600160a01b039233838516146116cc5773__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d57604051635e157ccf60e11b81526000818061115b8560048301610c0d565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561079a576116b9575b5061118985611964565b600080516020615d5d833981519152546111cd906020906111b2906001600160a01b031661092d565b6040518093819263e985e9c560e01b83528860048401611705565b0381888a165afa90811561079a5760009161168a575b501561166e576111f282610c77565b906111fc83610c77565b6112058461175c565b9260008061122a61092d600080516020615d1d8339815191525460018060a01b031690565b878c888d898d8588106114ba57505050505050505073__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d57600061127b9160405180938192635ea509b560e01b83528860048401610dc3565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561079a576114a7575b5090859160005b89878c81841061141357505050506112c1925033878a6158d2565b60005b8381106112d5575050505050505050565b6112df8184610d6a565b51519060206112ee8286610d6a565b51015160406112fd8387610d6a565b51015192606061130d8488610d6a565b51015191608061131d8589610d6a565b5101519473__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d5786956000948b611363938f956040519a8b98899863981e8fc560e01b8a5260048a016118d5565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af491821561079a5786867f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d7886948a8c6113f78f60406113e18a6113c98f829060019f9d8a9e611400575b50610d6a565b51519860206113d98383886117ac565b0135946117ac565b0135908b60405195869516993399169785611940565b0390a4016112c4565b8061078e61140d92610b88565b386113c3565b95839160019596976114458361081561142b88610ed6565b6114368887876117ac565b35600052602052604060002090565b611463600260406114578887876117ac565b01359201918254611818565b8091551561147b575b505050505001908692916112a6565b611436611498946108159361149261149d98610ed6565b936117ac565b611865565b898189898e61146c565b8061078e6114b492610b88565b3861129f565b926114e7886114e188958895839d9b9c986114db8560409d61150f9d6117ac565b9261450a565b92610d6a565b526114f2838d610d6a565b506114fe8383836117ac565b35611509848b610d6a565b526117ac565b013561151b8487610d6a565b5261154b60208b8d8c61152e888a610d6a565b5192604051809681958294627eeac760e11b8452600484016117bc565b0392165afa90811561079a5760009161164f575b5061156a8487610d6a565b51811061161457506115a4602080611582868b610d6a565b510151604051809381926361fe24a960e11b8352600483019190602083019252565b0381865afa91821561079a576001926115ed926000916115f5575b5060406115cc878c610d6a565b5101526109b860206115de878c610d6a565b51015160406109af888d610d6a565b92019061122a565b61160e915060203d6020116109eb576109dd8183610bec565b386115bf565b8961164b8d928861163088611629818c610d6a565b5192610d6a565b5190604051958695636906ef1760e11b8752600487016117d7565b0390fd5b611668915060203d6020116109eb576109dd8183610bec565b3861155f565b60405163d65b0d6960e01b81528061164b878660048401611705565b6116ac915060203d6020116116b2575b6116a48183610bec565b8101906116ed565b386111e3565b503d61169a565b8061078e6116c692610b88565b3861117f565b60405163aac1ae8b60e01b81526001600160a01b0384166004820152602490fd5b9081602091031261012d5751801515810361012d5790565b6001600160a01b0391821681529116602082015260400190565b6040519060a082018281106001600160401b038211176103d657604052606060808360008152600060208201526000604082015282808201520152565b9061176682610c60565b6117736040519182610bec565b8281528092611784601f1991610c60565b019060005b82811061179557505050565b6020906117a061171f565b82828501015201611789565b9190811015610d65576060020190565b6001600160a01b039091168152602081019190915260400190565b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b606319810191908211610db157565b91908203918211610db157565b908160011b9180830460021490151715610db157565b81810292918115918404141715610db157565b818110611859575050565b6000815560010161184e565b6005600091828155826001820155826002820155826003820155600481018054848255806118bb575b50500190815490808355816118a257505050565b60208161013d94601f935220910160051c81019061184e565b6118ce918552602085209081019061184e565b388061188e565b96936119319591610fb299979394600080516020615cfd8339815191528a5260018060a01b03958680931660208c015260408b0152166060890152608088015260a08701521660c08501526101208060e0860152840190610fb5565b91610100818403910152610ff2565b909493926060926080830196835260018060a01b0316602083015260408201520152565b803b158015611997575b6119755750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b506119a1816119a7565b1561196e565b6040519060208083018160006301ffc9a760e01b95868452866024820152602481526119d281610bb6565b51617530938685fa933d6000519086611a77575b5085611a6d575b5084611a0a575b50505081611a00575090565b610fb29150611a82565b83945090600091839460405185810192835263ffffffff60e01b602482015260248152611a3681610bb6565b5192fa60005190913d83611a62575b505081611a58575b5015903880806119f4565b9050151538611a4d565b101591503880611a45565b15159450386119ed565b8411159550386119e6565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152611ab281610bb6565b5191617530fa6000513d82611ad3575b5081611acc575090565b9050151590565b60201115915038611ac2565b9491959296909397611aef6110b8565b60409384519a611afe8c610b9b565b6001600160a01b039788168c5260208c01968752978716858c0181815299881660608d0190815260808d019b8c5260a08d01958652999890338114611e1657508b51611b52906001600160a01b0316611964565b895173__$11854c5905aa23948096e0e4d7059bb9de$__93906001600160a01b031694843b1561012d578751635e157ccf60e11b8152600096879082908190611b9e9060048301610c0d565b0381895af4801561079a57611e03575b50843b156101155787516376fb859760e01b8152868180611bd58787878b60048601612ac4565b0381895af4801561079a57611df0575b50865115611ddf57918d939161092d9897969593611c5d6020611c1f61092d611c0d8a615293565b9a519a9e909a6001600160a01b031690565b600080516020615d5d83398151915254611c41906001600160a01b031661092d565b908c51808095819463e985e9c560e01b83523360048401611705565b03915afa90811561079a578891611dc1575b5015611d9957908f91611cc08f94938f611cb3908f8d90611ca7611c99865160018060a01b031690565b93516001600160a01b031690565b90519151923390615561565b516001600160a01b031690565b8c5194516001600160a01b03169590873b15611d955790611cfc949392918c519d8e9a8b998a9963981e8fc560e01b8b52339460048c01612910565b03915af4801561079a57611d68611d58611d4a7fd6c105ec24ddd771e44ffc25e8a8603b6b78ba980a72645a26740b3d8437388599611d7d978a95611d82575b50516001600160a01b031690565b9b516001600160a01b031690565b955198516001600160a01b031690565b98519151925195869516991697339785611940565b0390a4565b8061078e611d8f92610b88565b38611d3c565b8980fd5b8f51895163d65b0d6960e01b815290819061164b906001600160a01b03163360048401611705565b611dd9915060203d81116116b2576116a48183610bec565b38611c6f565b875163c6b949a960e01b8152600490fd5b8061078e611dfd92610b88565b38611be5565b8061078e611e1092610b88565b38611bae565b8651630bfa508960e41b81526001600160a01b03919091166004820152602490fd5b9190611e426110b8565b611e4b826120eb565b611e548261206f565b91602092838501908152349260005b838110611f4d57505050508060608451015280611ed0575b50815180519181015160408083015160609384015182519586526020860193909352908401529082015233907ff769e48349f9b4903ef362e95411b2c4778d3bdaf9dc87b0d25f29f2813ea16390608090a290565b73__$11854c5905aa23948096e0e4d7059bb9de$__803b1561012d57604051637baf92a360e01b8152600080516020615cfd833981519152600482015260006024820181905233604483015260648201939093529190829060849082905af4801561079a5715611e7b578061078e611f4792610b88565b38611e7b565b611f628582611f5d8188876120bf565b612195565b91969015611fe4575090611fc1600192968951611f7f8151610da3565b9052838060a01b03611f9d6060611f97868b8a6120bf565b016120e1565b1615611fc7575b611fbb83875183611fb58383610d6a565b52610d6a565b50613d68565b01611e63565b610180810151611fdd60408c5101918251610db6565b9052611fa4565b956001929150611fc190888a5101611fdd8151610da3565b604051906101a082018281106001600160401b038211176103d657604052816101806000918281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201528261014082015260606101608201520152565b9061207982610c60565b6120866040519182610bec565b8281528092612097601f1991610c60565b019060005b8281106120a857505050565b6020906120b3611ffc565b8282850101520161209c565b9190811015610d655760051b8101359060fe198136030182121561012d570190565b35610fb28161011c565b801561211b57603281116120fc5750565b6044906040519063f80a484560e01b8252600482015260326024820152fd5b60405163c2e5347d60e01b8152600490fd5b6040519061213a82610bd1565b60008252565b3d1561217a573d906001600160401b0382116103d6576040519161216e601f8201601f191660200184610bec565b82523d6000602084013e565b606090565b919082604091031261012d576020825192015190565b90816121a9916121a3611ffc565b50613bcf565b90826121b482612c8a565b8051909392906001600160a01b031680612279575b501561226a57507f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50b546000938493909261220c926001600160a01b03169361239d565b90602082519201905af461221e612140565b9015612250576122399192506020808251830101910161217f565b600161010084015291906101808201529160019190565b61225c61226391613e41565b9083613cd2565b9160009190565b91509350612263915082613ca9565b6001600160a01b03166080870152386121c9565b60ff81160361012d57565b9035601e198236030181121561012d5701602081359101916001600160401b03821161012d578160051b3603831361012d57565b81835290916001600160fb1b03831161012d5760209260051b809284830137010190565b9061238a610fb29260ff81356123058161228d565b16835260208101356123168161011c565b6001600160a01b0316602084015261234361233360408301610132565b6001600160a01b03166040850152565b61236261235260608301610132565b6001600160a01b03166060850152565b6080810135608084015260a081013560a084015260c081013560c084015260e0810190612298565b9091610100908160e082015201916122cc565b825160208085015160408087015160608801516080909801519151632cd4520560e11b8186015260e060248201529796889692956001600160a01b03949193908516906123ef906101048a01906122f0565b9360448901526064880152608487015260a486015260231992838683030160c48701528080885193848152019701926000905b8382106124525750505050508284030160e4830152610fb29261244491610ff2565b03601f198101835282610bec565b845181168952978201978997509382019360019190910190612422565b9061248898979695949392916124836110b8565b61250e565b9091565b35610fb28161228d565b906040610fb2926001815281602082015201906101a1565b906040610fb2926002815281602082015201906101a1565b906040610fb2926003815281602082015201906101a1565b906040610fb2926004815281602082015201906101a1565b906040610fb2926005815281602082015201906101a1565b989796959493929190600060ff8b356125268161228d565b16156125995750600160ff61253a8c61248c565b161461258f5761164b6124446125766125528d61248c565b60405163bb75025d60e01b602082015260ff90911660248201529182906044820190565b604051631ee0c01d60e31b815291829160048301612496565b6124889899612aeb565b91826125c69895939b96929794999b5087936125b5818c610db6565b9a6125cb8a8d60608c019d8e6120e1565b6132ef565b80516128045750602089016125e76125e2826120e1565b610df2565b9a61260160808c0135809d90600052602052604060002090565b5415158b8d61261b816107d0612616886120e1565b610e64565b541515926127d4575b5050612798575b61263a61092d61092d846120e1565b946126448d614476565b60c08d01359661265388614476565b91813b1561279457604051630d4498e760e21b81529392849291839185918391612681913360048501610f7c565b03925af19081612781575b506126b55761164b61269c612140565b604051631ee0c01d60e31b8152918291600483016124c6565b6001600160a01b0397886126c88f6120e1565b1661274557506126d98e8c92611818565b9f600080516020615d3d8339815191529a60a09a612728996127149761270e975b8b8161272f575b50505050505050506120e1565b996120e1565b90604051958695339b16980135928561108d565b0390a49190565b61273897613aa8565b893880808080808b612701565b9f8b9150600080516020615d3d8339815191529a8f9a8f996127149761270e9761277c60a09f6127776127289f6120e1565b613537565b6126fa565b8061078e61278e92610b88565b3861268c565b8380fd5b6127c36127b08d6107d06127ab866120e1565b610e9d565b3360009081526020919091526040902090565b6127cd8154610da3565b905561262b565b60c06127f16127b06127fb936107d06127ec8a6120e1565b610e2b565b9201358254610db6565b90558b8d612624565b604051631ee0c01d60e31b815290819061164b90600483016124ae565b91908082526020809201929160005b82811061283e575050505090565b90919293828060019287356128528161011c565b848060a01b03168152019501910192919092612830565b91908082526020809201929160005b828110612886575050505090565b90919293828060019260ff883561289c8161228d565b16815201950193929101612878565b979593610fb29997936129029692600080516020615cfd8339815191528b5260018060a01b03948580921660208d01521660408b015260608a015260808901521660a08701526101008060c0880152860191612821565b9260e0818503910152612869565b9896949093610fb29a98946020946129709894600080516020615cfd8339815191528d528c60018060a01b03978880951691015260408d01521660608b015260808a015260a08901521660c08701526101208060e0880152860191612821565b92610100818503910152612869565b97969592919094939560ff6129938a61248c565b1615612a6057600160ff6129a68b61248c565b16146129d95761164b6129b88a61248c565b60405163bb75025d60e01b815260ff90911660048201529081906024820190565b979192939495969773__$11854c5905aa23948096e0e4d7059bb9de$__94612a03602085016120e1565b96612a10606086016120e1565b99873b1561012d57600099608097612a42966040519d8e9c8d9b8c9b63981e8fc560e01b8d5201359060048c01612910565b03915af4801561079a57612a535750565b8061078e61013d92610b88565b9791969794909493929373__$11854c5905aa23948096e0e4d7059bb9de$__94612a986060612a91602087016120e1565b95016120e1565b94863b1561012d57600098612a42946040519b8c9a8b998a99631872482b60e31b8b5260048b016128ab565b9290612add90610fb29593604086526040860191612821565b926020818503910152612869565b949895909792969193988899612b01818a610db6565b99612b13818c6125c660608c016120e1565b9b8c51612c6f579a9b508b9a6001600160a01b03612b3360608b016120e1565b16612c505750612bc0969798999a612b4a91611818565b995b6002612b7d896108158c6080612b6c612b67602084016120e1565b610ed6565b910135600052602052604060002090565b01612b8d60c08b01358254611818565b80915515612c2c575b612bb9612ba560208b016120e1565b60c08b01359060808c0135908b33916137d0565b8789613aa8565b612bcc602083016120e1565b917f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d788694611d7d612bfd606084016120e1565b6040516001600160a01b03968716963396169490928392909160c08101359160a0820135916080013585611940565b612c4b611498896108158c6107d0612b676020608084013593016120e1565b612b96565b9a88999a9150612c6a906127776060612bc09a9b016120e1565b612b4c565b604051631ee0c01d60e31b81528061164b8f600483016124ae565b90612c9361171f565b908235612c9f8161228d565b60ff8116938415612d0457612cb38261228d565b60018514612cef5750612cc59061228d565b6040519263bb75025d60e01b6020850152602484015260248352612ce883610bb6565b6000929190565b91935050612cfd9150612f0b565b9192909190565b91935050612cfd9150612d47565b903590601e198136030182121561012d57018035906001600160401b03821161012d57602001918160051b3603831361012d57565b612d4f61171f565b9060608101612d6c612d68612d63836120e1565b6143d0565b1590565b612ec157612db160209283810192612d83846120e1565b90612dbb612d90826120e1565b9260808501359360a086013595868660c0830135998360e08c950190612d12565b9590943391614d14565b60608101516001600160a01b03168a5296909115612e955750505050505081810151808385015280612e0d575b5060a091506080810151606084015201516080820152600191612e0961212d565b9190565b600080516020615d1d83398151915254612e55918491612e35906001600160a01b031661092d565b60405180809581946361fe24a960e11b8352600483019190602083019252565b03915afa90811561079a5760a093600092612e78575b5050604084015238612de8565b612e8e9250803d106109eb576109dd8183610bec565b3880612e6b565b612eb99750612ea9919293949596506120e1565b612eb333936120e1565b91613f10565b916000929190565b612efd939150612ed3612ce8916120e1565b60405163cd5f748960e01b60208201526001600160a01b0390911660248201529384906044820190565b03601f198101855284610bec565b90612f1461171f565b90604080840190612f34612f27836120e1565b6001600160a01b03168552565b612f4061092d836120e1565b33146132b55760209081860195612f61612d68612f5c896120e1565b61445e565b61327757612f6d61171f565b50612f77876120e1565b90612f81856120e1565b9160c0612faf6060840192612f95846120e1565b946080810135809660a08301359586930135988994615168565b9390911561324f57505050612fc961092d61092d8b6120e1565b61301386612fd6896120e1565b600080516020615d5d83398151915254612ff8906001600160a01b031661092d565b885163e985e9c560e01b815293849283929060048401611705565b0381855afa60009181613230575b5061305e575050505050612efd9061304461303e612ce8956120e1565b976120e1565b905196879363d65b0d6960e01b9085015260248401611705565b9692949395961561321757868561309292613078866120e1565b8751809581948293627eeac760e11b8452600484016117bc565b03915afa600091816131f8575b5061310057505091612ce89493916130bc61270e612efd956120e1565b9051988995636906ef1760e11b90870152602486019093600093608093969560a084019760018060a01b038092168552166020840152604083015260608201520152565b92949182849a959297989a106131c05750505050828401805186860152600080516020615d1d8339815191525461316a939250859190613148906001600160a01b031661092d565b905190835180809681946361fe24a960e11b8352600483019190602083019252565b03915afa91821561079a576080946000936131a1575b50508401526060810151606084015201516080820152600191612e0961212d565b6131b8929350803d106109eb576109dd8183610bec565b903880613180565b612ce89650946131de6131d8612efd969b99976120e1565b9a6120e1565b9051998a96636906ef1760e11b90880152602487016117d7565b613210919250883d8a116109eb576109dd8183610bec565b903861309f565b5050612ce8949350612efd925061303e613044916120e1565b613248919250883d8a116116b2576116a48183610bec565b9038613021565b93955093969150945061327161326b61326b612eb9999b6120e1565b926120e1565b9261425b565b5094612ce8925061328a612efd916120e1565b9551630f20e39960e21b928101929092526001600160a01b0390951660248201529384906044820190565b612efd94506132c6612ce8926120e1565b905163aac1ae8b60e01b60208201526001600160a01b0390911660248201529384906044820190565b91811561352c576001600160a01b0383169081156134ea5750604080516370a0823160e01b8152336004820152602092908381602481855afa600091816134cb575b50613371575050516364db3d5960e01b918101919091526001600160a01b039092166024830152604482015260006064820152610fb28160848101612444565b84811061348c57507f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d508546133cf9184916133b3906001600160a01b031661092d565b9084518080958194636eb1769f60e11b83523360048401611705565b03915afa6000918161346d575b5061341b5750516337a950bb60e01b918101919091526001600160a01b039092166024830152604482015260006064820152610fb28160848101612444565b83811061342f575050505050610fb261212d565b90516337a950bb60e01b928101929092526001600160a01b03909316602482015260448101919091526064810191909152610fb28160848101612444565b613485919250843d86116109eb576109dd8183610bec565b90386133dc565b91516364db3d5960e01b93810193909352506001600160a01b03909316602482015260448101919091526064810191909152610fb28160848101612444565b6134e3919250853d87116109eb576109dd8183610bec565b9038613331565b92505080821015613522576040516310da2c1360e21b602082015260248101919091526044810191909152610fb28160648101612444565b5050610fb261212d565b505050610fb261212d565b9091821561375b57604080516370a0823160e01b8082523060048084019190915292959294926020929091906001600160a01b0385169060008582602481865afa90918161373c575b506135a857888861164b613592612140565b9251631ee0c01d60e31b815292839283016124ae565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d508549092906135df906001600160a01b031661092d565b803b1561012d578951630aed65f560e11b81526001600160a01b038816818b0190815233602082015230604082015260608101879052909160009183919082908490829060800103925af19081613729575b5061364357888861164b613592612140565b8851908152308882019081529091600091869184918290819060200103915afa90918161370a575b5061367d57878761164b613592612140565b949693959460009190818110613702576136979250611818565b905b8082036136a857505050505050565b8351636ff596f360e01b938101939093526001600160a01b03959095166024830152604482019490945260648082019490945292835261164b906136ed608485610bec565b51631ee0c01d60e31b815292839283016124ae565b505090613699565b613722919250853d87116109eb576109dd8183610bec565b903861366b565b8061078e61373692610b88565b38613631565b613754919250863d88116109eb576109dd8183610bec565b9038613580565b915050565b9391909260e0959360018060a01b03928380921687521660208601521660408401526060830152608082015260c060a0820152600060c08201520190565b6001600160a01b0391821681526020810192909252918216604082015291166060820152608081019190915260a00190565b60408051627eeac760e11b8082529196929560209593949290916001600160a01b03881691906000888280613809888a600484016117bc565b0381875afa909181613a89575b5061383f5761164b8a613827612140565b9051631ee0c01d60e31b8152918291600483016124de565b90868210613a5d578951818152600089828061385f898c600484016117bc565b0381885afa909181613a3e575b5061387d5761164b8b613827612140565b600080516020615d5d833981519152549093906138a2906001600160a01b031661092d565b803b1561012d576000888792898f8f6138d28f8793519889978896879563eb46c45b60e01b875260048701613760565b03925af19081613a2b575b506138ee5761164b8b613827612140565b8a5182815260008a82806139068a8c600484016117bc565b0381865afa909181613a0c575b506139245761164b8c613827612140565b8b5192835291906000908a90839081806139428b8e600484016117bc565b03915afa9091816139ed575b5061395f5761164b8b613827612140565b9061396f8880939c9b9c94611818565b14928315936139d8575b5050506139895750505050505050565b61164b9750916139c19493916139b3938751988996638791019960e01b908801526024870161379e565b03601f198101845283610bec565b51631ee0c01d60e31b8152918291600483016124de565b6139e3929350610db6565b1415388581613979565b613a059192508a3d8c116109eb576109dd8183610bec565b903861394e565b613a249192508b3d8d116109eb576109dd8183610bec565b9038613913565b8061078e613a3892610b88565b386138dd565b613a569192508a3d8c116109eb576109dd8183610bec565b903861386c565b508851636906ef1760e11b8189015261164b918a906139c19083906139b3908b898f8c602487016117d7565b613aa1919250893d8b116109eb576109dd8183610bec565b9038613816565b9497969795919593929360018060a01b0390817f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50b5416976040519660209184613b09848b019b636b2c295360e11b8d5260c060248d015260e48c01906122f0565b961660448a0152606489015260848801528060231994858982030160a48a01528381520195926000905b838210613b91575050505050926124448360009899613b5f948a999897858098030160c4860152612869565b51915af4613b6b612140565b9015613b745750565b604051631ee0c01d60e31b815290819061164b90600483016124f6565b90919293968380600192848b35613ba78161011c565b1681520198019493920190613b33565b604051613bc381610bd1565b60008152906000368137565b90613bd8611ffc565b5060c0613be48261248c565b91613c70613bf4602083016120e1565b613c60613c03604085016120e1565b613c44613c12606087016120e1565b93613c34613c1e613bb7565b99613c27610c40565b9b8c5260ff1660208c0152565b6001600160a01b031660408a0152565b60808581013560608a01526001600160a01b0390911690880152565b6001600160a01b031660a0860152565b60a081013582850152013560e0830152600061010083015260006101208301526000610140830152610160820152600061018082015290565b6001610120820152610160906001600160e01b0319613cc78461449b565b166101408201520152565b600682101561018f576101609161012082015263ffffffff60e01b613cc78461449b565b9081526001600160a01b039182166020820152911660408201526060810191909152608081019190915290151560a082015294939261012092613d6392613d419060c0890190610194565b6001600160e01b03191660e087015261014061010087018190528601906101a1565b930152565b8051906020810151613d7a9060ff1690565b60408201519092906001600160a01b031660608301516080840151909391906001600160a01b031660a08301519094906001600160a01b03169260c08101519060e0810151610100820151613dce90151590565b61012083015190613dde82610185565b6101408401516001600160e01b0319169261016085015194610180015195604051998a99600160a01b60019003169d60ff169c613e1b998b613cf6565b037f844491b54cb1a58801f9eb51fecfaf5076847131d8f6ec580232d9766e3fae4f91a4565b90613e4b82613e5d565b91613e5857505060059190565b925090565b631ee0c01d60e31b6001600160e01b0319613e778361449b565b1614801590613f05575b613ef6576024810151916044820151606483019283519160058611908115613eea575b50613ed757613eb39051611809565b10613ec857613ec183610185565b6001929190565b60009250829150610fb261212d565b5050915050600090600090610fb261212d565b60409150141538613ea4565b50600090600090610fb261212d565b506064815110613e81565b949293959195613f23816107d084610f0f565b956001600160e01b03191694634ed1072f60e11b808714614236575063915b8f1d60e01b8681146142015750600162bed83560e01b03198681146141e3575063e2cf60cb60e01b8681146141af575063c6b949a960e01b8681146141905750636d03a2e560e01b86811461411a575063ae3586c560e01b918683146140ab5750635bdd08f560e01b9250505083811461407a575063456afd0b60e01b90508281146140515750631d6bbb8d60e11b8281146140225750632e834cbf60e11b9182149050613ff557505050610fb261212d565b61244461400e6001610fb294015460018060a01b031690565b604051948593602085015260248401611705565b60029390930154604051602081019490945260248401919091526044830152509050610fb28160648101612444565b935050506003610fb2910154916124446040519384926020840152602483019190602083019252565b92509350506124446004610fb293015460405194859360208501526024840160209093929193604081019481520152565b92975092509350610fb2945061244492506140c9816107d088610e64565b54916140dc81610815846107d08b610e9d565b5491604051978896602088015260248701919594939060809360a084019760018060a01b038093168552602085015216604083015260608201520152565b95509290919650610fb295506124449350614138826107d089610df2565b549261414b81610815856107d08c610e2b565b5492604051988997602089015260248801929060a09491979695929760c0850198600180881b0380931686526020860152166040840152606083015260808201520152565b97505050505050505060405190602082015260048152610fb281610b6d565b60405160208101919091526001600160a01b0390911660248201529650610fb2955086945050604484019250612444915050565b955050509450505061244461400e610fb2935460018060a01b031690565b60405160208101919091526001600160a01b03909316602484015250909550610fb29450859350506044830191506124449050565b95505091509450610fb2935061244491506040519485936020850152602484016117bc565b94929161426f81610815876107d086610ed6565b956001600160e01b0319169463c6b949a960e01b8087146141905750630bac95f560e21b8681146143905750635493bdef60e11b918683146143675750632e834cbf60e11b925050508381146143495750631d6bbb8d60e11b905082811461431a57506364b7fccd60e11b91821490506142ee57505050610fb261212d565b6124446002610fb293015460405194859360208501526024840160209093929193604081019481520152565b60019390930154604051602081019490945260248401919091526044830152509050610fb28160648101612444565b9354909450610fb293925061244491506001600160a01b031661400e565b9297509250935061244492506003610fb29501549160405196879560208701526024860161108d565b60405160208101919091526001600160a01b0393841660248201526044810191909152911660648201529450610fb2935084925050608482019050612444565b6001600160a01b03908116908115614457576020907f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d505541691602460405180948193632d5ad3d560e01b835260048301525afa60009181614437575b50610fb25750600090565b61445091925060203d81116116b2576116a48183610bec565b903861442c565b5050600190565b803b1515908161446c575090565b610fb291506119a7565b906040519161448483610b6d565b60018352602083016020368237835115610d655752565b60048151106144ab576020015190565b50600090565b92916144bb610ca9565b508235906020840135926144e76144db6040870135966060810190612d12565b9087878787878d614d14565b9791156144f8575050505050505090565b6145029750613f10565b602081519101fd5b92909161451561171f565b50813590604060208401359301359361453285858585858b615168565b979115614543575050505050505090565b614502975061425b565b9060405191828154918282526020928383019160005283600020936000905b8282106145825750505061013d92500383610bec565b85546001600160a01b03168452600195860195889550938101939091019061456c565b906040805180938054926145cc6145c0858560209181520190565b92600052602060002090565b9360005b81601f8201106149e85761013d9554928282106149d2575b8282106149b8575b82821061499e575b828210614984575b82821061496a575b828210614950575b828210614936575b82821061491c575b828210614905575b508181106148ed575b8181106148d5575b8181106148bd575b8181106148a5575b81811061488d575b818110614875575b81811061485d575b818110614845575b81811061482d575b818110614815575b8181106147fd575b8181106147e5575b8181106147cd575b8181106147b5575b81811061479d575b818110614785575b81811061476d575b818110614755575b81811061473d575b818110614725575b81811061470d575b8181106146f5575b106146e7575b500383610bec565b60f81c8152602001386146df565b60f083901c60ff1684529260019060200193016146d9565b60e883901c60ff1684529260019060200193016146d1565b60e083901c60ff1684529260019060200193016146c9565b60d883901c60ff1684529260019060200193016146c1565b60d083901c60ff1684529260019060200193016146b9565b60c883901c60ff1684529260019060200193016146b1565b60c083901c60ff1684529260019060200193016146a9565b60b883901c60ff1684529260019060200193016146a1565b60b083901c60ff168452926001906020019301614699565b60a883901c60ff168452926001906020019301614691565b60a083901c60ff168452926001906020019301614689565b609883901c60ff168452926001906020019301614681565b609083901c60ff168452926001906020019301614679565b608883901c60ff168452926001906020019301614671565b608083901c60ff168452926001906020019301614669565b607883901c60ff168452926001906020019301614661565b607083901c60ff168452926001906020019301614659565b606883901c60ff168452926001906020019301614651565b606083901c60ff168452926001906020019301614649565b605883901c60ff168452926001906020019301614641565b605083901c60ff168452926001906020019301614639565b604883901c60ff168452926001906020019301614631565b83901c60ff16845292600190602001930138614628565b603884901c60ff1685529093600190602001940190614620565b603084901c60ff1685529093600190602001940190614618565b602884901c60ff1685529093600190602001940190614610565b602084811c60ff1686529194909160019101940190614608565b601884901c60ff1685529093600190602001940190614600565b601084901c60ff16855290936001906020019401906145f8565b600884901c60ff16855290936001906020019401906145f0565b60ff8416855290936001906020019401906145e8565b919350916001610400602092614c868854614c7b60ff614a0c8582851660ff169052565b614c54614ab9614c048d614bb489614b648e614a318184018a8d60081c1660ff169052565b614a448584018a8d60101c1660ff169052565b888b610200606095614a5f878201858560181c1660ff169052565b614a746080958585888501921c1660ff169052565b614b1a60a097614a8d898401878760281c1660ff169052565b614aca60c09b614aa68d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b614adf6101208401878760481c1660ff169052565b614af46101408401878760501c1660ff169052565b614b096101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b614b2f6101a08201858560681c1660ff169052565b614b446101c08201858560701c1660ff169052565b614b596101e08201858560781c1660ff169052565b01921c1660ff169052565b614b796102208c01888b60881c1660ff169052565b614b8e6102408c01888b60901c1660ff169052565b614ba36102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b614bc96102a08a01868960a81c1660ff169052565b614bde6102c08a01868960b01c1660ff169052565b614bf36102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b614c196103208801848760c81c1660ff169052565b614c2e6103408801848760d01c1660ff169052565b614c436103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b614c696103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b01950191019186939194926145d0565b9060405160e081018181106001600160401b038211176103d65760405282546001600160a01b039081168252600184015416602082015291829060c090614d0f90600690600281015460408601526003810154606086015260048101546080860152614d046005820161454d565b60a0860152016145a5565b910152565b9092969493959196614d24610ca9565b97614d3a614d35836107d086610f0f565b614c96565b828a5280516001600160a01b031660608b01529687516001600160a01b03959086168015614f7957614d6c9086614f94565b9015614f5e5715614f4157614d8791612d6891848688615019565b614f29578515614f1157614d9e826107d085610df2565b54614db082610815856107d088610e2b565b5490878115159283614efd575b505050614ee557610815826107d0614ddb614de2956107d088610e64565b5495610e9d565b54908015159182614ed2575b5050614ebd5760808401518015159081614eb3575b50614e9e5760608401514210614e895760408401518503614e7457602084015191811691166001600160a01b031603614e615760c092614e429161183b565b602084015260a08101516080840152015160a082015260019160009190565b50600093632e834cbf60e11b9392509050565b50600095631d6bbb8d60e11b95945092505050565b5060009563456afd0b60e01b95945092505050565b50600095635bdd08f560e01b95945092505050565b9050831138614e03565b5060009563ae3586c560e01b95945092505050565b614edd919250610da3565b113880614dee565b50600098636d03a2e560e01b98975095505050505050565b614f08929350610db6565b11388781614dbd565b5060009863c6b949a960e01b98975095505050505050565b5060009863e2cf60cb60e01b98975095505050505050565b5060009a600162bed83560e01b03199a9950975050505050505050565b5060009b63915b8f1d60e01b9b9a5098505050505050505050565b5060009b634ed1072f60e11b9b9a5098505050505050505050565b604051638da5cb5b60e01b602082019081526004825292939290614fb781610b6d565b6000928392839251915afa90614fcb612140565b9115801561500e575b61500757602082805181010312610119575060200151614ff38161011c565b6001926001600160a01b0391821691161490565b9250508190565b506020825110614fd4565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d60209081526040808320938352928152828220835196949061506988610b6d565b6001815491828a5201549081848a01521590811561514e575b506151425783929195949351868101916bffffffffffffffffffffffff199060601b168252601481526150b481610b6d565b5190209551959481945b8486106150cf575050505050501490565b909192939495615112908760051b8301358082111560001461511c57865185810192835260208301919091526151088160408401612444565b5190205b96615159565b94939291906150be565b865185810191825260208201929092529061513a8160408401612444565b51902061510c565b50505050505050600190565b905042101538615082565b6000198114610db15760010190565b9493929061517461171f565b95828752851561527d5761518e926107d061081592610ed6565b906002820154908115615268576003830154801515908161525d575b506152485782546001600160a01b03918216911603615234578260018301540361522057831161520d576151e36005926151ff9461183b565b60208501526151f46004820161454d565b6060850152016145a5565b608082015260019160009190565b506000936364b7fccd60e11b9392509050565b50600094631d6bbb8d60e11b949350915050565b50600094632e834cbf60e11b949350915050565b50600095635493bdef60e11b95945092505050565b9050421015386151aa565b50600095630bac95f560e21b95945092505050565b5060009663c6b949a960e01b9695509350505050565b80516001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d51360205260409020909190916152e760208201938451600052602052604060002090565b9060409361531885830193615302855160018060a01b031690565b60018060a01b0316600052602052604060002090565b6060830180519091615332916001600160a01b0316615302565b93600285015492831561547157600486015480151580615467575b615423575050845461537291506001600160a01b03165b91516001600160a01b031690565b6001600160a01b0381811690831603615408575050600183015491608081019283518082036153e757505060a001948551908282116153c757505050906153bf610fb2925185519061183b565b9351906154d9565b5163587ced0f60e01b815260048101919091526024810191909152604490fd5b8751631d6bbb8d60e11b815260048101919091526024810191909152604490fd5b61164b8751928392632e834cbf60e11b845260048401611705565b61164b90898561544f61536461543f8b5160018060a01b031690565b965197516001600160a01b031690565b915163581fa6b560e01b81529586956004870161379e565b504281111561534d565b61164b888461549c61536461548c8a5160018060a01b031690565b955196516001600160a01b031690565b915163b9c59b5760e01b81526001600160a01b03948516600482015260248101959095528316604485015291909116606483015281906084820190565b9190916002810190815490818514615534576003019182546154fb868261183b565b831561551e57839004958303928311610db15761551a92869255611818565b9055565b634e487b7160e01b600052601260045260246000fd5b6000809394955060049250600382018181549660018060a01b031985541685558160018601555555015590565b60408051627eeac760e11b8082529296600496909594939092916001600160a01b03891691602091828180615599898b8f84016117bc565b0381875afa90811561079a57600091615790575b5088811061577157908291869493898c6155d18951988993849388855284016117bc565b0381875afa94851561079a57600095615752575b50600080516020615d5d83398151915254615608906001600160a01b031661092d565b803b1561012d576000898b928f8f8f9061563886928f8f51998a988997889663eb46c45b60e01b88528701613760565b03925af1801561079a5761573f575b508683898d6156608a51948593849389855284016117bc565b0381885afa92831561079a5788958d8c928794600097615720575b506156918b51998a9586948594855284016117bc565b03915afa93841561079a578a936000956156fb575b5050826156b291611818565b14928315936156e6575b5050506156cc5750505050505050565b51638791019960e01b81529650869561164b95870161379e565b6156f1929350610db6565b14153886816156bc565b6156b292955084918161571992903d106109eb576109dd8183610bec565b94916156a6565b615738919750853d87116109eb576109dd8183610bec565b953861567b565b8061078e61574c92610b88565b38615647565b61576a919550833d85116109eb576109dd8183610bec565b93386155e5565b8961164b88928b898f8a51968796636906ef1760e11b885287016117d7565b6157a79150833d85116109eb576109dd8183610bec565b386155ad565b602090818184031261012d578051906001600160401b03821161012d57019180601f8401121561012d5782516157e281610c60565b936157f06040519586610bec565b818552838086019260051b82010192831161012d578301905b828210615817575050505090565b81518152908301908301615809565b9092916040820191604081528451809352606081019260208096019060005b81811061585f57505050610fb29394818403910152610f48565b82516001600160a01b031686529487019491870191600101615845565b93602095926158c1946158b39360018060a01b0392838092168952168888015216604086015260c0606086015260c0850190610f48565b908382036080850152610f48565b9060a0818303910152600081520190565b835190949093926001600160a01b0386169290916158f76158f287611825565b610c77565b946159046158f288611825565b809660005b898110615b8157506040968751916313849cfd60e21b918284528084808460049e8f83019161593792615826565b03815a93600094fa93841561079a57600094615b66575b5060005b8c8110615af65750600080516020615d5d8339815191525461597c906001600160a01b031661092d565b92833b1561012d576000898f958c968f8f906159ae8e8e8894519c8d9889978896637ee7f69b60e01b8852870161587c565b03925af190811561079a576000948d92615ae3575b506159d98c519788958694859485528401615826565b03915afa91821561079a57600092615ac0575b5060005b898110615a04575050505050505050505050565b615a0d81611825565b615a178185610d6a565b51615a37615a258386610d6a565b51615a30858a610d6a565b5190611818565b1490811591615a7c575b50615a4e576001016159f0565b61164b9899508092506116299150615a6593610d6a565b519351638791019960e01b8152968796870161379e565b9050615ab8615aa6615aa0615a99615a9385610da3565b88610d6a565b5193610da3565b85610d6a565b51615ab18489610d6a565b5190610db6565b141538615a41565b615adc91923d8091833e615ad48183610bec565b8101906157ad565b90386159ec565b8061078e615af092610b88565b386159c3565b615aff81611825565b615b098187610d6a565b51615b14838b610d6a565b5111615b235750600101615952565b8c8f8d888c61164b938f96615b4f908f8a615b4181615b4893610d6a565b5195610d6a565b5194610d6a565b519351636906ef1760e11b815296879687016117d7565b615b7a91943d8091833e615ad48183610bec565b923861594e565b6001919250615b8f81611825565b615bac87615b9d8387610d6a565b6001600160a01b039091169052565b615bc288615b9d615bbc84610da3565b87610d6a565b615bcc8286610d6a565b51615bd7828c610d6a565b52615bf5615bef615be88488610d6a565b5192610da3565b8b610d6a565b5201908791615909565b615c0882615c53565b60015b828110615c1757505050565b600019810190808211610db157615c49615c35615c4e938686610d43565b35615c41838787610d43565b359083615c83565b615159565b615c0b565b801561211b57604b8111615c645750565b6044906040519063f80a484560e01b82526004820152604b6024820152fd5b919080821115615c9257505050565b606493506040519263f48f718f60e01b8452600484015260248301526044820152fd5b615cbe82615c53565b60015b828110615ccd57505050565b600019810190808211610db157615c49615ceb615cf79386866117ac565b35615c418387876117ac565b615cc156fe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5005e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50162f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50aa264697066735822122021551e17cf731138ae2156496b9e33f430ab60311f2b323732364712508edc7664736f6c63430008120033","sourceMap":"1047:53966:75:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;1047:53966:75;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5277:3318;1047:53966;;5277:3318;;:::i;:::-;1047:53966;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1047:53966:75;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;9396:34;1047:53966;;;-1:-1:-1;1047:53966:75;;-1:-1:-1;1047:53966:75;;;;-1:-1:-1;1047:53966:75;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;9396:34;:::i;:::-;1047:53966;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;1047:53966:75;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;13016:23;1047:53966;;;;;;:::i;:::-;;;;;;;;;;;;13016:23;;:::i;:::-;1047:53966;;;;;;;;;;;;;;;;;;-1:-1:-1;;1047:53966:75;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;:::i;:::-;2084:75;;:::i;:::-;2507:9;;;;:::i;:::-;2589:40;:58;;;;1047:53966;;-1:-1:-1;;;2589:58:75;;-1:-1:-1;1047:53966:75;;2589:58;1047:53966;;;2589:58;;;:::i;:::-;;:40;;:58;;;;;;;;1047:53966;2735:27;;;;:::i;:::-;2799;;;;:::i;:::-;2883:40;;;:::i;:::-;2933:22;-1:-1:-1;;2986:16:75;;;;;;2589:40;;3656:62;;;;-1:-1:-1;3656:62:75;1047:53966;;;;;;;;;;3656:62;;1047:53966;;;3656:62;;;:::i;:::-;;2589:40;;3656:62;;;;;;;;2966:680;3734:13;-1:-1:-1;3749:16:75;;;;;;-1:-1:-1;1047:53966:75;;-1:-1:-1;;;;;1047:53966:75;4249:73;;;;1047:53966;;-1:-1:-1;;;4249:73:75;;1047:53966;-1:-1:-1;;1047:53966:75;;;;4249:73;;1047:53966;3122:10;1047:53966;4249:73;;;:::i;:::-;;1047:53966;;;;-1:-1:-1;;;;;1047:53966:75;4249:73;;;;;;;;3729:510;4338:13;-1:-1:-1;4353:16:75;;;;;;1047:53966;4338:13;1047:53966;4390:17;;;;:::i;:::-;;:29;1047:53966;4386:505;;4338:13;4976:17;;1047:53966;4976:17;;;:::i;:::-;;1047:53966;5047:24;1047:53966;5047:17;;;;:::i;:::-;;:24;1047:53966;-1:-1:-1;;;;;1047:53966:75;;;5047:24;5089:12;1047:53966;5089:12;;;;;:::i;:::-;:21;1047:53966;-1:-1:-1;;;;;;;;;;;4910:284:75;1047:53966;5162:12;;;;;:::i;:::-;:18;1047:53966;;;3122:10;;;;1047:53966;;;;;;;;;;;;4910:284;;;:::i;:::-;;;;1047:53966;4338:13;;4386:505;1047:53966;4603:17;;;;:::i;:::-;;:29;1047:53966;4658:17;1047:53966;4658:17;;;;:::i;:::-;;:32;1047:53966;4716:17;:24;1047:53966;4716:17;;;;:::i;:24::-;4766:17;:33;:17;;;;:::i;:::-;;:33;;4825:17;1047:53966;4825:17;;;;:::i;:::-;;:29;;2589:40;;4444:432;;;;-1:-1:-1;1047:53966:75;4444:432;1047:53966;;;;;;;;;;;4444:432;;1047:53966;;;;;4444:432;;;:::i;:::-;;2589:40;;4444:432;;;;;;;1047:53966;4444:432;;;4386:505;;;;;;4444:432;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;4249:73::-;;;;;;:::i;:::-;;;;3734:13;3800:12;;1047:53966;3800:12;;;;:::i;:::-;1047:53966;3839:43;1047:53966;3839:34;1047:53966;;3839:34;:::i;:::-;1047:53966;;;;;;;;;;3839:43;1047:53966;3835:172;;3734:13;4025:41;1047:53966;4025:32;1047:53966;;4025:32;:::i;:41::-;1047:53966;4021:148;;3734:13;1047:53966;;3734:13;;4021:148;4090:59;3122:10;4090:47;3122:10;1047:53966;4090:38;1047:53966;;4090:38;:::i;:47::-;1047:53966;;;;;;;;;;;;;;;;4090:59;:64;1047:53966;;4090:64;:::i;:::-;1047:53966;;4021:148;;;3835:172;1047:53966;3971:12;;;;;:::i;:::-;:21;1047:53966;3906:86;:61;3122:10;3906:49;1047:53966;3906:40;1047:53966;;3906:40;:::i;:61::-;1047:53966;;;3906:86;:::i;:::-;1047:53966;;3835:172;;3656:62;;;;;;:::i;:::-;;;;2971:13;3055:92;3134:12;;;;;:::i;:::-;3122:10;1047:53966;;;;3055:92;:::i;:::-;3019:128;;;;:::i;:::-;;;;;;:::i;:::-;;1047:53966;3165:17;;;;;:::i;:::-;;:29;1047:53966;3161:313;;2971:13;3502:17;;;1047:53966;3502:17;;;:::i;:::-;;1047:53966;3488:39;;;;:::i;:::-;1047:53966;;3554:12;;;;;:::i;:::-;:21;1047:53966;3541:34;;;;:::i;:::-;1047:53966;;2971:13;;3161:313;1047:53966;;3274:89;1047:53966;;3274:58;1047:53966;-1:-1:-1;;;;;;;;;;;1047:53966:75;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;3274:58;3333:17;;;;;:::i;:::-;;:29;1047:53966;;;;;;;;;;;;3274:89;;1047:53966;3274:89;;1047:53966;;;;;;;;3274:89;;;;;;;;;;1047:53966;3274:89;3381:78;3274:89;3395:64;3274:89;-1:-1:-1;3274:89:75;;;3161:313;3219:17;1047:53966;3219:17;;;;:::i;:::-;;:32;1047:53966;3395:17;;;;:::i;:::-;;:29;1047:53966;;3427:17;;;;:::i;:::-;;:32;1047:53966;3395:64;;:::i;:::-;3381:78;;:::i;:::-;3161:313;;;;3274:89;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;2589:58;;;;;;:::i;:::-;;;;1047:53966;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1047:53966:75;;;;;;;1091:2:74;1047:53966:75;;;;;;;;;-1:-1:-1;;1047:53966:75;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8601:664;1047:53966;;;;;;:::i;:::-;;;;;;;;;;;;8601:664;;:::i;:::-;1047:53966;;;;;;;-1:-1:-1;;1047:53966:75;;;;;;;1039:2:74;1047:53966:75;;;;;;-1:-1:-1;;1047:53966:75;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2151:1;1047:53966;;;;;;:::i;:::-;2084:75;;;;;:::i;:::-;1047:53966;;;;;2151:1;;:::i;1047:53966::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1047:53966:75;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;1047:53966:75;;-1:-1:-1;1047:53966:75;;;;-1:-1:-1;1047:53966:75;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1047:53966:75;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;4153:1;1047:53966;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1047:53966:75;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;3839:16;1047:53966;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;3906:22;1047:53966;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;4025:14;1047:53966;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;4090:20;1047:53966;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;7327:12;1047:53966;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;36382:19;1047:53966;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2165:127::-;2230:4;2239;-1:-1:-1;;;;;1047:53966:75;2222:21;2218:67;;2165:127::o;2218:67::-;1047:53966;;-1:-1:-1;;;2252:33:75;;;;;2084:75;;;;;:::i;:::-;5500:9;;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;5524:10;1047:53966;;;5524:21;5520:66;;5659:40;:58;;;;1047:53966;;-1:-1:-1;;;5659:58:75;;:14;1047:53966;;5659:58;;;;;;:::i;:::-;;:40;;:58;;;;;;;;2084:75;5752:16;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1047:53966:75;5840:68;;;;5874:33;;-1:-1:-1;;;;;1047:53966:75;;;5874:33;1047:53966;;;;;;;;;5840:68;;;5659:58;5840:68;;;:::i;:::-;;1047:53966;;;;5840:68;;;;;;;5659:14;5840:68;;;2084:75;5839:69;;5835:156;;6078:27;;;:::i;:::-;6142;;;;:::i;:::-;6228:42;;;:::i;:::-;6280:22;5659:14;;6909:58;1047:53966;-1:-1:-1;;;;;;;;;;;1047:53966:75;;;;;;;;;6909:58;6333:16;;;;;;;;;;;5659:40;;;;;;;;;7171:62;;;;5659:14;7171:62;1047:53966;;;;;;;;;;7171:62;;;5659:58;7171:62;;;:::i;:::-;;5659:40;;7171:62;;;;;;;;6313:848;7249:13;;;;5659:14;7264:16;;;;;;;;;5524:10;;;;7741:7;5524:10;;;7741:7;;;:::i;:::-;5659:14;7780:16;;;;;;2084:75;;;;;;;;:::o;7765:13::-;7920:17;;;;:::i;:::-;;1047:53966;8005:17;5840:68;8005:17;;;;:::i;:::-;;:29;1047:53966;;8056:17;;;;:::i;:::-;;:32;1047:53966;8139:17;:33;:17;;;;:::i;:::-;;:33;;8194:17;:29;:17;;;;:::i;:::-;;:29;;5659:40;;7813:428;;;;1047:53966;;5659:14;1047:53966;;7813:428;1047:53966;;;;;;;;;;;;;7813:428;;5659:58;7813:428;;;:::i;:::-;;5659:40;;7813:428;;;;;;;;;8261:257;7813:428;;8261:257;7813:428;1047:53966;8483:12;7813:428;8370:17;7813:428;;;1047:53966;7813:428;;;;;;7765:13;8370:17;;:::i;:::-;;1047:53966;8447:12;5840:68;8447:12;;;;;:::i;:::-;:18;1047:53966;8483:12;;:::i;:::-;:21;1047:53966;;;;;;;;;5524:10;;1047:53966;;8261:257;;;:::i;:::-;;;;1047:53966;7765:13;;7813:428;;;;;;:::i;:::-;;;;7249:13;7327:30;;;1047:53966;7327:30;;;:61;:30;:52;:30;;;:::i;:::-;7358:12;;;;;:::i;:::-;1047:53966;;;;;;;;;;7327:61;7402:43;:18;1047:53966;7424:12;;;;;:::i;:::-;:21;1047:53966;7402:18;;1047:53966;;;7402:43;:::i;:::-;1047:53966;;;7463:23;7459:130;;7249:13;1047:53966;;;;;;7249:13;;;;;;7459:130;7544:12;7513:61;:30;:52;:30;;7506:68;7513:30;;:::i;:::-;7544:12;;:::i;7513:61::-;7506:68;:::i;:::-;7459:130;;;;;;;7171:62;;;;;;:::i;:::-;;;;6318:13;6479:12;6366:126;6479:12;6402:90;6479:12;;;;;;;;;;;1047:53966;6479:12;6568;6479;;:::i;:::-;6402:90;;:::i;:::-;6366:126;;:::i;:::-;;;;;;:::i;:::-;;6521:12;;;;;:::i;:::-;1047:53966;6507:34;;;;:::i;:::-;1047:53966;6568:12;:::i;:::-;:21;1047:53966;6555:34;;;;:::i;:::-;1047:53966;6628:39;5840:68;6655:11;;;;;;;:::i;:::-;1047:53966;;;;;;;;;;;;;6628:39;;5659:58;6628:39;;;:::i;:::-;;1047:53966;;6628:39;;;;;;;5659:14;6628:39;;;6318:13;6701:10;;;;;:::i;:::-;1047:53966;6685:26;;6681:163;;6968:17;6909:89;5840:68;6968:17;;;;;:::i;:::-;;:29;1047:53966;;;;;;;;;;6909:89;;5659:58;6909:89;;1047:53966;;;;;;;;6909:89;;;;;;;;;;;1047:53966;6909:89;7012:78;6909:89;5659:14;6909:89;;;6318:13;6858:17;1047:53966;6858:17;;;;:::i;:::-;;:32;1047:53966;7026:64;5840:68;7026:17;;;;:::i;:::-;;:29;1047:53966;;7058:17;;;;:::i;7012:78::-;1047:53966;;6318:13;;;6909:89;;;;5840:68;6909:89;5840:68;6909:89;;;;;;;:::i;:::-;;;;6681:163;6790:11;6738:91;6790:11;;;6803:10;6790:11;;;;;:::i;:::-;1047:53966;6803:10;;:::i;:::-;1047:53966;;;;6738:91;;;;;;;;5659:58;6738:91;;;:::i;:::-;;;;6628:39;;;;5840:68;6628:39;5840:68;6628:39;;;;;;;:::i;:::-;;;;5835:156;1047:53966;;-1:-1:-1;;;5931:49:75;;1047:53966;5931:49;1047:53966;;5659:58;5931:49;;;:::i;5840:68::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;5659:58;;;;;;:::i;:::-;;;;5520:66;1047:53966;;-1:-1:-1;;;5554:32:75;;-1:-1:-1;;;;;1047:53966:75;;5554:32;;;1047:53966;;;6738:91;1047:53966;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;-1:-1:-1;1047:53966:75;;-1:-1:-1;1047:53966:75;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1047:53966:75;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;1047:53966:75;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;52596:1;1047:53966;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;5659:14;1047:53966;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5109:321:74:-;5210:28;;:33;:131;;;;5109:321;5193:231;;5109:321;:::o;5193:231::-;1047:53966:75;;-1:-1:-1;;;5373:40:74;;-1:-1:-1;;;;;1047:53966:75;;;5373:40:74;;;1047:53966:75;;;5373:40:74;5210:131;5264:77;;;;:::i;:::-;5263:78;5210:131;;1349:282:62;1047:53966:75;;4592:71:62;;;;;1017:25;-1:-1:-1;1017:25:62;;;4592:71;;;;;;;;1047:53966:75;4592:71:62;;;;;;:::i;:::-;4784:212;;;;;;;;-1:-1:-1;4784:212:62;5013:29;;;;1349:282;5013:48;;;;1349:282;975:149;;;;1349:282;1543:81;;;;;;1536:88;1349:282;:::o;1543:81::-;1570:54;;;;:::i;975:149::-;1047:53966:75;;;;-1:-1:-1;1047:53966:75;;;;;4592:71:62;;;;;;1047:53966:75;;;4592:71:62;;;1047:53966:75;4592:71:62;;;;;;:::i;:::-;4784:212;;;-1:-1:-1;4784:212:62;;;;;5013:29;;975:149;5013:48;;;;;975:149;1059:65;;975:149;;;;;;5013:48;5046:15;;;;5013:48;;;:29;5024:18;;;-1:-1:-1;5013:29:62;;;;:48;5046:15;;;-1:-1:-1;5013:48:62;;;:29;5024:18;-1:-1:-1;5024:18:62;;-1:-1:-1;5013:29:62;;;4421:647;-1:-1:-1;4592:71:62;4421:647;1047:53966:75;;4592:71:62;;;1017:25;;;;4592:71;;5314:26:74;;;4592:71:62;;;1047:53966:75;4592:71:62;;;;;;:::i;:::-;4784:212;;;;-1:-1:-1;4784:212:62;;5013:29;;;4421:647;5013:48;;;;5006:55;4421:647;:::o;5013:48::-;5046:15;;;;4421:647;:::o;5013:29::-;4592:71;-1:-1:-1;5024:18:62;;-1:-1:-1;5013:29:62;;;2084:75:75;;;;;;;;;;;:::i;:::-;1047:53966;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;8957:240;;;1047:53966;;;;;;8957:240;;;1047:53966;;;;;;8957:240;;;1047:53966;;;8957:240;;;1047:53966;;;;8957:240;;1047:53966;;;8957:240;;-1:-1:-1;15270:10:75;:26;;15266:108;;-1:-1:-1;1047:53966:75;;15408:22;;-1:-1:-1;;;;;1047:53966:75;15408:22;:::i;:::-;1047:53966;;15441:60;;1047:53966;-1:-1:-1;;;;;1047:53966:75;15441:84;;;;;;1047:53966;;-1:-1:-1;;;15441:84:75;;-1:-1:-1;;;;1047:53966:75;;;;15441:84;;;;;;:::i;:::-;;;;;;;;;;;;2084:75;15535:74;;;;;;1047:53966;;-1:-1:-1;;;15535:74:75;;;1047:53966;;15535:74;;;;;15441:84;15535:74;;;:::i;:::-;;;;;;;;;;;;2084:75;1047:53966;;;15623:20;15619:55;;15733:34;;;;1047:53966;15733:34;;;;;15906:71;8957:240;15906:24;15859:32;15733:34;;;:::i;:::-;1047:53966;;;;;;-1:-1:-1;;;;;1047:53966:75;;;15906:24;-1:-1:-1;;;;;;;;;;;1047:53966:75;15943:33;;-1:-1:-1;;;;;1047:53966:75;;;15943:33;1047:53966;;;;;;;;;;;15906:71;;15270:10;15441:84;15906:71;;;:::i;:::-;;;;;;;;;;;;;;2084:75;15905:72;;15901:168;;1047:53966;;;;;;;;16163:15;1047:53966;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;15270:10;;16163:15;;:::i;:::-;1047:53966;-1:-1:-1;;;;;1047:53966:75;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;16190:322;;;;;1047:53966;16190:322;1047:53966;;;;;;;;;;;;;;;;16190:322;;15270:10;16190:322;15441:84;16190:322;;;:::i;:::-;;;;;;;;;1047:53966;;;16528:228;16190:322;16528:228;16190:322;;;;;2084:75;-1:-1:-1;1047:53966:75;-1:-1:-1;;;;;1047:53966:75;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;15270:10;;16528:228;;;:::i;:::-;;;;2084:75::o;16190:322::-;;;;;;:::i;:::-;;;;;1047:53966;;;15901:168;1047:53966;;;;-1:-1:-1;;;16000:58:75;;1047:53966;;;16000:58;;-1:-1:-1;;;;;1047:53966:75;15270:10;15441:84;16000:58;;;:::i;15906:71::-;;;;8957:240;15906:71;;;;;;;;;:::i;:::-;;;;15619:55;1047:53966;;-1:-1:-1;;;15652:22:75;;15441:84;;15652:22;15535:74;;;;;;:::i;:::-;;;;15441:84;;;;;;:::i;:::-;;;;15266:108;1047:53966;;-1:-1:-1;;;15319:44:75;;-1:-1:-1;;;;;1047:53966:75;;;;15319:44;;;1047:53966;;;6738:91;2084:75;;;;;:::i;:::-;9468:13;;;:::i;:::-;9511:39;;;:::i;:::-;9493:15;;;;;;:57;;;9645:9;9669:13;-1:-1:-1;9684:17:75;;;;;;10354;;;;;:29;:17;;:29;1047:53966;10412:17;10408:116;;9664:680;-1:-1:-1;10594:17:75;;1047:53966;;10637:30;;;1047:53966;10681:26;;;;1047:53966;10354:29;10721;;;1047:53966;;;;;;;;;;;;;;;;;;;;;10570:10;;10539:221;;1047:53966;;10539:221;2084:75;:::o;10408:116::-;10445:21;:68;;;;;1047:53966;;-1:-1:-1;;;10445:68:75;;-1:-1:-1;;;;;;;;;;;10445:68:75;;;1047:53966;-1:-1:-1;1047:53966:75;;;;;;10487:10;1047:53966;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;10445:68;;;;;;;10408:116;10445:68;;;;;;:::i;:::-;;10408:116;;9669:13;9809:51;9833:9;;;;;;;:::i;:::-;9809:51;:::i;:::-;9874:310;;;;;;9904:30;;10266:6;1047:53966;9904:30;9952:17;;;:34;1047:53966;;9952:34;:::i;:::-;1047:53966;;;;;;;10008:25;;:9;;;;;:::i;:::-;:25;;:::i;:::-;1047:53966;10008:39;10004:91;;9874:310;10198:27;:15;;;:27;;;;;:::i;:::-;;;:::i;:::-;;10266:6;:::i;:::-;1047:53966;9669:13;;10004:91;10079:16;;;1047:53966;10049:46;:26;:17;;:26;1047:53966;;;10049:46;:::i;:::-;1047:53966;;10004:91;;9874:310;10134:17;1047:53966;10134:17;;;10266:6;10134:17;;;;:30;:35;1047:53966;;10134:35;:::i;1047:53966::-;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1047:53966:75;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;6613:211:74:-;6689:12;;6685:37;;1091:2;6736:27;;6732:85;;6613:211;:::o;6732:85::-;1047:53966:75;;;;6772:45:74;;;;;;;;;1047:53966:75;1091:2:74;1047:53966:75;;;;6772:45:74;6685:37;1047:53966:75;;-1:-1:-1;;;6710:12:74;;;;;1047:53966:75;;;;;;;:::i;:::-;21646:14;1047:53966;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;-1:-1:-1;;1047:53966:75;;;;;:::i;:::-;;;;-1:-1:-1;1047:53966:75;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::o;10773:1360::-;;;11052:42;10773:1360;1047:53966;;:::i;:::-;;11052:42;:::i;:::-;11104:31;;11223;;;:::i;:::-;1047:53966;;;;;;-1:-1:-1;;;;;1047:53966:75;;11264:64;;10773:1360;11342:6;;11338:167;;-1:-1:-1;11563:12:75;1047:53966;11268:14;;;;1047:53966;;11589:52;;-1:-1:-1;;;;;1047:53966:75;11589:52;;:::i;:::-;11563:79;;;;;;;;;;;:::i;:::-;11656:8;;11652:263;;11973:36;1047:53966;;;11563:79;1047:53966;;;11973:36;;;;;;:::i;:::-;12035:4;12019:13;;;1047:53966;12019:13;;12049:16;;;1047:53966;12087:39;1047:53966;12087:39;10773:1360;:::o;11652:263::-;11746:31;11830:20;11746:31;;:::i;:::-;11830:20;;;:::i;:::-;11865:39;11268:14;11865:39;;:::o;11338:167::-;11429:11;;;;;;;;;:::i;11264:64::-;-1:-1:-1;;;;;1047:53966:75;11298:13;;;1047:53966;11264:64;;;1047:53966;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;12139:526::-;1047:53966;;12519:20;;;;1047:53966;12553:23;;;;1047:53966;12590:24;;;;12628:20;;;;;1047:53966;;-1:-1:-1;;;12343:315:75;;;;1047:53966;12343:315;;;1047:53966;;12590:24;1047:53966;;12628:20;;-1:-1:-1;;;;;1047:53966:75;12139:526;;1047:53966;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;12343:315;;1047:53966;;;:::i;:::-;12343:315;1047:53966;;12343:315;;;;;;:::i;1047:53966::-;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;;2084:75;;2151:1;2084:75;;;;;;;;;;:::i;:::-;2151:1;:::i;:::-;;;2084:75::o;1047:53966::-;;;;;:::i;:::-;;;;;13338:28;1047:53966;;;;;;;;;;:::i;:::-;;;;;17524:39;1047:53966;;;;;;;;;;:::i;:::-;;;;;18297:25;1047:53966;;;;;;;;;;:::i;:::-;;;;;29702:36;1047:53966;;;;;;;;;;:::i;:::-;;;;;32697:27;1047:53966;;;;;;;;;;:::i;12671:1076::-;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;:::i;:::-;;13055:58;13051:250;;13314:14;13338:28;1047:53966;13314:14;;;:::i;:::-;1047:53966;13314:53;13310:241;;13568:172;13654:76;;13715:14;;;:::i;:::-;1047:53966;;-1:-1:-1;;;13654:76:75;;;;1047:53966;;;;13654:76;;;1047:53966;;;;;;;;;13654:76;1047:53966;;-1:-1:-1;;;13568:172:75;;1047:53966;;;13654:76;13568:172;;;:::i;13310:241::-;13390:150;;;;:::i;13051:250::-;13136:154;;17381:21;13136:154;;;;;;;;;;17135:31;;17251:30;;;;;:::i;:::-;17381:21;17337:92;17381:21;;;;;;;;:::i;:::-;17337:92;:::i;:::-;1047:53966;;17439:156;;17646:21;;;;17629:39;17646:21;;;:::i;:::-;17629:39;:::i;:::-;17669:13;17629:54;17669:13;;;1047:53966;17629:54;;1047:53966;;;;;;;;;;17629:54;1047:53966;17629:58;;17734:21;;17719:52;17734:21;17719:37;17734:21;;;:::i;:::-;17719:37;:::i;:52::-;1047:53966;17719:56;;17785:137;;;13051:250;17931:120;;;;13051:250;18065:60;:35;18078:21;;;:::i;18065:60::-;18138:31;;;;:::i;:::-;18188:14;;;1047:53966;18171:32;;;;:::i;:::-;18065:139;;;;;;1047:53966;;-1:-1:-1;;;18065:139:75;;1047:53966;;;;;;;;;;;18065:139;;18126:10;18065:139;;;;:::i;:::-;;;;;;;;;13051:250;-1:-1:-1;18061:285:75;;18269:66;18216:130;;:::i;:::-;1047:53966;;-1:-1:-1;;;18269:66:75;;1047:53966;;;18065:139;18269:66;;;:::i;18061:285::-;-1:-1:-1;;;;;1047:53966:75;;18360:21;1047:53966;18360:21;:::i;:::-;1047:53966;;;18429:25;;;;;;:::i;:::-;18356:211;-1:-1:-1;;;;;;;;;;;18356:211:75;1047:53966;18356:211;18744:219;18356:211;18907:21;18356:211;18772:21;18356:211;;18581:17;;18577:152;;18356:211;18772:21;;;;;;;;;:::i;:::-;18907;;:::i;:::-;1047:53966;;;18126:10;;;;1047:53966;;18942:11;;1047:53966;18744:219;;;:::i;:::-;;;;13129:161;;:::o;18577:152::-;18705:12;;;:::i;:::-;18577:152;;;;;;;;;;18356:211;18523:21;;;;-1:-1:-1;;;;;;;;;;;18523:21:75;;;;;18907;18523;18772;18523;18485:71;1047:53966;18523:21;;18744:219;18523:21;;:::i;:::-;18485:71;:::i;:::-;18356:211;;18065:139;;;;;;:::i;:::-;;;;;1047:53966;;;17931:120;17965:70;:58;17986:21;17965:43;17986:21;;;:::i;:::-;17965:43;:::i;:58::-;18024:10;1047:53966;;;;;;;;;;;;;;17965:70;:75;1047:53966;;17965:75;:::i;:::-;1047:53966;;17931:120;;17785:137;17897:14;17821:72;:60;:90;17844:21;17821:45;17844:21;;;:::i;:::-;17821:45;:::i;:72::-;17897:14;;1047:53966;;;17821:90;:::i;:::-;1047:53966;;17785:137;;;;17439:156;1047:53966;;-1:-1:-1;;;17496:88:75;;1047:53966;;;17496:88;;;;;;:::i;1047:53966::-;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;13753:1328::-;;;;;;;;;;1047:53966;14117:14;;;:::i;:::-;1047:53966;14117:58;14113:430;;14580:28;1047:53966;14556:14;;;:::i;:::-;1047:53966;14556:53;14552:462;;15031:43;15059:14;;;:::i;:::-;1047:53966;;-1:-1:-1;;;15031:43:75;;1047:53966;;;;15031:43;;;1047:53966;;;;;;;;;14552:462;14625:47;;;;;;;;;14694:21;;;;;;:::i;:::-;14772;;;;;;:::i;:::-;14625:358;;;;;;14117:14;1047:53966;14737:13;1047:53966;14625:358;1047:53966;;;;;;;;;;;;;14625:358;;14737:13;1047:53966;14625:358;;;;;:::i;:::-;;;;;;;;;;;14997:7;:::o;14625:358::-;;;;;;:::i;14113:430::-;14191:45;;;;;;;;;;;14258:21;14301;;14258;;;;;:::i;:::-;14301;;;:::i;:::-;14191:321;;;;;;14117:14;1047:53966;14191:321;1047:53966;;;;;;;;;;;;;14191:321;;;;;;:::i;1047:53966::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;18976:1775::-;;;;;;;;;;;19338:31;19454:30;;;;;:::i;:::-;19584:21;19540:92;19584:21;;;;;;;:::i;19540:92::-;1047:53966;;;19642:156;;1047:53966;;-1:-1:-1;1047:53966:75;;-1:-1:-1;;;;;19812:21:75;19584;;;19812;:::i;:::-;1047:53966;;;19881:25;20506:12;19881:25;;;;;;;;:::i;:::-;19808:211;;20128:18;20059:59;20072:21;20059:50;20072:21;20095:13;20059:35;20072:21;;;;;:::i;:::-;20059:35;:::i;:::-;20095:13;;1047:53966;;;;;;;;;;20059:59;20128:18;:36;20150:14;;;1047:53966;;;20128:36;:::i;:::-;1047:53966;;;20178:23;20174:120;;19808:211;20389:14;20330:21;20072;;;20330;:::i;:::-;20150:14;;;1047:53966;20095:13;;;;1047:53966;20362:10;;;20389:14;;:::i;:::-;20506:12;;;:::i;:::-;20598:21;20072;;;20598;:::i;:::-;19584;20535:209;;20660:21;19584;;;20660;:::i;:::-;1047:53966;;-1:-1:-1;;;;;1047:53966:75;;;;20362:10;;1047:53966;;;;;;;;20150:14;;;1047:53966;;;20695:11;;1047:53966;;20095:13;;1047:53966;;20535:209;:::i;20174:120::-;20217:66;20224:59;20095:13;20224:50;20095:13;20224:35;20237:21;20072;20095:13;;;1047:53966;20072:21;;20237;:::i;20217:66::-;20174:120;;19808:211;19584:21;;;;;;19937:71;19584:21;19975;19584;20506:12;19584:21;;;19975;:::i;19937:71::-;19808:211;;19642:156;1047:53966;;-1:-1:-1;;;19699:88:75;;1047:53966;19699:88;1047:53966;19699:88;;;;:::i;20757:617::-;;1047:53966;;:::i;:::-;;;;;;;:::i;:::-;;;;20986:58;;;20982:137;;1047:53966;;;:::i;:::-;21156:28;21132:53;;21128:128;;1047:53966;;;;:::i;:::-;;;13677:36;;;;21281:76;;;;;;;1047:53966;21281:76;;;;;;:::i;:::-;20986:14;21266:101;;20757:617;:::o;21128:128::-;21208:37;;;;;;;;:::i;:::-;21201:44;;;;;:::o;20982:137::-;21067:41;;;;;;;;:::i;1047:53966::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;:::o;21380:1699::-;1047:53966;;:::i;:::-;21662:21;;;;21619:65;21620:64;21662:21;;;:::i;:::-;21620:64;:::i;:::-;21619:65;;1047:53966;21619:65;21615:196;;22131:11;21957:21;;;;;;;;;:::i;:::-;21992;21901:292;21992:21;;;:::i;:::-;22051:13;;;;1047:53966;22078:11;;;;1047:53966;22103:14;;;;;;1047:53966;22131:11;;;;;;;;:::i;:::-;22027:10;;;;21901:292;;:::i;:::-;21662:21;22220:20;;1047:53966;-1:-1:-1;;;;;1047:53966:75;;;22220:20;;;22254:13;22250:438;;22720:25;;;;;;;;;1047:53966;22698:19;;;;1047:53966;22759:24;22755:159;;21380:1699;22949:29;22078:11;22949:29;;22051:13;22949:29;;;21662:21;22923:23;;:55;23010:25;;22051:13;22988:19;;:47;23054:4;1047:53966;;;:::i;:::-;23046:26;21380:1699;:::o;22755:159::-;-1:-1:-1;;;;;;;;;;;1047:53966:75;22824:79;;1047:53966;;22824:58;;-1:-1:-1;;;;;1047:53966:75;;;22824:58;1047:53966;;;;;;;;;;22824:79;;;;;1047:53966;;;;;;;;22824:79;;;;;;;;;;22078:11;22824:79;-1:-1:-1;22824:79:75;;;22755:159;22799:22;;1047:53966;22799:22;;1047:53966;22755:159;;;22824:79;;;;;;-1:-1:-1;22824:79:75;;;;;;:::i;:::-;;;;;22250:438;22331:307;22420:21;;;;;;;;;;;:::i;:::-;22463;22027:10;22463:21;;:::i;:::-;22331:307;;:::i;:::-;22283:394;21646:14;22283:394;;;:::o;21615:196::-;21715:75;21768:21;;;;21715:75;21768:21;;:::i;:::-;1047:53966;;-1:-1:-1;;;21715:75:75;;;;-1:-1:-1;;;;;1047:53966:75;;;21715:75;;;1047:53966;;;;;;;;;21715:75;;1047:53966;;21715:75;;;;;;:::i;23085:3316::-;;1047:53966;;:::i;:::-;23333:12;;;;;;23316:29;23333:12;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;;;;23316:29;23359:26;23373:12;;;:::i;23359:26::-;:10;:26;23355:152;;23551:21;;;;;;23520:53;23521:52;23551:21;;;:::i;:::-;23521:52;:::i;23520:53::-;23516:187;;1047:53966;;:::i;:::-;;23864:21;;;:::i;:::-;23887:12;;;;:::i;:::-;23901:21;23952:14;23822:154;23901:21;;;;;;;:::i;:::-;23924:13;;;;1047:53966;23939:11;;;;;1047:53966;23952:14;;;;1047:53966;23822:154;;;;:::i;:::-;23990:6;;;;23986:438;;24462:21;;;24498:24;24453:31;24462:21;;;:::i;24498:24::-;:73;24523:12;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1047:53966:75;24537:33;;-1:-1:-1;;;;;1047:53966:75;;;24537:33;1047:53966;;-1:-1:-1;;;24498:73:75;;1047:53966;;;;;;24498:73;;;;:::i;:::-;;;;;;23316:14;;24498:73;;;23085:3316;-1:-1:-1;24494:584:75;;24992:12;;;;;24936:92;24992:12;25006:21;24992:12;24936:92;24992:12;;:::i;:::-;25006:21;;:::i;:::-;1047:53966;;5931:49;;;;;;24936:92;;;;;;;;:::i;24494:584::-;24616:11;;;;;;;24612:245;;24494:584;;25092:46;24494:584;25110:12;;;:::i;:::-;1047:53966;;;;;;;;;;;25092:46;;24498:73;25092:46;;;:::i;:::-;;;;;23316:14;;25092:46;;;24494:584;-1:-1:-1;25088:970:75;;25841:12;;;25742:266;25841:12;;;25875:21;25841:12;25742:266;25841:12;;:::i;25875:21::-;1047:53966;;6738:91;;;;;;25742:266;;;;;;;1047:53966;;23316:14;1047:53966;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25088:970;25189:30;;;;;;;;;;;;25185:478;;-1:-1:-1;;;;26090:25:75;;;1047:53966;;26068:19;;;1047:53966;-1:-1:-1;;;;;;;;;;;1047:53966:75;26150:85;;25088:970;-1:-1:-1;26090:25:75;;;26150:58;;-1:-1:-1;;;;;1047:53966:75;;;26150:58;1047:53966;;;;;;;;;;;;;26150:85;;24498:73;26150:85;;1047:53966;;;;;;;;26150:85;;;;;;;;;;23924:13;26150:85;23316:14;26150:85;;;25088:970;26125:22;;;;1047:53966;23901:21;26271:29;;;23901:21;26245:23;;:55;26332:25;;23924:13;26310:19;;:47;26150:34;1047:53966;;;:::i;26150:85::-;;;;;;;-1:-1:-1;26150:85:75;;;;;;:::i;:::-;;;;;;25185:478;25295:306;25402:12;;;25440:21;25402:12;25295:306;25402:12;;;;;:::i;:::-;25440:21;;:::i;:::-;1047:53966;;6738:91;;;;;;25295:306;;;;;;;;:::i;25092:46::-;;;;;;;;;;;;;;;:::i;:::-;;;;;24612:245;24759:12;;24703:92;24759:12;;;24703:92;24759:12;;;24773:21;24759:12;;:::i;24498:73::-;;;;;;;;;;;;;;;:::i;:::-;;;;;23986:438;24154:21;;;;;;;;;24231;24197:12;24154:21;24060:314;24154:21;;;:::i;:::-;24197:12;;:::i;24231:21::-;24060:314;;:::i;23516:187::-;23660:21;;23604:78;23660:21;;;23604:78;23660:21;;:::i;:::-;1047:53966;;-1:-1:-1;;;23604:78:75;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;23604:78;;;1047:53966;;;;;;;;;23355:152;23416:70;23473:12;;;23416:70;23473:12;;:::i;:::-;1047:53966;;-1:-1:-1;;;23416:70:75;;;;-1:-1:-1;;;;;1047:53966:75;;;23416:70;;;1047:53966;;;;;;;;;26407:1485;;26650:12;;26646:27;;-1:-1:-1;;;;;1047:53966:75;;;26687:30;;26683:201;;-1:-1:-1;1047:53966:75;;;-1:-1:-1;;;26947:27:75;;26963:10;26947:27;;;1047:53966;26947:27;;;;1047:53966;;;26947:27;;;26661:1;;26947:27;;;26407:1485;-1:-1:-1;26943:446:75;;-1:-1:-1;;1047:53966:75;-1:-1:-1;;;27283:95:75;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;27283:95;;;1047:53966;;;;;26661:1;1047:53966;;;;27283:95;1047:53966;;;;27283:95;1047:53966;26943:446;27019:17;;;27015:230;;-1:-1:-1;27439:28:75;1047:53966;27403:66;;26943:446;;27431:37;;-1:-1:-1;;;;;1047:53966:75;;;27431:37;1047:53966;;;;;;;;;;;27403:66;;26963:10;26947:27;27403:66;;;:::i;:::-;;;;;26661:1;;27403:66;;;26943:446;-1:-1:-1;27399:467:75;;-1:-1:-1;1047:53966:75;-1:-1:-1;;;27758:97:75;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;27758:97;;;1047:53966;;;;;26661:1;1047:53966;;;;27758:97;1047:53966;;;;27758:97;1047:53966;27399:467;27516:19;;;27512:208;;27399:467;;;;;1047:53966;;:::i;27512:208::-;1047:53966;;-1:-1:-1;;;27562:143:75;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;27562:143;;;1047:53966;;;;;;;;;;;;;;;27562:143;1047:53966;;;;27562:143;1047:53966;27403:66;;;;;;;;;;;;;;;:::i;:::-;;;;;27015:230;1047:53966;;-1:-1:-1;;;27083:147:75;;;;;;;-1:-1:-1;;;;;;1047:53966:75;;;27083:147;;;1047:53966;;;;;;;;;;;;;;;27083:147;1047:53966;;;;27083:147;1047:53966;26947:27;;;;;;;;;;;;;;;:::i;:::-;;;;;26683:201;26737:24;-1:-1:-1;;26737:24:75;;;;26733:39;;1047:53966;;-1:-1:-1;;;26793:80:75;;;;;;;1047:53966;;;;;;;;;;;26793:80;1047:53966;;;;26793:80;1047:53966;26733:39;1047:53966;;;;:::i;26646:27::-;1047:53966;;;;;:::i;27898:1508::-;;;28046:12;;28042:25;;1047:53966;;;-1:-1:-1;;;28161:30:75;;;28185:4;28161:30;;;;1047:53966;;;;;;28161:30;;;;;1047:53966;;;-1:-1:-1;;;;;1047:53966:75;;;-1:-1:-1;28161:30:75;1047:53966;;;;28161:30;;;;;;;27898:1508;-1:-1:-1;28157:254:75;;28267:144;;28320:80;28267:144;;:::i;:::-;1047:53966;;-1:-1:-1;;;28320:80:75;;1047:53966;;;28320:80;;;:::i;28157:254::-;28425:28;1047:53966;28157:254;;;28425:41;;-1:-1:-1;;;;;1047:53966:75;;;28425:41;:95;;;;;1047:53966;;-1:-1:-1;;;28425:95:75;;-1:-1:-1;;;;;1047:53966:75;;28425:95;;;1047:53966;;;28485:10;1047:53966;;;;28185:4;1047:53966;;;;;;;;;;;;28057:1;;1047:53966;;;;;28057:1;;1047:53966;;;;28425:95;;;;;;;;28157:254;-1:-1:-1;28421:255:75;;28532:144;;28585:80;28532:144;;:::i;28421:255::-;1047:53966;;28720:30;;;28185:4;28720:30;;;1047:53966;;;;;28057:1;;28686:20;;1047:53966;;;;;;;;28720:30;;;;;;;;;28421:255;-1:-1:-1;28716:253:75;;28825:144;;28878:80;28825:144;;:::i;28716:253::-;28791:22;;;;;28057:1;;28716:253;29004:29;;;;;29036:28;;;;:::i;:::-;29004:64;;29082:25;;;29078:322;;27898:1508;;;;;;:::o;29078:322::-;1047:53966;;-1:-1:-1;;;29232:143:75;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;29232:143;;;1047:53966;;;;;;;;;;;;;;;;29232:143;;;29130:259;;29232:143;1047:53966;;29232:143;:::i;:::-;1047:53966;-1:-1:-1;;;29130:259:75;;1047:53966;;;29130:259;;;:::i;29004:64::-;;;;;;28720:30;;;;;;;;;;;;;;;:::i;:::-;;;;;28425:95;;;;;;:::i;:::-;;;;28161:30;;;;;;;;;;;;;;;:::i;:::-;;;;;28042:25;28060:7;;;:::o;1047:53966::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;29412:2488::-;1047:53966;;;-1:-1:-1;;;29702:36:75;;;1047:53966;;29412:2488;;29702:36;;29412:2488;;;;;-1:-1:-1;;;;;1047:53966:75;;;;-1:-1:-1;29702:36:75;1047:53966;;29702:36;29412:2488;;29702:36;;;;:::i;:::-;;;;;;;;;;;29412:2488;-1:-1:-1;29698:256:75;;29873:70;29820:134;;;:::i;:::-;1047:53966;;-1:-1:-1;;;29873:70:75;;1047:53966;;;29702:36;29873:70;;;:::i;29698:256::-;;29967:29;;;29963:335;;1047:53966;;30348:35;;;-1:-1:-1;30348:35:75;1047:53966;;30348:35;;;29702:36;30348:35;;;:::i;:::-;;;;;;;;;;;29698:256;-1:-1:-1;30344:254:75;;30517:70;30464:134;;;:::i;30344:254::-;-1:-1:-1;;;;;;;;;;;1047:53966:75;30344:254;;;30612:74;;-1:-1:-1;;;;;1047:53966:75;;;30612:74;:132;;;;;-1:-1:-1;1047:53966:75;;;;;;30612:132;1047:53966;;;;;;;;;;;;;;30612:132;;29702:36;30612:132;;;:::i;:::-;;;;;;;;;30344:254;-1:-1:-1;30608:282:75;;30809:70;30756:134;;;:::i;30608:282::-;1047:53966;;30940:36;;;-1:-1:-1;30940:36:75;1047:53966;;30940:36;;;29702;30940;;;:::i;:::-;;;;;;;;;;;30608:282;-1:-1:-1;30936:255:75;;31110:70;31057:134;;;:::i;30936:255::-;1047:53966;;31240:35;;;31017:28;1047:53966;-1:-1:-1;;31017:28:75;;1047:53966;;;;31240:35;31017:28;;29702:36;31240:35;;;:::i;:::-;;;;;;;;;;30936:255;-1:-1:-1;31236:253:75;;31408:70;31355:134;;;:::i;31236:253::-;31316:27;31525:29;31316:27;;;;;;31236:253;31525:29;:::i;:::-;31503:51;;;;:104;;;31236:253;31499:395;;;;;29412:2488;;;;;;;:::o;31499:395::-;31630:253;1047:53966;;;31722:147;1047:53966;;;31722:147;1047:53966;;;31766:31;;;;;;31722:147;;;;;;;;:::i;:::-;;1047:53966;;31722:147;;;;;;:::i;:::-;1047:53966;-1:-1:-1;;;31630:253:75;;1047:53966;;;29702:36;31630:253;;;:::i;31503:104::-;31579:28;;;;;:::i;:::-;31558:49;;31503:104;;;;;31240:35;;;;;;;;;;;;;;;:::i;:::-;;;;;30940:36;;;;;;;;;;;;;;;:::i;:::-;;;;;30612:132;;;;;;:::i;:::-;;;;30348:35;;;;;;;;;;;;;;;:::i;:::-;;;;;29963:335;-1:-1:-1;1047:53966:75;;-1:-1:-1;;;30111:162:75;;;;30019:268;;1047:53966;;30111:162;;1047:53966;;30111:162;;1047:53966;;;;30111:162;;;;:::i;29702:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;31906:832;;;;;;;;;;;1047:53966;;;;;;;32254:12;1047:53966;;;;;32310:314;;;;1047:53966;32310:314;;;32354:53;;;;32310:314;;1047:53966;32310:314;;;1047:53966;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;32310:314;1047:53966;;;;;;;;;;;;;;;:::i;32310:314::-;32254:384;;;;;;:::i;:::-;32652:8;;32648:83;;31906:832;:::o;32648:83::-;1047:53966;;-1:-1:-1;;;32669:62:75;;1047:53966;;;32669:62;;32310:314;32669:62;;;:::i;1047:53966::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;33008:14;1047:53966;;;33008:14;1047:53966;;;:::o;32744:716::-;;1047:53966;;:::i;:::-;;33252:14;33008;;;:::i;:::-;33053:21;32930:523;33053:21;;;;;:::i;:::-;32930:523;33132:12;;;;;:::i;:::-;32930:523;33175:21;;;;;:::i;:::-;33404:12;32930:523;33404:12;;:::i;:::-;1047:53966;;;:::i;:::-;;;;;;33053:21;32930:523;;1047:53966;;32930:523;-1:-1:-1;;;;;1047:53966:75;33132:12;32930:523;;1047:53966;;32930:523;33097:13;;;;1047:53966;33175:21;32930:523;;1047:53966;-1:-1:-1;;;;;1047:53966:75;;;32930:523;;;1047:53966;;32930:523;-1:-1:-1;;;;;1047:53966:75;33217:11;32930:523;;1047:53966;;32930:523;33217:11;;;1047:53966;32930:523;;;1047:53966;33252:14;1047:53966;;32930:523;;1047:53966;33008:14;32930:523;;;1047:53966;33008:14;32930:523;;;1047:53966;33008:14;32930:523;;;1047:53966;32930:523;;;1047:53966;33008:14;32930:523;;;1047:53966;32744:716;:::o;33466:314::-;11396:31;33644:20;;;1047:53966;33739:19;;-1:-1:-1;;;;;;33700:29:75;;;:::i;:::-;1047:53966;33683:14;;;1047:53966;33739:19;:34;33466:314::o;:::-;1047:53966;;;;;;33739:19;33644:20;;;;1047:53966;;;;33700:29;;;:::i;1047:53966::-;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1047:53966:75;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;33786:536::-;1047:53966;;33947:16;;;;1047:53966;;;;;;;;33977:23;;;1047:53966;33977:23;;;-1:-1:-1;;;;;1047:53966:75;34014:15;;;1047:53966;34043:14;;;1047:53966;;;34014:15;;-1:-1:-1;;;;;1047:53966:75;34071:23;;;1047:53966;34071:23;;;-1:-1:-1;;;;;1047:53966:75;34108:13;;;;1047:53966;34135:16;;;;1047:53966;34165:14;;;1047:53966;;;;;;;;34193:20;;;1047:53966;;;;;:::i;:::-;34227:14;;;1047:53966;-1:-1:-1;;;;;;1047:53966:75;34255:19;;;;;34288:17;;;1047:53966;;33977:23;1047:53966;;;;;;;;;;;;;;33881:434;;;;;:::i;:::-;;;;;33786:536::o;34328:450::-;;34601:47;;;:::i;:::-;34658:54;;;34722:49;;34730:27;34722:49;34328:450;:::o;34658:54::-;34671:41;-1:-1:-1;34671:41:75;:::o;34784:1238::-;-1:-1:-1;;;;;;;;;35120:28:75;;;:::i;:::-;1047:53966;35120:68;;;:96;;;34784:1238;35116:172;;35396:197;;;;;;;;;;;;;;;35606:56;35633:27;35606:56;;:83;;;;;34784:1238;35602:159;;;35795:24;1047:53966;;35795:24;:::i;:::-;-1:-1:-1;35771:95:75;;1047:53966;;;:::i;:::-;35963:4;35955:60;;34784:1238;:::o;35771:95::-;-1:-1:-1;;;;;;1047:53966:75;;:::i;35602:159::-;35705:45;;;;;-1:-1:-1;35705:45:75;-1:-1:-1;1047:53966:75;;;:::i;35606:83::-;35687:2;35666:23;;;;35606:83;;;35116:172;35232:45;35240:5;35232:45;35240:5;1047:53966;;;:::i;35120:96::-;1047:53966;35213:3;1047:53966;;35192:24;35120:96;;36028:2673;;;;;;;36382:47;:37;;;;:::i;:47::-;1047:53966;-1:-1:-1;;;;;;1047:53966:75;;-1:-1:-1;;;36444:43:75;;;36440:165;;-1:-1:-1;;;;36618:38:75;;;36614:145;;-1:-1:-1;;;;;;;36772:36:75;;;36768:166;;-1:-1:-1;;;;36947:41:75;;;36943:141;;-1:-1:-1;;;;37097:40:75;;;37093:106;;-1:-1:-1;;;;37213:37:75;;;37209:400;;-1:-1:-1;;;;37633:33:75;37622:44;;;37618:391;;-1:-1:-1;;;;38033:24:75;-1:-1:-1;;;38022:35:75;;;38018:159;;-1:-1:-1;;;;38201:23:75;-1:-1:-1;38190:34:75;;;38186:147;;-1:-1:-1;;;;38346:33:75;;;38342:149;;-1:-1:-1;;;;38515:25:75;38504:36;;;-1:-1:-1;38500:175:75;;1047:53966;;;;;:::i;38500:175::-;38563:101;1047:53966;38631:32;38563:101;38631:32;;1047:53966;;;;;;;;;;;;38563:101;;;;;;;;;;;:::i;38342:149::-;38457:22;;;;;1047:53966;;;38402:78;;;;;;;;;;1047:53966;;;;;;;;-1:-1:-1;1047:53966:75;-1:-1:-1;38402:78:75;1047:53966;;;;38402:78;1047:53966;38186:147;38295:26;;;;;38247:75;38295:26;;1047:53966;;38247:75;1047:53966;;38247:75;;;;;;;;;;1047:53966;;;;;;;;38018:159;38140:25;;;;;38080:86;38140:25;38080:86;38140:25;;1047:53966;;;38080:86;;;;;;;;;;1047:53966;;;;;;;;;;;;;;;37618:391;37700:32;;;;;;;37854:144;37700:32;;37854:144;37700:32;;:42;:32;;;;:::i;:42::-;1047:53966;37777:38;:56;:38;:48;:38;;;;:::i;:56::-;1047:53966;;;;37854:144;;;;;;;;;;1047:53966;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37209:400;37286:34;;;;;;;37446:152;37286:34;;37446:152;37286:34;;:44;:34;;;;:::i;:44::-;1047:53966;37367:40;:58;:40;:50;:40;;;;:::i;:58::-;1047:53966;;;;37446:152;;;;;;;;;;1047:53966;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37093:106;1047:53966;;;;;;;;;;;37146:53;;;;;;;;;;;:::i;36943:141::-;1047:53966;;37011:62;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;37011:62;;;1047:53966;;-1:-1:-1;37011:62:75;;-1:-1:-1;1047:53966:75;;-1:-1:-1;;1047:53966:75;;;;-1:-1:-1;37011:62:75;;-1:-1:-1;;1047:53966:75;36768:166;1047:53966;;;;;;;;36831:92;1047:53966;36831:92;1047:53966;;;;;;;;;;36614:145;1047:53966;;36679:69;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;36679:69;;;1047:53966;-1:-1:-1;1047:53966:75;;-1:-1:-1;36679:69:75;;-1:-1:-1;1047:53966:75;;-1:-1:-1;;1047:53966:75;;;;-1:-1:-1;36679:69:75;;-1:-1:-1;1047:53966:75;36440:165;1047:53966;;;;;;;36510:84;1047:53966;;36510:84;1047:53966;;;;36510:84;;;;;;;;;;;:::i;38707:1466::-;;;;39053:49;:30;:40;:30;;;;:::i;:49::-;1047:53966;-1:-1:-1;;;;;;1047:53966:75;;-1:-1:-1;;;39117:40:75;;;39113:106;;-1:-1:-1;;;;39233:41:75;;;39229:170;;-1:-1:-1;;;;39423:25:75;39412:36;;;39408:216;;-1:-1:-1;;;;38515:25:75;-1:-1:-1;;;39637:36:75;;;39633:168;;-1:-1:-1;;;;38357:22:75;-1:-1:-1;39814:33:75;;;39810:142;;-1:-1:-1;;;;39976:41:75;39965:52;;;-1:-1:-1;39961:186:75;;1047:53966;;;;;:::i;39961:186::-;40040:96;40117:18;40040:96;40117:18;;1047:53966;;;40040:96;;;;;;;;;;1047:53966;;;;;;;;;;;;;;;39810:142;39925:15;;;;;1047:53966;;;39870:71;;;;;;;;;;1047:53966;;;;;;;;-1:-1:-1;1047:53966:75;-1:-1:-1;39870:71:75;1047:53966;;;;39870:71;1047:53966;39633:168;1047:53966;;;;-1:-1:-1;39696:94:75;;1047:53966;-1:-1:-1;39696:94:75;;-1:-1:-1;;;;;;1047:53966:75;;;39408:216;39575:24;;;;;;;39471:142;39575:24;;;39471:142;39575:24;;1047:53966;;;;39471:142;;;;;;;;;;;:::i;39229:170::-;1047:53966;;39297:91;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;39297:91;;;1047:53966;;;;;;;;;;;;;;;-1:-1:-1;39297:91:75;;-1:-1:-1;1047:53966:75;;-1:-1:-1;;1047:53966:75;;;;-1:-1:-1;39297:91:75;1047:53966;40179:407;-1:-1:-1;;;;;1047:53966:75;;;;40350:30;;40346:47;;40408:63;1047:53966;40408:29;1047:53966;;;;;;;;;;;;;40408:63;;;;;1047:53966;40408:63;;-1:-1:-1;;40408:63:75;;;40179:407;-1:-1:-1;40404:176:75;;40557:12;-1:-1:-1;40557:12:75;:::o;40408:63::-;;;;;;;;;;;;;;;:::i;:::-;;;;;40346:47;40382:11;;1047:53966;40382:11;:::o;40592:244::-;40703:28;;:33;;:126;;;;40696:133;40592:244;:::o;40703:126::-;40752:77;;;;:::i;41793:160::-;;1047:53966;;;;;;:::i;:::-;41916:1;1047:53966;;;;;;;;;41893:25;1047:53966;;;;;41793:160::o;41959:234::-;42085:1;1047:53966;;42064:22;42060:44;;42115:72;;;41959:234;:::o;42060:44::-;42088:16;42102:1;42088:16;:::o;42364:832::-;;;1047:53966;;:::i;:::-;;;;42919:14;;;;1047:53966;42947:17;42753:290;42978:14;42947:17;;;1047:53966;42978:14;;;;;;:::i;:::-;42753:290;;;;;;;;:::i;:::-;43057:6;;;43053:105;;43168:21;;;;;;;42364:832;:::o;43053:105::-;48278:267;;;;:::i;:::-;42919:14;42271:81;;;;;43202:667;;;;1047:53966;;:::i;:::-;;;;43674:14;43690:17;43674:14;;;1047:53966;43690:17;;1047:53966;43569:148;;;;;;;;;:::i;:::-;43731:6;;;43727:104;;43841:21;;;;;;;43202:667;:::o;43727:104::-;48853:273;;;;:::i;1047:53966::-;;;;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;-1:-1:-1;1047:53966:75;;-1:-1:-1;1047:53966:75;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;43875:2673::-;;;;;;;;;1047:53966;;:::i;:::-;44348:37;1047:53966;44348:47;:37;;;;:::i;:47::-;1047:53966;:::i;:::-;;;;;;-1:-1:-1;;;;;1047:53966:75;44447:20;;;1047:53966;;;;-1:-1:-1;;;;;1047:53966:75;;;;44508:37;;44504:106;;44658:62;;;;:::i;:::-;44734:14;;44730:76;;44820:8;44816:70;;44900:68;44901:67;;;;;;;:::i;44900:68::-;44896:160;;45069:14;;45065:80;;45176:44;:34;;;;:::i;:44::-;1047:53966;45253:58;:40;:50;:40;;;;:::i;:58::-;1047:53966;45325:14;;;;;:54;;;;43875:2673;45321:142;;;;;45564:48;45491:32;45564:38;45491:42;45564:56;45491:32;;;;:::i;:42::-;1047:53966;45564:38;;:::i;:56::-;1047:53966;45634:12;;;;:40;;;;43875:2673;45630:135;;;;45779:25;;;1047:53966;45779:30;;;:71;;;;43875:2673;45775:157;;;44447:20;45945:26;;1047:53966;45974:15;-1:-1:-1;45941:104:75;;46069:22;;;1047:53966;46059:32;;46055:91;;46160:32;;;1047:53966;;;;;;-1:-1:-1;;;;;1047:53966:75;46160:52;46156:139;;46463:28;46333:18;;;;:::i;:::-;46160:32;46305:25;;1047:53966;;46393:32;;;45779:25;46361:29;;:64;46463:28;;1047:53966;46435:25;;:56;1047:53966;46502:39;-1:-1:-1;46502:39:75;43875:2673;:::o;46156:139::-;-1:-1:-1;;;;;;38515:25:75;46228:56;-1:-1:-1;38515:25:75;-1:-1:-1;46228:56:75:o;46055:91::-;-1:-1:-1;;;;;;38357:22:75;46093:53;-1:-1:-1;38357:22:75;-1:-1:-1;;;46093:53:75:o;45941:104::-;-1:-1:-1;;;;;;38201:23:75;45991:54;-1:-1:-1;38201:23:75;-1:-1:-1;;;45991:54:75:o;45775:157::-;-1:-1:-1;;;;;;38033:24:75;45866:55;-1:-1:-1;38033:24:75;-1:-1:-1;;;45866:55:75:o;45779:71::-;45813:37;;;;45779:71;;;45630:135;-1:-1:-1;;;;;;37633:33:75;45690:64;-1:-1:-1;37633:33:75;-1:-1:-1;;;45690:64:75:o;45634:40::-;45650:14;;;;;:::i;:::-;:24;45634:40;;;;45321:142;-1:-1:-1;;;;;;37224:26:75;45395:57;-1:-1:-1;37224:26:75;-1:-1:-1;;;;;;45395:57:75:o;45325:54::-;45343:24;;;;;:::i;:::-;:36;45325:54;;;;;45065:80;-1:-1:-1;;;;;;15652:22:75;45085:60;-1:-1:-1;15652:22:75;-1:-1:-1;;;;;;45085:60:75:o;44896:160::-;-1:-1:-1;;;;;;36958:30:75;44984:61;-1:-1:-1;36958:30:75;-1:-1:-1;;;;;;44984:61:75:o;44816:70::-;-1:-1:-1;;;;;;;;;36783:25:75;44830:56;-1:-1:-1;36783:25:75;-1:-1:-1;;;;;;;;44830:56:75:o;44730:76::-;-1:-1:-1;;;;;;36629:27:75;44750:56;-1:-1:-1;36629:27:75;-1:-1:-1;;;;;;;;;44750:56:75:o;44504:106::-;-1:-1:-1;;;;;;36455:32:75;44547:63;-1:-1:-1;36455:32:75;-1:-1:-1;;;;;;;;;44547:63:75:o;40842:398::-;1047:53966;;-1:-1:-1;;;41069:34:75;;;;;;;;;40842:398;;;41069:34;;1047:53966;41069:34;:::i;:::-;;41041:63;;;;;;;;;;;;:::i;:::-;41118:8;;1047:53966;;41118:28;;40842:398;41114:55;;41069:34;1047:53966;;;41193:27;;1047:53966;;;;41193:27;41069:34;41193:27;1047:53966;;;;:::i;:::-;;;-1:-1:-1;;;;;1047:53966:75;;;;;41193:39;;40842:398::o;41114:55::-;41148:21;;;;;:::o;41118:28::-;1047:53966;41069:34;1047:53966;;41130:16;41118:28;;41246:541;-1:-1:-1;;;;;1047:53966:75;-1:-1:-1;1047:53966:75;;;41521:21;1047:53966;;;;;;;;;;;;;;;;;;;;41246:541;;1047:53966;;;:::i;:::-;;;;;;;;;;;;;;;;41584:34;:85;;;;;41246:541;41580:102;;;1047:53966;;;;;;;41722:26;;;1047:53966;;;;;;;;;41722:26;;;;;;:::i;:::-;1047:53966;41712:37;;1047:53966;;7208:27:74;7251:13;;7246:118;7266:17;;;;;;7381:20;;;;;;;41246:541:75;:::o;7285:3:74:-;1047:53966:75;;;;;;7285:3:74;1047:53966:75;;;;;;;7506:6:74;;;;:78;:6;;;1047:53966:75;;7525:22:74;;;1047:53966:75;;;;;;;;;;7525:22:74;1047:53966:75;;;;7525:22:74;1047:53966:75;7525:22:74;1047:53966:75;7515:33:74;;7506:78;7285:3;;:::i;:::-;7251:13;;;;;;;7506:78;1047:53966:75;;7561:22:74;;;1047:53966:75;;;;;;;;;;7561:22:74;;1047:53966:75;;;;7561:22:74;1047:53966:75;7561:22:74;1047:53966:75;7551:33:74;;7506:78;;41580:102:75;41671:11;;;;;;;1047:53966;41671:11;:::o;41584:85::-;41622:15;;;:47;;41584:85;;;1047:53966;-1:-1:-1;;1047:53966:75;;;;;;;:::o;46554:1431::-;;;;;1047:53966;;:::i;:::-;;;;;46954:14;;46950:80;;47071:49;:30;;:40;:30;;:::i;:49::-;47134:18;;;;1047:53966;47134:23;;;47130:90;;47234:24;;;1047:53966;47234:29;;;:76;;;;46554:1431;47230:163;;;1047:53966;;-1:-1:-1;;;;;1047:53966:75;;;;;47406:45;47402:107;;47523:15;1047:53966;47523:15;;1047:53966;47523:25;47519:84;;47617:30;-1:-1:-1;47613:133:75;;47784:18;47907:21;47784:18;1047:53966;47784:18;;:::i;:::-;47756:25;;;1047:53966;;47844:25;;;1047:53966;:::i;:::-;47812:29;;;:57;47907:21;1047:53966;:::i;:::-;47879:25;;;:49;1047:53966;47939:39;46908:21;47939:39;46554:1431;:::o;47613:133::-;-1:-1:-1;46908:21:75;;-1:-1:-1;;;39976:41:75;47663:72;-1:-1:-1;39976:41:75;-1:-1:-1;47663:72:75:o;47519:84::-;-1:-1:-1;46908:21:75;;-1:-1:-1;;;38357:22:75;47550:53;-1:-1:-1;38357:22:75;-1:-1:-1;;47550:53:75:o;47402:107::-;-1:-1:-1;46908:21:75;;-1:-1:-1;;;38515:25:75;47453:56;-1:-1:-1;38515:25:75;-1:-1:-1;;47453:56:75:o;47230:163::-;-1:-1:-1;46908:21:75;;-1:-1:-1;;;39423:25:75;47326:56;-1:-1:-1;39423:25:75;-1:-1:-1;;;47326:56:75:o;47234:76::-;47295:15;;;-1:-1:-1;47267:43:75;47234:76;;;47130:90;-1:-1:-1;46908:21:75;;-1:-1:-1;;;39244:30:75;47159:61;-1:-1:-1;39244:30:75;-1:-1:-1;;;47159:61:75:o;46950:80::-;-1:-1:-1;46908:21:75;;-1:-1:-1;;;15652:22:75;46970:60;-1:-1:-1;15652:22:75;-1:-1:-1;;;;46970:60:75:o;49149:1216::-;1047:53966;;-1:-1:-1;;;;;1047:53966:75;;;;;49332:37;1047:53966;;;;;;;49149:1216;49394:14;49332:77;49394:14;;;1047:53966;;;;;;;;;;;;49332:77;49410:12;;;49332:91;49410:12;;;1047:53966;;;;;;;;;;;;;;;;;;;;;;;;;;;;49332:91;49424:22;;;1047:53966;;49424:22;;49332:115;;-1:-1:-1;;;;;1047:53966:75;;;49332:115;49462:14;;;;1047:53966;49462:19;;;49458:152;;49623:20;;;1047:53966;49623:25;;;:68;;;49149:1216;49619:248;;-1:-1:-1;;1047:53966:75;;;;-1:-1:-1;;;;;;1047:53966:75;;;;-1:-1:-1;;;;;1047:53966:75;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;49880:47;49876:148;;50037:11;;1047:53966;50037:11;;1047:53966;50052:12;;;;1047:53966;;;50037:27;;;50033:80;;50127:15;;1047:53966;50127:15;1047:53966;;;50127:32;;;;50123:106;;1047:53966;;;;50254:30;50311:47;1047:53966;;;;50254:30;;:::i;:::-;1047:53966;;50311:47;;:::i;50123:106::-;1047:53966;-1:-1:-1;;;50168:61:75;;49623:20;50168:61;;1047:53966;;;;;;;;;;;;;6738:91;50033:80;1047:53966;;-1:-1:-1;;;50073:40:75;;49623:20;50073:40;;1047:53966;;;;;;;;;;;;;6738:91;49876:148;49950:63;1047:53966;;38515:25;;;;;;49950:63;;49623:20;49950:63;;;:::i;49619:248::-;49714:142;1047:53966;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;-1:-1:-1;;;49714:142:75;;1047:53966;;;49623:20;49714:142;;;:::i;49623:68::-;49676:15;;49652:39;;;49623:68;;49458:152;49504:95;1047:53966;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;-1:-1:-1;;;49504:95:75;;-1:-1:-1;;;;;1047:53966:75;;;49504:95;;;1047:53966;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50371:760;;;;50545:15;;;1047:53966;;;50574:30;;;;50570:348;;50946:30;;1047:53966;;;50946:42;;;;:::i;:::-;1047:53966;;;;;;;;;;;;;;;51076:48;1047:53966;;;;51076:48;:::i;:::-;1047:53966;;50371:760::o;1047:53966::-;;;;-1:-1:-1;1047:53966:75;;;;;-1:-1:-1;1047:53966:75;50570:348;-1:-1:-1;50637:30:75;;;;;50851:21;50637:30;;;;;1047:53966;;;;;;;;;;;;;;;50731:12;1047:53966;50731:12;;1047:53966;;;50851:21;1047:53966;50886:21;:::o;51137:1074::-;1047:53966;;;-1:-1:-1;;;51408:36:75;;;51137:1074;;51408:36;;51137:1074;;;;;;1047:53966;-1:-1:-1;;;;;1047:53966:75;;;51408:36;;;1047:53966;;51408:36;51137:1074;;51408:36;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;51408:36:75;;;51137:1074;51458:29;;;;51454:158;;1047:53966;;;;;;;;51650:35;1047:53966;;51650:35;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;51650:35:75;;;51137:1074;-1:-1:-1;;;;;;;;;;;;1047:53966:75;51696:74;;-1:-1:-1;;;;;1047:53966:75;;;51696:74;:132;;;;;-1:-1:-1;1047:53966:75;;;;;;;51696:132;1047:53966;;;;;;;;;;;;;;;51696:132;;;;;:::i;:::-;;;;;;;;;;;51137:1074;1047:53966;;;;;51868:36;1047:53966;;51868:36;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;51868:36:75;;;51137:1074;1047:53966;51942:35;1047:53966;;51942:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;51942:35:75;;;51137:1074;52013:29;;;;;;:::i;:::-;51991:51;;;;:104;;;51137:1074;51987:218;;;;;51137:1074;;;;;;;:::o;51987:218::-;1047:53966;-1:-1:-1;;;52118:76:75;;1047:53966;-1:-1:-1;1047:53966:75;;52118:76;;;;;:::i;51991:104::-;52067:28;;;;;:::i;:::-;52046:49;;51991:104;;;;;51942:35;52013:29;51942:35;;;;;;;;;;-1:-1:-1;51942:35:75;;;;;;:::i;:::-;;;;;51868:36;;;;;;;;;;;;;;;:::i;:::-;;;;;51696:132;;;;;;:::i;:::-;;;;51650:35;;;;;;;;;;;;;;;:::i;:::-;;;;;51454:158;1047:53966;51510:91;1047:53966;;;;;;;6738:91;;;;;;51510;;;;;:::i;51408:36::-;;;;;;;;;;;;;;:::i;:::-;;;;1047:53966;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;52217:2208::-;1047:53966;;52217:2208;;1047:53966;;52217:2208;-1:-1:-1;;;;;1047:53966:75;;;52217:2208;;52567:31;52581:16;1047:53966;52581:16;:::i;:::-;52567:31;:::i;:::-;52657:16;52643:31;52657:16;;;:::i;52643:31::-;52690:13;;52702:1;52705:16;;;;;;1047:53966;;;;;;;;;53118:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;52702:1;53118:56;;;;;;;52702:1;53118:56;;;52685:381;53189:13;52702:1;53204:16;;;;;;-1:-1:-1;;;;;;;;;;;;1047:53966:75;53627:79;;-1:-1:-1;;;;;1047:53966:75;;;53627:79;:139;;;;;;52702:1;1047:53966;;;;;;;;53627:139;1047:53966;;;;;;;;;;;;;;;53627:139;;;;;:::i;:::-;;;;;;;;;;52702:1;53627:139;;;;;53184:433;1047:53966;53818:56;1047:53966;;53818:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;;52702:1;53818:56;;;53184:433;53889:13;52702:1;53904:16;;;;;;52217:2208;;;;;;;;;;;:::o;53889:13::-;53960:5;;;:::i;:::-;54000:35;;;;:::i;:::-;1047:53966;54039:50;:36;;;;:::i;:::-;1047:53966;54078:11;;;;:::i;:::-;1047:53966;54039:50;;:::i;:::-;54000:89;;;;:210;;;53889:13;53979:370;;;1047:53966;;53889:13;;53979:370;54250:84;54291:12;;;;;;;;;54322:11;54291:12;;:::i;54322:11::-;1047:53966;;;-1:-1:-1;;;54250:84:75;;1047:53966;;;54250:84;;;:::i;54000:210::-;54135:16;;54156:54;:40;54179:16;54113:39;54135:16;;;:::i;:::-;54113:39;;:::i;:::-;1047:53966;54179:16;;:::i;:::-;54156:40;;:::i;:::-;1047:53966;54199:11;;;;:::i;:::-;1047:53966;54156:54;;:::i;:::-;54113:97;;54000:210;;;53818:56;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;53627:139;;;;;;:::i;:::-;;;;53189:13;53266:5;;;:::i;:::-;53289:42;;;;:::i;:::-;1047:53966;53334:11;;;;:::i;:::-;1047:53966;-1:-1:-1;53285:262:75;;1047:53966;;;53189:13;;53285:262;53445:12;;;;;53372:160;53445:12;;;53472:42;53445:12;;;;;53459:11;53445:12;;:::i;:::-;1047:53966;53459:11;;:::i;:::-;1047:53966;53472:42;;:::i;:::-;1047:53966;;;-1:-1:-1;;;53372:160:75;;1047:53966;;;53372:160;;;:::i;53118:56::-;;;;;;;;;;;;;:::i;:::-;;;;;52690:13;1047:53966;52761:5;;;;;;:::i;:::-;52780:39;;;;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;52780:39;52833:42;52849:16;52833:42;52849:16;;;:::i;:::-;52833:42;;:::i;:::-;52921:12;;;;:::i;:::-;1047:53966;52889:44;;;;:::i;:::-;1047:53966;52947:48;52963:16;52983:12;;;;:::i;:::-;1047:53966;52963:16;;:::i;:::-;52947:48;;:::i;:::-;1047:53966;;52690:13;;;;;54431:288;54539:16;;;:::i;:::-;54583:1;54586:20;;;;;;54431:288;;;:::o;54608:3::-;-1:-1:-1;;1047:53966:75;;;;;;;;54681:20;54655:16;54608:3;54655:16;;;;:::i;:::-;1047:53966;54681:12;;;;;:::i;:::-;1047:53966;54681:20;;;:::i;:::-;54608:3;:::i;:::-;54571:13;;6405:202:74;6478:12;;6474:37;;1039:2;6525:24;;6521:79;;6405:202;:::o;6521:79::-;1047:53966:75;;;;6772:45:74;;;;6558:42;;;;;1047:53966:75;1039:2:74;1047:53966:75;;;;6558:42:74;6830:254;;;6952:28;;;;6948:130;;6830:254;;;:::o;6948:130::-;1047:53966:75;;;;;7003:64:74;;;;;;;;;1047:53966:75;;;;;;;;;7003:64:74;54725:286:75;54831:16;;;:::i;:::-;54875:1;54878:20;;;;;;54725:286;;;:::o;54900:3::-;-1:-1:-1;;1047:53966:75;;;;;;;;54973:20;54947:16;54900:3;54947:16;;;;:::i;:::-;1047:53966;54973:12;;;;;:::i;54900:3::-;54863:13;","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":1234,"length":20},{"start":1295,"length":20},{"start":1371,"length":20},{"start":1435,"length":20},{"start":1808,"length":20},{"start":1877,"length":20},{"start":4388,"length":20},{"start":4447,"length":20},{"start":4673,"length":20},{"start":4735,"length":20},{"start":4899,"length":20},{"start":4967,"length":20},{"start":6998,"length":20},{"start":7890,"length":20},{"start":10723,"length":20},{"start":10860,"length":20}]}},"immutableReferences":{"41912":[{"start":4283,"length":32}]}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","MAX_CHECKOUT_SIZE()":"a3eaf4d9","acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":"b8e6b50f","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":"2c0c49ee","executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":"59a8a40a","executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":"d65852a6","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectSettlementCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SettlementCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"SettlementDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CHECKOUT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"acceptOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem[]\",\"name\":\"_items\",\"type\":\"tuple[]\"}],\"name\":\"checkout\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutSummary\",\"name\":\"summary\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]\",\"name\":\"items\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutExecution\",\"name\":\"execution\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem\",\"name\":\"_item\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_remainingEth\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_grossAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"executeCheckoutItem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newRemainingEth\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem\",\"name\":\"_item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_grossAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"executeCheckoutPayout\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Direct calls revert because this contract has no standalone marketplace state or escrow. It must run through `RareERC1155Marketplace` so `address(this)`, `msg.sender`, `msg.value`, and storage all resolve to the marketplace proxy.\",\"kind\":\"dev\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert.\"},\"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Settlement-only entrypoint; the marketplace proxy does not expose this selector.\"},\"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])\":{\"details\":\"Settlement-only entrypoint; the marketplace proxy does not expose this selector.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert.\"}},\"title\":\"RareERC1155Settlement\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Accepts all or part of an ERC1155 token offer.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases.\"},\"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Executes one already validated checkout item through a nested delegatecall rollback boundary.\"},\"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Executes payout for a checkout item through a nested rollback boundary.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales.\"}},\"notice\":\"Delegatecall-only settlement module for the ERC1155 marketplace.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155Settlement.sol\":\"RareERC1155Settlement\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350\",\"dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K\"]},\"src/marketplace/IRareERC1155Settlement.sol\":{\"keccak256\":\"0x7ba101acc638ecd2eb5c780e625d6d82d6d00e36aa392f7a60a131cbf25d9d1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33355c9a7d70f3e97c076c71344a088a8a00cf79f5b52f017508cc442903b06c\",\"dweb:/ipfs/QmYowpKw4Y9LJUCeQhSRaLf6LkCTKbwJcTX3pU8hjbaaqA\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155MarketplacePayments.sol\":{\"keccak256\":\"0x53d345e5b50ecbede9f57d71ea952279c61a3a68dbdc3e5437311d26af6385c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6456557338e5ad27b23a06dd75c8e91b024caf7002d57873c12b0419466feae\",\"dweb:/ipfs/QmYTenZhNjk4dMHbU25pphtUueaWQBvdVHU37pPFdj2h5v\"]},\"src/marketplace/RareERC1155MarketplaceStorage.sol\":{\"keccak256\":\"0xe7b315f4c7e8da495637acec91648113ad26cf6cf37a783632baaf81998e012e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f83d84dfbe0c43d476c137eb6c4b63ca88dff555c37123a8fc0e17884885cd5\",\"dweb:/ipfs/QmNT27NUUzmawaa8kpGXFepvBTiRiZtwdt3ozRFCbiEuPp\"]},\"src/marketplace/RareERC1155Settlement.sol\":{\"keccak256\":\"0x3ec005b767a047b10916dadcbba01f65955dee27bd72668818d190d52e0c357e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://95b9482d0e3ea228d945a4ba4807dd34088caf2bf81a03e01316b8203830a1eb\",\"dweb:/ipfs/QmQrRP9mA1oeZWyb6YGsNFXciQSWv3SCJZgnqhJHV4CMpF\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e\",\"dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[],"type":"error","name":"DirectSettlementCallUnsupported"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[],"type":"error","name":"SettlementCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"SettlementDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CHECKOUT_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"acceptOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","name":"_items","type":"tuple[]","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"checkout","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","name":"execution","type":"tuple","components":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","name":"summary","type":"tuple","components":[{"internalType":"uint256","name":"filledCount","type":"uint256"},{"internalType":"uint256","name":"skippedCount","type":"uint256"},{"internalType":"uint256","name":"ethSpent","type":"uint256"},{"internalType":"uint256","name":"ethRefunded","type":"uint256"}]},{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","name":"items","type":"tuple[]","components":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bool","name":"filled","type":"bool"},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8"},{"internalType":"bytes4","name":"reason","type":"bytes4"},{"internalType":"bytes","name":"failureData","type":"bytes"},{"internalType":"uint256","name":"totalPaid","type":"uint256"}]}]}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","name":"_item","type":"tuple","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]},{"internalType":"uint256","name":"_remainingEth","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_grossAmount","type":"uint256"},{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"payable","type":"function","name":"executeCheckoutItem","outputs":[{"internalType":"uint256","name":"totalPaid","type":"uint256"},{"internalType":"uint256","name":"newRemainingEth","type":"uint256"}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","name":"_item","type":"tuple","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_grossAmount","type":"uint256"},{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"payable","type":"function","name":"executeCheckoutPayout"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"}],"devdoc":{"kind":"dev","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert."},"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":{"details":"Settlement-only entrypoint; the marketplace proxy does not expose this selector."},"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":{"details":"Settlement-only entrypoint; the marketplace proxy does not expose this selector."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"notice":"Accepts all or part of an ERC1155 token offer."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"notice":"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases."},"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":{"notice":"Executes one already validated checkout item through a nested delegatecall rollback boundary."},"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":{"notice":"Executes payout for a checkout item through a nested rollback boundary."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155Settlement.sol":"RareERC1155Settlement"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9","urls":["bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350","dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K"],"license":"MIT"},"src/marketplace/IRareERC1155Settlement.sol":{"keccak256":"0x7ba101acc638ecd2eb5c780e625d6d82d6d00e36aa392f7a60a131cbf25d9d1b","urls":["bzz-raw://33355c9a7d70f3e97c076c71344a088a8a00cf79f5b52f017508cc442903b06c","dweb:/ipfs/QmYowpKw4Y9LJUCeQhSRaLf6LkCTKbwJcTX3pU8hjbaaqA"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155MarketplacePayments.sol":{"keccak256":"0x53d345e5b50ecbede9f57d71ea952279c61a3a68dbdc3e5437311d26af6385c8","urls":["bzz-raw://c6456557338e5ad27b23a06dd75c8e91b024caf7002d57873c12b0419466feae","dweb:/ipfs/QmYTenZhNjk4dMHbU25pphtUueaWQBvdVHU37pPFdj2h5v"],"license":"MIT"},"src/marketplace/RareERC1155MarketplaceStorage.sol":{"keccak256":"0xe7b315f4c7e8da495637acec91648113ad26cf6cf37a783632baaf81998e012e","urls":["bzz-raw://4f83d84dfbe0c43d476c137eb6c4b63ca88dff555c37123a8fc0e17884885cd5","dweb:/ipfs/QmNT27NUUzmawaa8kpGXFepvBTiRiZtwdt3ozRFCbiEuPp"],"license":"MIT"},"src/marketplace/RareERC1155Settlement.sol":{"keccak256":"0x3ec005b767a047b10916dadcbba01f65955dee27bd72668818d190d52e0c357e","urls":["bzz-raw://95b9482d0e3ea228d945a4ba4807dd34088caf2bf81a03e01316b8203830a1eb","dweb:/ipfs/QmQrRP9mA1oeZWyb6YGsNFXciQSWv3SCJZgnqhJHV4CMpF"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052","urls":["bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e","dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":75} \ No newline at end of file diff --git a/script/NetworkConfig.s.sol b/script/NetworkConfig.s.sol index 8873a7a..31745c7 100644 --- a/script/NetworkConfig.s.sol +++ b/script/NetworkConfig.s.sol @@ -219,14 +219,14 @@ library NetworkConfig { config.marketUtilsV2 = _addr(0xD159af05670A6A5bBaB9e086717667C75351Ba3e); config.erc20ApprovalManager = _addr(0x4619eB29e84392CE91C27FC936A5c94d1D14b93f); config.erc721ApprovalManager = _addr(0x5fa0a461d3a2Ea3bFDf03e8BD37CAbB4ae84205E); - config.erc1155ApprovalManager = _addr(0x4fAAaBbe326b1984A7B044d16C1d7ed900F3E60a); - config.rareErc1155Settlement = _addr(0x8Ef8e53Efdf59d71dD50083fA756FBD44d3aD3ea); - config.rareErc1155MarketplaceImplementation = _addr(0xb3B1E72173074ecF66c5EAdA96E4b738482BDbe6); - config.rareErc1155MarketplaceProxy = _addr(0x99dc6369541c861c2DF1530103165Bbd3d21dD82); - config.rareErc1155ContractFactory = _addr(0x3BB9bfDA06A2250Db74f1a7B88D8a9C5aC0e2e67); - config.rareErc1155Implementation = _addr(0x39073fEdF84F0cAcA595e94423C82c6Eb35B06fd); + config.erc1155ApprovalManager = _addr(0x6Fe80fd6Dba387D757729853d20B5E3fb77dF6f6); + config.rareErc1155Settlement = _addr(0xACF9874d609B63dEFd9e76f7AAAfe64917F35591); + config.rareErc1155MarketplaceImplementation = _addr(0xD828415C588503B60CcE4d2d20838DbD01c0DbAE); + config.rareErc1155MarketplaceProxy = _addr(0x92f80E8ED2D6ec5501069739Fb26405a31833a0b); + config.rareErc1155ContractFactory = _addr(0xEa895C8D6C53AEe862Dbb65EE04Af80781B53a85); + config.rareErc1155Implementation = _addr(0xbd4F2218bd8fF4A00a615547a338aBFda9cd2528); config.rareErc1155ContractFactoryOwner = _addr(0x3B9C3C5EA16E7d3c9C0bb293a549aFa4066dc162); - config.rareErc1155ContractFactoryDefaultMinter = _addr(0x99dc6369541c861c2DF1530103165Bbd3d21dD82); + config.rareErc1155ContractFactoryDefaultMinter = _addr(0x92f80E8ED2D6ec5501069739Fb26405a31833a0b); config.approvalManagerAdmin = _addr(0x3B9C3C5EA16E7d3c9C0bb293a549aFa4066dc162); config.rareBatchAuctionHouseProxy = _addr(0x293AE7701A7830B1d38A7608EdF86A106d9E2645); config.rareBatchAuctionHouseLogic = _addr(0xc0D9CB069d7CfFb963A1527968bF28370A978BB6); diff --git a/src/marketplace/IRareERC1155Marketplace.sol b/src/marketplace/IRareERC1155Marketplace.sol index 5ae3612..845a3aa 100644 --- a/src/marketplace/IRareERC1155Marketplace.sol +++ b/src/marketplace/IRareERC1155Marketplace.sol @@ -99,8 +99,8 @@ interface IRareERC1155Marketplace is IRareERC1155MarketplaceTypes { ) external; /// @notice Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases. - /// @dev Validation-only failures skip individual items. At least one item must fill. - function checkout(CheckoutItem[] calldata _items) external payable returns (CheckoutSummary memory); + /// @dev Best-effort execution returns one result per item. All-skipped checkouts complete successfully. + function checkout(CheckoutItem[] calldata _items) external payable returns (CheckoutExecution memory); function getDirectSaleConfig(address _contractAddress, uint256 _tokenId) external diff --git a/src/marketplace/IRareERC1155MarketplaceTypes.sol b/src/marketplace/IRareERC1155MarketplaceTypes.sol index 7c35f63..22360ef 100644 --- a/src/marketplace/IRareERC1155MarketplaceTypes.sol +++ b/src/marketplace/IRareERC1155MarketplaceTypes.sol @@ -40,7 +40,9 @@ interface IRareERC1155MarketplaceTypes { address currencyAddress; uint256 price; uint256 quantity; + uint256 initialQuantity; uint256 marketplaceFeeRemaining; + uint256 marketplaceFeeTotal; uint256 expirationTime; } @@ -94,6 +96,15 @@ interface IRareERC1155MarketplaceTypes { LISTING_BUY } + enum CheckoutFailureStage { + NONE, + VALIDATION, + PAYMENT_COLLECTION, + MINT, + TRANSFER, + PAYOUT + } + /// @notice Buyer cart item for primary mint sales and secondary fixed-price listings. /// @dev `seller` is only used for `LISTING_BUY`; `DIRECT_SALE_MINT` resolves the seller from its sale config. /// `itemKind` uses `CheckoutItemKind` values and is kept as uint8 so unknown future kinds can be skipped. @@ -115,6 +126,27 @@ interface IRareERC1155MarketplaceTypes { uint256 ethRefunded; } + struct CheckoutItemResult { + uint256 itemIndex; + uint8 itemKind; + address contractAddress; + uint256 tokenId; + address seller; + address currencyAddress; + uint256 price; + uint256 quantity; + bool filled; + CheckoutFailureStage failureStage; + bytes4 reason; + bytes failureData; + uint256 totalPaid; + } + + struct CheckoutExecution { + CheckoutSummary summary; + CheckoutItemResult[] items; + } + event MarketplaceDependencyUpdated(bytes32 indexed field, address indexed dependency); event ContractPausedUpdated(bool isPaused); @@ -202,26 +234,22 @@ interface IRareERC1155MarketplaceTypes { uint256 quantity ); - event CheckoutItemFilled( + event CheckoutItemProcessed( uint256 indexed itemIndex, uint8 indexed itemKind, address indexed contractAddress, uint256 tokenId, address seller, - address currency, + address currencyAddress, uint256 price, uint256 quantity, + bool filled, + CheckoutFailureStage failureStage, + bytes4 reason, + bytes failureData, uint256 totalPaid ); - event CheckoutItemSkipped( - uint256 indexed itemIndex, - uint8 indexed itemKind, - address indexed contractAddress, - uint256 tokenId, - bytes4 reason - ); - event CheckoutCompleted( address indexed buyer, uint256 filledCount, uint256 skippedCount, uint256 ethSpent, uint256 ethRefunded ); @@ -251,6 +279,7 @@ interface IRareERC1155MarketplaceTypes { error CurrencyMismatch(address _suppliedCurrency, address _configuredCurrency); error SalePriceCannotBeZero(); error SalePriceExpirationInvalid(uint256 _expirationTime, uint256 _currentTime); + error AllowListEndTimestampInvalid(uint256 _endTimestamp, uint256 _currentTime); error InvalidERC1155Contract(address _contractAddress); error SelfPurchaseUnsupported(address _seller); error InsufficientTokenBalance( @@ -267,6 +296,7 @@ interface IRareERC1155MarketplaceTypes { error InvalidERC1155Transfer( address _contractAddress, uint256 _tokenId, address _seller, address _buyer, uint256 _quantity ); + error InvalidERC1155Mint(address _contractAddress, uint256 _tokenId, address _buyer, uint256 _quantity); error AddressNotAllowlisted(address _account); error ContractHasNoOwner(address _contractAddress); error ApprovalManagerCannotBeZero(); @@ -275,7 +305,7 @@ interface IRareERC1155MarketplaceTypes { error DirectSettlementCallUnsupported(); error SettlementDelegateCallFailed(bytes _revertData); error UnsupportedCheckoutItemKind(uint8 _itemKind); - error CheckoutRequiresSuccessfulFill(); + error CheckoutItemExecutionFailed(CheckoutFailureStage _stage, bytes _failureData); error InsufficientCheckoutETH(uint256 _requiredAmount, uint256 _availableAmount); error InsufficientCheckoutERC20Balance(address _currencyAddress, uint256 _requiredAmount, uint256 _availableAmount); error InsufficientCheckoutERC20Allowance( diff --git a/src/marketplace/IRareERC1155Settlement.sol b/src/marketplace/IRareERC1155Settlement.sol index ae055c8..de998dc 100644 --- a/src/marketplace/IRareERC1155Settlement.sol +++ b/src/marketplace/IRareERC1155Settlement.sol @@ -37,5 +37,28 @@ interface IRareERC1155Settlement is IRareERC1155MarketplaceTypes { /// @notice Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases. /// @dev Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert. - function checkout(CheckoutItem[] calldata _items) external payable returns (CheckoutSummary memory); + function checkout(CheckoutItem[] calldata _items) external payable returns (CheckoutExecution memory); + + /// @notice Executes one already validated checkout item through a nested delegatecall rollback boundary. + /// @dev Settlement-only entrypoint; the marketplace proxy does not expose this selector. + function executeCheckoutItem( + CheckoutItem calldata _item, + uint256 _remainingEth, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external payable returns (uint256 totalPaid, uint256 newRemainingEth); + + /// @notice Executes payout for a checkout item through a nested rollback boundary. + /// @dev Settlement-only entrypoint; the marketplace proxy does not expose this selector. + function executeCheckoutPayout( + CheckoutItem calldata _item, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external payable; } diff --git a/src/marketplace/RareERC1155Marketplace.sol b/src/marketplace/RareERC1155Marketplace.sol index 77b89bf..6b66311 100644 --- a/src/marketplace/RareERC1155Marketplace.sol +++ b/src/marketplace/RareERC1155Marketplace.sol @@ -97,6 +97,7 @@ contract RareERC1155Marketplace is address payable[] calldata _splitRecipients, uint8[] calldata _splitRatios ) external nonReentrant notPaused { + _validateERC1155Contract(_contractAddress); if (!_isContractOwner(_contractAddress, msg.sender)) { revert NotContractOwner(_contractAddress, msg.sender); } @@ -144,10 +145,17 @@ contract RareERC1155Marketplace is for (uint256 i = 0; i < _requests.length; i++) { uint256 tokenId = _requests[i].tokenId; + bytes32 root = _requests[i].root; + uint256 endTimestamp = _requests[i].endTimestamp; + _revertIfTokenNotFound(_contractAddress, tokenId); + if (root != bytes32(0) && endTimestamp <= block.timestamp) { + revert AllowListEndTimestampInvalid(endTimestamp, block.timestamp); + } + _marketplaceStorage().tokenAllowlistRoots[_contractAddress][tokenId] = - AllowListConfig({root: _requests[i].root, endTimestamp: _requests[i].endTimestamp}); - emit SetTokenAllowListConfig(_contractAddress, tokenId, _requests[i].root, _requests[i].endTimestamp); + AllowListConfig({root: root, endTimestamp: endTimestamp}); + emit SetTokenAllowListConfig(_contractAddress, tokenId, root, endTimestamp); } } @@ -284,7 +292,9 @@ contract RareERC1155Marketplace is currencyAddress: _currencyAddress, price: _price, quantity: _quantity, + initialQuantity: _quantity, marketplaceFeeRemaining: marketplaceFee, + marketplaceFeeTotal: marketplaceFee, expirationTime: _expirationTime }); @@ -381,11 +391,11 @@ contract RareERC1155Marketplace is payable nonReentrant notPaused - returns (CheckoutSummary memory) + returns (CheckoutExecution memory) { return abi.decode( _delegateToSettlement(abi.encodeWithSelector(IRareERC1155Settlement.checkout.selector, _items)), - (CheckoutSummary) + (CheckoutExecution) ); } diff --git a/src/marketplace/RareERC1155MarketplacePayments.sol b/src/marketplace/RareERC1155MarketplacePayments.sol index 495ea63..3020e86 100644 --- a/src/marketplace/RareERC1155MarketplacePayments.sol +++ b/src/marketplace/RareERC1155MarketplacePayments.sol @@ -168,6 +168,24 @@ library RareERC1155MarketplacePayments { amounts[0] = _marketplaceFee - stakingFee; amounts[1] = stakingFee; + if (amounts[0] == 0) { + address payable[] memory stakingRecipients = new address payable[](1); + stakingRecipients[0] = recipients[1]; + uint256[] memory stakingAmounts = new uint256[](1); + stakingAmounts[0] = amounts[1]; + performPayouts(_config, _currencyAddress, _marketplaceFee, stakingRecipients, stakingAmounts); + return; + } + + if (amounts[1] == 0) { + address payable[] memory marketplaceRecipients = new address payable[](1); + marketplaceRecipients[0] = recipients[0]; + uint256[] memory marketplaceAmounts = new uint256[](1); + marketplaceAmounts[0] = amounts[0]; + performPayouts(_config, _currencyAddress, _marketplaceFee, marketplaceRecipients, marketplaceAmounts); + return; + } + performPayouts(_config, _currencyAddress, _marketplaceFee, recipients, amounts); } @@ -250,6 +268,10 @@ library RareERC1155MarketplacePayments { } if (totalAmount != _amount) revert IRareERC1155MarketplaceTypes.PayoutTotalMismatch(_amount, totalAmount); + if (_amount == 0) { + return; + } + if (_currencyAddress == address(0)) { (bool success, bytes memory data) = address(_config.payments).call{value: _amount}( abi.encodeWithSelector(_config.payments.payout.selector, _recipients, _amounts) @@ -260,6 +282,9 @@ library RareERC1155MarketplacePayments { IERC20 erc20 = IERC20(_currencyAddress); for (uint256 i = 0; i < _recipients.length; i++) { + if (_amounts[i] == 0) { + continue; + } erc20.safeTransfer(_recipients[i], _amounts[i]); } } diff --git a/src/marketplace/RareERC1155Settlement.sol b/src/marketplace/RareERC1155Settlement.sol index f245ad1..b50b13a 100644 --- a/src/marketplace/RareERC1155Settlement.sol +++ b/src/marketplace/RareERC1155Settlement.sol @@ -2,14 +2,15 @@ pragma solidity 0.8.18; import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; -import {IERC20} from "openzeppelin-contracts/token/ERC20/IERC20.sol"; import {ERC165Checker} from "openzeppelin-contracts/utils/introspection/ERC165Checker.sol"; +import {Math} from "openzeppelin-contracts/utils/math/Math.sol"; import {IRareERC1155} from "../token/ERC1155/IRareERC1155.sol"; import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; import {IRareERC1155Settlement} from "./IRareERC1155Settlement.sol"; import {RareERC1155MarketplacePayments} from "./RareERC1155MarketplacePayments.sol"; import {RareERC1155MarketplaceStorage} from "./RareERC1155MarketplaceStorage.sol"; +import {RareERC1155SettlementCheckoutUtils} from "./RareERC1155SettlementCheckoutUtils.sol"; /// @author SuperRare Labs Inc. /// @title RareERC1155Settlement @@ -25,6 +26,7 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace uint256 tokenId; uint256 grossAmount; uint256 marketplaceFee; + uint256 maxMints; address seller; address payable[] splitRecipients; uint8[] splitRatios; @@ -51,10 +53,17 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace address seller; uint256 grossAmount; uint256 marketplaceFee; + uint256 maxMints; address payable[] splitRecipients; uint8[] splitRatios; } + struct CheckoutDirectSaleMintAggregate { + address contractAddress; + uint256 tokenId; + uint256 quantity; + } + modifier onlyDelegateCall() { _onlyDelegateCall(); _; @@ -72,6 +81,7 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace _validateMintRequests(_requests); MarketplaceStorage storage $ = _marketplaceStorage(); $.marketConfig.checkIfCurrencyIsApproved(_currencyAddress); + _validateERC1155Contract(_contractAddress); uint256 requestCount = _requests.length; uint256[] memory tokenIds = new uint256[](requestCount); @@ -114,7 +124,7 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace } } - IRareERC1155(_contractAddress).mintBatchTo(msg.sender, tokenIds, amounts); + _mintBatchToWithBalanceCheck(_contractAddress, msg.sender, tokenIds, amounts); for (uint256 i = 0; i < requestCount;) { if (payoutContexts[i].grossAmount != 0) { @@ -261,43 +271,175 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace external payable onlyDelegateCall - returns (CheckoutSummary memory summary) + returns (CheckoutExecution memory execution) { _validateCheckoutSize(_items.length); + execution.items = new CheckoutItemResult[](_items.length); + MarketplaceStorage storage $ = _marketplaceStorage(); + CheckoutDirectSaleMintAggregate[] memory directSaleMintAggregates = + new CheckoutDirectSaleMintAggregate[](_items.length); + uint256 directSaleMintAggregateCount = 0; uint256 remainingEth = msg.value; for (uint256 i = 0; i < _items.length;) { - (bool filled, bytes4 reason, uint256 totalPaid, uint256 newRemainingEth) = - _checkoutItem(i, _items[i], remainingEth); - + (CheckoutItemResult memory result, bool filled, uint256 newRemainingEth) = _processCheckoutItem( + $, _items[i], i, remainingEth, directSaleMintAggregates, directSaleMintAggregateCount + ); if (filled) { remainingEth = newRemainingEth; - summary.filledCount += 1; - if (_items[i].currencyAddress == address(0)) { - summary.ethSpent += totalPaid; - } + directSaleMintAggregateCount = + _recordCheckoutDirectSaleMint(directSaleMintAggregates, directSaleMintAggregateCount, _items[i]); + execution.summary.filledCount += 1; + if (_items[i].currencyAddress == address(0)) execution.summary.ethSpent += result.totalPaid; } else { - summary.skippedCount += 1; - emit CheckoutItemSkipped(i, _items[i].itemKind, _items[i].contractAddress, _items[i].tokenId, reason); + execution.summary.skippedCount += 1; } + execution.items[i] = result; + _emitCheckoutItemProcessed(result); + unchecked { ++i; } } - if (summary.filledCount == 0) revert CheckoutRequiresSuccessfulFill(); - - summary.ethRefunded = remainingEth; + execution.summary.ethRefunded = remainingEth; if (remainingEth != 0) { - _marketplaceStorage().marketConfig.refund(address(0), payable(msg.sender), remainingEth); + $.marketConfig.refund(address(0), payable(msg.sender), remainingEth); } emit CheckoutCompleted( - msg.sender, summary.filledCount, summary.skippedCount, summary.ethSpent, summary.ethRefunded + msg.sender, + execution.summary.filledCount, + execution.summary.skippedCount, + execution.summary.ethSpent, + execution.summary.ethRefunded ); } + function _processCheckoutItem( + MarketplaceStorage storage $, + CheckoutItem calldata _item, + uint256 _itemIndex, + uint256 _remainingEth, + CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, + uint256 _directSaleMintAggregateCount + ) internal returns (CheckoutItemResult memory result, bool filled, uint256 newRemainingEth) { + result = _baseCheckoutItemResult(_itemIndex, _item); + newRemainingEth = _remainingEth; + + (bool valid, bytes memory failureData, CheckoutFillContext memory context) = _validateCheckoutItem($, _item); + if (context.seller != address(0)) result.seller = context.seller; + if (!valid) { + _setCheckoutItemFailure(result, CheckoutFailureStage.VALIDATION, failureData); + return (result, false, newRemainingEth); + } + + bytes memory aggregateFailureData = _checkoutDirectSaleMintAggregateFailureData( + _item, _directSaleMintAggregates, _directSaleMintAggregateCount, context.maxMints + ); + if (aggregateFailureData.length != 0) { + _setCheckoutItemFailure(result, CheckoutFailureStage.VALIDATION, aggregateFailureData); + return (result, false, newRemainingEth); + } + + (bool success, bytes memory data) = + $.settlement.delegatecall(_checkoutItemCallData(_item, _remainingEth, context)); + if (!success) { + (CheckoutFailureStage stage, bytes memory executionFailureData) = _checkoutExecutionFailure(data); + _setCheckoutItemFailure(result, stage, executionFailureData); + return (result, false, newRemainingEth); + } + + (uint256 totalPaid, uint256 nextRemainingEth) = abi.decode(data, (uint256, uint256)); + result.filled = true; + result.totalPaid = totalPaid; + return (result, true, nextRemainingEth); + } + + function _checkoutItemCallData( + CheckoutItem calldata _item, + uint256 _remainingEth, + CheckoutFillContext memory _context + ) internal pure returns (bytes memory) { + return abi.encodeWithSelector( + IRareERC1155Settlement.executeCheckoutItem.selector, + _item, + _remainingEth, + _context.seller, + _context.grossAmount, + _context.marketplaceFee, + _context.splitRecipients, + _context.splitRatios + ); + } + + function executeCheckoutItem( + CheckoutItem calldata _item, + uint256 _remainingEth, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external payable onlyDelegateCall returns (uint256 totalPaid, uint256 newRemainingEth) { + if (_item.itemKind == uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { + return _executeCheckoutDirectSaleMint( + _item, _remainingEth, _seller, _grossAmount, _marketplaceFee, _splitRecipients, _splitRatios + ); + } + if (_item.itemKind == uint8(CheckoutItemKind.LISTING_BUY)) { + return _executeCheckoutListingBuy( + _item, _remainingEth, _seller, _grossAmount, _marketplaceFee, _splitRecipients, _splitRatios + ); + } + + revert CheckoutItemExecutionFailed( + CheckoutFailureStage.VALIDATION, + abi.encodeWithSelector(UnsupportedCheckoutItemKind.selector, _item.itemKind) + ); + } + + function executeCheckoutPayout( + CheckoutItem calldata _item, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external payable onlyDelegateCall { + MarketplaceStorage storage $ = _marketplaceStorage(); + if (_item.itemKind == uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { + $.marketConfig + .payoutPrimary( + _item.contractAddress, + _item.currencyAddress, + _grossAmount, + _marketplaceFee, + _seller, + _splitRecipients, + _splitRatios + ); + return; + } + if (_item.itemKind == uint8(CheckoutItemKind.LISTING_BUY)) { + $.marketConfig + .payoutSecondary( + _item.contractAddress, + _item.tokenId, + _item.currencyAddress, + _grossAmount, + _marketplaceFee, + _seller, + _splitRecipients, + _splitRatios + ); + return; + } + + revert UnsupportedCheckoutItemKind(_item.itemKind); + } + function _acceptOffer( AcceptOfferInput memory _input, address payable[] calldata _splitRecipients, @@ -344,61 +486,24 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace ); } - function _checkoutItem(uint256 _itemIndex, CheckoutItem calldata _item, uint256 _remainingEth) - internal - returns (bool filled, bytes4 reason, uint256 totalPaid, uint256 newRemainingEth) - { - if (_item.itemKind == uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { - return _checkoutDirectSaleMint(_itemIndex, _item, _remainingEth); - } - if (_item.itemKind == uint8(CheckoutItemKind.LISTING_BUY)) { - return _checkoutListingBuy(_itemIndex, _item, _remainingEth); - } - - return (false, UnsupportedCheckoutItemKind.selector, 0, _remainingEth); - } - - function _checkoutDirectSaleMint(uint256 _itemIndex, CheckoutItem calldata _item, uint256 _remainingEth) - internal - returns (bool filled, bytes4 reason, uint256 totalPaid, uint256 newRemainingEth) - { + function _executeCheckoutDirectSaleMint( + CheckoutItem calldata _item, + uint256 _remainingEth, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) internal returns (uint256 totalPaid, uint256 newRemainingEth) { newRemainingEth = _remainingEth; MarketplaceStorage storage $ = _marketplaceStorage(); - if (!_checkoutCurrencyApproved($.marketConfig, _item.currencyAddress)) { - return (false, CurrencyNotApproved.selector, 0, _remainingEth); - } - - (bool valid, bytes4 skipReason, PrimaryPayoutContext memory payoutContext) = _checkMintDirectSaleRequest( - $, - _item.contractAddress, - _item.currencyAddress, - msg.sender, - _item.tokenId, - _item.price, - _item.quantity, - _item.proof, - NotContractOwner.selector + totalPaid = _grossAmount + _marketplaceFee; + bytes memory paymentFailureData = RareERC1155SettlementCheckoutUtils.checkoutPaymentFailureData( + $.marketConfig, _item.currencyAddress, totalPaid, _remainingEth ); - if (!valid) { - return (false, skipReason, 0, _remainingEth); - } - - CheckoutFillContext memory context = CheckoutFillContext({ - seller: payoutContext.seller, - grossAmount: payoutContext.grossAmount, - marketplaceFee: 0, - splitRecipients: payoutContext.splitRecipients, - splitRatios: payoutContext.splitRatios - }); - if (context.grossAmount != 0) { - context.marketplaceFee = $.marketConfig.marketplaceSettings.calculateMarketplaceFee(context.grossAmount); - } - - totalPaid = context.grossAmount + context.marketplaceFee; - reason = _validateCheckoutPayment($.marketConfig, _item.currencyAddress, totalPaid, _remainingEth); - if (reason != bytes4(0)) { - return (false, reason, 0, _remainingEth); + if (paymentFailureData.length != 0) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYMENT_COLLECTION, paymentFailureData); } bool mintLimitEnabled = $.tokenMintLimit[_item.contractAddress][_item.tokenId] > 0; @@ -410,111 +515,71 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace $.tokenTxsPerAddress[_item.contractAddress][_item.tokenId][msg.sender] += 1; } - try IRareERC1155(_item.contractAddress) - .mintBatchTo(msg.sender, _singleUintArray(_item.tokenId), _singleUintArray(_item.quantity)) {} - catch (bytes memory revertData) { - if (mintLimitEnabled) { - $.tokenMintsPerAddress[_item.contractAddress][_item.tokenId][msg.sender] -= _item.quantity; - } - if (txLimitEnabled) { - $.tokenTxsPerAddress[_item.contractAddress][_item.tokenId][msg.sender] -= 1; - } - return (false, _revertSelector(revertData), 0, _remainingEth); - } - if (_item.currencyAddress == address(0)) { newRemainingEth = _remainingEth - totalPaid; } else { - _collectCheckoutErc20($.marketConfig, _item.currencyAddress, totalPaid); + RareERC1155SettlementCheckoutUtils.collectCheckoutErc20($.marketConfig, _item.currencyAddress, totalPaid); } - if (context.grossAmount != 0) { - $.marketConfig - .payoutPrimary( - _item.contractAddress, - _item.currencyAddress, - context.grossAmount, - context.marketplaceFee, - context.seller, - context.splitRecipients, - context.splitRatios - ); + RareERC1155SettlementCheckoutUtils.checkoutMintBatchToWithBalanceCheck( + _item.contractAddress, msg.sender, _singleUintArray(_item.tokenId), _singleUintArray(_item.quantity) + ); + + if (_grossAmount != 0) { + _executeCheckoutPayout($, _item, _seller, _grossAmount, _marketplaceFee, _splitRecipients, _splitRatios); } emit MintDirectSale( _item.contractAddress, _item.tokenId, msg.sender, - context.seller, + _seller, _item.quantity, _item.currencyAddress, _item.price ); - emit CheckoutItemFilled( - _itemIndex, - _item.itemKind, - _item.contractAddress, - _item.tokenId, - context.seller, - _item.currencyAddress, - _item.price, - _item.quantity, - totalPaid - ); - - return (true, bytes4(0), totalPaid, newRemainingEth); } - function _checkoutListingBuy(uint256 _itemIndex, CheckoutItem calldata _item, uint256 _remainingEth) - internal - returns (bool filled, bytes4 reason, uint256 totalPaid, uint256 newRemainingEth) - { + function _executeCheckoutListingBuy( + CheckoutItem calldata _item, + uint256 _remainingEth, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) internal returns (uint256 totalPaid, uint256 newRemainingEth) { newRemainingEth = _remainingEth; MarketplaceStorage storage $ = _marketplaceStorage(); - if (!_checkoutCurrencyApproved($.marketConfig, _item.currencyAddress)) { - return (false, CurrencyNotApproved.selector, 0, _remainingEth); - } - - (bool valid, bytes4 skipReason, CheckoutFillContext memory context) = _validateCheckoutListingBuy($, _item); - if (!valid) { - return (false, skipReason, 0, _remainingEth); - } - - totalPaid = context.grossAmount + context.marketplaceFee; - reason = _validateCheckoutPayment($.marketConfig, _item.currencyAddress, totalPaid, _remainingEth); - if (reason != bytes4(0)) { - return (false, reason, 0, _remainingEth); + totalPaid = _grossAmount + _marketplaceFee; + bytes memory paymentFailureData = RareERC1155SettlementCheckoutUtils.checkoutPaymentFailureData( + $.marketConfig, _item.currencyAddress, totalPaid, _remainingEth + ); + if (paymentFailureData.length != 0) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYMENT_COLLECTION, paymentFailureData); } if (_item.currencyAddress == address(0)) { newRemainingEth = _remainingEth - totalPaid; } else { - _collectCheckoutErc20($.marketConfig, _item.currencyAddress, totalPaid); + RareERC1155SettlementCheckoutUtils.collectCheckoutErc20($.marketConfig, _item.currencyAddress, totalPaid); } - SalePrice storage salePrice = $.salePrices[_item.contractAddress][_item.tokenId][_item.seller]; + SalePrice storage salePrice = $.salePrices[_item.contractAddress][_item.tokenId][_seller]; salePrice.quantity -= _item.quantity; if (salePrice.quantity == 0) { - delete $.salePrices[_item.contractAddress][_item.tokenId][_item.seller]; + delete $.salePrices[_item.contractAddress][_item.tokenId][_seller]; } - _safeTransferFrom(_item.contractAddress, _item.seller, msg.sender, _item.tokenId, _item.quantity); + RareERC1155SettlementCheckoutUtils.checkoutSafeTransferFrom( + $.erc1155ApprovalManager, _item.contractAddress, _seller, msg.sender, _item.tokenId, _item.quantity + ); - $.marketConfig - .payoutSecondary( - _item.contractAddress, - _item.tokenId, - _item.currencyAddress, - context.grossAmount, - context.marketplaceFee, - _item.seller, - context.splitRecipients, - context.splitRatios - ); + _executeCheckoutPayout($, _item, _seller, _grossAmount, _marketplaceFee, _splitRecipients, _splitRatios); emit Sold( - _item.seller, + _seller, msg.sender, _item.contractAddress, _item.tokenId, @@ -522,102 +587,439 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace _item.price, _item.quantity ); - emit CheckoutItemFilled( - _itemIndex, - _item.itemKind, + } + + function _validateCheckoutItem(MarketplaceStorage storage $, CheckoutItem calldata _item) + internal + view + returns (bool valid, bytes memory failureData, CheckoutFillContext memory context) + { + if (_item.itemKind == uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { + return _validateCheckoutDirectSaleMint($, _item); + } + if (_item.itemKind == uint8(CheckoutItemKind.LISTING_BUY)) { + return _validateCheckoutListingBuy($, _item); + } + + return (false, abi.encodeWithSelector(UnsupportedCheckoutItemKind.selector, _item.itemKind), context); + } + + function _validateCheckoutDirectSaleMint(MarketplaceStorage storage $, CheckoutItem calldata _item) + internal + view + returns (bool valid, bytes memory failureData, CheckoutFillContext memory context) + { + if (!_checkoutCurrencyApproved($.marketConfig, _item.currencyAddress)) { + return (false, abi.encodeWithSelector(CurrencyNotApproved.selector, _item.currencyAddress), context); + } + if (!_checkoutValidErc1155Contract(_item.contractAddress)) { + return (false, abi.encodeWithSelector(InvalidERC1155Contract.selector, _item.contractAddress), context); + } + + (bool requestValid, bytes4 reason, PrimaryPayoutContext memory payoutContext) = _checkMintDirectSaleRequest( + $, _item.contractAddress, - _item.tokenId, - _item.seller, _item.currencyAddress, + msg.sender, + _item.tokenId, _item.price, _item.quantity, - totalPaid + _item.proof, + ContractHasNoOwner.selector ); + context.seller = payoutContext.seller; + if (!requestValid) { + return ( + false, + _mintFailureData( + reason, + $, + _item.contractAddress, + _item.currencyAddress, + msg.sender, + _item.tokenId, + _item.price, + _item.quantity + ), + context + ); + } + + context.grossAmount = payoutContext.grossAmount; + if (context.grossAmount != 0) { + context.marketplaceFee = $.marketConfig.marketplaceSettings.calculateMarketplaceFee(context.grossAmount); + } + context.splitRecipients = payoutContext.splitRecipients; + context.splitRatios = payoutContext.splitRatios; + context.maxMints = payoutContext.maxMints; - return (true, bytes4(0), totalPaid, newRemainingEth); + return (true, "", context); } function _validateCheckoutListingBuy(MarketplaceStorage storage $, CheckoutItem calldata _item) internal view - returns (bool valid, bytes4 reason, CheckoutFillContext memory context) + returns (bool valid, bytes memory failureData, CheckoutFillContext memory context) { - if (msg.sender == _item.seller) return (false, SelfPurchaseUnsupported.selector, context); + context.seller = _item.seller; + if (msg.sender == _item.seller) { + return (false, abi.encodeWithSelector(SelfPurchaseUnsupported.selector, _item.seller), context); + } + if (!_checkoutCurrencyApproved($.marketConfig, _item.currencyAddress)) { + return (false, abi.encodeWithSelector(CurrencyNotApproved.selector, _item.currencyAddress), context); + } if (!_checkoutValidErc1155Contract(_item.contractAddress)) { - return (false, InvalidERC1155Contract.selector, context); + return (false, abi.encodeWithSelector(InvalidERC1155Contract.selector, _item.contractAddress), context); } SecondaryPayoutContext memory payoutContext; + bytes4 reason; (valid, reason, payoutContext) = _checkSecondaryBuyRequest( $, _item.contractAddress, _item.seller, _item.currencyAddress, _item.tokenId, _item.price, _item.quantity ); - if (!valid) return (false, reason, context); + if (!valid) { + return ( + false, + _secondaryFailureData( + reason, + $, + _item.contractAddress, + _item.seller, + _item.currencyAddress, + _item.tokenId, + _item.price, + _item.quantity + ), + context + ); + } IERC1155 erc1155 = IERC1155(_item.contractAddress); try erc1155.isApprovedForAll(_item.seller, address($.erc1155ApprovalManager)) returns (bool isApproved) { - if (!isApproved) return (false, MarketplaceNotApproved.selector, context); + if (!isApproved) { + return ( + false, + abi.encodeWithSelector(MarketplaceNotApproved.selector, _item.seller, _item.contractAddress), + context + ); + } } catch { - return (false, MarketplaceNotApproved.selector, context); + return ( + false, + abi.encodeWithSelector(MarketplaceNotApproved.selector, _item.seller, _item.contractAddress), + context + ); } try erc1155.balanceOf(_item.seller, _item.tokenId) returns (uint256 sellerBalance) { - if (sellerBalance < _item.quantity) return (false, InsufficientTokenBalance.selector, context); + if (sellerBalance < _item.quantity) { + return ( + false, + abi.encodeWithSelector( + InsufficientTokenBalance.selector, + _item.seller, + _item.contractAddress, + _item.tokenId, + _item.quantity, + sellerBalance + ), + context + ); + } } catch { - return (false, InsufficientTokenBalance.selector, context); + return ( + false, + abi.encodeWithSelector( + InsufficientTokenBalance.selector, + _item.seller, + _item.contractAddress, + _item.tokenId, + _item.quantity, + 0 + ), + context + ); } - context = CheckoutFillContext({ + context.grossAmount = payoutContext.grossAmount; + context.marketplaceFee = $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContext.grossAmount); + context.splitRecipients = payoutContext.splitRecipients; + context.splitRatios = payoutContext.splitRatios; + + return (true, "", context); + } + + function _executeCheckoutPayout( + MarketplaceStorage storage $, + CheckoutItem calldata _item, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) internal { + (bool success, bytes memory data) = $.settlement + .delegatecall( + abi.encodeWithSelector( + IRareERC1155Settlement.executeCheckoutPayout.selector, + _item, + _seller, + _grossAmount, + _marketplaceFee, + _splitRecipients, + _splitRatios + ) + ); + if (!success) revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYOUT, data); + } + + function _baseCheckoutItemResult(uint256 _itemIndex, CheckoutItem calldata _item) + internal + pure + returns (CheckoutItemResult memory result) + { + result = CheckoutItemResult({ + itemIndex: _itemIndex, + itemKind: _item.itemKind, + contractAddress: _item.contractAddress, + tokenId: _item.tokenId, seller: _item.seller, - grossAmount: payoutContext.grossAmount, - marketplaceFee: $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContext.grossAmount), - splitRecipients: payoutContext.splitRecipients, - splitRatios: payoutContext.splitRatios + currencyAddress: _item.currencyAddress, + price: _item.price, + quantity: _item.quantity, + filled: false, + failureStage: CheckoutFailureStage.NONE, + reason: bytes4(0), + failureData: new bytes(0), + totalPaid: 0 }); + } - return (true, bytes4(0), context); + function _setCheckoutItemFailure( + CheckoutItemResult memory _result, + CheckoutFailureStage _stage, + bytes memory _failureData + ) internal pure { + _result.failureStage = _stage; + _result.reason = _revertSelector(_failureData); + _result.failureData = _failureData; } - function _validateCheckoutPayment( - MarketConfigV2.Config storage _config, - address _currencyAddress, - uint256 _amount, - uint256 _remainingEth - ) internal view returns (bytes4 reason) { - if (_amount == 0) return bytes4(0); - if (_currencyAddress == address(0)) { - return _remainingEth >= _amount ? bytes4(0) : InsufficientCheckoutETH.selector; + function _emitCheckoutItemProcessed(CheckoutItemResult memory _result) internal { + emit CheckoutItemProcessed( + _result.itemIndex, + _result.itemKind, + _result.contractAddress, + _result.tokenId, + _result.seller, + _result.currencyAddress, + _result.price, + _result.quantity, + _result.filled, + _result.failureStage, + _result.reason, + _result.failureData, + _result.totalPaid + ); + } + + function _checkoutExecutionFailure(bytes memory _revertData) + internal + pure + returns (CheckoutFailureStage stage, bytes memory failureData) + { + (bool decoded, CheckoutFailureStage decodedStage, bytes memory decodedFailureData) = + _decodeCheckoutItemExecutionFailed(_revertData); + if (decoded) return (decodedStage, decodedFailureData); + return (CheckoutFailureStage.PAYOUT, _revertData); + } + + function _decodeCheckoutItemExecutionFailed(bytes memory _revertData) + internal + pure + returns (bool decoded, CheckoutFailureStage stage, bytes memory failureData) + { + // CheckoutItemExecutionFailed(CheckoutFailureStage,bytes): + // selector | stage | offset | bytes length | bytes data + if (_revertSelector(_revertData) != CheckoutItemExecutionFailed.selector || _revertData.length < 100) { + return (false, CheckoutFailureStage.NONE, ""); } - IERC20 erc20 = IERC20(_currencyAddress); - try erc20.balanceOf(msg.sender) returns (uint256 balance) { - if (balance < _amount) return InsufficientCheckoutERC20Balance.selector; - } catch { - return InsufficientCheckoutERC20Balance.selector; + uint256 stageValue; + uint256 failureDataOffset; + uint256 failureDataLength; + assembly { + stageValue := mload(add(_revertData, 36)) + failureDataOffset := mload(add(_revertData, 68)) + failureDataLength := mload(add(_revertData, 100)) + } + if (stageValue > uint256(uint8(CheckoutFailureStage.PAYOUT)) || failureDataOffset != 64) { + return (false, CheckoutFailureStage.NONE, ""); } - try erc20.allowance(msg.sender, address(_config.erc20ApprovalManager)) returns (uint256 allowance) { - if (allowance < _amount) return InsufficientCheckoutERC20Allowance.selector; - } catch { - return InsufficientCheckoutERC20Allowance.selector; + if (failureDataLength > _revertData.length - 100) return (false, CheckoutFailureStage.NONE, ""); + + assembly { + failureData := add(_revertData, 100) + } + return (true, CheckoutFailureStage(stageValue), failureData); + } + + function _checkoutDirectSaleMintAggregateFailureData( + CheckoutItem calldata _item, + CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, + uint256 _directSaleMintAggregateCount, + uint256 _maxMints + ) internal pure returns (bytes memory) { + if (_item.itemKind != uint8(CheckoutItemKind.DIRECT_SALE_MINT) || _maxMints == 0) return ""; + + uint256 filledQuantity = _checkoutDirectSaleMintAggregateQuantity( + _directSaleMintAggregates, _directSaleMintAggregateCount, _item.contractAddress, _item.tokenId + ); + uint256 aggregateQuantity = filledQuantity + _item.quantity; + if (aggregateQuantity <= _maxMints) return ""; + + return abi.encodeWithSelector(MaxMintExceeded.selector, aggregateQuantity, _maxMints); + } + + function _checkoutDirectSaleMintAggregateQuantity( + CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, + uint256 _directSaleMintAggregateCount, + address _contractAddress, + uint256 _tokenId + ) internal pure returns (uint256) { + for (uint256 i = 0; i < _directSaleMintAggregateCount;) { + if ( + _directSaleMintAggregates[i].contractAddress == _contractAddress + && _directSaleMintAggregates[i].tokenId == _tokenId + ) { + return _directSaleMintAggregates[i].quantity; + } + + unchecked { + ++i; + } } - return bytes4(0); + return 0; } - function _collectCheckoutErc20(MarketConfigV2.Config storage _config, address _currencyAddress, uint256 _amount) - internal - { - if (_amount == 0) return; + function _recordCheckoutDirectSaleMint( + CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, + uint256 _directSaleMintAggregateCount, + CheckoutItem calldata _item + ) internal pure returns (uint256) { + if (_item.itemKind != uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { + return _directSaleMintAggregateCount; + } + + for (uint256 i = 0; i < _directSaleMintAggregateCount;) { + if ( + _directSaleMintAggregates[i].contractAddress == _item.contractAddress + && _directSaleMintAggregates[i].tokenId == _item.tokenId + ) { + _directSaleMintAggregates[i].quantity += _item.quantity; + return _directSaleMintAggregateCount; + } + + unchecked { + ++i; + } + } + + _directSaleMintAggregates[_directSaleMintAggregateCount] = CheckoutDirectSaleMintAggregate({ + contractAddress: _item.contractAddress, tokenId: _item.tokenId, quantity: _item.quantity + }); + return _directSaleMintAggregateCount + 1; + } + + function _mintFailureData( + bytes4 _reason, + MarketplaceStorage storage $, + address _contractAddress, + address _currencyAddress, + address _buyer, + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) internal view returns (bytes memory) { + DirectSaleConfig storage directSaleConfig = $.directSaleConfigs[_contractAddress][_tokenId]; + + if (_reason == DirectSaleNotConfigured.selector) { + return abi.encodeWithSelector(DirectSaleNotConfigured.selector, _contractAddress, _tokenId); + } + if (_reason == ContractHasNoOwner.selector) { + return abi.encodeWithSelector(ContractHasNoOwner.selector, _contractAddress); + } + if (_reason == NotContractOwner.selector) { + return abi.encodeWithSelector(NotContractOwner.selector, _contractAddress, directSaleConfig.seller); + } + if (_reason == AddressNotAllowlisted.selector) { + return abi.encodeWithSelector(AddressNotAllowlisted.selector, _buyer); + } + if (_reason == QuantityCannotBeZero.selector) return abi.encodeWithSelector(QuantityCannotBeZero.selector); + if (_reason == MintLimitExceeded.selector) { + uint256 mintLimit = $.tokenMintLimit[_contractAddress][_tokenId]; + uint256 currentMints = $.tokenMintsPerAddress[_contractAddress][_tokenId][_buyer]; + return abi.encodeWithSelector( + MintLimitExceeded.selector, _contractAddress, _tokenId, _buyer, _quantity, currentMints, mintLimit + ); + } + if (_reason == TransactionLimitExceeded.selector) { + uint256 txLimit = $.tokenTxLimit[_contractAddress][_tokenId]; + uint256 currentTxs = $.tokenTxsPerAddress[_contractAddress][_tokenId][_buyer]; + return abi.encodeWithSelector( + TransactionLimitExceeded.selector, _contractAddress, _tokenId, _buyer, currentTxs, txLimit + ); + } + if (_reason == MaxMintExceeded.selector) { + return abi.encodeWithSelector(MaxMintExceeded.selector, _quantity, directSaleConfig.maxMints); + } + if (_reason == SaleNotStarted.selector) { + return abi.encodeWithSelector(SaleNotStarted.selector, directSaleConfig.startTime); + } + if (_reason == PriceMismatch.selector) { + return abi.encodeWithSelector(PriceMismatch.selector, _price, directSaleConfig.price); + } + if (_reason == CurrencyMismatch.selector) { + return abi.encodeWithSelector(CurrencyMismatch.selector, _currencyAddress, directSaleConfig.currencyAddress); + } - IERC20 erc20 = IERC20(_currencyAddress); - uint256 balanceBefore = erc20.balanceOf(address(this)); + return ""; + } - _config.erc20ApprovalManager.transferFrom(_currencyAddress, msg.sender, address(this), _amount); + function _secondaryFailureData( + bytes4 _reason, + MarketplaceStorage storage $, + address _contractAddress, + address _seller, + address _currencyAddress, + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) internal view returns (bytes memory) { + SalePrice storage salePrice = $.salePrices[_contractAddress][_tokenId][_seller]; - uint256 receivedAmount = erc20.balanceOf(address(this)) - balanceBefore; - if (receivedAmount != _amount) { - revert ERC20FeeOnTransferUnsupported(_currencyAddress, _amount, receivedAmount); + if (_reason == QuantityCannotBeZero.selector) return abi.encodeWithSelector(QuantityCannotBeZero.selector); + if (_reason == SalePriceDoesNotExist.selector) { + return abi.encodeWithSelector(SalePriceDoesNotExist.selector, _contractAddress, _tokenId, _seller); } + if (_reason == SalePriceExpired.selector) { + return abi.encodeWithSelector( + SalePriceExpired.selector, _contractAddress, _tokenId, _seller, salePrice.expirationTime + ); + } + if (_reason == CurrencyMismatch.selector) { + return abi.encodeWithSelector(CurrencyMismatch.selector, _currencyAddress, salePrice.currencyAddress); + } + if (_reason == PriceMismatch.selector) { + return abi.encodeWithSelector(PriceMismatch.selector, _price, salePrice.price); + } + if (_reason == QuantityExceedsSalePriceQuantity.selector) { + return abi.encodeWithSelector(QuantityExceedsSalePriceQuantity.selector, _quantity, salePrice.quantity); + } + + return ""; } function _checkoutCurrencyApproved(MarketConfigV2.Config storage _config, address _currencyAddress) @@ -674,6 +1076,12 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace } } + function _revertBytes(bytes memory _revertData) internal pure { + assembly { + revert(add(_revertData, 32), mload(_revertData)) + } + } + function _validateMintDirectSaleRequest( address _contractAddress, address _currencyAddress, @@ -724,6 +1132,7 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace DirectSaleConfig memory directSaleConfig = $.directSaleConfigs[_contractAddress][_tokenId]; payoutContext.tokenId = _tokenId; payoutContext.seller = directSaleConfig.seller; + payoutContext.maxMints = directSaleConfig.maxMints; if (directSaleConfig.seller == address(0)) return (false, DirectSaleNotConfigured.selector, payoutContext); @@ -801,33 +1210,18 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace address _buyer, MintRequest calldata _request ) internal view { - uint256 tokenId = _request.tokenId; - uint256 quantity = _request.quantity; - DirectSaleConfig storage directSaleConfig = $.directSaleConfigs[_contractAddress][tokenId]; - - if (_reason == DirectSaleNotConfigured.selector) revert DirectSaleNotConfigured(_contractAddress, tokenId); - if (_reason == ContractHasNoOwner.selector) revert ContractHasNoOwner(_contractAddress); - if (_reason == NotContractOwner.selector) revert NotContractOwner(_contractAddress, directSaleConfig.seller); - if (_reason == AddressNotAllowlisted.selector) revert AddressNotAllowlisted(_buyer); - if (_reason == QuantityCannotBeZero.selector) revert QuantityCannotBeZero(); - if (_reason == MintLimitExceeded.selector) { - uint256 mintLimit = $.tokenMintLimit[_contractAddress][tokenId]; - uint256 currentMints = $.tokenMintsPerAddress[_contractAddress][tokenId][_buyer]; - revert MintLimitExceeded(_contractAddress, tokenId, _buyer, quantity, currentMints, mintLimit); - } - if (_reason == TransactionLimitExceeded.selector) { - uint256 txLimit = $.tokenTxLimit[_contractAddress][tokenId]; - uint256 currentTxs = $.tokenTxsPerAddress[_contractAddress][tokenId][_buyer]; - revert TransactionLimitExceeded(_contractAddress, tokenId, _buyer, currentTxs, txLimit); - } - if (_reason == MaxMintExceeded.selector) revert MaxMintExceeded(quantity, directSaleConfig.maxMints); - if (_reason == SaleNotStarted.selector) revert SaleNotStarted(directSaleConfig.startTime); - if (_reason == PriceMismatch.selector) revert PriceMismatch(_request.price, directSaleConfig.price); - if (_reason == CurrencyMismatch.selector) { - revert CurrencyMismatch(_currencyAddress, directSaleConfig.currencyAddress); - } - - revert(); + _revertBytes( + _mintFailureData( + _reason, + $, + _contractAddress, + _currencyAddress, + _buyer, + _request.tokenId, + _request.price, + _request.quantity + ) + ); } function _revertSecondaryBuyRequest( @@ -838,24 +1232,18 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace address _currencyAddress, BuyRequest calldata _request ) internal view { - uint256 tokenId = _request.tokenId; - uint256 quantity = _request.quantity; - SalePrice storage salePrice = $.salePrices[_contractAddress][tokenId][_seller]; - - if (_reason == QuantityCannotBeZero.selector) revert QuantityCannotBeZero(); - if (_reason == SalePriceDoesNotExist.selector) { - revert SalePriceDoesNotExist(_contractAddress, tokenId, _seller); - } - if (_reason == SalePriceExpired.selector) { - revert SalePriceExpired(_contractAddress, tokenId, _seller, salePrice.expirationTime); - } - if (_reason == CurrencyMismatch.selector) revert CurrencyMismatch(_currencyAddress, salePrice.currencyAddress); - if (_reason == PriceMismatch.selector) revert PriceMismatch(_request.price, salePrice.price); - if (_reason == QuantityExceedsSalePriceQuantity.selector) { - revert QuantityExceedsSalePriceQuantity(quantity, salePrice.quantity); - } - - revert(); + _revertBytes( + _secondaryFailureData( + _reason, + $, + _contractAddress, + _seller, + _currencyAddress, + _request.tokenId, + _request.price, + _request.quantity + ) + ); } function _validateAndApplyOfferFill(AcceptOfferInput memory _input) @@ -893,12 +1281,21 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace delete _offer.currencyAddress; delete _offer.price; delete _offer.quantity; + delete _offer.initialQuantity; delete _offer.marketplaceFeeRemaining; + delete _offer.marketplaceFeeTotal; delete _offer.expirationTime; return marketplaceFee; } - marketplaceFee = (_offer.marketplaceFeeRemaining * _quantity) / remainingQuantity; + uint256 marketplaceFeeTotal = _offer.marketplaceFeeTotal; + uint256 initialQuantity = _offer.initialQuantity; + uint256 filledQuantityBefore = initialQuantity - remainingQuantity; + uint256 filledQuantityAfter = filledQuantityBefore + _quantity; + uint256 marketplaceFeePaidBefore = marketplaceFeeTotal - _offer.marketplaceFeeRemaining; + uint256 marketplaceFeeDueAfter = Math.mulDiv(marketplaceFeeTotal, filledQuantityAfter, initialQuantity); + + marketplaceFee = marketplaceFeeDueAfter - marketplaceFeePaidBefore; _offer.quantity = remainingQuantity - _quantity; _offer.marketplaceFeeRemaining -= marketplaceFee; } @@ -984,6 +1381,52 @@ contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155Marketplace } } + function _mintBatchToWithBalanceCheck( + address _contractAddress, + address _buyer, + uint256[] memory _tokenIds, + uint256[] memory _amounts + ) internal { + IERC1155 erc1155 = IERC1155(_contractAddress); + address[] memory balanceAccounts = _balanceAccounts(_buyer, _tokenIds.length); + uint256[] memory balancesBeforeMint = erc1155.balanceOfBatch(balanceAccounts, _tokenIds); + + IRareERC1155(_contractAddress).mintBatchTo(_buyer, _tokenIds, _amounts); + + uint256[] memory balancesAfterMint = erc1155.balanceOfBatch(balanceAccounts, _tokenIds); + _validateMintBalanceDeltas(_contractAddress, _buyer, _tokenIds, _amounts, balancesBeforeMint, balancesAfterMint); + } + + function _balanceAccounts(address _account, uint256 _length) internal pure returns (address[] memory accounts) { + accounts = new address[](_length); + for (uint256 i = 0; i < _length;) { + accounts[i] = _account; + + unchecked { + ++i; + } + } + } + + function _validateMintBalanceDeltas( + address _contractAddress, + address _buyer, + uint256[] memory _tokenIds, + uint256[] memory _amounts, + uint256[] memory _balancesBeforeMint, + uint256[] memory _balancesAfterMint + ) internal pure { + for (uint256 i = 0; i < _tokenIds.length;) { + if (_balancesAfterMint[i] != _balancesBeforeMint[i] + _amounts[i]) { + revert InvalidERC1155Mint(_contractAddress, _tokenIds[i], _buyer, _amounts[i]); + } + + unchecked { + ++i; + } + } + } + function _validateMintRequests(MintRequest[] calldata _requests) internal pure { _validateBatchSize(_requests.length); for (uint256 i = 1; i < _requests.length; i++) { diff --git a/src/marketplace/RareERC1155SettlementCheckoutUtils.sol b/src/marketplace/RareERC1155SettlementCheckoutUtils.sol new file mode 100644 index 0000000..bd717c9 --- /dev/null +++ b/src/marketplace/RareERC1155SettlementCheckoutUtils.sol @@ -0,0 +1,253 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; +import {IERC20} from "openzeppelin-contracts/token/ERC20/IERC20.sol"; + +import {IRareERC1155} from "../token/ERC1155/IRareERC1155.sol"; +import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; +import {IERC1155ApprovalManager} from "../v2/approver/ERC1155/IERC1155ApprovalManager.sol"; +import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155SettlementCheckoutUtils +/// @notice Externalized checkout helpers for RareERC1155Settlement. +library RareERC1155SettlementCheckoutUtils { + function checkoutPaymentFailureData( + MarketConfigV2.Config storage _config, + address _currencyAddress, + uint256 _amount, + uint256 _remainingEth + ) public view returns (bytes memory failureData) { + if (_amount == 0) return ""; + if (_currencyAddress == address(0)) { + if (_remainingEth >= _amount) return ""; + return abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InsufficientCheckoutETH.selector, _amount, _remainingEth + ); + } + + IERC20 erc20 = IERC20(_currencyAddress); + try erc20.balanceOf(msg.sender) returns (uint256 balance) { + if (balance < _amount) { + return abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InsufficientCheckoutERC20Balance.selector, + _currencyAddress, + _amount, + balance + ); + } + } catch { + return abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InsufficientCheckoutERC20Balance.selector, _currencyAddress, _amount, 0 + ); + } + + try erc20.allowance(msg.sender, address(_config.erc20ApprovalManager)) returns (uint256 allowance) { + if (allowance < _amount) { + return abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InsufficientCheckoutERC20Allowance.selector, + _currencyAddress, + _amount, + allowance + ); + } + } catch { + return abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InsufficientCheckoutERC20Allowance.selector, _currencyAddress, _amount, 0 + ); + } + + return ""; + } + + function collectCheckoutErc20(MarketConfigV2.Config storage _config, address _currencyAddress, uint256 _amount) + public + { + if (_amount == 0) return; + + IERC20 erc20 = IERC20(_currencyAddress); + uint256 balanceBefore; + try erc20.balanceOf(address(this)) returns (uint256 balance) { + balanceBefore = balance; + } catch (bytes memory revertData) { + revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( + IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYMENT_COLLECTION, revertData + ); + } + + try _config.erc20ApprovalManager.transferFrom(_currencyAddress, msg.sender, address(this), _amount) {} + catch (bytes memory revertData) { + revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( + IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYMENT_COLLECTION, revertData + ); + } + + uint256 balanceAfter; + try erc20.balanceOf(address(this)) returns (uint256 balance) { + balanceAfter = balance; + } catch (bytes memory revertData) { + revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( + IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYMENT_COLLECTION, revertData + ); + } + + uint256 receivedAmount = balanceAfter >= balanceBefore ? balanceAfter - balanceBefore : 0; + if (receivedAmount != _amount) { + revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( + IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYMENT_COLLECTION, + abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.ERC20FeeOnTransferUnsupported.selector, + _currencyAddress, + _amount, + receivedAmount + ) + ); + } + } + + function checkoutSafeTransferFrom( + IERC1155ApprovalManager _erc1155ApprovalManager, + address _contractAddress, + address _seller, + address _buyer, + uint256 _tokenId, + uint256 _amount + ) public { + IERC1155 erc1155 = IERC1155(_contractAddress); + uint256 sellerBalanceBefore; + try erc1155.balanceOf(_seller, _tokenId) returns (uint256 balance) { + sellerBalanceBefore = balance; + } catch (bytes memory revertData) { + revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( + IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER, revertData + ); + } + if (sellerBalanceBefore < _amount) { + revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( + IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER, + abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InsufficientTokenBalance.selector, + _seller, + _contractAddress, + _tokenId, + _amount, + sellerBalanceBefore + ) + ); + } + + uint256 buyerBalanceBefore; + try erc1155.balanceOf(_buyer, _tokenId) returns (uint256 balance) { + buyerBalanceBefore = balance; + } catch (bytes memory revertData) { + revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( + IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER, revertData + ); + } + + try _erc1155ApprovalManager.safeTransferFrom(_contractAddress, _seller, _buyer, _tokenId, _amount, "") {} + catch (bytes memory revertData) { + revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( + IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER, revertData + ); + } + + uint256 sellerBalanceAfter; + try erc1155.balanceOf(_seller, _tokenId) returns (uint256 balance) { + sellerBalanceAfter = balance; + } catch (bytes memory revertData) { + revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( + IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER, revertData + ); + } + + uint256 buyerBalanceAfter; + try erc1155.balanceOf(_buyer, _tokenId) returns (uint256 balance) { + buyerBalanceAfter = balance; + } catch (bytes memory revertData) { + revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( + IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER, revertData + ); + } + + if (sellerBalanceAfter != sellerBalanceBefore - _amount || buyerBalanceAfter != buyerBalanceBefore + _amount) { + revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( + IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER, + abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InvalidERC1155Transfer.selector, + _contractAddress, + _tokenId, + _seller, + _buyer, + _amount + ) + ); + } + } + + function checkoutMintBatchToWithBalanceCheck( + address _contractAddress, + address _buyer, + uint256[] memory _tokenIds, + uint256[] memory _amounts + ) public { + IERC1155 erc1155 = IERC1155(_contractAddress); + address[] memory balanceAccounts = _balanceAccounts(_buyer, _tokenIds.length); + uint256[] memory balancesBeforeMint; + + try erc1155.balanceOfBatch(balanceAccounts, _tokenIds) returns (uint256[] memory balances) { + balancesBeforeMint = balances; + } catch (bytes memory revertData) { + revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( + IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT, revertData + ); + } + + try IRareERC1155(_contractAddress).mintBatchTo(_buyer, _tokenIds, _amounts) {} + catch (bytes memory revertData) { + revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( + IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT, revertData + ); + } + + uint256[] memory balancesAfterMint; + try erc1155.balanceOfBatch(balanceAccounts, _tokenIds) returns (uint256[] memory balances) { + balancesAfterMint = balances; + } catch (bytes memory revertData) { + revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( + IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT, revertData + ); + } + + for (uint256 i = 0; i < _tokenIds.length;) { + if (balancesAfterMint[i] != balancesBeforeMint[i] + _amounts[i]) { + revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( + IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT, + abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector, + _contractAddress, + _tokenIds[i], + _buyer, + _amounts[i] + ) + ); + } + + unchecked { + ++i; + } + } + } + + function _balanceAccounts(address _account, uint256 _length) private pure returns (address[] memory accounts) { + accounts = new address[](_length); + for (uint256 i = 0; i < _length;) { + accounts[i] = _account; + + unchecked { + ++i; + } + } + } +} diff --git a/src/test/marketplace/RareERC1155MarketplaceGas.t.sol b/src/test/marketplace/RareERC1155MarketplaceGas.t.sol index f755d67..989bd10 100644 --- a/src/test/marketplace/RareERC1155MarketplaceGas.t.sol +++ b/src/test/marketplace/RareERC1155MarketplaceGas.t.sol @@ -380,7 +380,8 @@ contract RareERC1155MarketplaceGasTest is Test { ) private { vm.prank(buyer); uint256 gasBefore = gasleft(); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = marketplace.checkout{value: _value}(_items); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _value}(_items); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; uint256 gasUsed = gasBefore - gasleft(); assertEq(summary.filledCount, _expectedFilled); diff --git a/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol b/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol index e670c39..e6b2da0 100644 --- a/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol +++ b/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol @@ -19,6 +19,7 @@ import {ERC20ApprovalManager} from "../../v2/approver/ERC20/ERC20ApprovalManager import {ERC721ApprovalManager} from "../../v2/approver/ERC721/ERC721ApprovalManager.sol"; import {ERC1155ApprovalManager} from "../../v2/approver/ERC1155/ERC1155ApprovalManager.sol"; import {IRareERC1155MarketplaceTypes} from "../../marketplace/IRareERC1155MarketplaceTypes.sol"; +import {IRareERC1155Settlement} from "../../marketplace/IRareERC1155Settlement.sol"; import {RareERC1155Marketplace} from "../../marketplace/RareERC1155Marketplace.sol"; import {RareERC1155Settlement} from "../../marketplace/RareERC1155Settlement.sol"; import {IRoyaltyEngineV1} from "royalty-registry/IRoyaltyEngineV1.sol"; @@ -29,6 +30,13 @@ contract CheckoutCurrency is ERC20 { } } +contract CheckoutRejectZeroTransferCurrency is CheckoutCurrency { + function transfer(address _to, uint256 _amount) public override returns (bool) { + if (_amount == 0) revert("zero transfer"); + return super.transfer(_to, _amount); + } +} + contract CheckoutNoOpERC1155 is IERC1155 { mapping(address => mapping(uint256 => uint256)) private balances; mapping(address => mapping(address => bool)) private operatorApprovals; @@ -74,9 +82,169 @@ contract CheckoutNoOpERC1155 is IERC1155 { {} } +contract CheckoutToggleERC1155 is IERC1155 { + mapping(address => mapping(uint256 => uint256)) private balances; + mapping(address => mapping(address => bool)) private operatorApprovals; + + address private contractOwner; + bool private revertOwner; + bool private revertSupportsInterface; + bool private revertApproval; + bool private revertBalance; + + constructor(address _owner) { + contractOwner = _owner; + } + + function setRevertOwner(bool _revertOwner) external { + revertOwner = _revertOwner; + } + + function setRevertSupportsInterface(bool _revertSupportsInterface) external { + revertSupportsInterface = _revertSupportsInterface; + } + + function setRevertApproval(bool _revertApproval) external { + revertApproval = _revertApproval; + } + + function setRevertBalance(bool _revertBalance) external { + revertBalance = _revertBalance; + } + + function owner() external view returns (address) { + if (revertOwner) revert("owner unavailable"); + return contractOwner; + } + + function maxSupplyForToken(uint256) external pure returns (uint256) { + return 100; + } + + function mintBatchTo(address _receiver, uint256[] calldata _tokenIds, uint256[] calldata _amounts) public virtual { + for (uint256 i = 0; i < _tokenIds.length; i++) { + balances[_receiver][_tokenIds[i]] += _amounts[i]; + } + } + + function setBalance(address _account, uint256 _tokenId, uint256 _amount) external { + balances[_account][_tokenId] = _amount; + } + + function supportsInterface(bytes4 _interfaceId) external view override returns (bool) { + if (revertSupportsInterface) revert("supports unavailable"); + return _interfaceId == type(IERC165).interfaceId || _interfaceId == type(IERC1155).interfaceId; + } + + function balanceOf(address _account, uint256 _tokenId) external view override returns (uint256) { + if (revertBalance) revert("balance unavailable"); + return balances[_account][_tokenId]; + } + + function balanceOfBatch(address[] calldata _accounts, uint256[] calldata _ids) + external + view + override + returns (uint256[] memory batchBalances) + { + batchBalances = new uint256[](_accounts.length); + for (uint256 i = 0; i < _accounts.length; i++) { + batchBalances[i] = balances[_accounts[i]][_ids[i]]; + } + } + + function setApprovalForAll(address _operator, bool _approved) external override { + operatorApprovals[msg.sender][_operator] = _approved; + } + + function isApprovedForAll(address _account, address _operator) external view override returns (bool) { + if (revertApproval) revert("approval unavailable"); + return operatorApprovals[_account][_operator]; + } + + function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _amount, bytes calldata) + external + override + { + balances[_from][_id] -= _amount; + balances[_to][_id] += _amount; + } + + function safeBatchTransferFrom( + address _from, + address _to, + uint256[] calldata _ids, + uint256[] calldata _amounts, + bytes calldata + ) external override { + for (uint256 i = 0; i < _ids.length; i++) { + balances[_from][_ids[i]] -= _amounts[i]; + balances[_to][_ids[i]] += _amounts[i]; + } + } +} + +contract CheckoutReentrantERC1155 is CheckoutToggleERC1155 { + RareERC1155Marketplace private marketplace; + bool public reentryBlocked; + + constructor(address _owner, RareERC1155Marketplace _marketplace) CheckoutToggleERC1155(_owner) { + marketplace = _marketplace; + } + + function mintBatchTo(address _receiver, uint256[] calldata _tokenIds, uint256[] calldata _amounts) public override { + IRareERC1155MarketplaceTypes.CheckoutItem[] memory unsupportedItems = + new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + unsupportedItems[0] = IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: type(uint8).max, + contractAddress: address(0), + seller: address(0), + currencyAddress: address(0), + tokenId: 0, + price: 0, + quantity: 0, + proof: new bytes32[](0) + }); + (bool success,) = + address(marketplace).call(abi.encodeWithSelector(marketplace.checkout.selector, unsupportedItems)); + reentryBlocked = !success; + super.mintBatchTo(_receiver, _tokenIds, _amounts); + } +} + +contract CheckoutNoOpMintERC1155 is CheckoutToggleERC1155 { + constructor(address _owner) CheckoutToggleERC1155(_owner) {} + + function mintBatchTo(address, uint256[] calldata, uint256[] calldata) public pure override {} +} + +contract CheckoutPaymentObservingERC1155 is CheckoutToggleERC1155 { + ERC20 private currency; + address private marketplace; + + uint256 public marketplaceCurrencyBalanceAtMint; + + constructor(address _owner, ERC20 _currency, address _marketplace) CheckoutToggleERC1155(_owner) { + currency = _currency; + marketplace = _marketplace; + } + + function mintBatchTo(address _receiver, uint256[] calldata _tokenIds, uint256[] calldata _amounts) public override { + marketplaceCurrencyBalanceAtMint = currency.balanceOf(marketplace); + super.mintBatchTo(_receiver, _tokenIds, _amounts); + } +} + +contract RejectETH { + receive() external payable { + revert("reject eth"); + } +} + contract RareERC1155MarketplaceSettlementTest is Test { RareERC1155Marketplace private marketplace; RareERC1155Settlement private settlement; + Payments private payments; RareERC1155 private token; CheckoutCurrency private currency; RareERC1155ContractFactory private tokenFactory; @@ -114,10 +282,11 @@ contract RareERC1155MarketplaceSettlementTest is Test { erc721ApprovalManager = new ERC721ApprovalManager(); erc1155ApprovalManager = new ERC1155ApprovalManager(); settlement = new RareERC1155Settlement(); + payments = new Payments(); marketplace = RareERC1155Marketplace( address( new ERC1967Proxy( - address(new RareERC1155Marketplace()), _initData(address(new Payments()), address(settlement)) + address(new RareERC1155Marketplace()), _initData(address(payments), address(settlement)) ) ) ); @@ -173,6 +342,58 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 0); } + function testBuyListingSkipsZeroValueERC20MarketplaceFeeRecipient() public { + CheckoutRejectZeroTransferCurrency rejectingCurrency = new CheckoutRejectZeroTransferCurrency(); + uint256 price = 100; + + rejectingCurrency.transfer(buyer, _withFee(price)); + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockApprovedCurrency(address(rejectingCurrency)); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(rejectingCurrency), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, price), + abi.encode(_fee(price)) + ); + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, seller), + abi.encode(rewardAccumulator) + ); + vm.mockCall( + stakingSettings, abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, price), abi.encode(0) + ); + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), + abi.encode(new address payable[](0), new uint256[](0)) + ); + + vm.prank(buyer); + rejectingCurrency.approve(address(erc20ApprovalManager), _withFee(price)); + + vm.prank(buyer); + marketplace.buyBatch(address(token), seller, address(rejectingCurrency), _singleBuyRequest(tokenId, price, 1)); + + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(rejectingCurrency.balanceOf(rewardAccumulator), 0); + } + function testAcceptOfferThroughSettlementModule() public { uint256 price = 1 ether; uint256 offerQuantity = 2; @@ -198,11 +419,64 @@ contract RareERC1155MarketplaceSettlementTest is Test { IRareERC1155MarketplaceTypes.Offer memory offer = marketplace.getOffer(address(token), tokenId, buyer, address(0)); assertEq(offer.quantity, 1); + assertEq(offer.initialQuantity, offerQuantity); assertEq(offer.marketplaceFeeRemaining, _fee(price)); + assertEq(offer.marketplaceFeeTotal, _fee(price * offerQuantity)); assertEq(token.balanceOf(buyer, tokenId), 1); assertEq(token.balanceOf(seller, tokenId), 1); } + function testPartialOfferFillsAllocateMarketplaceFeeCumulatively() public { + uint256 price = 1; + uint256 offerQuantity = 100; + uint256 fillQuantity = 34; + + vm.prank(seller); + uint256 highQuantityTokenId = token.createToken("ipfs://token/high-quantity.json", offerQuantity, seller); + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(highQuantityTokenId), _singleAmounts(fillQuantity)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockMarketplaceFee(price * offerQuantity, seller); + vm.prank(buyer); + marketplace.makeOffer{value: _withFee(price * offerQuantity)}( + address(token), highQuantityTokenId, address(0), price, offerQuantity, 0 + ); + + _mockSecondaryPayoutFor(address(token), highQuantityTokenId, price, seller); + for (uint256 i = 0; i < fillQuantity; i++) { + vm.prank(seller); + marketplace.acceptOffer( + address(token), + highQuantityTokenId, + buyer, + address(0), + price, + 1, + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + } + + IRareERC1155MarketplaceTypes.Offer memory offer = + marketplace.getOffer(address(token), highQuantityTokenId, buyer, address(0)); + assertEq(offer.quantity, offerQuantity - fillQuantity); + assertEq(offer.initialQuantity, offerQuantity); + assertEq(offer.marketplaceFeeRemaining, _fee(price * offerQuantity) - 1); + assertEq(offer.marketplaceFeeTotal, _fee(price * offerQuantity)); + assertEq(networkBeneficiary.balance, 1); + + vm.prank(buyer); + marketplace.cancelOffer(address(token), highQuantityTokenId, address(0)); + + assertEq(buyer.balance, 100 ether - fillQuantity - 1); + assertEq(seller.balance, 100 ether + fillQuantity); + assertEq(marketplace.getOffer(address(token), highQuantityTokenId, buyer, address(0)).quantity, 0); + } + function testMintDirectSaleThroughSettlementModule() public { uint256 price = 1 ether; uint256 quantity = 2; @@ -227,6 +501,56 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(marketplace.getTokenMintsPerAddress(address(token), tokenId, buyer), 0); } + function testPrepareMintDirectSaleRejectsNonERC1155Contract() public { + uint256 price = 1 ether; + RejectETH invalidToken = new RejectETH(); + + vm.prank(seller); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.InvalidERC1155Contract.selector, address(invalidToken)) + ); + marketplace.prepareMintDirectSales( + address(invalidToken), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + } + + function testMintDirectSaleRevertsWhenMintDoesNotIncreaseBuyerBalance() public { + uint256 price = 1 ether; + uint256 noOpTokenId = 91; + uint256 quantity = 2; + CheckoutNoOpMintERC1155 noOpToken = new CheckoutNoOpMintERC1155(seller); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(noOpToken), + address(0), + _singleDirectSaleRequest(noOpTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockMarketplaceFee(price * quantity, seller); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector, + address(noOpToken), + noOpTokenId, + buyer, + quantity + ) + ); + marketplace.mintDirectSaleBatch{value: _withFee(price * quantity)}( + address(noOpToken), address(0), _singleMintRequest(noOpTokenId, price, quantity) + ); + + assertEq(noOpToken.balanceOf(buyer, noOpTokenId), 0); + } + function testMintDirectSaleBatchRevertsWithSharedValidationReason() public { uint256 price = 1 ether; @@ -330,8 +654,9 @@ contract RareERC1155MarketplaceSettlementTest is Test { uint256 buyerCurrencyBefore = currency.balanceOf(buyer); vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(mintPrice)}(items); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; assertEq(summary.filledCount, 2); assertEq(summary.skippedCount, 0); @@ -362,8 +687,9 @@ contract RareERC1155MarketplaceSettlementTest is Test { items[0] = _directSaleCheckoutItem(address(token), sellerTwo, address(0), tokenId, price, 1); vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}(items); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; assertEq(summary.filledCount, 1); assertEq(summary.skippedCount, 0); @@ -371,6 +697,49 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(token.balanceOf(buyer, tokenId), 1); } + function testCheckoutAggregatesDirectSaleMaxMintsAcrossDuplicateItems() public { + uint256 price = 1 ether; + uint256 maxMints = 1; + + vm.prank(seller); + uint256 limitedTokenId = token.createToken("ipfs://token/max-mints.json", 2, seller); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(limitedTokenId, price, 0, maxMints), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), limitedTokenId, price, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), limitedTokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = + marketplace.checkout{value: _withFee(price) * 2}(items); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 1); + assertEq(summary.ethSpent, _withFee(price)); + assertEq(summary.ethRefunded, _withFee(price)); + assertEq(token.balanceOf(buyer, limitedTokenId), 1); + assertTrue(execution.items[0].filled); + _assertSkipped( + execution.items[1], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.MaxMintExceeded.selector + ); + assertEq( + execution.items[1].failureData, + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.MaxMintExceeded.selector, 2, maxMints) + ); + } + function testCheckoutSkipsInvalidItemsAndRefundsUnusedETH() public { uint256 mintPrice = 1 ether; uint256 listingPrice = 2 ether; @@ -404,8 +773,9 @@ contract RareERC1155MarketplaceSettlementTest is Test { items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, mintPrice, 1); vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(mintPrice) + refundAmount}(items); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; assertEq(summary.filledCount, 1); assertEq(summary.skippedCount, 1); @@ -448,8 +818,9 @@ contract RareERC1155MarketplaceSettlementTest is Test { items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}(items); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; assertEq(summary.filledCount, 1); assertEq(summary.skippedCount, 1); @@ -490,8 +861,9 @@ contract RareERC1155MarketplaceSettlementTest is Test { items[1] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}(items); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; assertEq(summary.filledCount, 1); assertEq(summary.skippedCount, 1); @@ -572,8 +944,9 @@ contract RareERC1155MarketplaceSettlementTest is Test { items[4] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}(items); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; assertEq(summary.filledCount, 1); assertEq(summary.skippedCount, 4); @@ -628,8 +1001,9 @@ contract RareERC1155MarketplaceSettlementTest is Test { uint256 buyerCurrencyBefore = currency.balanceOf(buyer); vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(mintPrice)}(items); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; assertEq(summary.filledCount, 1); assertEq(summary.skippedCount, 1); @@ -641,16 +1015,81 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(token.balanceOf(buyer, tokenId), 1); } - function testCheckoutRevertsWhenEveryItemIsSkipped() public { + function testCheckoutSucceedsWhenEveryItemIsSkipped() public { IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); items[0] = _unsupportedCheckoutItem(); vm.prank(buyer); - vm.expectRevert(IRareERC1155MarketplaceTypes.CheckoutRequiresSuccessfulFill.selector); - marketplace.checkout(items); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(items); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq(execution.items.length, 1); + assertEq( + uint8(execution.items[0].failureStage), uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION) + ); + assertEq(execution.items[0].reason, IRareERC1155MarketplaceTypes.UnsupportedCheckoutItemKind.selector); + assertEq( + execution.items[0].failureData, + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.UnsupportedCheckoutItemKind.selector, items[0].itemKind) + ); } - function testCheckoutRevertsOnNonSkippableTransferFailure() public { + function testCheckoutSkipsListingWhenCurrencyIsNoLongerApproved() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockApprovedCurrency(address(currency)); + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(currency), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.clearMockedCalls(); + vm.mockCall( + approvedTokenRegistry, + abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(currency)), + abi.encode(false) + ); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), _withFee(price)); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _listingCheckoutItem(address(token), seller, address(currency), tokenId, price, 1); + + uint256 buyerCurrencyBefore = currency.balanceOf(buyer); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(items); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq(currency.balanceOf(buyer), buyerCurrencyBefore); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); + _assertSkipped( + execution.items[0], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.CurrencyNotApproved.selector + ); + assertEq( + execution.items[0].failureData, + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.CurrencyNotApproved.selector, address(currency)) + ); + } + + function testCheckoutSkipsTransferFailure() public { CheckoutNoOpERC1155 brokenToken = new CheckoutNoOpERC1155(); uint256 brokenTokenId = 88; uint256 price = 1 ether; @@ -673,7 +1112,19 @@ contract RareERC1155MarketplaceSettlementTest is Test { items[0] = _listingCheckoutItem(address(brokenToken), seller, address(0), brokenTokenId, price, 1); vm.prank(buyer); - vm.expectRevert( + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = + marketplace.checkout{value: _withFee(price)}(items); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq(execution.summary.ethSpent, 0); + assertEq(execution.summary.ethRefunded, _withFee(price)); + assertEq( + uint8(execution.items[0].failureStage), uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER) + ); + assertEq(execution.items[0].reason, IRareERC1155MarketplaceTypes.InvalidERC1155Transfer.selector); + assertEq( + execution.items[0].failureData, abi.encodeWithSelector( IRareERC1155MarketplaceTypes.InvalidERC1155Transfer.selector, address(brokenToken), @@ -683,13 +1134,317 @@ contract RareERC1155MarketplaceSettlementTest is Test { 1 ) ); - marketplace.checkout{value: _withFee(price)}(items); assertEq(brokenToken.balanceOf(seller, brokenTokenId), 1); assertEq(brokenToken.balanceOf(buyer, brokenTokenId), 0); assertEq(marketplace.getSalePrice(address(brokenToken), brokenTokenId, seller).quantity, 1); } + function testCheckoutSkipsDirectSaleMintWhenMintDoesNotIncreaseBuyerBalance() public { + uint256 price = 1 ether; + uint256 noOpTokenId = 92; + CheckoutNoOpMintERC1155 noOpToken = new CheckoutNoOpMintERC1155(seller); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(noOpToken), + address(0), + _singleDirectSaleRequest(noOpTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockMarketplaceFee(price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(noOpToken), seller, address(0), noOpTokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = + marketplace.checkout{value: _withFee(price)}(items); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq(execution.summary.ethSpent, 0); + assertEq(execution.summary.ethRefunded, _withFee(price)); + _assertSkipped( + execution.items[0], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT, + IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector + ); + assertEq( + execution.items[0].failureData, + abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector, address(noOpToken), noOpTokenId, buyer, 1 + ) + ); + assertEq(noOpToken.balanceOf(buyer, noOpTokenId), 0); + } + + function testCheckoutValidationRevertsBecomeValidationSkipsAndContinue() public { + uint256 price = 1 ether; + uint256 ownerRevertTokenId = 101; + uint256 supportsRevertTokenId = 102; + uint256 approvalRevertTokenId = 103; + uint256 balanceRevertTokenId = 104; + + CheckoutToggleERC1155 ownerRevertToken = new CheckoutToggleERC1155(seller); + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(ownerRevertToken), + address(0), + _singleDirectSaleRequest(ownerRevertTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + ownerRevertToken.setRevertOwner(true); + + CheckoutToggleERC1155 supportsRevertToken = _listedToggleToken(supportsRevertTokenId, price); + supportsRevertToken.setRevertSupportsInterface(true); + + CheckoutToggleERC1155 approvalRevertToken = _listedToggleToken(approvalRevertTokenId, price); + approvalRevertToken.setRevertApproval(true); + + CheckoutToggleERC1155 balanceRevertToken = _listedToggleToken(balanceRevertTokenId, price); + balanceRevertToken.setRevertBalance(true); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](5); + items[0] = _directSaleCheckoutItem(address(ownerRevertToken), seller, address(0), ownerRevertTokenId, price, 1); + items[1] = + _listingCheckoutItem(address(supportsRevertToken), seller, address(0), supportsRevertTokenId, price, 1); + items[2] = + _listingCheckoutItem(address(approvalRevertToken), seller, address(0), approvalRevertTokenId, price, 1); + items[3] = _listingCheckoutItem(address(balanceRevertToken), seller, address(0), balanceRevertTokenId, price, 1); + items[4] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = + marketplace.checkout{value: _withFee(price)}(items); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 4); + assertEq(token.balanceOf(buyer, tokenId), 1); + _assertSkipped( + execution.items[0], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.ContractHasNoOwner.selector + ); + _assertSkipped( + execution.items[1], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.InvalidERC1155Contract.selector + ); + _assertSkipped( + execution.items[2], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.MarketplaceNotApproved.selector + ); + _assertSkipped( + execution.items[3], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.InsufficientTokenBalance.selector + ); + assertTrue(execution.items[4].filled); + } + + function testCheckoutSkipsPayoutFailureAndContinues() public { + uint256 price = 1 ether; + uint256 primaryTokenId; + + vm.startPrank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + primaryTokenId = token.createToken("ipfs://token/primary-after-payout-fail.json", 20, seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(primaryTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + + _mockMarketplaceFee(price, seller); + _mockPrimaryPayoutFor(address(token), price, seller); + bytes memory royaltyRevertData = abi.encodeWithSignature("Error(string)", "royalty failed"); + vm.mockCallRevert( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), + royaltyRevertData + ); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), primaryTokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = + marketplace.checkout{value: _withFee(price)}(items); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 1); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(buyer, primaryTokenId), 1); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); + _assertSkipped(execution.items[0], IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT, bytes4(0x08c379a0)); + assertEq(execution.items[0].failureData, royaltyRevertData); + assertTrue(execution.items[1].filled); + } + + function testCheckoutPayoutFailureCannotSpoofFailureStage() public { + uint256 price = 1 ether; + bytes memory spoofedPayoutRevertData = abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.PriceMismatch.selector, price + 1, price) + ); + + vm.startPrank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + + _mockMarketplaceFee(price, seller); + vm.mockCallRevert( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), + spoofedPayoutRevertData + ); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = + marketplace.checkout{value: _withFee(price)}(items); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq(execution.summary.ethSpent, 0); + assertEq(execution.summary.ethRefunded, _withFee(price)); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); + _assertSkipped( + execution.items[0], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT, + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector + ); + assertEq(execution.items[0].failureData, spoofedPayoutRevertData); + } + + function testCheckoutEthRecipientRejectionEscrowsInPayments() public { + uint256 price = 1 ether; + RejectETH rejectRecipient = new RejectETH(); + address payable[] memory splitRecipients = new address payable[](1); + splitRecipients[0] = payable(address(rejectRecipient)); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + splitRecipients, + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = + marketplace.checkout{value: _withFee(price)}(items); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 0); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(payments.payments(address(rejectRecipient)), price - ((price * 10) / 100)); + } + + function testCheckoutItemExecutionKeepsMarketplaceReentrancyGuard() public { + uint256 price = 1 ether; + uint256 reentrantTokenId = 77; + CheckoutReentrantERC1155 reentrantToken = new CheckoutReentrantERC1155(seller, marketplace); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(reentrantToken), + address(0), + _singleDirectSaleRequest(reentrantTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(reentrantToken), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(reentrantToken), seller, address(0), reentrantTokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = + marketplace.checkout{value: _withFee(price)}(items); + + assertEq(execution.summary.filledCount, 1); + assertTrue(reentrantToken.reentryBlocked()); + assertEq(reentrantToken.balanceOf(buyer, reentrantTokenId), 1); + } + + function testCheckoutDirectSaleMintCollectsERC20BeforeMint() public { + uint256 price = 1 ether; + uint256 observedTokenId = 78; + CheckoutPaymentObservingERC1155 observingToken = + new CheckoutPaymentObservingERC1155(seller, currency, address(marketplace)); + + _mockApprovedCurrency(address(currency)); + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(observingToken), + address(currency), + _singleDirectSaleRequest(observedTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(observingToken), price, seller); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), _withFee(price)); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = + _directSaleCheckoutItem(address(observingToken), seller, address(currency), observedTokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(items); + + assertEq(execution.summary.filledCount, 1); + assertEq(observingToken.marketplaceCurrencyBalanceAtMint(), _withFee(price)); + assertEq(observingToken.balanceOf(buyer, observedTokenId), 1); + assertEq(currency.balanceOf(address(marketplace)), 0); + } + function testDirectCallsToSettlementRevert() public { IRareERC1155MarketplaceTypes.BuyRequest[] memory requests = new IRareERC1155MarketplaceTypes.BuyRequest[](1); requests[0] = IRareERC1155MarketplaceTypes.BuyRequest(tokenId, 1 ether, 1); @@ -701,6 +1456,31 @@ contract RareERC1155MarketplaceSettlementTest is Test { vm.expectRevert(IRareERC1155MarketplaceTypes.DirectSettlementCallUnsupported.selector); settlement.checkout(items); + + vm.expectRevert(IRareERC1155MarketplaceTypes.DirectSettlementCallUnsupported.selector); + settlement.executeCheckoutItem( + _unsupportedCheckoutItem(), 0, address(0), 0, 0, new address payable[](0), new uint8[](0) + ); + + vm.expectRevert(IRareERC1155MarketplaceTypes.DirectSettlementCallUnsupported.selector); + settlement.executeCheckoutPayout( + _unsupportedCheckoutItem(), seller, 0, 0, new address payable[](0), new uint8[](0) + ); + + (bool success,) = address(marketplace) + .call( + abi.encodeWithSelector( + IRareERC1155Settlement.executeCheckoutItem.selector, + _unsupportedCheckoutItem(), + 0, + address(0), + 0, + 0, + new address payable[](0), + new uint8[](0) + ) + ); + assertFalse(success); } function testOwnerCanUpdateSettlementModule() public { @@ -725,6 +1505,35 @@ contract RareERC1155MarketplaceSettlementTest is Test { ); } + function testSetTokenAllowListConfigsRevertsWhenActiveEndTimestampNotFuture() public { + uint256 currentTime = block.timestamp; + + vm.prank(seller); + vm.expectRevert( + abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.AllowListEndTimestampInvalid.selector, currentTime, currentTime + ) + ); + marketplace.setTokenAllowListConfigs( + address(token), _singleAllowListConfigRequest(tokenId, keccak256(abi.encodePacked(buyer)), currentTime) + ); + } + + function testSetTokenAllowListConfigsAllowsDisablingWithZeroRoot() public { + vm.startPrank(seller); + marketplace.setTokenAllowListConfigs( + address(token), + _singleAllowListConfigRequest(tokenId, keccak256(abi.encodePacked(buyer)), block.timestamp + 1 days) + ); + marketplace.setTokenAllowListConfigs(address(token), _singleAllowListConfigRequest(tokenId, bytes32(0), 0)); + vm.stopPrank(); + + IRareERC1155MarketplaceTypes.AllowListConfig memory config = + marketplace.getTokenAllowListConfig(address(token), tokenId); + assertEq(config.root, bytes32(0)); + assertEq(config.endTimestamp, 0); + } + function testSetTokenMintLimitsRevertsWhenPaused() public { vm.prank(deployer); marketplace.setContractPaused(true); @@ -891,6 +1700,31 @@ contract RareERC1155MarketplaceSettlementTest is Test { }); } + function _listedToggleToken(uint256 _tokenId, uint256 _price) private returns (CheckoutToggleERC1155 toggleToken) { + toggleToken = new CheckoutToggleERC1155(seller); + toggleToken.setBalance(seller, _tokenId, 1); + vm.prank(seller); + toggleToken.setApprovalForAll(address(erc1155ApprovalManager), true); + vm.prank(seller); + marketplace.setSalePrices( + address(toggleToken), + address(0), + _singleSalePriceRequest(_tokenId, _price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + } + + function _assertSkipped( + IRareERC1155MarketplaceTypes.CheckoutItemResult memory _result, + IRareERC1155MarketplaceTypes.CheckoutFailureStage _stage, + bytes4 _reason + ) private { + assertFalse(_result.filled); + assertEq(uint8(_result.failureStage), uint8(_stage)); + assertEq(_result.reason, _reason); + } + function _singleSplitRecipients(address _recipient) private pure returns (address payable[] memory recipients) { recipients = new address payable[](1); recipients[0] = payable(_recipient); diff --git a/src/test/token/ERC1155/RareERC1155.t.sol b/src/test/token/ERC1155/RareERC1155.t.sol index bd8bf24..7e59d26 100644 --- a/src/test/token/ERC1155/RareERC1155.t.sol +++ b/src/test/token/ERC1155/RareERC1155.t.sol @@ -17,6 +17,7 @@ contract RareERC1155Test is Test { address private minter = address(0x2222); address private collector = address(0x3333); address private royaltyReceiver = address(0x4444); + address private newOwner = address(0x5555); function setUp() public { factory = new RareERC1155ContractFactory(); @@ -75,6 +76,35 @@ contract RareERC1155Test is Test { assertEq(royaltyAmount, 0.1 ether); } + function testTokenCreatorTracksCollectionOwner() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 10, royaltyReceiver); + assertEq(token.tokenCreator(tokenId), owner); + + vm.prank(owner); + token.transferOwnership(newOwner); + + assertEq(token.owner(), newOwner); + assertEq(token.tokenCreator(tokenId), newOwner); + + vm.prank(newOwner); + uint256 secondTokenId = token.createToken("ipfs://token/2.json", 10, royaltyReceiver); + assertEq(token.tokenCreator(secondTokenId), newOwner); + } + + function testOwnershipCannotBecomeZeroAddress() public { + vm.prank(owner); + vm.expectRevert("Ownable: new owner is the zero address"); + token.transferOwnership(address(0)); + + vm.prank(owner); + vm.expectRevert(IRareERC1155.ZeroAddressUnsupported.selector); + token.renounceOwnership(); + + assertEq(token.owner(), owner); + assertEq(token.tokenCreator(1), owner); + } + function testDefaultRoyaltyUpdatesDoNotOverrideExistingTokenRoyalty() public { vm.prank(owner); uint256 tokenId = token.createToken("ipfs://token/1.json", 10, owner); diff --git a/src/test/v2/approver/ERC1155ApprovalManager.t.sol b/src/test/v2/approver/ERC1155ApprovalManager.t.sol index 78b0f16..ce6cba2 100644 --- a/src/test/v2/approver/ERC1155ApprovalManager.t.sol +++ b/src/test/v2/approver/ERC1155ApprovalManager.t.sol @@ -156,7 +156,11 @@ contract ERC1155ApprovalManagerTest is Test { vm.stopPrank(); vm.prank(address(0x6)); - vm.expectRevert(IERC1155ApprovalManager.NotOperator.selector); + vm.expectRevert( + abi.encodePacked( + "AccessControl: account ", vm.toString(address(0x6)), " is missing role ", vm.toString(OPERATOR_ROLE) + ) + ); approvalManager.safeTransferFrom(address(token), TOKEN_OWNER, TOKEN_RECIPIENT, TOKEN_ID, TRANSFER_AMOUNT, ""); } @@ -172,7 +176,11 @@ contract ERC1155ApprovalManagerTest is Test { function test_OnlyManagerCanGrantRole() public { vm.prank(OPERATOR); - vm.expectRevert(abi.encodeWithSelector(IERC1155ApprovalManager.NotManager.selector, OPERATOR)); + vm.expectRevert( + abi.encodePacked( + "AccessControl: account ", vm.toString(OPERATOR), " is missing role ", vm.toString(MANAGER_ROLE) + ) + ); approvalManager.grantOperatorRole(address(0x6)); } diff --git a/src/token/ERC1155/IRareERC1155.sol b/src/token/ERC1155/IRareERC1155.sol index 3636db0..e7680cd 100644 --- a/src/token/ERC1155/IRareERC1155.sol +++ b/src/token/ERC1155/IRareERC1155.sol @@ -8,7 +8,7 @@ import {ITokenCreator} from "../extensions/ITokenCreator.sol"; /// @author SuperRare Labs Inc. /// @title IRareERC1155 /// @notice Interface for the RARE Protocol ERC1155 token. -/// @dev Extends the RARE `ITokenCreator` interface so marketplace and royalty infrastructure can resolve creators per token id. +/// @dev Extends the RARE `ITokenCreator` interface so marketplace and royalty infrastructure can resolve the collection creator. interface IRareERC1155 is ITokenCreator, IERC2981Upgradeable { /// @notice Per-token configuration for an ERC1155 edition. struct TokenConfig { @@ -26,7 +26,7 @@ interface IRareERC1155 is ITokenCreator, IERC2981Upgradeable { /// @notice Emitted when the owner creates a token type. /// @param tokenId Newly created token id. - /// @param creator RARE creator recorded for the token id. + /// @param creator Collection owner reported as creator when the token id is created. /// @param royaltyReceiver ERC2981 royalty receiver configured for the token id. /// @param maxSupply Maximum supply configured for the token id. /// @param tokenURI Token-specific metadata URI. diff --git a/src/token/ERC1155/RareERC1155.sol b/src/token/ERC1155/RareERC1155.sol index dc4a235..560ae0d 100644 --- a/src/token/ERC1155/RareERC1155.sol +++ b/src/token/ERC1155/RareERC1155.sol @@ -49,9 +49,6 @@ contract RareERC1155 is /// @notice Token configuration by token id. mapping(uint256 => TokenConfig) private tokenConfigs; - /// @notice RARE creator address by token id. - mapping(uint256 => address) private tokenCreators; - /// @notice Approved minter status by account. mapping(address => bool) private minterAddresses; @@ -130,7 +127,7 @@ contract RareERC1155 is ifNotDisabled returns (uint256) { - return _createToken(_tokenURI, _maxSupply, msg.sender, _royaltyReceiver); + return _createToken(_tokenURI, _maxSupply, _royaltyReceiver); } /// @inheritdoc IRareERC1155 @@ -237,8 +234,13 @@ contract RareERC1155 is } /// @inheritdoc ITokenCreator - function tokenCreator(uint256 _tokenId) public view override(ITokenCreator) returns (address payable) { - return payable(tokenCreators[_tokenId]); + function tokenCreator(uint256) public view override(ITokenCreator) returns (address payable) { + return payable(owner()); + } + + /// @notice Prevents the collection owner, and therefore creator proxy, from becoming the zero address. + function renounceOwnership() public view override onlyOwner { + revert ZeroAddressUnsupported(); } /// @inheritdoc IRareERC1155 @@ -273,13 +275,12 @@ contract RareERC1155 is || super.supportsInterface(_interfaceId); } - /// @notice Creates a token id and configures creator state. + /// @notice Creates a token id and configures token state. /// @param _tokenURI Token-specific metadata URI. /// @param _maxSupply Maximum supply for the token id. - /// @param _creator RARE creator recorded for the token id. /// @param _royaltyReceiver ERC2981 royalty receiver for the token id. /// @return tokenId Newly created token id. - function _createToken(string calldata _tokenURI, uint256 _maxSupply, address _creator, address _royaltyReceiver) + function _createToken(string calldata _tokenURI, uint256 _maxSupply, address _royaltyReceiver) internal returns (uint256) { @@ -291,15 +292,14 @@ contract RareERC1155 is tokenIdCounter++; uint256 tokenId = tokenIdCounter; - // State writes: register token constraints and creator lookup. + // State writes: register token constraints and royalty configuration. tokenConfigs[tokenId] = TokenConfig(_maxSupply, _tokenURI, true); - tokenCreators[tokenId] = _creator; tokenRoyaltyPercentages[tokenId] = defaultRoyaltyPercentage; _setTokenRoyalty(tokenId, _royaltyReceiver, uint96(defaultRoyaltyPercentage * BASIS_POINTS_PER_PERCENT)); // Metadata and domain events: expose the new URI and token config to indexers. emit URI(_tokenURI, tokenId); - emit TokenCreated(tokenId, _creator, _royaltyReceiver, _maxSupply, _tokenURI); + emit TokenCreated(tokenId, owner(), _royaltyReceiver, _maxSupply, _tokenURI); return tokenId; } diff --git a/src/v2/approver/ERC1155/ERC1155ApprovalManager.sol b/src/v2/approver/ERC1155/ERC1155ApprovalManager.sol index 607eab5..7c3f1cb 100644 --- a/src/v2/approver/ERC1155/ERC1155ApprovalManager.sol +++ b/src/v2/approver/ERC1155/ERC1155ApprovalManager.sol @@ -38,34 +38,27 @@ contract ERC1155ApprovalManager is IERC1155ApprovalManager, AccessControl { _; } - /// @notice Modifier to check if caller has manager authority. - modifier onlyManager() { - // Atomic guard: manager-only calls reject unauthorized callers before any role or state writes. - if (!hasRole(MANAGER_ROLE, msg.sender)) revert NotManager(msg.sender); - _; - } - /// @inheritdoc IERC1155ApprovalManager - function disable() external onlyManager { + function disable() external onlyRole(MANAGER_ROLE) { // State write: permanently disable future transfer execution. disabled = true; emit ContractDisabled(msg.sender); } /// @inheritdoc IERC1155ApprovalManager - function grantOperatorRole(address operator) external onlyManager { + function grantOperatorRole(address operator) external onlyRole(MANAGER_ROLE) { // Role write: authorize one marketplace/operator contract to execute ERC1155 transfers. _grantRole(OPERATOR_ROLE, operator); } /// @inheritdoc IERC1155ApprovalManager - function revokeOperatorRole(address operator) external onlyManager { + function revokeOperatorRole(address operator) external onlyRole(MANAGER_ROLE) { // Role write: remove ERC1155 transfer authority from one operator contract. _revokeRole(OPERATOR_ROLE, operator); } /// @inheritdoc IERC1155ApprovalManager - function batchGrantOperatorRole(address[] calldata operators) external onlyManager { + function batchGrantOperatorRole(address[] calldata operators) external onlyRole(MANAGER_ROLE) { for (uint256 i = 0; i < operators.length; i++) { // Role write: authorize the current operator address in the batch. _grantRole(OPERATOR_ROLE, operators[i]); @@ -73,7 +66,7 @@ contract ERC1155ApprovalManager is IERC1155ApprovalManager, AccessControl { } /// @inheritdoc IERC1155ApprovalManager - function batchRevokeOperatorRole(address[] calldata operators) external onlyManager { + function batchRevokeOperatorRole(address[] calldata operators) external onlyRole(MANAGER_ROLE) { for (uint256 i = 0; i < operators.length; i++) { // Role write: revoke the current operator address in the batch. _revokeRole(OPERATOR_ROLE, operators[i]); @@ -84,10 +77,8 @@ contract ERC1155ApprovalManager is IERC1155ApprovalManager, AccessControl { function safeTransferFrom(address token, address from, address to, uint256 id, uint256 amount, bytes calldata data) external whenNotDisabled + onlyRole(OPERATOR_ROLE) { - // Atomic guard: only approved operator contracts may execute user-authorized ERC1155 transfers. - if (!hasRole(OPERATOR_ROLE, msg.sender)) revert NotOperator(); - // External token call: token contract enforces holder approval, balance, and receiver acceptance. IERC1155 erc1155 = IERC1155(token); erc1155.safeTransferFrom(from, to, id, amount, data); @@ -101,10 +92,7 @@ contract ERC1155ApprovalManager is IERC1155ApprovalManager, AccessControl { uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data - ) external whenNotDisabled { - // Atomic guard: only approved operator contracts may execute user-authorized ERC1155 batch transfers. - if (!hasRole(OPERATOR_ROLE, msg.sender)) revert NotOperator(); - + ) external whenNotDisabled onlyRole(OPERATOR_ROLE) { // External token call: token contract enforces holder approval, balances, and receiver acceptance. IERC1155 erc1155 = IERC1155(token); erc1155.safeBatchTransferFrom(from, to, ids, amounts, data); diff --git a/src/v2/approver/ERC1155/IERC1155ApprovalManager.sol b/src/v2/approver/ERC1155/IERC1155ApprovalManager.sol index 2d28d57..ed83bd6 100644 --- a/src/v2/approver/ERC1155/IERC1155ApprovalManager.sol +++ b/src/v2/approver/ERC1155/IERC1155ApprovalManager.sol @@ -4,10 +4,6 @@ pragma solidity ^0.8.18; /// @title IERC1155ApprovalManager /// @notice Interface for managing ERC1155 token approvals and transfers. interface IERC1155ApprovalManager { - /// @notice Error thrown when caller is not a manager. - /// @param caller The account that attempted a manager-only operation. - error NotManager(address caller); - /// @notice Error thrown when caller is not an operator. error NotOperator(); From 762c1818dcdfd34a03e4f36de9ba9a454a23dddb Mon Sep 17 00:00:00 2001 From: Keegan Date: Fri, 5 Jun 2026 17:30:15 -0400 Subject: [PATCH 14/17] Harden ERC1155 marketplace settlement --- abis/ERC1155ApprovalManager.json | 2 +- abis/IERC1155ApprovalManager.json | 2 +- abis/IRareERC1155.json | 2 +- abis/IRareERC1155CheckoutExecutionModule.json | 1 + abis/IRareERC1155ContractFactory.json | 2 +- abis/IRareERC1155Marketplace.json | 2 +- abis/IRareERC1155MarketplaceTypes.json | 2 +- abis/IRareERC1155Settlement.json | 1 - abis/IRareERC1155TradeExecutionModule.json | 1 + abis/RareERC1155.json | 2 +- abis/RareERC1155CheckoutExecutionModule.json | 1 + abis/RareERC1155ContractFactory.json | 2 +- abis/RareERC1155ExecutionModuleBase.json | 1 + abis/RareERC1155Marketplace.json | 2 +- abis/RareERC1155MarketplacePayments.json | 2 +- abis/RareERC1155MarketplaceStorage.json | 2 +- abis/RareERC1155Settlement.json | 1 - abis/RareERC1155TradeExecutionModule.json | 1 + script/NetworkConfig.s.sol | 16 +- ...ERC1155CheckoutExecutionModuleUpdate.s.sol | 27 + ...areERC1155ExecutionModuleScriptGuard.s.sol | 29 + .../RareERC1155MarketplaceDeploy.s.sol | 47 +- .../RareERC1155SettlementScriptGuard.s.sol | 29 - .../RareERC1155SettlementUpdate.s.sol | 27 - ...areERC1155TradeExecutionModuleUpdate.s.sol | 27 + .../check-erc1155-storage-layout.sh | 42 + .../ERC1155/RareERC1155SystemDeploy.s.sol | 47 +- .../IRareERC1155CheckoutExecutionModule.sol | 36 + src/marketplace/IRareERC1155Marketplace.sol | 21 +- .../IRareERC1155MarketplaceTypes.sol | 14 +- src/marketplace/IRareERC1155Settlement.sol | 64 - .../IRareERC1155TradeExecutionModule.sol | 37 + .../RareERC1155CheckoutExecutionModule.sol | 891 ++++++++++ .../RareERC1155ExecutionModuleBase.sol | 381 +++++ src/marketplace/RareERC1155Marketplace.sol | 97 +- .../RareERC1155MarketplacePayments.sol | 83 +- .../RareERC1155MarketplaceStorage.sol | 22 +- src/marketplace/RareERC1155Settlement.sol | 1443 ----------------- .../RareERC1155SettlementCheckoutUtils.sol | 253 --- .../RareERC1155TradeExecutionModule.sol | 435 +++++ .../RareERC1155MarketplaceGas.t.sol | 9 +- .../RareERC1155MarketplaceSettlement.t.sol | 484 +++++- src/test/token/ERC1155/RareERC1155.t.sol | 19 +- src/token/ERC1155/IRareERC1155.sol | 8 +- src/token/ERC1155/RareERC1155.sol | 43 +- 45 files changed, 2694 insertions(+), 1966 deletions(-) create mode 100644 abis/IRareERC1155CheckoutExecutionModule.json delete mode 100644 abis/IRareERC1155Settlement.json create mode 100644 abis/IRareERC1155TradeExecutionModule.json create mode 100644 abis/RareERC1155CheckoutExecutionModule.json create mode 100644 abis/RareERC1155ExecutionModuleBase.json delete mode 100644 abis/RareERC1155Settlement.json create mode 100644 abis/RareERC1155TradeExecutionModule.json create mode 100644 script/marketplace/RareERC1155CheckoutExecutionModuleUpdate.s.sol create mode 100644 script/marketplace/RareERC1155ExecutionModuleScriptGuard.s.sol delete mode 100644 script/marketplace/RareERC1155SettlementScriptGuard.s.sol delete mode 100644 script/marketplace/RareERC1155SettlementUpdate.s.sol create mode 100644 script/marketplace/RareERC1155TradeExecutionModuleUpdate.s.sol create mode 100755 script/marketplace/check-erc1155-storage-layout.sh create mode 100644 src/marketplace/IRareERC1155CheckoutExecutionModule.sol delete mode 100644 src/marketplace/IRareERC1155Settlement.sol create mode 100644 src/marketplace/IRareERC1155TradeExecutionModule.sol create mode 100644 src/marketplace/RareERC1155CheckoutExecutionModule.sol create mode 100644 src/marketplace/RareERC1155ExecutionModuleBase.sol delete mode 100644 src/marketplace/RareERC1155Settlement.sol delete mode 100644 src/marketplace/RareERC1155SettlementCheckoutUtils.sol create mode 100644 src/marketplace/RareERC1155TradeExecutionModule.sol diff --git a/abis/ERC1155ApprovalManager.json b/abis/ERC1155ApprovalManager.json index a426b09..9191b36 100644 --- a/abis/ERC1155ApprovalManager.json +++ b/abis/ERC1155ApprovalManager.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MANAGER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"batchGrantOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchRevokeOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disable","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"disabler","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ContractDisabledError","inputs":[]},{"type":"error","name":"NotManager","inputs":[{"name":"caller","type":"address","internalType":"address"}]},{"type":"error","name":"NotOperator","inputs":[]}],"bytecode":{"object":"0x60806040818152346100ed576000808052602091818352808220338352835260ff8183205416156100b7575b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0892838352828152818320338452815260ff82842054161561007e575b6001805460ff19169055610fa885816100f38239f35b83835282815281832090338452528120600160ff19825416179055339160008051602061109b833981519152339280a438808080610068565b8180528183528082203383528352808220600160ff1982541617905533338360008051602061109b8339815191528180a461002b565b600080fdfe60e060a060408152816040526004918236101561001b57600080fd5b600092833560e01c91826301eed9b1146108615750816301ffc9a71461080a5781631e48244714610774578163248a9ca31461074757816327ac0c58146106f65781632f2770db146106835781632f2ff15d146105d957816336568abe146105465781637ee7f69b146103ad57816391d1485414610364578163a217fddf14610348578163b219f7d7146102de578163d547741f1461029a578163eb46c45b1461015e57508063ec87621c14610135578063ee070805146101115763f5b541a6146100e557600080fd5b3461010d578160031936011261010d576020905151600080516020610f538339815191528152f35b5080fd5b503461010d578160031936011261010d5760209060ff600154169051519015158152f35b503461010d578160031936011261010d576020905151600080516020610f338339815191528152f35b8391503461010d5760c036600319011261010d5761017a610939565b9261018361094f565b61018b610965565b9260a4356001600160401b038111610296576101aa903690830161097b565b92909660ff6001541661028557600080516020610f5383398151915287528660205284518088203360005260205260ff816000205416156102765750869760018060a01b0380921692833b15610272576102428996928793858a51519b8c998a988997637921219560e11b895216908701521660248501526064356044850152608435606485015289608485015260a4840191610eed565b03925af190811561026857506102555750f35b61025e90610cec565b6102655780f35b80fd5b51513d84823e3d90fd5b8880fd5b51631f0853c160e21b81528390fd5b845151631a8854fd60e31b81528390fd5b8580fd5b919050346102da5780513660031901126102da576102d791356102d260016102c061094f565b938387528660205251862001546109a8565b610e4d565b80f35b8280fd5b9050346102da5760203660031901126102da576102f9610939565b91600080516020610f33833981519152845283602052518084203360005260205260ff8160002054161561033157836102d784610db3565b602492505190632a19e83360e01b82523390820152fd5b50503461010d578160031936011261010d575151908152602090f35b8391503461010d57825136600319011261010d5760209261038361094f565b91358352828452518092209060018060a01b0316600052825260ff81600020541690519015158152f35b83833461010d5760c0906003198281360112610542576103cb610939565b906103d461094f565b916103dd610965565b6080526001600160401b039260643584811161053e576104009036908a01610904565b93909260843586811161053a5761041a9036908c01610904565b9660a435908111610536576104329036908d0161097b565b97909560ff6001541661052557600080516020610f538339815191528c528b6020528b60ff8b5182818094203382526020522054161561051657509a9b999a98998c996001600160a01b0394851698893b156105125760a48e8e886104c7966104d99a6104f09d845151808752631759616b60e11b905216908451015260805116602483510152604482510152510191610f0e565b918b5160648682860301910152610f0e565b906084895191828403019101528751948593610eed565b0390838651915af19081156102685750610508575080f35b6102d79051610cec565b8b80fd5b51631f0853c160e21b81528d90fd5b895151631a8854fd60e31b81528d90fd5b8a80fd5b8980fd5b8780fd5b8380fd5b83833461010d5751918260031936011261010d5761056261094f565b90336001600160a01b0383160361057e57906102d79135610e4d565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b9050346102da578151908160031936011261054257359161060e60016105fd61094f565b9385875286602052862001546109a8565b82845283602052518084209160018060a01b03169182855260205260ff818520541615610639578380f35b828452836020528084208285526020528320600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8480a43880808380f35b919050346102da57826003193601126102da57600080516020610f338339815191528352826020525180832033845260205260ff8184205416156103315782600160ff1981541617600155337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd8280a280f35b9050346102da5760203660031901126102da57610711610939565b91600080516020610f338339815191528452836020525180842033855260205260ff81852054161561033157836102d784610d15565b9050346102da5760203660031901126102da57602092916001913583528284525180922001549051908152f35b9050346102da5760203660031901126102da5780356001600160401b038111610542576107a49036908301610904565b919092600080516020610f338339815191528552846020525180852033865260205260ff818620541615610331575050825b8181106107e1578380f35b806108006107fb6107f6610805948688610ec9565b610ed9565b610db3565b610ea4565b6107d6565b9050346102da5760203660031901126102da57359063ffffffff60e01b82168092036102da5760209250637965db0b60e01b8214918215610850575b5051519015158152f35b6301ffc9a760e01b14915038610846565b849250346102da5760203660031901126102da5781356001600160401b038111610542576108929036908401610904565b919092600080516020610f338339815191528552846020526040852033865260205260ff604086205416156108ef575050825b8181106108d0578380f35b806108006108e56107f66108ea948688610ec9565b610d15565b6108c5565b632a19e83360e01b8252339082015260249150fd5b9181601f84011215610934578235916001600160401b038311610934576020808501948460051b01011161093457565b600080fd5b600435906001600160a01b038216820361093457565b602435906001600160a01b038216820361093457565b604435906001600160a01b038216820361093457565b9181601f84011215610934578235916001600160401b038311610934576020838186019501011161093457565b6000818152602091818352604092838320338452815260ff8484205416156109d05750505050565b83516001600160401b03939092336060850186811186821017610cb5578752602a85528385019187368437855115610ca15760308353855191600192831015610c8d576078602188015360295b838111610c235750610b4d578751906080820182811089821117610c0f57895260428252858201926060368537825115610bfb57603084538251811015610bfb57607860218401536041905b808211610b8f575050610b4d5791610ae294939188936067989951968793610ab88886019a76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8c525180926037880190610cc9565b8401917001034b99036b4b9b9b4b733903937b6329607d1b60378401525180936048840190610cc9565b0103602881018552601f19968791011684019684881090881117610b39575092610b3060449593601f938880975262461bcd60e51b8752600487015251809281602488015287870190610cc9565b01168101030190fd5b634e487b7160e01b81526041600452602490fd5b60648589519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015610be7576f181899199a1a9b1b9c1cb0b131b232b360811b901a610bbe8486610e7d565b5360041c918015610bd3576000190190610a69565b634e487b7160e01b87526011600452602487fd5b634e487b7160e01b88526032600452602488fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b86526041600452602486fd5b90600f81166010811015610c79576f181899199a1a9b1b9c1cb0b131b232b360811b901a610c51838a610e7d565b5360041c908015610c655760001901610a1d565b634e487b7160e01b86526011600452602486fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b84526032600452602484fd5b634e487b7160e01b84526041600452602484fd5b60005b838110610cdc5750506000910152565b8181015183820152602001610ccc565b6001600160401b038111610cff57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b031660008181527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f6020526040812054909190600080516020610f538339815191529060ff1615610d6c57505050565b808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4565b6001600160a01b031660008181527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f6020526040812054909190600080516020610f538339815191529060ff16610e0957505050565b80835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416610e0957505050565b908151811015610e8e570160200190565b634e487b7160e01b600052603260045260246000fd5b6000198114610eb35760010190565b634e487b7160e01b600052601160045260246000fd5b9190811015610e8e5760051b0190565b356001600160a01b03811681036109345790565b908060209392818452848401376000828201840152601f01601f1916010190565b81835290916001600160fb1b0383116109345760209260051b80928483013701019056fe241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0897667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929a2646970667358221220ab138f897f93ba50f6d43f3b70edf45f1b4ea413c7bb5ece5694d2dc865eceb164736f6c634300081200332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","sourceMap":"547:4180:246:-:0;;;;;;;;2198:4:86;547:4180:246;;;;;;;;;;;1173:10;547:4180;;;;;;;;;;7669:23:86;7665:149;;-1:-1:-1;711:25:246;547:4180;;;;;;;;;;1173:10;547:4180;;;;;;;;;;7669:23:86;7665:149;;-1:-1:-1;1410:16:246;711:25;;-1:-1:-1;;711:25:246;;;547:4180;711:25;547:4180;;711:25;547:4180;;7665:149:86;547:4180:246;;;;;;;;;1173:10;;547:4180;;;;;7740:4:86;711:25:246;;;;;;;;1173:10;;-1:-1:-1;;;;;;;;;;;1173:10:246;7763:40:86;;;7665:149;;;;;;;547:4180:246;;;;;;;;;1173:10;547:4180;;;;;;;7740:4:86;711:25:246;;;;;;;;1173:10;;7763:40:86;-1:-1:-1;;;;;;;;;;;7763:40:86;;;7665:149;;547:4180:246;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60e060a060408152816040526004918236101561001b57600080fd5b600092833560e01c91826301eed9b1146108615750816301ffc9a71461080a5781631e48244714610774578163248a9ca31461074757816327ac0c58146106f65781632f2770db146106835781632f2ff15d146105d957816336568abe146105465781637ee7f69b146103ad57816391d1485414610364578163a217fddf14610348578163b219f7d7146102de578163d547741f1461029a578163eb46c45b1461015e57508063ec87621c14610135578063ee070805146101115763f5b541a6146100e557600080fd5b3461010d578160031936011261010d576020905151600080516020610f538339815191528152f35b5080fd5b503461010d578160031936011261010d5760209060ff600154169051519015158152f35b503461010d578160031936011261010d576020905151600080516020610f338339815191528152f35b8391503461010d5760c036600319011261010d5761017a610939565b9261018361094f565b61018b610965565b9260a4356001600160401b038111610296576101aa903690830161097b565b92909660ff6001541661028557600080516020610f5383398151915287528660205284518088203360005260205260ff816000205416156102765750869760018060a01b0380921692833b15610272576102428996928793858a51519b8c998a988997637921219560e11b895216908701521660248501526064356044850152608435606485015289608485015260a4840191610eed565b03925af190811561026857506102555750f35b61025e90610cec565b6102655780f35b80fd5b51513d84823e3d90fd5b8880fd5b51631f0853c160e21b81528390fd5b845151631a8854fd60e31b81528390fd5b8580fd5b919050346102da5780513660031901126102da576102d791356102d260016102c061094f565b938387528660205251862001546109a8565b610e4d565b80f35b8280fd5b9050346102da5760203660031901126102da576102f9610939565b91600080516020610f33833981519152845283602052518084203360005260205260ff8160002054161561033157836102d784610db3565b602492505190632a19e83360e01b82523390820152fd5b50503461010d578160031936011261010d575151908152602090f35b8391503461010d57825136600319011261010d5760209261038361094f565b91358352828452518092209060018060a01b0316600052825260ff81600020541690519015158152f35b83833461010d5760c0906003198281360112610542576103cb610939565b906103d461094f565b916103dd610965565b6080526001600160401b039260643584811161053e576104009036908a01610904565b93909260843586811161053a5761041a9036908c01610904565b9660a435908111610536576104329036908d0161097b565b97909560ff6001541661052557600080516020610f538339815191528c528b6020528b60ff8b5182818094203382526020522054161561051657509a9b999a98998c996001600160a01b0394851698893b156105125760a48e8e886104c7966104d99a6104f09d845151808752631759616b60e11b905216908451015260805116602483510152604482510152510191610f0e565b918b5160648682860301910152610f0e565b906084895191828403019101528751948593610eed565b0390838651915af19081156102685750610508575080f35b6102d79051610cec565b8b80fd5b51631f0853c160e21b81528d90fd5b895151631a8854fd60e31b81528d90fd5b8a80fd5b8980fd5b8780fd5b8380fd5b83833461010d5751918260031936011261010d5761056261094f565b90336001600160a01b0383160361057e57906102d79135610e4d565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b9050346102da578151908160031936011261054257359161060e60016105fd61094f565b9385875286602052862001546109a8565b82845283602052518084209160018060a01b03169182855260205260ff818520541615610639578380f35b828452836020528084208285526020528320600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8480a43880808380f35b919050346102da57826003193601126102da57600080516020610f338339815191528352826020525180832033845260205260ff8184205416156103315782600160ff1981541617600155337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd8280a280f35b9050346102da5760203660031901126102da57610711610939565b91600080516020610f338339815191528452836020525180842033855260205260ff81852054161561033157836102d784610d15565b9050346102da5760203660031901126102da57602092916001913583528284525180922001549051908152f35b9050346102da5760203660031901126102da5780356001600160401b038111610542576107a49036908301610904565b919092600080516020610f338339815191528552846020525180852033865260205260ff818620541615610331575050825b8181106107e1578380f35b806108006107fb6107f6610805948688610ec9565b610ed9565b610db3565b610ea4565b6107d6565b9050346102da5760203660031901126102da57359063ffffffff60e01b82168092036102da5760209250637965db0b60e01b8214918215610850575b5051519015158152f35b6301ffc9a760e01b14915038610846565b849250346102da5760203660031901126102da5781356001600160401b038111610542576108929036908401610904565b919092600080516020610f338339815191528552846020526040852033865260205260ff604086205416156108ef575050825b8181106108d0578380f35b806108006108e56107f66108ea948688610ec9565b610d15565b6108c5565b632a19e83360e01b8252339082015260249150fd5b9181601f84011215610934578235916001600160401b038311610934576020808501948460051b01011161093457565b600080fd5b600435906001600160a01b038216820361093457565b602435906001600160a01b038216820361093457565b604435906001600160a01b038216820361093457565b9181601f84011215610934578235916001600160401b038311610934576020838186019501011161093457565b6000818152602091818352604092838320338452815260ff8484205416156109d05750505050565b83516001600160401b03939092336060850186811186821017610cb5578752602a85528385019187368437855115610ca15760308353855191600192831015610c8d576078602188015360295b838111610c235750610b4d578751906080820182811089821117610c0f57895260428252858201926060368537825115610bfb57603084538251811015610bfb57607860218401536041905b808211610b8f575050610b4d5791610ae294939188936067989951968793610ab88886019a76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8c525180926037880190610cc9565b8401917001034b99036b4b9b9b4b733903937b6329607d1b60378401525180936048840190610cc9565b0103602881018552601f19968791011684019684881090881117610b39575092610b3060449593601f938880975262461bcd60e51b8752600487015251809281602488015287870190610cc9565b01168101030190fd5b634e487b7160e01b81526041600452602490fd5b60648589519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015610be7576f181899199a1a9b1b9c1cb0b131b232b360811b901a610bbe8486610e7d565b5360041c918015610bd3576000190190610a69565b634e487b7160e01b87526011600452602487fd5b634e487b7160e01b88526032600452602488fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b86526041600452602486fd5b90600f81166010811015610c79576f181899199a1a9b1b9c1cb0b131b232b360811b901a610c51838a610e7d565b5360041c908015610c655760001901610a1d565b634e487b7160e01b86526011600452602486fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b84526032600452602484fd5b634e487b7160e01b84526041600452602484fd5b60005b838110610cdc5750506000910152565b8181015183820152602001610ccc565b6001600160401b038111610cff57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b031660008181527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f6020526040812054909190600080516020610f538339815191529060ff1615610d6c57505050565b808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4565b6001600160a01b031660008181527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f6020526040812054909190600080516020610f538339815191529060ff16610e0957505050565b80835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416610e0957505050565b908151811015610e8e570160200190565b634e487b7160e01b600052603260045260246000fd5b6000198114610eb35760010190565b634e487b7160e01b600052601160045260246000fd5b9190811015610e8e5760051b0190565b356001600160a01b03811681036109345790565b908060209392818452848401376000828201840152601f01601f1916010190565b81835290916001600160fb1b0383116109345760209260051b80928483013701019056fe241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0897667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929a2646970667358221220ab138f897f93ba50f6d43f3b70edf45f1b4ea413c7bb5ece5694d2dc865eceb164736f6c63430008120033","sourceMap":"547:4180:246:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;929:29;547:4180;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;547:4180:246;;;;;;;;;;;:::i;:::-;;;;;;;;1637:44;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;;;3786:10;547:4180;;;;;;;;;;3762:35;3758:61;;547:4180;;;;;;;;;;;3981:52;;;;;;547:4180;;;;;;;;;;;;;;;;;;;;3981:52;;547:4180;3981:52;;;547:4180;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3981:52;;;;;;;;;;;;547:4180;;3981:52;;;;:::i;:::-;547:4180;;3981:52;547:4180;;;;3981:52;547:4180;;;;;;;;;3981:52;547:4180;;;3758:61;547:4180;-1:-1:-1;;;3806:13:246;;547:4180;;3806:13;1637:44;547:4180;;;-1:-1:-1;;;1658:23:246;;547:4180;;1658:23;547:4180;;;;;;;;;;;;;;-1:-1:-1;;547:4180:246;;;;5486:7:86;547:4180:246;;2642:4:86;547:4180:246;;;:::i;:::-;;;;;;;;;;;4604:22:86;547:4180:246;2642:4:86;:::i;:::-;5486:7;:::i;:::-;547:4180:246;;;;;;;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;2737:8;;;;:::i;1910:69::-;547:4180;;;;1957:22;;;;;;1937:10;1957:22;;;547:4180;1957:22;547:4180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;;;;;547:4180:246;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;1641:8;547:4180;;1637:44;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;;;;;;;4463:10;547:4180;;;;;;;4439:35;4435:61;;-1:-1:-1;547:4180:246;;;;;;;;-1:-1:-1;;;;;547:4180:246;;;;4659:59;;;;;547:4180;;;;;;;;;;;;;4659:59;;;547:4180;;;4659:59;;547:4180;4659:59;;;;547:4180;;;;;4659:59;;547:4180;;;4659:59;;547:4180;;4659:59;547:4180;;;:::i;:::-;4659:59;;;547:4180;;;;;;;;;;:::i;:::-;4659:59;547:4180;4659:59;;547:4180;;;;;;;;4659:59;;547:4180;;;;:::i;:::-;4659:59;;;;;;;;;;;;;;;;547:4180;;;4659:59;;;;;:::i;:::-;547:4180;;;4435:61;547:4180;-1:-1:-1;;;4483:13:246;;547:4180;;4483:13;1637:44;547:4180;;;-1:-1:-1;;;1658:23:246;;547:4180;;1658:23;547:4180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;719:10:113;;-1:-1:-1;;;;;547:4180:246;;6133:23:86;547:4180:246;;;6237:7:86;547:4180:246;;6237:7:86;:::i;547:4180:246:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;2642:4:86;547:4180:246;;;:::i;:::-;;;;;;;;;;4604:22:86;547:4180:246;2642:4:86;:::i;:::-;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7669:23:86;7665:149;;547:4180:246;;;7665:149:86;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;;719:10:113;7763:40:86;;;;;7665:149;;;547:4180:246;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;547:4180;2179:4;547:4180;;;;;;2179:4;547:4180;1937:10;2198:28;;;;547:4180;;;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;2482:8;;;;:::i;547:4180::-;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;;;;;;;;;;;;;;4604:22:86;547:4180:246;;;;;;;;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;-1:-1:-1;;;;;547:4180:246;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;3242:13;;;3257:20;;;;;;547:4180;;;3279:3;3402:12;;;;3279:3;3402:12;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;3279:3;:::i;:::-;3242:13;;547:4180;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2840:47:86;;;:87;;;;547:4180:246;;;;;;;;;;2840:87:86;-1:-1:-1;;;937:40:118;;-1:-1:-1;2840:87:86;;;547:4180:246;;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;-1:-1:-1;;;;;547:4180:246;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;547:4180:246;;;;;;;;1937:10;547:4180;;;;;;;;;;1914:34;1910:69;;2901:13;;;2916:20;;;;;;547:4180;;;2938:3;3063:12;;;;2938:3;3063:12;;;;:::i;:::-;;:::i;2938:3::-;2901:13;;1910:69;-1:-1:-1;;;1957:22:246;;1937:10;1957:22;;;547:4180;;;-1:-1:-1;1957:22:246;547:4180;;;;;;;;;;;;;-1:-1:-1;;;;;547:4180:246;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;547:4180:246;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;547:4180:246;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;547:4180:246;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;547:4180:246;;;;;;;;;;;;;;;:::o;3460:103:86:-;3130:6;547:4180:246;;;;;;;;;;;;;719:10:113;547:4180:246;;;;;;;;;;3931:23:86;3927:390;;3460:103;;;;:::o;3927:390::-;547:4180:246;;-1:-1:-1;;;;;547:4180:246;;;719:10:113;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:15:115;;;547:4180:246;;;;;;;;;;2000:15:115;547:4180:246;;;2000:15:115;547:4180:246;2058:5:115;;;;;;2170:10;278:18;;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:15:115;;;547:4180:246;;;;;;;2000:15:115;547:4180:246;;;2000:15:115;547:4180:246;2025:128:115;2058:5;;;;;;2170:10;;278:18;;547:4180:246;;;;;;;;;;;4022:252:86;;;547:4180:246;4022:252:86;;;547:4180:246;-1:-1:-1;;;547:4180:246;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;547:4180:246;;;;;;;;;;;;:::i;:::-;;4022:252:86;;;;;;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:336:86;;2141:1:115;3970:336:86;;547:4180:246;;;;;;;;;;;;;;:::i;:::-;;;;;3970:336:86;;;;547:4180:246;-1:-1:-1;;;547:4180:246;;;2141:1:115;547:4180:246;;;;278:18:115;;547:4180:246;;;;;;;278:18:115;;;2141:1;278:18;;;;;;547:4180:246;278:18:115;547:4180:246;;;278:18:115;;2065:3;2105:11;;2113:3;2105:11;;2096:21;;;;;;-1:-1:-1;;;2096:21:115;;2084:33;;;;:::i;:::-;;2141:1;547:4180:246;2065:3:115;547:4180:246;;;;-1:-1:-1;;547:4180:246;;2030:26:115;;547:4180:246;-1:-1:-1;;;547:4180:246;;;2141:1:115;547:4180:246;;;;2096:21:115;-1:-1:-1;;;547:4180:246;;;2141:1:115;547:4180:246;;;;;-1:-1:-1;;;547:4180:246;;;2141:1:115;547:4180:246;;;;;-1:-1:-1;;;547:4180:246;;;2141:1:115;547:4180:246;;;;2065:3:115;2105:11;2113:3;2105:11;;2096:21;;;;;;-1:-1:-1;;;2096:21:115;;2084:33;;;;:::i;:::-;;2141:1;547:4180:246;2065:3:115;547:4180:246;;;;-1:-1:-1;;547:4180:246;2030:26:115;;547:4180:246;-1:-1:-1;;;547:4180:246;;;2141:1:115;547:4180:246;;;;2096:21:115;-1:-1:-1;;;547:4180:246;;;2141:1:115;547:4180:246;;;;;-1:-1:-1;;;547:4180:246;;;;;;;;;-1:-1:-1;;;547:4180:246;;;;;;;;;-1:-1:-1;;;547:4180:246;;;;;;;;;;;;;;;;-1:-1:-1;;547:4180:246;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;547:4180:246;;;;;;:::o;:::-;;;;;;;;;;;;7587:233:86;-1:-1:-1;;;;;547:4180:246;3130:6:86;547:4180:246;;;;;;;;;;3130:6:86;;547:4180:246;-1:-1:-1;;;;;;;;;;;846:26:246;547:4180;;7669:23:86;7665:149;;7587:233;;;:::o;7665:149::-;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;;;7763:40:86;719:10:113;7763:40:86;;;7587:233::o;7991:234::-;-1:-1:-1;;;;;547:4180:246;3130:6:86;547:4180:246;;;;;;;;;;3130:6:86;;547:4180:246;-1:-1:-1;;;;;;;;;;;846:26:246;547:4180;;8070:149:86;;7991:234;;;:::o;8070:149::-;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;8168:40:86;719:10:113;8168:40:86;;;7991:234::o;:::-;;3130:6;547:4180:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8070:149:86;;7991:234;;;:::o;547:4180:246:-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;547:4180:246;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;547:4180:246;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;547:4180:246;;;;;;;;-1:-1:-1;;547:4180:246;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;547:4180:246;;;;;;;;;;;;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","MANAGER_ROLE()":"ec87621c","OPERATOR_ROLE()":"f5b541a6","batchGrantOperatorRole(address[])":"01eed9b1","batchRevokeOperatorRole(address[])":"1e482447","disable()":"2f2770db","disabled()":"ee070805","getRoleAdmin(bytes32)":"248a9ca3","grantOperatorRole(address)":"27ac0c58","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeOperatorRole(address)":"b219f7d7","revokeRole(bytes32,address)":"d547741f","safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":"7ee7f69b","safeTransferFrom(address,address,address,uint256,uint256,bytes)":"eb46c45b","supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ContractDisabledError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"NotManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disabler\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchGrantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchRevokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"grantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Users approve this manager on ERC1155 collections, and operator contracts execute transfers through it.\",\"errors\":{\"NotManager(address)\":[{\"params\":{\"caller\":\"The account that attempted a manager-only operation.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"disabler\":\"The manager that disabled the approval manager.\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to grant the role to.\"}},\"batchRevokeOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to revoke the role from.\"}},\"disable()\":{\"details\":\"Callable by an account with the manager role.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to grant the role to.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to revoke the role from.\"}},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"params\":{\"amounts\":\"The amounts of each token id to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"ids\":\"The token ids to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount of tokens to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"id\":\"The token id to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"title\":\"ERC1155ApprovalManager\",\"version\":1},\"userdoc\":{\"errors\":{\"ContractDisabledError()\":[{\"notice\":\"Error thrown when contract is disabled.\"}],\"NotManager(address)\":[{\"notice\":\"Error thrown when caller is not a manager.\"}],\"NotOperator()\":[{\"notice\":\"Error thrown when caller is not an operator.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Event emitted when contract is disabled.\"}},\"kind\":\"user\",\"methods\":{\"MANAGER_ROLE()\":{\"notice\":\"Role for managing operators.\"},\"OPERATOR_ROLE()\":{\"notice\":\"Role for contracts allowed to transfer tokens.\"},\"batchGrantOperatorRole(address[])\":{\"notice\":\"Grants operator transfer permissions to multiple contracts.\"},\"batchRevokeOperatorRole(address[])\":{\"notice\":\"Revokes operator transfer permissions from multiple contracts.\"},\"constructor\":{\"notice\":\"Grants deployer admin and manager roles.\"},\"disable()\":{\"notice\":\"Disables token transfers through the approval manager permanently.\"},\"disabled()\":{\"notice\":\"Whether the contract is disabled.\"},\"grantOperatorRole(address)\":{\"notice\":\"Grants operator transfer permissions to a contract.\"},\"revokeOperatorRole(address)\":{\"notice\":\"Revokes operator transfer permissions from a contract.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Safely transfer a batch of ERC1155 tokens from a user to a recipient.\"},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"notice\":\"Safely transfer ERC1155 tokens from a user to a recipient.\"}},\"notice\":\"A central approval manager for ERC1155 tokens that allows whitelisted contracts to transfer tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol\":\"ERC1155ApprovalManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xbc7fc49ba05b312e318d3d7b517ed0254489320bedef2e91f80c3bd4e904fc0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e411d112f89fcadbff89da0579d61eafdf76272aaa91fb18728a86337440bb88\",\"dweb:/ipfs/QmfKJqMJ2CF1mw4UwDajoFdrrfKWSZwetkAByUP56EeqSQ\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x2626d8ab3dfdad0fad630c212ad146d59473d0f48b771784c61a7c1dbbea1f3f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7c144532f1e7c76ac95fb6a8f617c1f740d7a73442a907eb60910e99dfa1fbf\",\"dweb:/ipfs/QmZsGyooD6emxB8JCuugRjnRYS2MPZEL586uuV7dgC8Jng\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4\",\"dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol\":{\"keccak256\":\"0x7c95928decb621e78548535c0603ca55c0b85021efbd7af0a8d287a9998db00c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ac51589d1c771a9591eb24f77e67812957228733baf985b68dd29df5a3a76fd\",\"dweb:/ipfs/QmbNSexx5ifBpSy2rs2PbTTaQ6Q3S1mVDHWLf9Bu5TmVJU\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ContractDisabledError"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"type":"error","name":"NotManager"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[{"internalType":"address","name":"disabler","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantOperatorRole"},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchRevokeOperatorRole"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disable"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantOperatorRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeOperatorRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"batchGrantOperatorRole(address[])":{"params":{"operators":"Contract addresses to grant the role to."}},"batchRevokeOperatorRole(address[])":{"params":{"operators":"Contract addresses to revoke the role from."}},"disable()":{"details":"Callable by an account with the manager role."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantOperatorRole(address)":{"params":{"operator":"The contract address to grant the role to."}},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event."},"revokeOperatorRole(address)":{"params":{"operator":"The contract address to revoke the role from."}},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"params":{"amounts":"The amounts of each token id to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","ids":"The token ids to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"params":{"amount":"The amount of tokens to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","id":"The token id to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"MANAGER_ROLE()":{"notice":"Role for managing operators."},"OPERATOR_ROLE()":{"notice":"Role for contracts allowed to transfer tokens."},"batchGrantOperatorRole(address[])":{"notice":"Grants operator transfer permissions to multiple contracts."},"batchRevokeOperatorRole(address[])":{"notice":"Revokes operator transfer permissions from multiple contracts."},"constructor":{"notice":"Grants deployer admin and manager roles."},"disable()":{"notice":"Disables token transfers through the approval manager permanently."},"disabled()":{"notice":"Whether the contract is disabled."},"grantOperatorRole(address)":{"notice":"Grants operator transfer permissions to a contract."},"revokeOperatorRole(address)":{"notice":"Revokes operator transfer permissions from a contract."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"notice":"Safely transfer a batch of ERC1155 tokens from a user to a recipient."},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"notice":"Safely transfer ERC1155 tokens from a user to a recipient."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol":"ERC1155ApprovalManager"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xbc7fc49ba05b312e318d3d7b517ed0254489320bedef2e91f80c3bd4e904fc0c","urls":["bzz-raw://e411d112f89fcadbff89da0579d61eafdf76272aaa91fb18728a86337440bb88","dweb:/ipfs/QmfKJqMJ2CF1mw4UwDajoFdrrfKWSZwetkAByUP56EeqSQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57","urls":["bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a","dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x2626d8ab3dfdad0fad630c212ad146d59473d0f48b771784c61a7c1dbbea1f3f","urls":["bzz-raw://d7c144532f1e7c76ac95fb6a8f617c1f740d7a73442a907eb60910e99dfa1fbf","dweb:/ipfs/QmZsGyooD6emxB8JCuugRjnRYS2MPZEL586uuV7dgC8Jng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b","urls":["bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d","dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858","urls":["bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4","dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc","urls":["bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7","dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6"],"license":"MIT"},"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol":{"keccak256":"0x7c95928decb621e78548535c0603ca55c0b85021efbd7af0a8d287a9998db00c","urls":["bzz-raw://4ac51589d1c771a9591eb24f77e67812957228733baf985b68dd29df5a3a76fd","dweb:/ipfs/QmbNSexx5ifBpSy2rs2PbTTaQ6Q3S1mVDHWLf9Bu5TmVJU"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"}},"version":1},"id":246} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MANAGER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"batchGrantOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchRevokeOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disable","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"disabler","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ContractDisabledError","inputs":[]},{"type":"error","name":"NotOperator","inputs":[]}],"bytecode":{"object":"0x60806040818152346100ed576000808052602091818352808220338352835260ff8183205416156100b7575b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0892838352828152818320338452815260ff82842054161561007e575b6001805460ff191690556110da85816100f38239f35b83835282815281832090338452528120600160ff1982541617905533916000805160206111cd833981519152339280a438808080610068565b8180528183528082203383528352808220600160ff198254161790553333836000805160206111cd8339815191528180a461002b565b600080fdfe6080604081526101006040526004908136101561001b57600080fd5b600091823560e01c90816301eed9b11461076f57816301ffc9a7146107185781631e482447146106af578163248a9ca31461068257816327ac0c58146106585781632f2770db1461060b5781632f2ff15d1461055d57816336568abe146104ca5781637ee7f69b1461034a57816391d1485414610301578163a217fddf146102e5578163b219f7d7146102bb578163d547741f14610277578163eb46c45b1461016f57508063ec87621c14610134578063ee070805146101105763f5b541a6146100e457600080fd5b3461010c578160031936011261010c5760209051516000805160206110658339815191528152f35b5080fd5b503461010c578160031936011261010c5760209060ff600154169051519015158152f35b503461010c578160031936011261010c5760209051517f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b088152f35b8391503461010c5760c036600319011261010c5761018b610803565b92610194610819565b61019c61082f565b9260a4356001600160401b038111610273576101bb9036908301610845565b92909660ff600154166102625786976101d2610aa4565b6001600160a01b0391821692833b1561025e5761022e8996928793858a51519b8c998a988997637921219560e11b895216908701521660248501526064356044850152608435606485015260a0608485015260a484019161101f565b03925af190811561025457506102415750f35b61024a90610cf8565b6102515780f35b80fd5b51513d84823e3d90fd5b8880fd5b845151631a8854fd60e31b81528390fd5b8580fd5b919050346102b75780513660031901126102b7576102b491356102af600161029d610819565b93838752866020525186200154610bca565b610e71565b80f35b8280fd5b8334610251576020366003190112610251576102b46102d8610803565b6102e0610872565b610de9565b50503461010c578160031936011261010c575151908152602090f35b8391503461010c57825136600319011261010c57602092610320610819565b91358352828452518092209060018060a01b0316600052825260ff81600020541690519015158152f35b83833461010c576003199260c0368501126102b757610367610803565b61036f610819565b9061037861082f565b60c0526001600160401b036064358181116104c65761039a90369086016107ce565b60849291923582811161025e576103b490369088016107ce565b99909260a4359081116104c2576103ce9036908901610845565b97909360ff600154166104b2578a9b6103e89b9a9b610aa4565b6001600160a01b0398888a163b156104ae578b9761047d96610462958f61044e948e91515160a060e0528060e05152631759616b60e11b9052169060e0515101528b60c05116602460e05151015260e051604460e05151015260a460e051510191611040565b9160e0515160648682860301910152611040565b90608460e05151918284030191015260e0515196879361101f565b039260e0515192165af19081156104a257506104965780f35b6102b460e05151610cf8565b5151913d9150823e3d90fd5b8b80fd5b50885151631a8854fd60e31b8152fd5b8980fd5b8680fd5b83833461010c5751918260031936011261010c576104e6610819565b90336001600160a01b0383160361050257906102b49135610e71565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b9050346102b757815190816003193601126106075735916105926001610581610819565b938587528660205286200154610bca565b82845283602052518084209160018060a01b03169182855260205260ff8185205416156105bd578380f35b828452836020528084208285526020528320600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8480a43880808380f35b8380fd5b8334610251578060031936011261025157610624610872565b600160ff1981541617600155337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd8280a280f35b8334610251576020366003190112610251576102b4610675610803565b61067d610872565b610d5d565b9050346102b75760203660031901126102b757602092916001913583528284525180922001549051908152f35b83903461010c57602036600319011261010c578035906001600160401b0382116102b7576106df913691016107ce565b6106e7610872565b825b8181106106f4578380f35b8061070e6102e0610709610713948688610ffb565b61100b565b610fd6565b6106e9565b9050346102b75760203660031901126102b757359063ffffffff60e01b82168092036102b75760209250637965db0b60e01b821491821561075e575b5051519015158152f35b6301ffc9a760e01b14915038610754565b83903461010c57602036600319011261010c578035906001600160401b0382116102b75761079f913691016107ce565b6107a7610872565b825b8181106107b4578380f35b8061070e61067d6107096107c9948688610ffb565b6107a9565b9181601f840112156107fe578235916001600160401b0383116107fe576020808501948460051b0101116107fe57565b600080fd5b600435906001600160a01b03821682036107fe57565b602435906001600160a01b03821682036107fe57565b604435906001600160a01b03821682036107fe57565b9181601f840112156107fe578235916001600160401b0383116107fe57602083818601950101116107fe57565b3360009081527fe84508f2c7fa9c351146748b3025cb78b45df37d868e48c6a75102fecdeee6456020908152604080832054909291907f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b089060ff16156108d85750505050565b6108e133610ec8565b908451906108ee82610d21565b60428252838201946060368737825115610a905760308653825190600191821015610a905790607860218501536041915b818311610a22575050506109e057846109ae60486109d293604497985198899161099f8984019876020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a52610976815180928d603789019101610cd5565b8401917001034b99036b4b9b9b4b733903937b6329607d1b603784015251809386840190610cd5565b01036028810189520187610d3c565b5194859362461bcd60e51b8552600485015251809281602486015285850190610cd5565b601f01601f19168101030190fd5b60648386519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f81166010811015610a7c576f181899199a1a9b1b9c1cb0b131b232b360811b901a610a528587610ea1565b5360041c928015610a685760001901919061091f565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b3360009081526000805160206110858339815191526020908152604080832054909291906000805160206110658339815191529060ff1615610ae65750505050565b610aef33610ec8565b90845190610afc82610d21565b60428252838201946060368737825115610a905760308653825190600191821015610a905790607860218501536041915b818311610b84575050506109e057846109ae60486109d293604497985198899161099f8984019876020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a52610976815180928d603789019101610cd5565b909192600f81166010811015610a7c576f181899199a1a9b1b9c1cb0b131b232b360811b901a610bb48587610ea1565b5360041c928015610a6857600019019190610b2d565b60008181526020818152604092838320338452825260ff848420541615610bf15750505050565b610bfa33610ec8565b90845190610c0782610d21565b60428252838201946060368737825115610a905760308653825190600191821015610a905790607860218501536041915b818311610c8f575050506109e057846109ae60486109d293604497985198899161099f8984019876020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a52610976815180928d603789019101610cd5565b909192600f81166010811015610a7c576f181899199a1a9b1b9c1cb0b131b232b360811b901a610cbf8587610ea1565b5360041c928015610a6857600019019190610c38565b60005b838110610ce85750506000910152565b8181015183820152602001610cd8565b6001600160401b038111610d0b57604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b03821117610d0b57604052565b90601f801991011681019081106001600160401b03821117610d0b57604052565b6001600160a01b0316600081815260008051602061108583398151915260205260408120549091906000805160206110658339815191529060ff1615610da257505050565b808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4565b6001600160a01b0316600081815260008051602061108583398151915260205260408120549091906000805160206110658339815191529060ff16610e2d57505050565b80835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416610e2d57505050565b908151811015610eb2570160200190565b634e487b7160e01b600052603260045260246000fd5b60405190606082018281106001600160401b03821117610d0b57604052602a8252602082016040368237825115610eb257603090538151600190811015610eb257607860218401536029905b808211610f68575050610f245790565b606460405162461bcd60e51b815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015610fc1576f181899199a1a9b1b9c1cb0b131b232b360811b901a610f978486610ea1565b5360041c918015610fac576000190190610f14565b60246000634e487b7160e01b81526011600452fd5b60246000634e487b7160e01b81526032600452fd5b6000198114610fe55760010190565b634e487b7160e01b600052601160045260246000fd5b9190811015610eb25760051b0190565b356001600160a01b03811681036107fe5790565b908060209392818452848401376000828201840152601f01601f1916010190565b81835290916001600160fb1b0383116107fe5760209260051b80928483013701019056fe97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929ee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319fa2646970667358221220368f9211353122569d8a908e51b78108f467192cf847f7e27ba27243bfda699e64736f6c634300081200332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","sourceMap":"547:3633:85:-:0;;;;;;;;2198:4:33;547:3633:85;;;;;;;;;;;1173:10;547:3633;;;;;;;;;;7669:23:33;7665:149;;-1:-1:-1;711:25:85;547:3633;;;;;;;;;;1173:10;547:3633;;;;;;;;;;7669:23:33;7665:149;;-1:-1:-1;1410:16:85;711:25;;-1:-1:-1;;711:25:85;;;547:3633;711:25;547:3633;;711:25;547:3633;;7665:149:33;547:3633:85;;;;;;;;;1173:10;;547:3633;;;;;7740:4:33;711:25:85;;;;;;;;1173:10;;-1:-1:-1;;;;;;;;;;;1173:10:85;7763:40:33;;;7665:149;;;;;;;547:3633:85;;;;;;;;;1173:10;547:3633;;;;;;;7740:4:33;711:25:85;;;;;;;;1173:10;;7763:40:33;-1:-1:-1;;;;;;;;;;;7763:40:33;;;7665:149;;547:3633:85;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604081526101006040526004908136101561001b57600080fd5b600091823560e01c90816301eed9b11461076f57816301ffc9a7146107185781631e482447146106af578163248a9ca31461068257816327ac0c58146106585781632f2770db1461060b5781632f2ff15d1461055d57816336568abe146104ca5781637ee7f69b1461034a57816391d1485414610301578163a217fddf146102e5578163b219f7d7146102bb578163d547741f14610277578163eb46c45b1461016f57508063ec87621c14610134578063ee070805146101105763f5b541a6146100e457600080fd5b3461010c578160031936011261010c5760209051516000805160206110658339815191528152f35b5080fd5b503461010c578160031936011261010c5760209060ff600154169051519015158152f35b503461010c578160031936011261010c5760209051517f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b088152f35b8391503461010c5760c036600319011261010c5761018b610803565b92610194610819565b61019c61082f565b9260a4356001600160401b038111610273576101bb9036908301610845565b92909660ff600154166102625786976101d2610aa4565b6001600160a01b0391821692833b1561025e5761022e8996928793858a51519b8c998a988997637921219560e11b895216908701521660248501526064356044850152608435606485015260a0608485015260a484019161101f565b03925af190811561025457506102415750f35b61024a90610cf8565b6102515780f35b80fd5b51513d84823e3d90fd5b8880fd5b845151631a8854fd60e31b81528390fd5b8580fd5b919050346102b75780513660031901126102b7576102b491356102af600161029d610819565b93838752866020525186200154610bca565b610e71565b80f35b8280fd5b8334610251576020366003190112610251576102b46102d8610803565b6102e0610872565b610de9565b50503461010c578160031936011261010c575151908152602090f35b8391503461010c57825136600319011261010c57602092610320610819565b91358352828452518092209060018060a01b0316600052825260ff81600020541690519015158152f35b83833461010c576003199260c0368501126102b757610367610803565b61036f610819565b9061037861082f565b60c0526001600160401b036064358181116104c65761039a90369086016107ce565b60849291923582811161025e576103b490369088016107ce565b99909260a4359081116104c2576103ce9036908901610845565b97909360ff600154166104b2578a9b6103e89b9a9b610aa4565b6001600160a01b0398888a163b156104ae578b9761047d96610462958f61044e948e91515160a060e0528060e05152631759616b60e11b9052169060e0515101528b60c05116602460e05151015260e051604460e05151015260a460e051510191611040565b9160e0515160648682860301910152611040565b90608460e05151918284030191015260e0515196879361101f565b039260e0515192165af19081156104a257506104965780f35b6102b460e05151610cf8565b5151913d9150823e3d90fd5b8b80fd5b50885151631a8854fd60e31b8152fd5b8980fd5b8680fd5b83833461010c5751918260031936011261010c576104e6610819565b90336001600160a01b0383160361050257906102b49135610e71565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b9050346102b757815190816003193601126106075735916105926001610581610819565b938587528660205286200154610bca565b82845283602052518084209160018060a01b03169182855260205260ff8185205416156105bd578380f35b828452836020528084208285526020528320600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8480a43880808380f35b8380fd5b8334610251578060031936011261025157610624610872565b600160ff1981541617600155337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd8280a280f35b8334610251576020366003190112610251576102b4610675610803565b61067d610872565b610d5d565b9050346102b75760203660031901126102b757602092916001913583528284525180922001549051908152f35b83903461010c57602036600319011261010c578035906001600160401b0382116102b7576106df913691016107ce565b6106e7610872565b825b8181106106f4578380f35b8061070e6102e0610709610713948688610ffb565b61100b565b610fd6565b6106e9565b9050346102b75760203660031901126102b757359063ffffffff60e01b82168092036102b75760209250637965db0b60e01b821491821561075e575b5051519015158152f35b6301ffc9a760e01b14915038610754565b83903461010c57602036600319011261010c578035906001600160401b0382116102b75761079f913691016107ce565b6107a7610872565b825b8181106107b4578380f35b8061070e61067d6107096107c9948688610ffb565b6107a9565b9181601f840112156107fe578235916001600160401b0383116107fe576020808501948460051b0101116107fe57565b600080fd5b600435906001600160a01b03821682036107fe57565b602435906001600160a01b03821682036107fe57565b604435906001600160a01b03821682036107fe57565b9181601f840112156107fe578235916001600160401b0383116107fe57602083818601950101116107fe57565b3360009081527fe84508f2c7fa9c351146748b3025cb78b45df37d868e48c6a75102fecdeee6456020908152604080832054909291907f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b089060ff16156108d85750505050565b6108e133610ec8565b908451906108ee82610d21565b60428252838201946060368737825115610a905760308653825190600191821015610a905790607860218501536041915b818311610a22575050506109e057846109ae60486109d293604497985198899161099f8984019876020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a52610976815180928d603789019101610cd5565b8401917001034b99036b4b9b9b4b733903937b6329607d1b603784015251809386840190610cd5565b01036028810189520187610d3c565b5194859362461bcd60e51b8552600485015251809281602486015285850190610cd5565b601f01601f19168101030190fd5b60648386519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f81166010811015610a7c576f181899199a1a9b1b9c1cb0b131b232b360811b901a610a528587610ea1565b5360041c928015610a685760001901919061091f565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b3360009081526000805160206110858339815191526020908152604080832054909291906000805160206110658339815191529060ff1615610ae65750505050565b610aef33610ec8565b90845190610afc82610d21565b60428252838201946060368737825115610a905760308653825190600191821015610a905790607860218501536041915b818311610b84575050506109e057846109ae60486109d293604497985198899161099f8984019876020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a52610976815180928d603789019101610cd5565b909192600f81166010811015610a7c576f181899199a1a9b1b9c1cb0b131b232b360811b901a610bb48587610ea1565b5360041c928015610a6857600019019190610b2d565b60008181526020818152604092838320338452825260ff848420541615610bf15750505050565b610bfa33610ec8565b90845190610c0782610d21565b60428252838201946060368737825115610a905760308653825190600191821015610a905790607860218501536041915b818311610c8f575050506109e057846109ae60486109d293604497985198899161099f8984019876020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a52610976815180928d603789019101610cd5565b909192600f81166010811015610a7c576f181899199a1a9b1b9c1cb0b131b232b360811b901a610cbf8587610ea1565b5360041c928015610a6857600019019190610c38565b60005b838110610ce85750506000910152565b8181015183820152602001610cd8565b6001600160401b038111610d0b57604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b03821117610d0b57604052565b90601f801991011681019081106001600160401b03821117610d0b57604052565b6001600160a01b0316600081815260008051602061108583398151915260205260408120549091906000805160206110658339815191529060ff1615610da257505050565b808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4565b6001600160a01b0316600081815260008051602061108583398151915260205260408120549091906000805160206110658339815191529060ff16610e2d57505050565b80835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416610e2d57505050565b908151811015610eb2570160200190565b634e487b7160e01b600052603260045260246000fd5b60405190606082018281106001600160401b03821117610d0b57604052602a8252602082016040368237825115610eb257603090538151600190811015610eb257607860218401536029905b808211610f68575050610f245790565b606460405162461bcd60e51b815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015610fc1576f181899199a1a9b1b9c1cb0b131b232b360811b901a610f978486610ea1565b5360041c918015610fac576000190190610f14565b60246000634e487b7160e01b81526011600452fd5b60246000634e487b7160e01b81526032600452fd5b6000198114610fe55760010190565b634e487b7160e01b600052601160045260246000fd5b9190811015610eb25760051b0190565b356001600160a01b03811681036107fe5790565b908060209392818452848401376000828201840152601f01601f1916010190565b81835290916001600160fb1b0383116107fe5760209260051b80928483013701019056fe97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929ee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319fa2646970667358221220368f9211353122569d8a908e51b78108f467192cf847f7e27ba27243bfda699e64736f6c63430008120033","sourceMap":"547:3633:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;547:3633:85;;;;;;;;;;;;;;;;;;;;;;;929:29;547:3633;;;;;;;;;;;;;;;;;;;;;;;;;;;;711:25;547:3633;;;;;;;;;;;;-1:-1:-1;;547:3633:85;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;;;;;:::i;:::-;;;;;;;;1637:44;;2642:4:33;;;;:::i;:::-;-1:-1:-1;;;;;547:3633:85;;;;3593:52;;;;;547:3633;;;;;;;;;;;;;;;;;;;;3593:52;;547:3633;3593:52;;;547:3633;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3593:52;;;;;;;;;;;;547:3633;;3593:52;;;;:::i;:::-;547:3633;;3593:52;547:3633;;;;3593:52;547:3633;;;;;;;;;3593:52;547:3633;;;1637:44;547:3633;;;-1:-1:-1;;;1658:23:85;;547:3633;;1658:23;547:3633;;;;;;;;;;;;;;-1:-1:-1;;547:3633:85;;;;5486:7:33;547:3633:85;;2642:4:33;547:3633:85;;;:::i;:::-;;;;;;;;;;;4604:22:33;547:3633:85;2642:4:33;:::i;:::-;5486:7;:::i;:::-;547:3633:85;;;;;;;;;;;;;-1:-1:-1;;547:3633:85;;;;2472:8;547:3633;;:::i;:::-;2642:4:33;;:::i;:::-;2472:8:85;:::i;547:3633::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;547:3633:85;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;547:3633:85;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;;;;;547:3633:85;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;1641:8;547:3633;;1637:44;;2642:4:33;;;;;;;:::i;:::-;-1:-1:-1;;;;;547:3633:85;;;;4112:59;;;;547:3633;;;;;;;;;;;;;;;;;;;4112:59;547:3633;;;4112:59;;547:3633;;;;4112:59;;547:3633;;;;;;;;4112:59;547:3633;;;;;;;4112:59;547:3633;;;;;4112:59;547:3633;;;:::i;:::-;;;;4112:59;547:3633;;;;;;;;;;:::i;:::-;;;;;4112:59;547:3633;;;;;;;;;;4112:59;547:3633;;;;:::i;:::-;4112:59;547:3633;;;4112:59;547:3633;;4112:59;;;;;;;;;;547:3633;;4112:59;;547:3633;;4112:59;;:::i;:::-;547:3633;;;;;-1:-1:-1;547:3633:85;;;;;4112:59;547:3633;;;1637:44;-1:-1:-1;547:3633:85;;;-1:-1:-1;;;1658:23:85;;;547:3633;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;719:10:49;;-1:-1:-1;;;;;547:3633:85;;6133:23:33;547:3633:85;;;6237:7:33;547:3633:85;;6237:7:33;:::i;547:3633:85:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;547:3633:85;;;;;;;;;;;;;;;;;;;;;;;;2642:4:33;547:3633:85;;;:::i;:::-;;;;;;;;;;4604:22:33;547:3633:85;2642:4:33;:::i;:::-;547:3633:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7669:23:33;7665:149;;547:3633:85;;;7665:149:33;547:3633:85;;;;;;;;;;;;;;;;;;;;;;;;;719:10:49;7763:40:33;;;;;7665:149;;;547:3633:85;;;;;;;;;;;;;;;;;;;;2642:4:33;;:::i;:::-;1892::85;547:3633;;;;;;1892:4;547:3633;1928:10;1911:28;;;;547:3633;;;;;;;;;-1:-1:-1;;547:3633:85;;;;2206:8;547:3633;;:::i;:::-;2642:4:33;;:::i;:::-;2206:8:85;:::i;547:3633::-;;;;;;;;-1:-1:-1;;547:3633:85;;;;;;;;;;;;;;;;;;;4604:22:33;547:3633:85;;;;;;;;;;;;;;;-1:-1:-1;;547:3633:85;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;;;;:::i;:::-;2642:4:33;;:::i;:::-;2999:13:85;3014:20;;;;;;547:3633;;;3036:3;3159:12;;;;3036:3;3159:12;;;;:::i;:::-;;:::i;:::-;3036:3;:::i;:::-;2999:13;;547:3633;;;;;;;;-1:-1:-1;;547:3633:85;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2840:47:33;;;:87;;;;547:3633:85;;;;;;;;;;2840:87:33;-1:-1:-1;;;937:40:52;;-1:-1:-1;2840:87:33;;;547:3633:85;;;;;;;;-1:-1:-1;;547:3633:85;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;;;;:::i;:::-;2642:4:33;;:::i;:::-;2647:13:85;2662:20;;;;;;547:3633;;;2684:3;2809:12;;;;2684:3;2809:12;;;;:::i;2684:3::-;2647:13;;547:3633;;;;;;;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;547:3633:85;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;547:3633:85;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;;;;;;;;;:::o;3460:103:33:-;719:10:49;3130:6:33;547:3633:85;;;;;;;;;;;;;;;3130:6:33;547:3633:85;711:25;;547:3633;;3931:23:33;3927:390;;3460:103;;;;:::o;3927:390::-;2497:52:51;719:10:49;2497:52:51;:::i;:::-;1818:437;547:3633:85;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1975:15:51;;;547:3633:85;;;;;;;;;;;2000:15:51;547:3633:85;;;2000:15:51;547:3633:85;2025:128:51;2058:5;;;;;;2170:10;;;278:18;;547:3633:85;4022:252:33;547:3633:85;;;;;;;4022:252:33;;;547:3633:85;4022:252:33;;;547:3633:85;-1:-1:-1;;;547:3633:85;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;547:3633:85;;;;;;;;;;;;:::i;:::-;;4022:252:33;;;;;;;;;:::i;:::-;547:3633:85;;;;;;;3970:336:33;;2141:1:51;3970:336:33;;547:3633:85;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;547:3633:85;;;3970:336:33;;;;278:18:51;;547:3633:85;;;;;;;278:18:51;;;2141:1;278:18;;;;;;547:3633:85;278:18:51;547:3633:85;;;278:18:51;;2065:3;2105:11;;;2113:3;2105:11;;2096:21;;;;;;-1:-1:-1;;;2096:21:51;;2084:33;;;;:::i;:::-;;2141:1;547:3633:85;2065:3:51;547:3633:85;;;;-1:-1:-1;;547:3633:85;;2030:26:51;;;547:3633:85;-1:-1:-1;;;547:3633:85;;;2141:1:51;547:3633:85;;;;2096:21:51;-1:-1:-1;;;547:3633:85;;;2141:1:51;547:3633:85;;;;;-1:-1:-1;;;547:3633:85;;;;;;;;3460:103:33;719:10:49;3130:6:33;547:3633:85;;;-1:-1:-1;;;;;;;;;;;547:3633:85;;;;;;;;;;;3130:6:33;547:3633:85;-1:-1:-1;;;;;;;;;;;846:26:85;547:3633;;3931:23:33;3927:390;;3460:103;;;;:::o;3927:390::-;2497:52:51;719:10:49;2497:52:51;:::i;:::-;1818:437;547:3633:85;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1975:15:51;;;547:3633:85;;;;;;;;;;;2000:15:51;547:3633:85;;;2000:15:51;547:3633:85;2025:128:51;2058:5;;;;;;2170:10;;;278:18;;547:3633:85;4022:252:33;547:3633:85;;;;;;;4022:252:33;;;547:3633:85;4022:252:33;;;547:3633:85;-1:-1:-1;;;547:3633:85;;;;;;;;;;;;;;:::i;2065:3:51:-;2105:11;;;2113:3;2105:11;;2096:21;;;;;;-1:-1:-1;;;2096:21:51;;2084:33;;;;:::i;:::-;;2141:1;547:3633:85;2065:3:51;547:3633:85;;;;-1:-1:-1;;547:3633:85;;2030:26:51;;;3460:103:33;3130:6;547:3633:85;;;;;;;;;;;;719:10:49;547:3633:85;;;;;;;;;;3931:23:33;3927:390;;3460:103;;;;:::o;3927:390::-;2497:52:51;719:10:49;2497:52:51;:::i;:::-;4214:38:33;547:3633:85;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1975:15:51;;;547:3633:85;;;;;;;;;;;2000:15:51;547:3633:85;;;2000:15:51;547:3633:85;2025:128:51;2058:5;;;;;;2170:10;;;278:18;;547:3633:85;4022:252:33;547:3633:85;;;;;;;4022:252:33;;;547:3633:85;4022:252:33;;;547:3633:85;-1:-1:-1;;;547:3633:85;;;;;;;;;;;;;;:::i;2065:3:51:-;2105:11;;;2113:3;2105:11;;2096:21;;;;;;-1:-1:-1;;;2096:21:51;;2084:33;;;;:::i;:::-;;2141:1;547:3633:85;2065:3:51;547:3633:85;;;;-1:-1:-1;;547:3633:85;;2030:26:51;;;547:3633:85;;;;;;;;-1:-1:-1;;547:3633:85;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;:::o;7587:233:33:-;-1:-1:-1;;;;;547:3633:85;3130:6:33;547:3633:85;;;-1:-1:-1;;;;;;;;;;;547:3633:85;;;;;;3130:6:33;;547:3633:85;-1:-1:-1;;;;;;;;;;;846:26:85;547:3633;;7669:23:33;7665:149;;7587:233;;;:::o;7665:149::-;547:3633:85;;;;;;;;;;;;;;;;;;;;;;;;;;7763:40:33;719:10:49;7763:40:33;;;7587:233::o;7991:234::-;-1:-1:-1;;;;;547:3633:85;3130:6:33;547:3633:85;;;-1:-1:-1;;;;;;;;;;;547:3633:85;;;;;;3130:6:33;;547:3633:85;-1:-1:-1;;;;;;;;;;;846:26:85;547:3633;;8070:149:33;;7991:234;;;:::o;8070:149::-;547:3633:85;;;;;;;;;;;;;;;;;;;;;;;;8168:40:33;719:10:49;8168:40:33;;;7991:234::o;:::-;;3130:6;547:3633:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8070:149:33;;7991:234;;;:::o;547:3633:85:-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;1818:437:51;547:3633:85;;;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;;;;;;;;;;;;;;;;1975:15:51;;;547:3633:85;;;;;;;;;2000:15:51;547:3633:85;;;2000:15:51;547:3633:85;2025:128:51;2058:5;;;;;;2170:10;;278:18;;1818:437;:::o;278:18::-;;547:3633:85;;;;;278:18:51;;547:3633:85;2141:1:51;278:18;;;547:3633:85;278:18:51;;;547:3633:85;278:18:51;547:3633:85;;;278:18:51;;2065:3;2105:11;;2113:3;2105:11;;2096:21;;;;;;-1:-1:-1;;;2096:21:51;;2084:33;;;;:::i;:::-;;2141:1;547:3633:85;2065:3:51;547:3633:85;;;;-1:-1:-1;;547:3633:85;;2030:26:51;;547:3633:85;;;;;;;;;2141:1:51;547:3633:85;;2096:21:51;547:3633:85;;;;;;;;2141:1:51;547:3633:85;;;-1:-1:-1;;547:3633:85;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;547:3633:85;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;547:3633:85;;;;;;;;-1:-1:-1;;547:3633:85;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;;;;;;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","MANAGER_ROLE()":"ec87621c","OPERATOR_ROLE()":"f5b541a6","batchGrantOperatorRole(address[])":"01eed9b1","batchRevokeOperatorRole(address[])":"1e482447","disable()":"2f2770db","disabled()":"ee070805","getRoleAdmin(bytes32)":"248a9ca3","grantOperatorRole(address)":"27ac0c58","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeOperatorRole(address)":"b219f7d7","revokeRole(bytes32,address)":"d547741f","safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":"7ee7f69b","safeTransferFrom(address,address,address,uint256,uint256,bytes)":"eb46c45b","supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ContractDisabledError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disabler\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchGrantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchRevokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"grantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Users approve this manager on ERC1155 collections, and operator contracts execute transfers through it.\",\"events\":{\"ContractDisabled(address)\":{\"params\":{\"disabler\":\"The manager that disabled the approval manager.\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to grant the role to.\"}},\"batchRevokeOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to revoke the role from.\"}},\"disable()\":{\"details\":\"Callable by an account with the manager role.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to grant the role to.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to revoke the role from.\"}},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"params\":{\"amounts\":\"The amounts of each token id to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"ids\":\"The token ids to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount of tokens to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"id\":\"The token id to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"title\":\"ERC1155ApprovalManager\",\"version\":1},\"userdoc\":{\"errors\":{\"ContractDisabledError()\":[{\"notice\":\"Error thrown when contract is disabled.\"}],\"NotOperator()\":[{\"notice\":\"Error thrown when caller is not an operator.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Event emitted when contract is disabled.\"}},\"kind\":\"user\",\"methods\":{\"MANAGER_ROLE()\":{\"notice\":\"Role for managing operators.\"},\"OPERATOR_ROLE()\":{\"notice\":\"Role for contracts allowed to transfer tokens.\"},\"batchGrantOperatorRole(address[])\":{\"notice\":\"Grants operator transfer permissions to multiple contracts.\"},\"batchRevokeOperatorRole(address[])\":{\"notice\":\"Revokes operator transfer permissions from multiple contracts.\"},\"constructor\":{\"notice\":\"Grants deployer admin and manager roles.\"},\"disable()\":{\"notice\":\"Disables token transfers through the approval manager permanently.\"},\"disabled()\":{\"notice\":\"Whether the contract is disabled.\"},\"grantOperatorRole(address)\":{\"notice\":\"Grants operator transfer permissions to a contract.\"},\"revokeOperatorRole(address)\":{\"notice\":\"Revokes operator transfer permissions from a contract.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Safely transfer a batch of ERC1155 tokens from a user to a recipient.\"},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"notice\":\"Safely transfer ERC1155 tokens from a user to a recipient.\"}},\"notice\":\"A central approval manager for ERC1155 tokens that allows whitelisted contracts to transfer tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol\":\"ERC1155ApprovalManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xbc7fc49ba05b312e318d3d7b517ed0254489320bedef2e91f80c3bd4e904fc0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e411d112f89fcadbff89da0579d61eafdf76272aaa91fb18728a86337440bb88\",\"dweb:/ipfs/QmfKJqMJ2CF1mw4UwDajoFdrrfKWSZwetkAByUP56EeqSQ\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x2626d8ab3dfdad0fad630c212ad146d59473d0f48b771784c61a7c1dbbea1f3f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7c144532f1e7c76ac95fb6a8f617c1f740d7a73442a907eb60910e99dfa1fbf\",\"dweb:/ipfs/QmZsGyooD6emxB8JCuugRjnRYS2MPZEL586uuV7dgC8Jng\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4\",\"dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol\":{\"keccak256\":\"0xa4d55322aca75d8e1023d0fe14c23cbd4978db46bba8f070e7c6c32d8d507c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3e25f715051a410101d290440a6cdba0f456269a069f87ada6c15f521889eca\",\"dweb:/ipfs/QmRaBjbqtEZaRU7yy2KAAD879wGjDQEpUVGQfGbrMC2K86\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89\",\"dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ContractDisabledError"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[{"internalType":"address","name":"disabler","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantOperatorRole"},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchRevokeOperatorRole"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disable"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantOperatorRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeOperatorRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"batchGrantOperatorRole(address[])":{"params":{"operators":"Contract addresses to grant the role to."}},"batchRevokeOperatorRole(address[])":{"params":{"operators":"Contract addresses to revoke the role from."}},"disable()":{"details":"Callable by an account with the manager role."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantOperatorRole(address)":{"params":{"operator":"The contract address to grant the role to."}},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event."},"revokeOperatorRole(address)":{"params":{"operator":"The contract address to revoke the role from."}},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"params":{"amounts":"The amounts of each token id to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","ids":"The token ids to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"params":{"amount":"The amount of tokens to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","id":"The token id to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"MANAGER_ROLE()":{"notice":"Role for managing operators."},"OPERATOR_ROLE()":{"notice":"Role for contracts allowed to transfer tokens."},"batchGrantOperatorRole(address[])":{"notice":"Grants operator transfer permissions to multiple contracts."},"batchRevokeOperatorRole(address[])":{"notice":"Revokes operator transfer permissions from multiple contracts."},"constructor":{"notice":"Grants deployer admin and manager roles."},"disable()":{"notice":"Disables token transfers through the approval manager permanently."},"disabled()":{"notice":"Whether the contract is disabled."},"grantOperatorRole(address)":{"notice":"Grants operator transfer permissions to a contract."},"revokeOperatorRole(address)":{"notice":"Revokes operator transfer permissions from a contract."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"notice":"Safely transfer a batch of ERC1155 tokens from a user to a recipient."},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"notice":"Safely transfer ERC1155 tokens from a user to a recipient."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol":"ERC1155ApprovalManager"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xbc7fc49ba05b312e318d3d7b517ed0254489320bedef2e91f80c3bd4e904fc0c","urls":["bzz-raw://e411d112f89fcadbff89da0579d61eafdf76272aaa91fb18728a86337440bb88","dweb:/ipfs/QmfKJqMJ2CF1mw4UwDajoFdrrfKWSZwetkAByUP56EeqSQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57","urls":["bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a","dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x2626d8ab3dfdad0fad630c212ad146d59473d0f48b771784c61a7c1dbbea1f3f","urls":["bzz-raw://d7c144532f1e7c76ac95fb6a8f617c1f740d7a73442a907eb60910e99dfa1fbf","dweb:/ipfs/QmZsGyooD6emxB8JCuugRjnRYS2MPZEL586uuV7dgC8Jng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b","urls":["bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d","dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858","urls":["bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4","dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc","urls":["bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7","dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6"],"license":"MIT"},"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol":{"keccak256":"0xa4d55322aca75d8e1023d0fe14c23cbd4978db46bba8f070e7c6c32d8d507c28","urls":["bzz-raw://d3e25f715051a410101d290440a6cdba0f456269a069f87ada6c15f521889eca","dweb:/ipfs/QmRaBjbqtEZaRU7yy2KAAD879wGjDQEpUVGQfGbrMC2K86"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd","urls":["bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89","dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA"],"license":"MIT"}},"version":1},"id":85} \ No newline at end of file diff --git a/abis/IERC1155ApprovalManager.json b/abis/IERC1155ApprovalManager.json index 24d7805..40b934b 100644 --- a/abis/IERC1155ApprovalManager.json +++ b/abis/IERC1155ApprovalManager.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"batchGrantOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchRevokeOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disable","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"grantOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"disabler","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ContractDisabledError","inputs":[]},{"type":"error","name":"NotManager","inputs":[{"name":"caller","type":"address","internalType":"address"}]},{"type":"error","name":"NotOperator","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"batchGrantOperatorRole(address[])":"01eed9b1","batchRevokeOperatorRole(address[])":"1e482447","disable()":"2f2770db","disabled()":"ee070805","grantOperatorRole(address)":"27ac0c58","revokeOperatorRole(address)":"b219f7d7","safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":"7ee7f69b","safeTransferFrom(address,address,address,uint256,uint256,bytes)":"eb46c45b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ContractDisabledError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"NotManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disabler\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchGrantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchRevokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"grantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"NotManager(address)\":[{\"params\":{\"caller\":\"The account that attempted a manager-only operation.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"disabler\":\"The manager that disabled the approval manager.\"}}},\"kind\":\"dev\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to grant the role to.\"}},\"batchRevokeOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to revoke the role from.\"}},\"disable()\":{\"details\":\"Callable by an account with the manager role.\"},\"disabled()\":{\"returns\":{\"_0\":\"True when token transfer execution is disabled.\"}},\"grantOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to grant the role to.\"}},\"revokeOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to revoke the role from.\"}},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"params\":{\"amounts\":\"The amounts of each token id to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"ids\":\"The token ids to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount of tokens to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"id\":\"The token id to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}}},\"title\":\"IERC1155ApprovalManager\",\"version\":1},\"userdoc\":{\"errors\":{\"ContractDisabledError()\":[{\"notice\":\"Error thrown when contract is disabled.\"}],\"NotManager(address)\":[{\"notice\":\"Error thrown when caller is not a manager.\"}],\"NotOperator()\":[{\"notice\":\"Error thrown when caller is not an operator.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Event emitted when contract is disabled.\"}},\"kind\":\"user\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"notice\":\"Grants operator transfer permissions to multiple contracts.\"},\"batchRevokeOperatorRole(address[])\":{\"notice\":\"Revokes operator transfer permissions from multiple contracts.\"},\"disable()\":{\"notice\":\"Disables token transfers through the approval manager permanently.\"},\"disabled()\":{\"notice\":\"Returns whether the approval manager is permanently disabled.\"},\"grantOperatorRole(address)\":{\"notice\":\"Grants operator transfer permissions to a contract.\"},\"revokeOperatorRole(address)\":{\"notice\":\"Revokes operator transfer permissions from a contract.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Safely transfer a batch of ERC1155 tokens from a user to a recipient.\"},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"notice\":\"Safely transfer ERC1155 tokens from a user to a recipient.\"}},\"notice\":\"Interface for managing ERC1155 token approvals and transfers.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":\"IERC1155ApprovalManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ContractDisabledError"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"type":"error","name":"NotManager"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[{"internalType":"address","name":"disabler","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantOperatorRole"},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchRevokeOperatorRole"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disable"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantOperatorRole"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeOperatorRole"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"}],"devdoc":{"kind":"dev","methods":{"batchGrantOperatorRole(address[])":{"params":{"operators":"Contract addresses to grant the role to."}},"batchRevokeOperatorRole(address[])":{"params":{"operators":"Contract addresses to revoke the role from."}},"disable()":{"details":"Callable by an account with the manager role."},"disabled()":{"returns":{"_0":"True when token transfer execution is disabled."}},"grantOperatorRole(address)":{"params":{"operator":"The contract address to grant the role to."}},"revokeOperatorRole(address)":{"params":{"operator":"The contract address to revoke the role from."}},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"params":{"amounts":"The amounts of each token id to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","ids":"The token ids to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"params":{"amount":"The amount of tokens to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","id":"The token id to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}}},"version":1},"userdoc":{"kind":"user","methods":{"batchGrantOperatorRole(address[])":{"notice":"Grants operator transfer permissions to multiple contracts."},"batchRevokeOperatorRole(address[])":{"notice":"Revokes operator transfer permissions from multiple contracts."},"disable()":{"notice":"Disables token transfers through the approval manager permanently."},"disabled()":{"notice":"Returns whether the approval manager is permanently disabled."},"grantOperatorRole(address)":{"notice":"Grants operator transfer permissions to a contract."},"revokeOperatorRole(address)":{"notice":"Revokes operator transfer permissions from a contract."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"notice":"Safely transfer a batch of ERC1155 tokens from a user to a recipient."},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"notice":"Safely transfer ERC1155 tokens from a user to a recipient."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":"IERC1155ApprovalManager"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"}},"version":1},"id":247} \ No newline at end of file +{"abi":[{"type":"function","name":"batchGrantOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchRevokeOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disable","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"grantOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"disabler","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ContractDisabledError","inputs":[]},{"type":"error","name":"NotOperator","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"batchGrantOperatorRole(address[])":"01eed9b1","batchRevokeOperatorRole(address[])":"1e482447","disable()":"2f2770db","disabled()":"ee070805","grantOperatorRole(address)":"27ac0c58","revokeOperatorRole(address)":"b219f7d7","safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":"7ee7f69b","safeTransferFrom(address,address,address,uint256,uint256,bytes)":"eb46c45b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ContractDisabledError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disabler\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchGrantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchRevokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"grantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"ContractDisabled(address)\":{\"params\":{\"disabler\":\"The manager that disabled the approval manager.\"}}},\"kind\":\"dev\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to grant the role to.\"}},\"batchRevokeOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to revoke the role from.\"}},\"disable()\":{\"details\":\"Callable by an account with the manager role.\"},\"disabled()\":{\"returns\":{\"_0\":\"True when token transfer execution is disabled.\"}},\"grantOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to grant the role to.\"}},\"revokeOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to revoke the role from.\"}},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"params\":{\"amounts\":\"The amounts of each token id to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"ids\":\"The token ids to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount of tokens to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"id\":\"The token id to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}}},\"title\":\"IERC1155ApprovalManager\",\"version\":1},\"userdoc\":{\"errors\":{\"ContractDisabledError()\":[{\"notice\":\"Error thrown when contract is disabled.\"}],\"NotOperator()\":[{\"notice\":\"Error thrown when caller is not an operator.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Event emitted when contract is disabled.\"}},\"kind\":\"user\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"notice\":\"Grants operator transfer permissions to multiple contracts.\"},\"batchRevokeOperatorRole(address[])\":{\"notice\":\"Revokes operator transfer permissions from multiple contracts.\"},\"disable()\":{\"notice\":\"Disables token transfers through the approval manager permanently.\"},\"disabled()\":{\"notice\":\"Returns whether the approval manager is permanently disabled.\"},\"grantOperatorRole(address)\":{\"notice\":\"Grants operator transfer permissions to a contract.\"},\"revokeOperatorRole(address)\":{\"notice\":\"Revokes operator transfer permissions from a contract.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Safely transfer a batch of ERC1155 tokens from a user to a recipient.\"},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"notice\":\"Safely transfer ERC1155 tokens from a user to a recipient.\"}},\"notice\":\"Interface for managing ERC1155 token approvals and transfers.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":\"IERC1155ApprovalManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89\",\"dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ContractDisabledError"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[{"internalType":"address","name":"disabler","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantOperatorRole"},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchRevokeOperatorRole"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disable"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantOperatorRole"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeOperatorRole"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"}],"devdoc":{"kind":"dev","methods":{"batchGrantOperatorRole(address[])":{"params":{"operators":"Contract addresses to grant the role to."}},"batchRevokeOperatorRole(address[])":{"params":{"operators":"Contract addresses to revoke the role from."}},"disable()":{"details":"Callable by an account with the manager role."},"disabled()":{"returns":{"_0":"True when token transfer execution is disabled."}},"grantOperatorRole(address)":{"params":{"operator":"The contract address to grant the role to."}},"revokeOperatorRole(address)":{"params":{"operator":"The contract address to revoke the role from."}},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"params":{"amounts":"The amounts of each token id to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","ids":"The token ids to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"params":{"amount":"The amount of tokens to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","id":"The token id to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}}},"version":1},"userdoc":{"kind":"user","methods":{"batchGrantOperatorRole(address[])":{"notice":"Grants operator transfer permissions to multiple contracts."},"batchRevokeOperatorRole(address[])":{"notice":"Revokes operator transfer permissions from multiple contracts."},"disable()":{"notice":"Disables token transfers through the approval manager permanently."},"disabled()":{"notice":"Returns whether the approval manager is permanently disabled."},"grantOperatorRole(address)":{"notice":"Grants operator transfer permissions to a contract."},"revokeOperatorRole(address)":{"notice":"Revokes operator transfer permissions from a contract."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"notice":"Safely transfer a batch of ERC1155 tokens from a user to a recipient."},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"notice":"Safely transfer ERC1155 tokens from a user to a recipient."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":"IERC1155ApprovalManager"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd","urls":["bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89","dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA"],"license":"MIT"}},"version":1},"id":86} \ No newline at end of file diff --git a/abis/IRareERC1155.json b/abis/IRareERC1155.json index 1b88542..8d6ad27 100644 --- a/abis/IRareERC1155.json +++ b/abis/IRareERC1155.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"},{"name":"_royaltyReceiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintBatchTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"royaltyAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setDefaultRoyaltyPercentage","inputs":[{"name":"_percentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyReceiverForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"royaltyReceiver","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"BatchLengthMismatch","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"RoyaltyPercentageTooHigh","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","createToken(string,uint256,address)":"1542bb95","disableContract()":"894ba833","disabled()":"ee070805","init(string,string,string,address,address)":"a7eae21c","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintBatchTo(address,uint256[],uint256[])":"3512639c","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","royaltyInfo(uint256,uint256)":"2a55205a","setDefaultRoyaltyPercentage(uint256)":"e27a41bf","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","setRoyaltyReceiverForToken(uint256,address)":"e2200a0b","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RoyaltyPercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"royaltyReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_royaltyReceiver\",\"type\":\"address\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBatchTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_percentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRoyaltyPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setRoyaltyReceiverForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Extends the RARE `ITokenCreator` interface so marketplace and royalty infrastructure can resolve the collection creator.\",\"errors\":{\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported percentage.\",\"supplied\":\"Percentage supplied by the caller.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"params\":{\"tokenId\":\"Token id that is not greater than the previous token id.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,address,uint256,string)\":{\"params\":{\"creator\":\"Collection owner reported as creator when the token id is created.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"royaltyReceiver\":\"ERC2981 royalty receiver configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}}},\"kind\":\"dev\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"createToken(string,uint256,address)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_royaltyReceiver\":\"ERC2981 royalty receiver for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"disabled()\":{\"returns\":{\"_0\":\"True when disabled.\"}},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and ERC2981 royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintBatchTo(address,uint256[],uint256[])\":{\"details\":\"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.\",\"params\":{\"_amounts\":\"Quantities to mint for each token id.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenIds\":\"Existing token ids to mint.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"Minted token id.\"}},\"name()\":{\"returns\":{\"_0\":\"Collection name.\"}},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"details\":\"Tokens created before this update keep their token-specific royalty percentage.\",\"params\":{\"_percentage\":\"New royalty percentage, expressed as whole percentage points.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"details\":\"Token-specific royalty receivers take precedence over this value.\",\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"details\":\"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.\",\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"setRoyaltyReceiverForToken(uint256,address)\":{\"details\":\"The token's existing royalty percentage is preserved.\",\"params\":{\"_receiver\":\"New token-specific royalty receiver.\",\"_tokenId\":\"Token id whose royalty receiver is updated.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"returns\":{\"_0\":\"Collection symbol.\"}},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"title\":\"IRareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"BatchLengthMismatch()\":[{\"notice\":\"Reverted when parallel batch arrays have different lengths.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"notice\":\"Reverted when the default royalty percentage is above 100%.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,address,uint256,string)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch mint operations.\"},\"createToken(string,uint256,address)\":{\"notice\":\"Creates a new token type.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintBatchTo(address,uint256[],uint256[])\":{\"notice\":\"Mints existing token ids to a receiver.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints one existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"notice\":\"Updates the fallback ERC2981 royalty percentage.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the fallback ERC2981 royalty receiver.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes collection-wide minter approval for an address.\"},\"setRoyaltyReceiverForToken(uint256,address)\":{\"notice\":\"Updates the ERC2981 royalty receiver for one token id.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Interface for the RARE Protocol ERC1155 token.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/IRareERC1155.sol\":\"IRareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[],"type":"error","name":"BatchLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"RoyaltyPercentageTooHigh"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"address","name":"royaltyReceiver","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[],"stateMutability":"pure","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"address","name":"_royaltyReceiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"mintBatchTo"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyPercentage"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyReceiverForToken"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"MAX_BATCH_SIZE()":{"returns":{"_0":"Maximum supported batch item count."}},"createToken(string,uint256,address)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_royaltyReceiver":"ERC2981 royalty receiver for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"disabled()":{"returns":{"_0":"True when disabled."}},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and ERC2981 royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintBatchTo(address,uint256[],uint256[])":{"details":"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.","params":{"_amounts":"Quantities to mint for each token id.","_receiver":"Address that receives the minted tokens.","_tokenIds":"Existing token ids to mint."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"Minted token id."}},"name()":{"returns":{"_0":"Collection name."}},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"setDefaultRoyaltyPercentage(uint256)":{"details":"Tokens created before this update keep their token-specific royalty percentage.","params":{"_percentage":"New royalty percentage, expressed as whole percentage points."}},"setDefaultRoyaltyReceiver(address)":{"details":"Token-specific royalty receivers take precedence over this value.","params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"details":"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.","params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"setRoyaltyReceiverForToken(uint256,address)":{"details":"The token's existing royalty percentage is preserved.","params":{"_receiver":"New token-specific royalty receiver.","_tokenId":"Token id whose royalty receiver is updated."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"returns":{"_0":"Collection symbol."}},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch mint operations."},"createToken(string,uint256,address)":{"notice":"Creates a new token type."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintBatchTo(address,uint256[],uint256[])":{"notice":"Mints existing token ids to a receiver."},"mintTo(address,uint256,uint256)":{"notice":"Mints one existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"setDefaultRoyaltyPercentage(uint256)":{"notice":"Updates the fallback ERC2981 royalty percentage."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the fallback ERC2981 royalty receiver."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes collection-wide minter approval for an address."},"setRoyaltyReceiverForToken(uint256,address)":{"notice":"Updates the ERC2981 royalty receiver for one token id."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/IRareERC1155.sol":"IRareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":35} \ No newline at end of file +{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"},{"name":"_royaltyReceiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintBatchTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"royaltyAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setDefaultRoyaltyPercentage","inputs":[{"name":"_percentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyReceiverForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"royaltyReceiver","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"BatchLengthMismatch","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"RoyaltyPercentageTooHigh","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","createToken(string,uint256,address)":"1542bb95","disableContract()":"894ba833","disabled()":"ee070805","init(string,string,string,address,address)":"a7eae21c","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintBatchTo(address,uint256[],uint256[])":"3512639c","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","royaltyInfo(uint256,uint256)":"2a55205a","setDefaultRoyaltyPercentage(uint256)":"e27a41bf","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","setRoyaltyReceiverForToken(uint256,address)":"e2200a0b","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RoyaltyPercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"royaltyReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_royaltyReceiver\",\"type\":\"address\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBatchTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_percentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRoyaltyPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setRoyaltyReceiverForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Extends the RARE `ITokenCreator` interface so marketplace and royalty infrastructure can resolve the collection creator.\",\"errors\":{\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported percentage.\",\"supplied\":\"Percentage supplied by the caller.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"params\":{\"tokenId\":\"Token id that is not greater than the previous token id.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,address,uint256,string)\":{\"params\":{\"creator\":\"Collection owner reported as creator when the token id is created.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"royaltyReceiver\":\"ERC2981 royalty receiver configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}}},\"kind\":\"dev\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"createToken(string,uint256,address)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_royaltyReceiver\":\"ERC2981 royalty receiver for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"disabled()\":{\"returns\":{\"_0\":\"True when disabled.\"}},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and ERC2981 royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintBatchTo(address,uint256[],uint256[])\":{\"details\":\"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.\",\"params\":{\"_amounts\":\"Quantities to mint for each token id.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenIds\":\"Existing token ids to mint.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"Minted token id.\"}},\"name()\":{\"returns\":{\"_0\":\"Collection name.\"}},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"details\":\"Tokens created before this update keep their token-specific royalty percentage.\",\"params\":{\"_percentage\":\"New royalty percentage, expressed as whole percentage points.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"details\":\"Token-specific royalty receivers take precedence over this value.\",\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"details\":\"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.\",\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"setRoyaltyReceiverForToken(uint256,address)\":{\"details\":\"The token's existing royalty percentage is preserved.\",\"params\":{\"_receiver\":\"New token-specific royalty receiver.\",\"_tokenId\":\"Token id whose royalty receiver is updated.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"returns\":{\"_0\":\"Collection symbol.\"}},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"title\":\"IRareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"BatchLengthMismatch()\":[{\"notice\":\"Reverted when parallel batch arrays have different lengths.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"notice\":\"Reverted when the default royalty percentage is above 100%.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,address,uint256,string)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch mint operations.\"},\"createToken(string,uint256,address)\":{\"notice\":\"Creates a new token type.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintBatchTo(address,uint256[],uint256[])\":{\"notice\":\"Mints existing token ids to a receiver.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints one existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"notice\":\"Updates the fallback ERC2981 royalty percentage.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the fallback ERC2981 royalty receiver.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes collection-wide minter approval for an address.\"},\"setRoyaltyReceiverForToken(uint256,address)\":{\"notice\":\"Updates the ERC2981 royalty receiver for one token id.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Interface for the RARE Protocol ERC1155 token.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/IRareERC1155.sol\":\"IRareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[],"type":"error","name":"BatchLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"RoyaltyPercentageTooHigh"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"address","name":"royaltyReceiver","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[],"stateMutability":"pure","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"address","name":"_royaltyReceiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"mintBatchTo"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyPercentage"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyReceiverForToken"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"MAX_BATCH_SIZE()":{"returns":{"_0":"Maximum supported batch item count."}},"createToken(string,uint256,address)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_royaltyReceiver":"ERC2981 royalty receiver for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"disabled()":{"returns":{"_0":"True when disabled."}},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and ERC2981 royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintBatchTo(address,uint256[],uint256[])":{"details":"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.","params":{"_amounts":"Quantities to mint for each token id.","_receiver":"Address that receives the minted tokens.","_tokenIds":"Existing token ids to mint."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"Minted token id."}},"name()":{"returns":{"_0":"Collection name."}},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"setDefaultRoyaltyPercentage(uint256)":{"details":"Tokens created before this update keep their token-specific royalty percentage.","params":{"_percentage":"New royalty percentage, expressed as whole percentage points."}},"setDefaultRoyaltyReceiver(address)":{"details":"Token-specific royalty receivers take precedence over this value.","params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"details":"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.","params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"setRoyaltyReceiverForToken(uint256,address)":{"details":"The token's existing royalty percentage is preserved.","params":{"_receiver":"New token-specific royalty receiver.","_tokenId":"Token id whose royalty receiver is updated."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"returns":{"_0":"Collection symbol."}},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch mint operations."},"createToken(string,uint256,address)":{"notice":"Creates a new token type."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintBatchTo(address,uint256[],uint256[])":{"notice":"Mints existing token ids to a receiver."},"mintTo(address,uint256,uint256)":{"notice":"Mints one existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"setDefaultRoyaltyPercentage(uint256)":{"notice":"Updates the fallback ERC2981 royalty percentage."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the fallback ERC2981 royalty receiver."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes collection-wide minter approval for an address."},"setRoyaltyReceiverForToken(uint256,address)":{"notice":"Updates the ERC2981 royalty receiver for one token id."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/IRareERC1155.sol":"IRareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":80} \ No newline at end of file diff --git a/abis/IRareERC1155CheckoutExecutionModule.json b/abis/IRareERC1155CheckoutExecutionModule.json new file mode 100644 index 0000000..b4359cb --- /dev/null +++ b/abis/IRareERC1155CheckoutExecutionModule.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"checkout","inputs":[{"name":"_items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","components":[{"name":"summary","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","components":[{"name":"filledCount","type":"uint256","internalType":"uint256"},{"name":"skippedCount","type":"uint256","internalType":"uint256"},{"name":"ethSpent","type":"uint256","internalType":"uint256"},{"name":"ethRefunded","type":"uint256","internalType":"uint256"}]},{"name":"items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","components":[{"name":"itemIndex","type":"uint256","internalType":"uint256"},{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"filled","type":"bool","internalType":"bool"},{"name":"failureStage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","internalType":"bytes4"},{"name":"failureData","type":"bytes","internalType":"bytes"},{"name":"totalPaid","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"payable"},{"type":"function","name":"executeCheckoutItem","inputs":[{"name":"_item","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"_remainingEth","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_grossAmount","type":"uint256","internalType":"uint256"},{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[{"name":"totalPaid","type":"uint256","internalType":"uint256"},{"name":"newRemainingEth","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"executeCheckoutPayout","inputs":[{"name":"_item","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"_seller","type":"address","internalType":"address"},{"name":"_grossAmount","type":"uint256","internalType":"uint256"},{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":"2c0c49ee","executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":"59a8a40a","executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":"d65852a6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem[]\",\"name\":\"_items\",\"type\":\"tuple[]\"}],\"name\":\"checkout\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutSummary\",\"name\":\"summary\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]\",\"name\":\"items\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutExecution\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem\",\"name\":\"_item\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_remainingEth\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_grossAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"executeCheckoutItem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newRemainingEth\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem\",\"name\":\"_item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_grossAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"executeCheckoutPayout\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert.\"},\"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Module-only entrypoint; the marketplace proxy does not expose this selector.\"},\"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])\":{\"details\":\"Module-only entrypoint; the marketplace proxy does not expose this selector.\"}},\"title\":\"IRareERC1155CheckoutExecutionModule\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases.\"},\"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Executes one already validated checkout item through a nested delegatecall rollback boundary.\"},\"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Executes payout for a checkout item through a nested rollback boundary.\"}},\"notice\":\"Checkout entrypoints executed through `RareERC1155Marketplace` delegatecalls.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155CheckoutExecutionModule.sol\":\"IRareERC1155CheckoutExecutionModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/marketplace/IRareERC1155CheckoutExecutionModule.sol\":{\"keccak256\":\"0x5e21c4d426f55a9c348d866505dcd62395f6c96c971c523c4ea9d1507aa49564\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36f027c0fb078527e853940bacded87cbbbd57d3d85c54a34ebcef3fd585d24a\",\"dweb:/ipfs/QmeK38XavEKAmqGVd2tiXnc95qAZnVUM2wMEkXoQ5AtoAV\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9\",\"dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","name":"_items","type":"tuple[]","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"checkout","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","name":"","type":"tuple","components":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","name":"summary","type":"tuple","components":[{"internalType":"uint256","name":"filledCount","type":"uint256"},{"internalType":"uint256","name":"skippedCount","type":"uint256"},{"internalType":"uint256","name":"ethSpent","type":"uint256"},{"internalType":"uint256","name":"ethRefunded","type":"uint256"}]},{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","name":"items","type":"tuple[]","components":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bool","name":"filled","type":"bool"},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8"},{"internalType":"bytes4","name":"reason","type":"bytes4"},{"internalType":"bytes","name":"failureData","type":"bytes"},{"internalType":"uint256","name":"totalPaid","type":"uint256"}]}]}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","name":"_item","type":"tuple","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]},{"internalType":"uint256","name":"_remainingEth","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_grossAmount","type":"uint256"},{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"payable","type":"function","name":"executeCheckoutItem","outputs":[{"internalType":"uint256","name":"totalPaid","type":"uint256"},{"internalType":"uint256","name":"newRemainingEth","type":"uint256"}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","name":"_item","type":"tuple","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_grossAmount","type":"uint256"},{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"payable","type":"function","name":"executeCheckoutPayout"}],"devdoc":{"kind":"dev","methods":{"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert."},"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":{"details":"Module-only entrypoint; the marketplace proxy does not expose this selector."},"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":{"details":"Module-only entrypoint; the marketplace proxy does not expose this selector."}},"version":1},"userdoc":{"kind":"user","methods":{"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"notice":"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases."},"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":{"notice":"Executes one already validated checkout item through a nested delegatecall rollback boundary."},"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":{"notice":"Executes payout for a checkout item through a nested rollback boundary."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155CheckoutExecutionModule.sol":"IRareERC1155CheckoutExecutionModule"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/marketplace/IRareERC1155CheckoutExecutionModule.sol":{"keccak256":"0x5e21c4d426f55a9c348d866505dcd62395f6c96c971c523c4ea9d1507aa49564","urls":["bzz-raw://36f027c0fb078527e853940bacded87cbbbd57d3d85c54a34ebcef3fd585d24a","dweb:/ipfs/QmeK38XavEKAmqGVd2tiXnc95qAZnVUM2wMEkXoQ5AtoAV"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9","urls":["bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9","dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN"],"license":"MIT"}},"version":1},"id":158} \ No newline at end of file diff --git a/abis/IRareERC1155ContractFactory.json b/abis/IRareERC1155ContractFactory.json index 5d1bb3b..e39087c 100644 --- a/abis/IRareERC1155ContractFactory.json +++ b/abis/IRareERC1155ContractFactory.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"createRareERC1155Contract","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"}],"outputs":[{"name":"clone","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"defaultMinter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"rareERC1155","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setDefaultMinter","inputs":[{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRareERC1155","inputs":[{"name":"_rareERC1155","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefaultMinterUpdated","inputs":[{"name":"defaultMinter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155ContractCreated","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155Updated","inputs":[{"name":"rareERC1155","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"createRareERC1155Contract(string,string,string)":"8667f619","defaultMinter()":"389dee18","rareERC1155()":"014812a2","setDefaultMinter(address)":"18cf6f42","setRareERC1155(address)":"e2be1a08"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"defaultMinter\",\"type\":\"address\"}],\"name\":\"DefaultMinterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"RareERC1155ContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rareERC1155\",\"type\":\"address\"}],\"name\":\"RareERC1155Updated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createRareERC1155Contract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"clone\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultMinter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rareERC1155\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"setDefaultMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rareERC1155\",\"type\":\"address\"}],\"name\":\"setRareERC1155\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"events\":{\"DefaultMinterUpdated(address)\":{\"params\":{\"defaultMinter\":\"New default minter address. Zero address disables default minter approval.\"}},\"RareERC1155ContractCreated(address,address)\":{\"params\":{\"contractAddress\":\"Address of the newly created ERC1155 clone.\",\"owner\":\"Initial owner of the clone.\"}},\"RareERC1155Updated(address)\":{\"params\":{\"rareERC1155\":\"New ERC1155 implementation address.\"}}},\"kind\":\"dev\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"params\":{\"_baseURI\":\"Base URI used by the collection when a token id has no token-specific URI.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"},\"returns\":{\"clone\":\"Address of the newly created ERC1155 clone.\"}},\"defaultMinter()\":{\"returns\":{\"_0\":\"Default minter address. Zero address means no default minter.\"}},\"rareERC1155()\":{\"returns\":{\"_0\":\"ERC1155 implementation address.\"}},\"setDefaultMinter(address)\":{\"params\":{\"_defaultMinter\":\"Address approved to mint on newly created clones, or zero address for none.\"}},\"setRareERC1155(address)\":{\"params\":{\"_rareERC1155\":\"Address of the replacement implementation.\"}}},\"title\":\"IRareERC1155ContractFactory\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an implementation address is the zero address.\"}]},\"events\":{\"DefaultMinterUpdated(address)\":{\"notice\":\"Emitted when the owner changes the default minter for new clones.\"},\"RareERC1155ContractCreated(address,address)\":{\"notice\":\"Emitted when the factory creates and initializes a collection clone.\"},\"RareERC1155Updated(address)\":{\"notice\":\"Emitted when the owner changes the implementation cloned by the factory.\"}},\"kind\":\"user\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"notice\":\"Creates a new initialized ERC1155 collection clone.\"},\"defaultMinter()\":{\"notice\":\"Returns the optional minter approved on each newly created collection.\"},\"rareERC1155()\":{\"notice\":\"Returns the ERC1155 implementation address cloned by the factory.\"},\"setDefaultMinter(address)\":{\"notice\":\"Updates the optional minter approved during clone initialization.\"},\"setRareERC1155(address)\":{\"notice\":\"Updates the ERC1155 implementation address cloned by future factory calls.\"}},\"notice\":\"Interface for the RARE Protocol ERC1155 clone factory.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":\"IRareERC1155ContractFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":{\"keccak256\":\"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179\",\"dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"defaultMinter","type":"address","indexed":true}],"type":"event","name":"DefaultMinterUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"RareERC1155ContractCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"rareERC1155","type":"address","indexed":true}],"type":"event","name":"RareERC1155Updated","anonymous":false},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createRareERC1155Contract","outputs":[{"internalType":"address","name":"clone","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultMinter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rareERC1155","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultMinter"},{"inputs":[{"internalType":"address","name":"_rareERC1155","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRareERC1155"}],"devdoc":{"kind":"dev","methods":{"createRareERC1155Contract(string,string,string)":{"params":{"_baseURI":"Base URI used by the collection when a token id has no token-specific URI.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."},"returns":{"clone":"Address of the newly created ERC1155 clone."}},"defaultMinter()":{"returns":{"_0":"Default minter address. Zero address means no default minter."}},"rareERC1155()":{"returns":{"_0":"ERC1155 implementation address."}},"setDefaultMinter(address)":{"params":{"_defaultMinter":"Address approved to mint on newly created clones, or zero address for none."}},"setRareERC1155(address)":{"params":{"_rareERC1155":"Address of the replacement implementation."}}},"version":1},"userdoc":{"kind":"user","methods":{"createRareERC1155Contract(string,string,string)":{"notice":"Creates a new initialized ERC1155 collection clone."},"defaultMinter()":{"notice":"Returns the optional minter approved on each newly created collection."},"rareERC1155()":{"notice":"Returns the ERC1155 implementation address cloned by the factory."},"setDefaultMinter(address)":{"notice":"Updates the optional minter approved during clone initialization."},"setRareERC1155(address)":{"notice":"Updates the ERC1155 implementation address cloned by future factory calls."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/IRareERC1155ContractFactory.sol":"IRareERC1155ContractFactory"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/token/ERC1155/IRareERC1155ContractFactory.sol":{"keccak256":"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63","urls":["bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179","dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb"],"license":"MIT"}},"version":1},"id":220} \ No newline at end of file +{"abi":[{"type":"function","name":"createRareERC1155Contract","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"}],"outputs":[{"name":"clone","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"defaultMinter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"rareERC1155","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setDefaultMinter","inputs":[{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRareERC1155","inputs":[{"name":"_rareERC1155","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefaultMinterUpdated","inputs":[{"name":"defaultMinter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155ContractCreated","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155Updated","inputs":[{"name":"rareERC1155","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"createRareERC1155Contract(string,string,string)":"8667f619","defaultMinter()":"389dee18","rareERC1155()":"014812a2","setDefaultMinter(address)":"18cf6f42","setRareERC1155(address)":"e2be1a08"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"defaultMinter\",\"type\":\"address\"}],\"name\":\"DefaultMinterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"RareERC1155ContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rareERC1155\",\"type\":\"address\"}],\"name\":\"RareERC1155Updated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createRareERC1155Contract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"clone\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultMinter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rareERC1155\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"setDefaultMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rareERC1155\",\"type\":\"address\"}],\"name\":\"setRareERC1155\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"events\":{\"DefaultMinterUpdated(address)\":{\"params\":{\"defaultMinter\":\"New default minter address. Zero address disables default minter approval.\"}},\"RareERC1155ContractCreated(address,address)\":{\"params\":{\"contractAddress\":\"Address of the newly created ERC1155 clone.\",\"owner\":\"Initial owner of the clone.\"}},\"RareERC1155Updated(address)\":{\"params\":{\"rareERC1155\":\"New ERC1155 implementation address.\"}}},\"kind\":\"dev\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"params\":{\"_baseURI\":\"Base URI used by the collection when a token id has no token-specific URI.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"},\"returns\":{\"clone\":\"Address of the newly created ERC1155 clone.\"}},\"defaultMinter()\":{\"returns\":{\"_0\":\"Default minter address. Zero address means no default minter.\"}},\"rareERC1155()\":{\"returns\":{\"_0\":\"ERC1155 implementation address.\"}},\"setDefaultMinter(address)\":{\"params\":{\"_defaultMinter\":\"Address approved to mint on newly created clones, or zero address for none.\"}},\"setRareERC1155(address)\":{\"params\":{\"_rareERC1155\":\"Address of the replacement implementation.\"}}},\"title\":\"IRareERC1155ContractFactory\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an implementation address is the zero address.\"}]},\"events\":{\"DefaultMinterUpdated(address)\":{\"notice\":\"Emitted when the owner changes the default minter for new clones.\"},\"RareERC1155ContractCreated(address,address)\":{\"notice\":\"Emitted when the factory creates and initializes a collection clone.\"},\"RareERC1155Updated(address)\":{\"notice\":\"Emitted when the owner changes the implementation cloned by the factory.\"}},\"kind\":\"user\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"notice\":\"Creates a new initialized ERC1155 collection clone.\"},\"defaultMinter()\":{\"notice\":\"Returns the optional minter approved on each newly created collection.\"},\"rareERC1155()\":{\"notice\":\"Returns the ERC1155 implementation address cloned by the factory.\"},\"setDefaultMinter(address)\":{\"notice\":\"Updates the optional minter approved during clone initialization.\"},\"setRareERC1155(address)\":{\"notice\":\"Updates the ERC1155 implementation address cloned by future factory calls.\"}},\"notice\":\"Interface for the RARE Protocol ERC1155 clone factory.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":\"IRareERC1155ContractFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":{\"keccak256\":\"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179\",\"dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"defaultMinter","type":"address","indexed":true}],"type":"event","name":"DefaultMinterUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"RareERC1155ContractCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"rareERC1155","type":"address","indexed":true}],"type":"event","name":"RareERC1155Updated","anonymous":false},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createRareERC1155Contract","outputs":[{"internalType":"address","name":"clone","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultMinter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rareERC1155","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultMinter"},{"inputs":[{"internalType":"address","name":"_rareERC1155","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRareERC1155"}],"devdoc":{"kind":"dev","methods":{"createRareERC1155Contract(string,string,string)":{"params":{"_baseURI":"Base URI used by the collection when a token id has no token-specific URI.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."},"returns":{"clone":"Address of the newly created ERC1155 clone."}},"defaultMinter()":{"returns":{"_0":"Default minter address. Zero address means no default minter."}},"rareERC1155()":{"returns":{"_0":"ERC1155 implementation address."}},"setDefaultMinter(address)":{"params":{"_defaultMinter":"Address approved to mint on newly created clones, or zero address for none."}},"setRareERC1155(address)":{"params":{"_rareERC1155":"Address of the replacement implementation."}}},"version":1},"userdoc":{"kind":"user","methods":{"createRareERC1155Contract(string,string,string)":{"notice":"Creates a new initialized ERC1155 collection clone."},"defaultMinter()":{"notice":"Returns the optional minter approved on each newly created collection."},"rareERC1155()":{"notice":"Returns the ERC1155 implementation address cloned by the factory."},"setDefaultMinter(address)":{"notice":"Updates the optional minter approved during clone initialization."},"setRareERC1155(address)":{"notice":"Updates the ERC1155 implementation address cloned by future factory calls."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/IRareERC1155ContractFactory.sol":"IRareERC1155ContractFactory"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/token/ERC1155/IRareERC1155ContractFactory.sol":{"keccak256":"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63","urls":["bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179","dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb"],"license":"MIT"}},"version":1},"id":81} \ No newline at end of file diff --git a/abis/IRareERC1155Marketplace.json b/abis/IRareERC1155Marketplace.json index 86db690..0c8d0a9 100644 --- a/abis/IRareERC1155Marketplace.json +++ b/abis/IRareERC1155Marketplace.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"acceptOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"cancelOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkout","inputs":[{"name":"_items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","components":[{"name":"summary","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","components":[{"name":"filledCount","type":"uint256","internalType":"uint256"},{"name":"skippedCount","type":"uint256","internalType":"uint256"},{"name":"ethSpent","type":"uint256","internalType":"uint256"},{"name":"ethRefunded","type":"uint256","internalType":"uint256"}]},{"name":"items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","components":[{"name":"itemIndex","type":"uint256","internalType":"uint256"},{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"filled","type":"bool","internalType":"bool"},{"name":"failureStage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","internalType":"bytes4"},{"name":"failureData","type":"bytes","internalType":"bytes"},{"name":"totalPaid","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"payable"},{"type":"function","name":"getDirectSaleConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleConfig","components":[{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getERC1155ApprovalManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getMarketConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct MarketConfigV2.Config","components":[{"name":"networkBeneficiary","type":"address","internalType":"address"},{"name":"marketplaceSettings","type":"address","internalType":"contract IMarketplaceSettings"},{"name":"spaceOperatorRegistry","type":"address","internalType":"contract ISpaceOperatorRegistry"},{"name":"royaltyEngine","type":"address","internalType":"contract IRoyaltyEngineV1"},{"name":"payments","type":"address","internalType":"contract IPayments"},{"name":"approvedTokenRegistry","type":"address","internalType":"contract IApprovedTokenRegistry"},{"name":"stakingSettings","type":"address","internalType":"contract IStakingSettings"},{"name":"stakingRegistry","type":"address","internalType":"contract IRareStakingRegistry"},{"name":"erc20ApprovalManager","type":"address","internalType":"contract IERC20ApprovalManager"},{"name":"erc721ApprovalManager","type":"address","internalType":"contract IERC721ApprovalManager"}]}],"stateMutability":"view"},{"type":"function","name":"getOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.Offer","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.SalePrice","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getSettlement","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getTokenAllowListConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfig","components":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenMintsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"},{"name":"_marketplaceSettings","type":"address","internalType":"address"},{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"},{"name":"_royaltyEngine","type":"address","internalType":"address"},{"name":"_payments","type":"address","internalType":"address"},{"name":"_approvedTokenRegistry","type":"address","internalType":"address"},{"name":"_stakingSettings","type":"address","internalType":"address"},{"name":"_stakingRegistry","type":"address","internalType":"address"},{"name":"_erc20ApprovalManager","type":"address","internalType":"address"},{"name":"_erc721ApprovalManager","type":"address","internalType":"address"},{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"},{"name":"_settlement","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"makeOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"prepareMintDirectSales","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovedTokenRegistry","inputs":[{"name":"_approvedTokenRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setContractPaused","inputs":[{"name":"_isPaused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC1155ApprovalManager","inputs":[{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20ApprovalManager","inputs":[{"name":"_erc20ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC721ApprovalManager","inputs":[{"name":"_erc721ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketplaceSettings","inputs":[{"name":"_marketplaceSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkBeneficiary","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPayments","inputs":[{"name":"_payments","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyEngine","inputs":[{"name":"_royaltyEngine","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSettlement","inputs":[{"name":"_settlement","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpaceOperatorRegistry","inputs":[{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingRegistry","inputs":[{"name":"_stakingRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingSettings","inputs":[{"name":"_stakingSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenAllowListConfigs","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenMintLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenTxLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"DirectSettlementCallUnsupported","inputs":[]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SettlementCannotBeZero","inputs":[]},{"type":"error","name":"SettlementDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":"b8e6b50f","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","cancelOffer(address,uint256,address)":"e92f94d1","cancelSalePrices(address,uint256[])":"2f79f335","checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":"2c0c49ee","getDirectSaleConfig(address,uint256)":"6e2f4d8b","getERC1155ApprovalManager()":"c7c83d17","getMarketConfig()":"614bd944","getOffer(address,uint256,address,address)":"e3409ce3","getSalePrice(address,uint256,address)":"369679a4","getSettlement()":"defad60c","getTokenAllowListConfig(address,uint256)":"bf3d90f8","getTokenMintLimit(address,uint256)":"8760251a","getTokenMintsPerAddress(address,uint256,address)":"28fbba03","getTokenTxLimit(address,uint256)":"552f791d","getTokenTxsPerAddress(address,uint256,address)":"5a501f8f","initialize(address,address,address,address,address,address,address,address,address,address,address,address)":"0b800f48","isPaused()":"b187bd26","makeOffer(address,uint256,address,uint256,uint256,uint256)":"b38df71f","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7","prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"be542141","setApprovedTokenRegistry(address)":"e4e87e3b","setContractPaused(bool)":"882796f1","setERC1155ApprovalManager(address)":"ff5c83a4","setERC20ApprovalManager(address)":"d7a9fb7c","setERC721ApprovalManager(address)":"d80b23e3","setMarketplaceSettings(address)":"176ab440","setNetworkBeneficiary(address)":"3492e5a8","setPayments(address)":"af231a58","setRoyaltyEngine(address)":"21ede032","setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"ff3a52d4","setSettlement(address)":"8f4e6f37","setSpaceOperatorRegistry(address)":"7f358230","setStakingRegistry(address)":"2c740844","setStakingSettings(address)":"f1035744","setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":"373a9412","setTokenMintLimits(address,(uint256,uint256)[])":"c7ec1b98","setTokenTxLimits(address,(uint256,uint256)[])":"6442950e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectSettlementCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SettlementCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"SettlementDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"acceptOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"cancelOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"cancelSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem[]\",\"name\":\"_items\",\"type\":\"tuple[]\"}],\"name\":\"checkout\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutSummary\",\"name\":\"summary\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]\",\"name\":\"items\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutExecution\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDirectSaleConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.DirectSaleConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC1155ApprovalManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"contract IPayments\",\"name\":\"payments\",\"type\":\"address\"},{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IStakingSettings\",\"name\":\"stakingSettings\",\"type\":\"address\"},{\"internalType\":\"contract IRareStakingRegistry\",\"name\":\"stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IERC20ApprovalManager\",\"name\":\"erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC721ApprovalManager\",\"name\":\"erc721ApprovalManager\",\"type\":\"address\"}],\"internalType\":\"struct MarketConfigV2.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"getOffer\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.Offer\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"getSalePrice\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.SalePrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSettlement\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenAllowListConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.AllowListConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenMintLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTokenMintsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenTxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTokenTxsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_settlement\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"makeOffer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"prepareMintDirectSales\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"}],\"name\":\"setApprovedTokenRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isPaused\",\"type\":\"bool\"}],\"name\":\"setContractPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC1155ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC20ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC721ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"}],\"name\":\"setMarketplaceSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"}],\"name\":\"setNetworkBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"}],\"name\":\"setPayments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"}],\"name\":\"setRoyaltyEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"setSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_settlement\",\"type\":\"address\"}],\"name\":\"setSettlement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"}],\"name\":\"setSpaceOperatorRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"}],\"name\":\"setStakingRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"}],\"name\":\"setStakingSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenAllowListConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenMintLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenTxLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{\"cancelSalePrices(address,uint256[])\":{\"details\":\"Token ids must be strictly ascending.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Best-effort execution returns one result per item. All-skipped checkouts complete successfully.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"}},\"title\":\"IRareERC1155Marketplace\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Accepts all or part of an ERC1155 token offer through the settlement module.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings through the settlement module.\"},\"cancelOffer(address,uint256,address)\":{\"notice\":\"Cancels the caller's offer for one token id and currency.\"},\"cancelSalePrices(address,uint256[])\":{\"notice\":\"Cancels the caller's secondary listings for token ids.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases.\"},\"initialize(address,address,address,address,address,address,address,address,address,address,address,address)\":{\"notice\":\"Initializes the UUPS marketplace proxy.\"},\"makeOffer(address,uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Creates or replaces a token-level ERC1155 offer.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales through the settlement module.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Configures or replaces primary mint sales for token ids.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Creates or replaces secondary fixed-price listings.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"notice\":\"Sets token id allowlist configurations.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets max quantity each address may mint for token ids while a limit is enabled.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets max mint transactions each address may submit for token ids while a limit is enabled.\"}},\"notice\":\"Interface for ERC1155 marketplace state creation, escrow, configuration, and settlement proxying.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155Marketplace.sol\":\"IRareERC1155Marketplace\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155Marketplace.sol\":{\"keccak256\":\"0x32be29c47c7b138de86eb1886c38763ebecda9949379e10720285f1a15cca6a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fea0ed0ae4cade3cd51f53d72024391341260201f1d8d32dd281eeeb26b9585\",\"dweb:/ipfs/QmVmFghURASWCVn6PKZhCR4XxLVVAjx8nKmZ4q2guETeCv\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350\",\"dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[],"type":"error","name":"DirectSettlementCallUnsupported"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[],"type":"error","name":"SettlementCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"SettlementDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"acceptOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"cancelOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"cancelSalePrices"},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","name":"_items","type":"tuple[]","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"checkout","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","name":"","type":"tuple","components":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","name":"summary","type":"tuple","components":[{"internalType":"uint256","name":"filledCount","type":"uint256"},{"internalType":"uint256","name":"skippedCount","type":"uint256"},{"internalType":"uint256","name":"ethSpent","type":"uint256"},{"internalType":"uint256","name":"ethRefunded","type":"uint256"}]},{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","name":"items","type":"tuple[]","components":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bool","name":"filled","type":"bool"},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8"},{"internalType":"bytes4","name":"reason","type":"bytes4"},{"internalType":"bytes","name":"failureData","type":"bytes"},{"internalType":"uint256","name":"totalPaid","type":"uint256"}]}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDirectSaleConfig","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleConfig","name":"","type":"tuple","components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getERC1155ApprovalManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMarketConfig","outputs":[{"internalType":"struct MarketConfigV2.Config","name":"","type":"tuple","components":[{"internalType":"address","name":"networkBeneficiary","type":"address"},{"internalType":"contract IMarketplaceSettings","name":"marketplaceSettings","type":"address"},{"internalType":"contract ISpaceOperatorRegistry","name":"spaceOperatorRegistry","type":"address"},{"internalType":"contract IRoyaltyEngineV1","name":"royaltyEngine","type":"address"},{"internalType":"contract IPayments","name":"payments","type":"address"},{"internalType":"contract IApprovedTokenRegistry","name":"approvedTokenRegistry","type":"address"},{"internalType":"contract IStakingSettings","name":"stakingSettings","type":"address"},{"internalType":"contract IRareStakingRegistry","name":"stakingRegistry","type":"address"},{"internalType":"contract IERC20ApprovalManager","name":"erc20ApprovalManager","type":"address"},{"internalType":"contract IERC721ApprovalManager","name":"erc721ApprovalManager","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"stateMutability":"view","type":"function","name":"getOffer","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.Offer","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"stateMutability":"view","type":"function","name":"getSalePrice","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.SalePrice","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSettlement","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenAllowListConfig","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfig","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenTxsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"},{"internalType":"address","name":"_marketplaceSettings","type":"address"},{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"},{"internalType":"address","name":"_royaltyEngine","type":"address"},{"internalType":"address","name":"_payments","type":"address"},{"internalType":"address","name":"_approvedTokenRegistry","type":"address"},{"internalType":"address","name":"_stakingSettings","type":"address"},{"internalType":"address","name":"_stakingRegistry","type":"address"},{"internalType":"address","name":"_erc20ApprovalManager","type":"address"},{"internalType":"address","name":"_erc721ApprovalManager","type":"address"},{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"},{"internalType":"address","name":"_settlement","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"stateMutability":"payable","type":"function","name":"makeOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"prepareMintDirectSales"},{"inputs":[{"internalType":"address","name":"_approvedTokenRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setApprovedTokenRegistry"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setContractPaused"},{"inputs":[{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC1155ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc20ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC20ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc721ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC721ApprovalManager"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketplaceSettings"},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkBeneficiary"},{"inputs":[{"internalType":"address","name":"_payments","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPayments"},{"inputs":[{"internalType":"address","name":"_royaltyEngine","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyEngine"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"setSalePrices"},{"inputs":[{"internalType":"address","name":"_settlement","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSettlement"},{"inputs":[{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSpaceOperatorRegistry"},{"inputs":[{"internalType":"address","name":"_stakingRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingRegistry"},{"inputs":[{"internalType":"address","name":"_stakingSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingSettings"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenAllowListConfigs"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenMintLimits"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenTxLimits"}],"devdoc":{"kind":"dev","methods":{"cancelSalePrices(address,uint256[])":{"details":"Token ids must be strictly ascending."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"details":"Best-effort execution returns one result per item. All-skipped checkouts complete successfully."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"details":"Request token ids must be strictly ascending."},"setTokenMintLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending."},"setTokenTxLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"notice":"Accepts all or part of an ERC1155 token offer through the settlement module."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings through the settlement module."},"cancelOffer(address,uint256,address)":{"notice":"Cancels the caller's offer for one token id and currency."},"cancelSalePrices(address,uint256[])":{"notice":"Cancels the caller's secondary listings for token ids."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"notice":"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases."},"initialize(address,address,address,address,address,address,address,address,address,address,address,address)":{"notice":"Initializes the UUPS marketplace proxy."},"makeOffer(address,uint256,address,uint256,uint256,uint256)":{"notice":"Creates or replaces a token-level ERC1155 offer."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales through the settlement module."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Configures or replaces primary mint sales for token ids."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Creates or replaces secondary fixed-price listings."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"notice":"Sets token id allowlist configurations."},"setTokenMintLimits(address,(uint256,uint256)[])":{"notice":"Sets max quantity each address may mint for token ids while a limit is enabled."},"setTokenTxLimits(address,(uint256,uint256)[])":{"notice":"Sets max mint transactions each address may submit for token ids while a limit is enabled."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155Marketplace.sol":"IRareERC1155Marketplace"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155Marketplace.sol":{"keccak256":"0x32be29c47c7b138de86eb1886c38763ebecda9949379e10720285f1a15cca6a8","urls":["bzz-raw://1fea0ed0ae4cade3cd51f53d72024391341260201f1d8d32dd281eeeb26b9585","dweb:/ipfs/QmVmFghURASWCVn6PKZhCR4XxLVVAjx8nKmZ4q2guETeCv"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9","urls":["bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350","dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":158} \ No newline at end of file +{"abi":[{"type":"function","name":"acceptOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"cancelMintDirectSales","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkout","inputs":[{"name":"_items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","components":[{"name":"summary","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","components":[{"name":"filledCount","type":"uint256","internalType":"uint256"},{"name":"skippedCount","type":"uint256","internalType":"uint256"},{"name":"ethSpent","type":"uint256","internalType":"uint256"},{"name":"ethRefunded","type":"uint256","internalType":"uint256"}]},{"name":"items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","components":[{"name":"itemIndex","type":"uint256","internalType":"uint256"},{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"filled","type":"bool","internalType":"bool"},{"name":"failureStage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","internalType":"bytes4"},{"name":"failureData","type":"bytes","internalType":"bytes"},{"name":"totalPaid","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"payable"},{"type":"function","name":"getCheckoutExecutionModule","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getDirectSaleConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleConfig","components":[{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getERC1155ApprovalManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getMarketConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct MarketConfigV2.Config","components":[{"name":"networkBeneficiary","type":"address","internalType":"address"},{"name":"marketplaceSettings","type":"address","internalType":"contract IMarketplaceSettings"},{"name":"spaceOperatorRegistry","type":"address","internalType":"contract ISpaceOperatorRegistry"},{"name":"royaltyEngine","type":"address","internalType":"contract IRoyaltyEngineV1"},{"name":"payments","type":"address","internalType":"contract IPayments"},{"name":"approvedTokenRegistry","type":"address","internalType":"contract IApprovedTokenRegistry"},{"name":"stakingSettings","type":"address","internalType":"contract IStakingSettings"},{"name":"stakingRegistry","type":"address","internalType":"contract IRareStakingRegistry"},{"name":"erc20ApprovalManager","type":"address","internalType":"contract IERC20ApprovalManager"},{"name":"erc721ApprovalManager","type":"address","internalType":"contract IERC721ApprovalManager"}]}],"stateMutability":"view"},{"type":"function","name":"getOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.Offer","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"initialQuantity","type":"uint256","internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","internalType":"uint256"},{"name":"marketplaceFeeTotal","type":"uint256","internalType":"uint256"},{"name":"stakingFeeRemaining","type":"uint256","internalType":"uint256"},{"name":"stakingFeeTotal","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.SalePrice","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenAllowListConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfig","components":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenMintsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTradeExecutionModule","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"},{"name":"_marketplaceSettings","type":"address","internalType":"address"},{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"},{"name":"_royaltyEngine","type":"address","internalType":"address"},{"name":"_payments","type":"address","internalType":"address"},{"name":"_approvedTokenRegistry","type":"address","internalType":"address"},{"name":"_stakingSettings","type":"address","internalType":"address"},{"name":"_stakingRegistry","type":"address","internalType":"address"},{"name":"_erc20ApprovalManager","type":"address","internalType":"address"},{"name":"_erc721ApprovalManager","type":"address","internalType":"address"},{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"},{"name":"_tradeExecutionModule","type":"address","internalType":"address"},{"name":"_checkoutExecutionModule","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"makeOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"prepareMintDirectSales","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovedTokenRegistry","inputs":[{"name":"_approvedTokenRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setCheckoutExecutionModule","inputs":[{"name":"_checkoutExecutionModule","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setContractPaused","inputs":[{"name":"_isPaused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC1155ApprovalManager","inputs":[{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20ApprovalManager","inputs":[{"name":"_erc20ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC721ApprovalManager","inputs":[{"name":"_erc721ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketplaceSettings","inputs":[{"name":"_marketplaceSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkBeneficiary","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPayments","inputs":[{"name":"_payments","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyEngine","inputs":[{"name":"_royaltyEngine","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpaceOperatorRegistry","inputs":[{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingRegistry","inputs":[{"name":"_stakingRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingSettings","inputs":[{"name":"_stakingSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenAllowListConfigs","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenMintLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenTxLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTradeExecutionModule","inputs":[{"name":"_tradeExecutionModule","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":"b8e6b50f","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","cancelMintDirectSales(address,uint256[])":"5e50c42e","cancelOffer(address,uint256,address)":"e92f94d1","cancelSalePrices(address,uint256[])":"2f79f335","checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":"2c0c49ee","getCheckoutExecutionModule()":"9400d601","getDirectSaleConfig(address,uint256)":"6e2f4d8b","getERC1155ApprovalManager()":"c7c83d17","getMarketConfig()":"614bd944","getOffer(address,uint256,address,address)":"e3409ce3","getSalePrice(address,uint256,address)":"369679a4","getTokenAllowListConfig(address,uint256)":"bf3d90f8","getTokenMintLimit(address,uint256)":"8760251a","getTokenMintsPerAddress(address,uint256,address)":"28fbba03","getTokenTxLimit(address,uint256)":"552f791d","getTokenTxsPerAddress(address,uint256,address)":"5a501f8f","getTradeExecutionModule()":"ed5b25b5","initialize(address,address,address,address,address,address,address,address,address,address,address,address,address)":"2fdd983d","isPaused()":"b187bd26","makeOffer(address,uint256,address,uint256,uint256,uint256)":"b38df71f","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7","prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"be542141","setApprovedTokenRegistry(address)":"e4e87e3b","setCheckoutExecutionModule(address)":"63cf9cef","setContractPaused(bool)":"882796f1","setERC1155ApprovalManager(address)":"ff5c83a4","setERC20ApprovalManager(address)":"d7a9fb7c","setERC721ApprovalManager(address)":"d80b23e3","setMarketplaceSettings(address)":"176ab440","setNetworkBeneficiary(address)":"3492e5a8","setPayments(address)":"af231a58","setRoyaltyEngine(address)":"21ede032","setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"ff3a52d4","setSpaceOperatorRegistry(address)":"7f358230","setStakingRegistry(address)":"2c740844","setStakingSettings(address)":"f1035744","setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":"373a9412","setTokenMintLimits(address,(uint256,uint256)[])":"c7ec1b98","setTokenTxLimits(address,(uint256,uint256)[])":"6442950e","setTradeExecutionModule(address)":"a0f597dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"acceptOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"cancelMintDirectSales\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"cancelOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"cancelSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem[]\",\"name\":\"_items\",\"type\":\"tuple[]\"}],\"name\":\"checkout\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutSummary\",\"name\":\"summary\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]\",\"name\":\"items\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutExecution\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCheckoutExecutionModule\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDirectSaleConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.DirectSaleConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC1155ApprovalManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"contract IPayments\",\"name\":\"payments\",\"type\":\"address\"},{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IStakingSettings\",\"name\":\"stakingSettings\",\"type\":\"address\"},{\"internalType\":\"contract IRareStakingRegistry\",\"name\":\"stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IERC20ApprovalManager\",\"name\":\"erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC721ApprovalManager\",\"name\":\"erc721ApprovalManager\",\"type\":\"address\"}],\"internalType\":\"struct MarketConfigV2.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"getOffer\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"marketplaceFeeTotal\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"stakingFeeRemaining\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"stakingFeeTotal\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.Offer\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"getSalePrice\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.SalePrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenAllowListConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.AllowListConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenMintLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTokenMintsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenTxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTokenTxsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTradeExecutionModule\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tradeExecutionModule\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_checkoutExecutionModule\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"makeOffer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"prepareMintDirectSales\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"}],\"name\":\"setApprovedTokenRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_checkoutExecutionModule\",\"type\":\"address\"}],\"name\":\"setCheckoutExecutionModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isPaused\",\"type\":\"bool\"}],\"name\":\"setContractPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC1155ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC20ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC721ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"}],\"name\":\"setMarketplaceSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"}],\"name\":\"setNetworkBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"}],\"name\":\"setPayments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"}],\"name\":\"setRoyaltyEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"setSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"}],\"name\":\"setSpaceOperatorRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"}],\"name\":\"setStakingRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"}],\"name\":\"setStakingSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenAllowListConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenMintLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenTxLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tradeExecutionModule\",\"type\":\"address\"}],\"name\":\"setTradeExecutionModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{\"cancelMintDirectSales(address,uint256[])\":{\"details\":\"Token ids must be strictly ascending.\"},\"cancelSalePrices(address,uint256[])\":{\"details\":\"Token ids must be strictly ascending.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Best-effort execution returns one result per item. All-skipped checkouts complete successfully.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"}},\"title\":\"IRareERC1155Marketplace\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Accepts all or part of an ERC1155 token offer through the trade execution module.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings through the trade execution module.\"},\"cancelMintDirectSales(address,uint256[])\":{\"notice\":\"Cancels configured primary mint sales for token ids.\"},\"cancelOffer(address,uint256,address)\":{\"notice\":\"Cancels the caller's offer for one token id and currency.\"},\"cancelSalePrices(address,uint256[])\":{\"notice\":\"Cancels the caller's secondary listings for token ids.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases.\"},\"initialize(address,address,address,address,address,address,address,address,address,address,address,address,address)\":{\"notice\":\"Initializes the UUPS marketplace proxy.\"},\"makeOffer(address,uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Creates or replaces a token-level ERC1155 offer.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales through the trade execution module.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Configures or replaces primary mint sales for token ids.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Creates or replaces secondary fixed-price listings.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"notice\":\"Sets token id allowlist configurations.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets max quantity each address may mint for token ids while a limit is enabled.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets max mint transactions each address may submit for token ids while a limit is enabled.\"}},\"notice\":\"Interface for ERC1155 marketplace state creation, escrow, configuration, and execution module routing.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155Marketplace.sol\":\"IRareERC1155Marketplace\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155Marketplace.sol\":{\"keccak256\":\"0xe1d12e07644cf56ed2dcb98e690ca93775b13a03189b4a802d6134c2c2e921b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1099e8215c451fa6dad6f8be5c196c3915dc3b911d4507d46cd9f7f20e29335e\",\"dweb:/ipfs/QmUiW9oVP6Ft4C57zGE6ZWnkMKzJ8DzJoaBemKzBdWbLUK\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x8d34a6232df2f8000be37bf27bffc0ebcd32f6b7d6675e9e858a3b520d486d40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5893c1f94047332f3b26ff0fe3a2410a339fc3fd6d5397b4ee6c2c8fd02a6c70\",\"dweb:/ipfs/QmUwJwJ4XicMDJAzmsGUcYZfhKf4X9kDhmESKRhqindpAM\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"acceptOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"cancelMintDirectSales"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"cancelOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"cancelSalePrices"},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","name":"_items","type":"tuple[]","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"checkout","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","name":"","type":"tuple","components":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","name":"summary","type":"tuple","components":[{"internalType":"uint256","name":"filledCount","type":"uint256"},{"internalType":"uint256","name":"skippedCount","type":"uint256"},{"internalType":"uint256","name":"ethSpent","type":"uint256"},{"internalType":"uint256","name":"ethRefunded","type":"uint256"}]},{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","name":"items","type":"tuple[]","components":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bool","name":"filled","type":"bool"},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8"},{"internalType":"bytes4","name":"reason","type":"bytes4"},{"internalType":"bytes","name":"failureData","type":"bytes"},{"internalType":"uint256","name":"totalPaid","type":"uint256"}]}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCheckoutExecutionModule","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDirectSaleConfig","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleConfig","name":"","type":"tuple","components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getERC1155ApprovalManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMarketConfig","outputs":[{"internalType":"struct MarketConfigV2.Config","name":"","type":"tuple","components":[{"internalType":"address","name":"networkBeneficiary","type":"address"},{"internalType":"contract IMarketplaceSettings","name":"marketplaceSettings","type":"address"},{"internalType":"contract ISpaceOperatorRegistry","name":"spaceOperatorRegistry","type":"address"},{"internalType":"contract IRoyaltyEngineV1","name":"royaltyEngine","type":"address"},{"internalType":"contract IPayments","name":"payments","type":"address"},{"internalType":"contract IApprovedTokenRegistry","name":"approvedTokenRegistry","type":"address"},{"internalType":"contract IStakingSettings","name":"stakingSettings","type":"address"},{"internalType":"contract IRareStakingRegistry","name":"stakingRegistry","type":"address"},{"internalType":"contract IERC20ApprovalManager","name":"erc20ApprovalManager","type":"address"},{"internalType":"contract IERC721ApprovalManager","name":"erc721ApprovalManager","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"stateMutability":"view","type":"function","name":"getOffer","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.Offer","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"initialQuantity","type":"uint256"},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256"},{"internalType":"uint256","name":"marketplaceFeeTotal","type":"uint256"},{"internalType":"uint256","name":"stakingFeeRemaining","type":"uint256"},{"internalType":"uint256","name":"stakingFeeTotal","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"stateMutability":"view","type":"function","name":"getSalePrice","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.SalePrice","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenAllowListConfig","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfig","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenTxsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTradeExecutionModule","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"},{"internalType":"address","name":"_marketplaceSettings","type":"address"},{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"},{"internalType":"address","name":"_royaltyEngine","type":"address"},{"internalType":"address","name":"_payments","type":"address"},{"internalType":"address","name":"_approvedTokenRegistry","type":"address"},{"internalType":"address","name":"_stakingSettings","type":"address"},{"internalType":"address","name":"_stakingRegistry","type":"address"},{"internalType":"address","name":"_erc20ApprovalManager","type":"address"},{"internalType":"address","name":"_erc721ApprovalManager","type":"address"},{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"},{"internalType":"address","name":"_tradeExecutionModule","type":"address"},{"internalType":"address","name":"_checkoutExecutionModule","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"stateMutability":"payable","type":"function","name":"makeOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"prepareMintDirectSales"},{"inputs":[{"internalType":"address","name":"_approvedTokenRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setApprovedTokenRegistry"},{"inputs":[{"internalType":"address","name":"_checkoutExecutionModule","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setCheckoutExecutionModule"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setContractPaused"},{"inputs":[{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC1155ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc20ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC20ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc721ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC721ApprovalManager"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketplaceSettings"},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkBeneficiary"},{"inputs":[{"internalType":"address","name":"_payments","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPayments"},{"inputs":[{"internalType":"address","name":"_royaltyEngine","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyEngine"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"setSalePrices"},{"inputs":[{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSpaceOperatorRegistry"},{"inputs":[{"internalType":"address","name":"_stakingRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingRegistry"},{"inputs":[{"internalType":"address","name":"_stakingSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingSettings"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenAllowListConfigs"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenMintLimits"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenTxLimits"},{"inputs":[{"internalType":"address","name":"_tradeExecutionModule","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTradeExecutionModule"}],"devdoc":{"kind":"dev","methods":{"cancelMintDirectSales(address,uint256[])":{"details":"Token ids must be strictly ascending."},"cancelSalePrices(address,uint256[])":{"details":"Token ids must be strictly ascending."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"details":"Best-effort execution returns one result per item. All-skipped checkouts complete successfully."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"details":"Request token ids must be strictly ascending."},"setTokenMintLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending."},"setTokenTxLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"notice":"Accepts all or part of an ERC1155 token offer through the trade execution module."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings through the trade execution module."},"cancelMintDirectSales(address,uint256[])":{"notice":"Cancels configured primary mint sales for token ids."},"cancelOffer(address,uint256,address)":{"notice":"Cancels the caller's offer for one token id and currency."},"cancelSalePrices(address,uint256[])":{"notice":"Cancels the caller's secondary listings for token ids."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"notice":"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases."},"initialize(address,address,address,address,address,address,address,address,address,address,address,address,address)":{"notice":"Initializes the UUPS marketplace proxy."},"makeOffer(address,uint256,address,uint256,uint256,uint256)":{"notice":"Creates or replaces a token-level ERC1155 offer."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales through the trade execution module."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Configures or replaces primary mint sales for token ids."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Creates or replaces secondary fixed-price listings."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"notice":"Sets token id allowlist configurations."},"setTokenMintLimits(address,(uint256,uint256)[])":{"notice":"Sets max quantity each address may mint for token ids while a limit is enabled."},"setTokenTxLimits(address,(uint256,uint256)[])":{"notice":"Sets max mint transactions each address may submit for token ids while a limit is enabled."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155Marketplace.sol":"IRareERC1155Marketplace"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155Marketplace.sol":{"keccak256":"0xe1d12e07644cf56ed2dcb98e690ca93775b13a03189b4a802d6134c2c2e921b2","urls":["bzz-raw://1099e8215c451fa6dad6f8be5c196c3915dc3b911d4507d46cd9f7f20e29335e","dweb:/ipfs/QmUiW9oVP6Ft4C57zGE6ZWnkMKzJ8DzJoaBemKzBdWbLUK"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x8d34a6232df2f8000be37bf27bffc0ebcd32f6b7d6675e9e858a3b520d486d40","urls":["bzz-raw://5893c1f94047332f3b26ff0fe3a2410a339fc3fd6d5397b4ee6c2c8fd02a6c70","dweb:/ipfs/QmUwJwJ4XicMDJAzmsGUcYZfhKf4X9kDhmESKRhqindpAM"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":159} \ No newline at end of file diff --git a/abis/IRareERC1155MarketplaceTypes.json b/abis/IRareERC1155MarketplaceTypes.json index 1c2a747..f3d0dec 100644 --- a/abis/IRareERC1155MarketplaceTypes.json +++ b/abis/IRareERC1155MarketplaceTypes.json @@ -1 +1 @@ -{"abi":[{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"DirectSettlementCallUnsupported","inputs":[]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SettlementCannotBeZero","inputs":[]},{"type":"error","name":"SettlementDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectSettlementCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SettlementCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"SettlementDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"IRareERC1155MarketplaceTypes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Shared structs, events, and errors for the ERC1155 marketplace.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":\"IRareERC1155MarketplaceTypes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350\",\"dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[],"type":"error","name":"DirectSettlementCallUnsupported"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[],"type":"error","name":"SettlementCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"SettlementDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155MarketplaceTypes.sol":"IRareERC1155MarketplaceTypes"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9","urls":["bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350","dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K"],"license":"MIT"}},"version":1},"id":159} \ No newline at end of file +{"abi":[{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"IRareERC1155MarketplaceTypes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Shared structs, events, and errors for the ERC1155 marketplace.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":\"IRareERC1155MarketplaceTypes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x8d34a6232df2f8000be37bf27bffc0ebcd32f6b7d6675e9e858a3b520d486d40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5893c1f94047332f3b26ff0fe3a2410a339fc3fd6d5397b4ee6c2c8fd02a6c70\",\"dweb:/ipfs/QmUwJwJ4XicMDJAzmsGUcYZfhKf4X9kDhmESKRhqindpAM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155MarketplaceTypes.sol":"IRareERC1155MarketplaceTypes"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x8d34a6232df2f8000be37bf27bffc0ebcd32f6b7d6675e9e858a3b520d486d40","urls":["bzz-raw://5893c1f94047332f3b26ff0fe3a2410a339fc3fd6d5397b4ee6c2c8fd02a6c70","dweb:/ipfs/QmUwJwJ4XicMDJAzmsGUcYZfhKf4X9kDhmESKRhqindpAM"],"license":"MIT"}},"version":1},"id":160} \ No newline at end of file diff --git a/abis/IRareERC1155Settlement.json b/abis/IRareERC1155Settlement.json deleted file mode 100644 index 67e97d9..0000000 --- a/abis/IRareERC1155Settlement.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"acceptOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"checkout","inputs":[{"name":"_items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","components":[{"name":"summary","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","components":[{"name":"filledCount","type":"uint256","internalType":"uint256"},{"name":"skippedCount","type":"uint256","internalType":"uint256"},{"name":"ethSpent","type":"uint256","internalType":"uint256"},{"name":"ethRefunded","type":"uint256","internalType":"uint256"}]},{"name":"items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","components":[{"name":"itemIndex","type":"uint256","internalType":"uint256"},{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"filled","type":"bool","internalType":"bool"},{"name":"failureStage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","internalType":"bytes4"},{"name":"failureData","type":"bytes","internalType":"bytes"},{"name":"totalPaid","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"payable"},{"type":"function","name":"executeCheckoutItem","inputs":[{"name":"_item","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"_remainingEth","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_grossAmount","type":"uint256","internalType":"uint256"},{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[{"name":"totalPaid","type":"uint256","internalType":"uint256"},{"name":"newRemainingEth","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"executeCheckoutPayout","inputs":[{"name":"_item","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"_seller","type":"address","internalType":"address"},{"name":"_grossAmount","type":"uint256","internalType":"uint256"},{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"DirectSettlementCallUnsupported","inputs":[]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SettlementCannotBeZero","inputs":[]},{"type":"error","name":"SettlementDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":"b8e6b50f","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":"2c0c49ee","executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":"59a8a40a","executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":"d65852a6","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectSettlementCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SettlementCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"SettlementDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"acceptOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem[]\",\"name\":\"_items\",\"type\":\"tuple[]\"}],\"name\":\"checkout\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutSummary\",\"name\":\"summary\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]\",\"name\":\"items\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutExecution\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem\",\"name\":\"_item\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_remainingEth\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_grossAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"executeCheckoutItem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newRemainingEth\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem\",\"name\":\"_item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_grossAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"executeCheckoutPayout\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert.\"},\"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Settlement-only entrypoint; the marketplace proxy does not expose this selector.\"},\"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])\":{\"details\":\"Settlement-only entrypoint; the marketplace proxy does not expose this selector.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert.\"}},\"title\":\"IRareERC1155Settlement\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Accepts all or part of an ERC1155 token offer.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases.\"},\"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Executes one already validated checkout item through a nested delegatecall rollback boundary.\"},\"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Executes payout for a checkout item through a nested rollback boundary.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales.\"}},\"notice\":\"Settlement entrypoints executed through `RareERC1155Marketplace` delegatecalls.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155Settlement.sol\":\"IRareERC1155Settlement\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350\",\"dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K\"]},\"src/marketplace/IRareERC1155Settlement.sol\":{\"keccak256\":\"0x7ba101acc638ecd2eb5c780e625d6d82d6d00e36aa392f7a60a131cbf25d9d1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33355c9a7d70f3e97c076c71344a088a8a00cf79f5b52f017508cc442903b06c\",\"dweb:/ipfs/QmYowpKw4Y9LJUCeQhSRaLf6LkCTKbwJcTX3pU8hjbaaqA\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[],"type":"error","name":"DirectSettlementCallUnsupported"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[],"type":"error","name":"SettlementCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"SettlementDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"acceptOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","name":"_items","type":"tuple[]","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"checkout","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","name":"","type":"tuple","components":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","name":"summary","type":"tuple","components":[{"internalType":"uint256","name":"filledCount","type":"uint256"},{"internalType":"uint256","name":"skippedCount","type":"uint256"},{"internalType":"uint256","name":"ethSpent","type":"uint256"},{"internalType":"uint256","name":"ethRefunded","type":"uint256"}]},{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","name":"items","type":"tuple[]","components":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bool","name":"filled","type":"bool"},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8"},{"internalType":"bytes4","name":"reason","type":"bytes4"},{"internalType":"bytes","name":"failureData","type":"bytes"},{"internalType":"uint256","name":"totalPaid","type":"uint256"}]}]}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","name":"_item","type":"tuple","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]},{"internalType":"uint256","name":"_remainingEth","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_grossAmount","type":"uint256"},{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"payable","type":"function","name":"executeCheckoutItem","outputs":[{"internalType":"uint256","name":"totalPaid","type":"uint256"},{"internalType":"uint256","name":"newRemainingEth","type":"uint256"}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","name":"_item","type":"tuple","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_grossAmount","type":"uint256"},{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"payable","type":"function","name":"executeCheckoutPayout"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"}],"devdoc":{"kind":"dev","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert."},"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":{"details":"Settlement-only entrypoint; the marketplace proxy does not expose this selector."},"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":{"details":"Settlement-only entrypoint; the marketplace proxy does not expose this selector."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"notice":"Accepts all or part of an ERC1155 token offer."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"notice":"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases."},"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":{"notice":"Executes one already validated checkout item through a nested delegatecall rollback boundary."},"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":{"notice":"Executes payout for a checkout item through a nested rollback boundary."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155Settlement.sol":"IRareERC1155Settlement"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9","urls":["bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350","dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K"],"license":"MIT"},"src/marketplace/IRareERC1155Settlement.sol":{"keccak256":"0x7ba101acc638ecd2eb5c780e625d6d82d6d00e36aa392f7a60a131cbf25d9d1b","urls":["bzz-raw://33355c9a7d70f3e97c076c71344a088a8a00cf79f5b52f017508cc442903b06c","dweb:/ipfs/QmYowpKw4Y9LJUCeQhSRaLf6LkCTKbwJcTX3pU8hjbaaqA"],"license":"MIT"}},"version":1},"id":70} \ No newline at end of file diff --git a/abis/IRareERC1155TradeExecutionModule.json b/abis/IRareERC1155TradeExecutionModule.json new file mode 100644 index 0000000..868c647 --- /dev/null +++ b/abis/IRareERC1155TradeExecutionModule.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"acceptOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":"b8e6b50f","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"acceptOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert.\"}},\"title\":\"IRareERC1155TradeExecutionModule\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Accepts all or part of an ERC1155 token offer.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales.\"}},\"notice\":\"Direct trade entrypoints executed through `RareERC1155Marketplace` delegatecalls.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155TradeExecutionModule.sol\":\"IRareERC1155TradeExecutionModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9\",\"dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN\"]},\"src/marketplace/IRareERC1155TradeExecutionModule.sol\":{\"keccak256\":\"0xeac5a1dcc35c87ba1867c2754e12ab54dfb00112f0392d0be073b3a381df8fb1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f74c949b2d3b3f4f01ce37e1990370a476ea7b7fb1692b5ac96606c0303dd89\",\"dweb:/ipfs/QmbsX9rW7r8trT2jRhF34LkwNPwqNQZMv32WwoBswNVTFH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"acceptOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"}],"devdoc":{"kind":"dev","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"notice":"Accepts all or part of an ERC1155 token offer."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155TradeExecutionModule.sol":"IRareERC1155TradeExecutionModule"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9","urls":["bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9","dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN"],"license":"MIT"},"src/marketplace/IRareERC1155TradeExecutionModule.sol":{"keccak256":"0xeac5a1dcc35c87ba1867c2754e12ab54dfb00112f0392d0be073b3a381df8fb1","urls":["bzz-raw://9f74c949b2d3b3f4f01ce37e1990370a476ea7b7fb1692b5ac96606c0303dd89","dweb:/ipfs/QmbsX9rW7r8trT2jRhF34LkwNPwqNQZMv32WwoBswNVTFH"],"license":"MIT"}},"version":1},"id":161} \ No newline at end of file diff --git a/abis/RareERC1155.json b/abis/RareERC1155.json index 7046df1..b311a19 100644 --- a/abis/RareERC1155.json +++ b/abis/RareERC1155.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBatch","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnBatch","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"},{"name":"_royaltyReceiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"exists","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintBatchTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyPercentage","inputs":[{"name":"_percentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyReceiverForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"_interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"royaltyReceiver","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"TransferBatch","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"values","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"TransferSingle","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"URI","inputs":[{"name":"value","type":"string","indexed":false,"internalType":"string"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"BatchLengthMismatch","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"RoyaltyPercentageTooHigh","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x60808060405234620000c6576000549060ff8260081c1662000074575060ff8082160362000038575b6040516133e89081620000cc8239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461244157806301ffc9a71461238757806306fdde03146122f55780630de54ba0146122715780630e89341c146120ef5780631542bb9514611e7957806318e97fd114611cf65780632a55205a14611c485780632baf2acb14611bd75780632eb2c2d61461180f5780633512639c1461178f5780633a3d146f1461174f5780633ebc82c51461171657806340c1a064146116ed5780634e1273f41461154f5780634f558e79146115215780636b20c454146112d9578063715018a6146112c0578063894ba833146112715780638da5cb5b1461124857806395d89b4114611175578063a22cb4651461109e578063a7eae21c146109f3578063bd85b039146109c7578063c33ae88f1461099a578063cfdbf2541461097e578063e2200a0b146108ad578063e27a41bf1461085d578063e985e9c514610807578063ee070805146107e3578063f242432a1461044d578063f2fde38b146103c0578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101636020526020604060002054604051908152f35b600080fd5b346101be576101d1366125c1565b6001600160a01b0390921691903383148015610397575b6101f19061289f565b8215926101fe8415612bb9565b61020782612b94565b9161021184612b94565b946000604051610220816124e9565b52610343575b60005b83518110156102c45761023c818561288b565b51610247828861288b565b51908060005260fb602081815260406000205492848410610280579061027b95949392916000525203604060002055612859565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612c11565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a46103416040516124e9565b005b929060005b835181101561038f578061035f61038a928861288b565b5161036a828761288b565b5160005260fb60205261038360406000209182546129bb565b9055612859565b610348565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103d9612468565b6103e1612733565b6001600160a01b038116156103f9576103419061278b565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be57610466612468565b61046e61247e565b90608480356001600160401b0381116101be5761048f9036906004016126b4565b6001600160a01b039190838316331480156107b8575b6104ae9061289f565b828516156104bc8115612902565b6104c7604435612b94565b6104d2606435612b94565b9185871615610778575b6106ca575b5050604435600052602094609786526040600020848616600052865260406000205461051160643582101561295c565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061055c60643582546129bb565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b6105a357005b60a060006105ed958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a4830190612525565b0393165af16000918161069b575b5061067157505060019061060d612ab3565b6308c379a01461063c575b5061061f57005b60405162461bcd60e51b81528061063860048201612b3f565b0390fd5b610644612ad1565b90816106505750610618565b61063860405192839262461bcd60e51b845260048401526024830190612525565b6001600160e01b0319161490506103415760405162461bcd60e51b81528061063860048201612a6a565b6106bc919250843d86116106c3575b6106b48183612504565b810190612a4a565b90846105fb565b503d6106aa565b92959194909360005b8451811015610769576106e6818661288b565b51906106f2818861288b565b518260005260fb602052604060002054818110610726576107219360005260fb60205203604060002055612859565b6106d3565b60405162461bcd60e51b81526020600482015260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104e1565b959260009794919592975b86518110156107aa578061079a6107a5928b61288b565b5161036a828a61288b565b610783565b5092959691949093966104dc565b5082841660005260986020526040600020336000526020526104ae60ff6040600020541690506104a5565b346101be5760003660031901126101be57602060ff61016154166040519015158152f35b346101be5760403660031901126101be57610820612468565b61082861247e565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be57610876612733565b60ff610161541661089b576101665461034190600435906001600160a01b0316613288565b604051637abbf1c960e01b8152600490fd5b346101be5760403660031901126101be576004356108c961247e565b906108d2612733565b60ff610161541661089b578060005261016360205260ff6002604060002001541615610966576001600160a01b0382161561095457806000526101686020526040600020549160648302928084046064149015171561093e576001600160601b036103419316916131db565b634e487b7160e01b600052601160045260246000fd5b604051637827912560e01b8152600490fd5b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760003660031901126101be57602060405160648152f35b346101be5760203660031901126101be576004356000526101656020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be57610a23903690600401612594565b906024356001600160401b0381116101be57610a43903690600401612594565b6044356001600160401b0381116101be57610a62903690600401612594565b90929091906064356001600160a01b03811690036101be57608435956001600160a01b03871687036101be576000549560ff8760081c161596878098611091575b801561107a575b1561101e5760ff1981166001176000558761100c575b506064356001600160a01b031615610954576001600160401b038211610e14578190610aee61015f54612494565b601f8111610f9e575b50600090601f8311600114610f1557600092610f0a575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610e1457610b3f61016054612494565b601f8111610ea8575b50600090601f8311600114610e3557610bb39493929160009183610e2a575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ba360ff60005460081c16610b9e81612cbd565b612cbd565b610bac3361278b565b369161266e565b91610bc960ff60005460081c16610b9e81612cbd565b82516001600160401b038111610e1457610be4609954612494565b601f8111610daf575b506020601f8211600114610d485781929394600092610d3d575b50508160011b916000199060031b1c1916176099555b610c3b60ff60005460081c16610c3281612cbd565b610b9e81612cbd565b61016680546001600160a01b0319166064356001600160a01b0316179055600a610167556040516103e890602090610c72816124ce565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610ce5575b50610ca760643561278b565b610cad57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101646020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610c9b565b015190508480610c07565b601f198216906099600052806000209160005b818110610d9757509583600195969710610d7e575b505050811b01609955610c1d565b015160001960f88460031b161c19169055848080610d70565b9192602060018192868b015181550194019201610d5b565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610e0a575b601f0160051c01905b818110610dfe5750610bed565b60008155600101610df1565b9091508190610de8565b634e487b7160e01b600052604160045260246000fd5b013590508780610b67565b61016060005260206000209160005b601f1985168110610e905750918391600193610bb3979695601f19811610610e76575b505050811b0161016055610b7e565b0135600019600384901b60f8161c19169055878080610e67565b90926020600181928686013581550194019101610e44565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610f03575b601f830160051c82018110610ef7575050610b48565b60008155600101610ee1565b5080610ee1565b013590508880610b0e565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610f86576001945083601f19811610610f6c575b505050811b0161015f55610b25565b0135600019600384901b60f8161c19169055888080610f5d565b81810135835560209485019460019093019201610f42565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510611005575b90849392915b601f830160051c82018110610ff6575050610af7565b60008155859450600101610fe0565b5080610fda565b61ffff19166101011760005588610ac0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610aaa5750600160ff821614610aaa565b50600160ff821610610aa3565b346101be576110ac36612565565b6001600160a01b039091169033821461111e573360005260986020526040600020826000526020526110ee8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be5760405160009061016080549061119b82612494565b90818452600192838116908160001461122057506001146111df575b6111db846111c781880382612504565b604051918291602083526020830190612525565b0390f35b90935060005260209283600020916000925b82841061120d57505050816111db936111c792820101936111b7565b80548585018701529285019281016111f1565b6111db96506111c79450602092508593915060ff191682840152151560051b820101936111b7565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be5761128a612733565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760003660031901126101be57610954612733565b346101be5760603660031901126101be576112f2612468565b6024906001600160401b039082358281116101be57611315903690600401612650565b9160449081359081116101be57611330903690600401612650565b6001600160a01b039092169233841480156114f8575b61134f9061289f565b831561135b8115612bb9565b61136882518551146129c8565b6000604051611376816124e9565b526114c0575b60005b815181101561141857611392818361288b565b5161139d828661288b565b51908060005260fb6020818152604060002054928484106113d657906113d195949392916000525203604060002055612859565b61137f565b60405162461bcd60e51b8152600481018390526028818d0152600080516020613393833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b825181101561148d5780611435611488928561288b565b51611440828761288b565b519080600052609760209080825260406000208760005282526040600020549261146c85851015612c11565b6000528152604060002090866000525203604060002055612859565b61141e565b50906000805160206133538339815191526114b2600094604051918291339583612a25565b0390a46103416040516124e9565b9260009491945b84518110156114ee57806114de6114e9928661288b565b5161036a828861288b565b6114c7565b509293909361137c565b5083600052609860205260406000203360005260205261134f60ff604060002054169050611346565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be5781600401359061158c826125eb565b9261159a6040519485612504565b82845260209260248486019160051b830101913683116101be57602401905b8282106116ce575050506024359081116101be576115db903690600401612650565b8251815103611677578251926115f0846125eb565b936115fe6040519586612504565b80855261160d601f19916125eb565b01368486013760005b81518110156116605761165b9061164b6001600160a01b03611638838661288b565b5116611644838761288b565b51906127d4565b611655828861288b565b52612859565b611616565b5050506111db6040519282849384528301906126ff565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115b9565b346101be5760203660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760203660031901126101be5761172f612468565b611737612733565b60ff610161541661089b576101675461034191613288565b346101be5760203660031901126101be576001600160a01b03611770612468565b16600052610164602052602060ff604060002054166040519015158152f35b346101be5760603660031901126101be576117a8612468565b6001600160401b03906024358281116101be576117c99036906004016126cf565b926044359081116101be576117e29036906004016126cf565b919060ff610161541661089b5761180161180992610341963691612602565b923691612602565b91612d1d565b346101be5760031960a0368201126101be57611829612468565b9061183261247e565b6044908135926001600160401b03938481116101be57611856903690600401612650565b606480358681116101be5761186f903690600401612650565b9460849687359081116101be5761188a9036906004016126b4565b6001600160a01b039489861633148015611bac575b6118a89061289f565b6118b585518951146129c8565b858716156118c38115612902565b868b1615611b69575b611ab4575b60005b855181101561196957806118eb611964928861288b565b518c6118f7838d61288b565b519180600052609790838c60209484865260406000208282166000528652604060002054916119288484101561295c565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c166000525261038360406000209182546129bb565b6118d4565b50888a9897969497896040518860008051602061335383398151915289808d169416928061199987339583612a25565b0390a4873b6119a457005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a487016119d8916126ff565b908487830301908701526119eb916126ff565b9184830301908401526119fd91612525565b03921691815a602094600091f160009181611a94575b50611a6c5750506001611a24612ab3565b6308c379a014611a35575b61061f57005b611a3d612ad1565b80611a485750611a2f565b60405162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916146103415760405162461bcd60e51b81528061063860048201612a6a565b611aad91925060203d81116106c3576106b48183612504565b9083611a13565b9796949060009993999692965b8551811015611b5957611ad4818761288b565b51611adf828961288b565b519080600052602060fb815260406000205491838310611b1857611b139493929160fb916000525203604060002055612859565b611ac1565b508b9067616c537570706c7960c01b8f6000805160206133938339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b50909496979892989591956118d1565b99969498959392919060005b8a51811015611b9d57808b61036a82611b91611b98958f61288b565b519261288b565b611b75565b509091929395989496996118cc565b50858a1660005260986020526040600020336000526020526118a860ff60406000205416905061189f565b346101be57611be5366125c1565b9160ff610161541661089b57602092611c409160405190611c05826124ce565b6001825285368184013760405192611c1c846124ce565b6001845286368186013785611c3084612868565b52611c3a84612868565b52612d1d565b604051908152f35b346101be5760403660031901126101be5760243560043560005261012e60205260406000209060405191611c7b836124ce565b546001600160a01b0380821680855260a09290921c6020850152929015611cd3575b6001600160601b036020820151169182810292818404149015171561093e57604092612710915116918351928352046020820152f35b50604051611ce0816124ce565b61012d54838116825260a01c6020820152611c9d565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611d2a903690600401612594565b9190611d34612733565b60ff610161541661089b57836000526101639160209280845260ff6002604060002001541615611e6057856000528352600180604060002001918511610e1457611d8885611d828454612494565b84612c69565b6000601f8611600114611de95791858060008051602061337383398151915297969593611dd995600093611dde575b501b906000198760031b1c19161790555b60405193838594855284019161315b565b0390a2005b85013592508a611db7565b601f1986169083600052856000209160005b818110611e4b575091879695939160008051602061337383398151915298611dd9969410611e31575b505085811b019055611dc8565b840135600019600389901b60f8161c191690558880611e24565b86830135845592840192918701918701611dfb565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576001600160401b036004358181116101be57611eaa903690600401612594565b602435916001600160a01b03604435818116938482036101be57611ecc612733565b60ff610161541661089b5785156120dd5784156109545761016295611ef18754612859565b809755604051606081018181108a821117610e1457604052818152611f1736848861266e565b986020998a83019081526040830191600183528a6000526101638c526040600020935184556001840191518051918211610e1457611f5f82611f598554612494565b85612c69565b8c908d601f841160011461206c5750918060029492611fad979694600092612061575b50508160011b916000199060031b1c19161790555b51151591019060ff801983541691151516179055565b61016754928760005261016889528360406000205560648402938085046064149015171561093e578794612010612056926001600160601b037fc07473765c308da8ff95c4974c60af7332d93777f002550fa063b77064a6f7b2971690886131db565b856000805160206133738339815191526120368c6040519181839283528201898d61315b565b0390a26033541695604051938493845260408b850152604084019161315b565b0390a4604051908152f35b015190508f80611f82565b9190601f1984168560005283600020936000905b8282106120c5575050926001928592611fad99989660029896106120ac575b505050811b019055611f97565b015160001960f88460031b161c191690558f808061209f565b80600186978294978701518155019601940190612080565b604051631dd0e19360e01b8152600490fd5b346101be576020806003193601126101be5760043560005261016381526001806040600020019082604051809360009080549061212b82612494565b80855291868116908115612250575060011461220f575b505061215092500383612504565b81511561216e5750905b6111db604051928284938452830190612525565b905060405190600090836099549161218583612494565b928386528582821691826000146121ef5750506001146121b5575b505050816121af910382612504565b9061215a565b91909250609960005282600020916000925b8284106121dc575050508201018183856121a0565b80548685018601529284019281016121c7565b60ff19168482015293151560051b840190920193508591508690506121a0565b9091506000528260002090846000925b828410612239575050509161215092820101859287612142565b80548885018701528794509285019286910161221f565b91505061215094925060ff191682840152151560051b820101859287612142565b346101be5761227f36612565565b90612288612733565b60ff610161541661089b576001600160a01b03169081156109545760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261016482526122ea8160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be5760405160009061015f80549061231b82612494565b9081845260019283811690816000146112205750600114612346576111db846111c781880382612504565b90935060005260209283600020916000925b82841061237457505050816111db936111c792820101936111b7565b8054858501870152928501928101612358565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be57602090635a08b45360e11b8114908115612430575b81156123d3575b506040519015158152f35b63152a902d60e11b8114915081156123ed575b50826123c8565b636cdb3d1360e11b81149150811561241f575b811561240e575b50826123e6565b6301ffc9a760e01b14905082612407565b6303a24d0760e21b81149150612400565b631030681960e21b811491506123c1565b346101be5760403660031901126101be576020611c4061245f612468565b602435906127d4565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c921680156124c4575b60208310146124ae57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124a3565b604081019081106001600160401b03821117610e1457604052565b602081019081106001600160401b03821117610e1457604052565b90601f801991011681019081106001600160401b03821117610e1457604052565b919082519283825260005b848110612551575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612530565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610e145760051b60200190565b929161260d826125eb565b9161261b6040519384612504565b829481845260208094019160051b81019283116101be57905b8282106126415750505050565b81358152908301908301612634565b9080601f830112156101be5781602061266b93359101612602565b90565b9291926001600160401b038211610e145760405191612697601f8201601f191660200184612504565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be5781602061266b9335910161266e565b9181601f840112156101be578235916001600160401b0383116101be576020808501948460051b0101116101be57565b90815180825260208080930193019160005b82811061271f575050505090565b835185529381019392810192600101612711565b6033546001600160a01b0316330361274757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561280157600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b600019811461093e5760010190565b8051156128755760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156128755760209160051b010190565b156128a657565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561290957565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561296357565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9190820180921161093e57565b156129cf57565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612a3c61266b936040845260408401906126ff565b9160208184039101526126ff565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612ac057565b905060046000803e60005160e01c90565b600060443d1061266b57604051600319913d83016004833e81516001600160401b03918282113d602484011117612b2e57818401948551938411612b36573d85010160208487010111612b2e575061266b92910160200190612504565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612ba1826124ce565b6001825260203681840137612bb582612868565b5290565b15612bc057565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612c1857565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c7757505050565b600091825260208220906020601f850160051c83019410612cb3575b601f0160051c01915b828110612ca857505050565b818155600101612c9c565b9092508290612c93565b15612cc457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b038083169291908315610954576033541633141580613141575b61312957835115613117578351815103613105578351926064938481116130e7575060015b8551811015612dd557612d78818761288b565b516000198201828111612dc057612d8f908861288b565b511015612d9e57600101612d65565b612daa6024918761288b565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612ebf57612df3868461288b565b519586600052610163602081815260409060ff60028360002001541615612ea757612e1e848961288b565b5115612e96578960005261016590818152612e488360002054612e41878c61288b565b51906129bb565b938b60005281528260002054808511612e74575060009a8b525290972096909655600190950194612de0565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612ed5876124e9565b60008752612ee686518551146129c8565b60005b8651811015612f285780612f00612f23928761288b565b51612f0b828a61288b565b5160005260fb602052610383886000209182546129bb565b612ee9565b5090919560005b8651811015612f795780612f46612f74928761288b565b51612f51828a61288b565b5160005260206097815288600020908c60005252610383886000209182546129bb565b612f2f565b5091969093958160008851600080516020613353833981519152339180612fa18a8d83612a25565b0390a43b612fb2575b505050505050565b6130056000602094613014895197889687958694612ff263bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a48801906126ff565b90600319948588840301908801526126ff565b91848303016084850152612525565b03925af1600091816130c7575b5061309b5750506001613032612ab3565b6308c379a014613065575b61304e57505b388080808080612faa565b5162461bcd60e51b81528061063860048201612b3f565b61306d612ad1565b80613078575061303d565b825162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916036130b05750613043565b5162461bcd60e51b81528061063860048201612a6a565b6130e091925060203d81116106c3576106b48183612504565b9038613021565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016460205260ff6040600020541615612d40565b908060209392818452848401376000828201840152601f01601f1916010190565b1561318357565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b916001600160601b0316906131f461271083111561317c565b6001600160a01b039081169283156132435760405193613213856124ce565b84526020808501938452600091825261012e9052604090209251915160a01b6001600160a01b0319169116179055565b60405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b6001600160a01b039081169190821561095457606482116133325760018060a01b0319926101668185825416179055826101675560648302928084046064149015171561093e57613320906001600160601b0384166132eb61271082111561317c565b60206040516132f9816124ce565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a2646970667358221220b7720fa90ac9df32d7bfb6ee34e640368972d81f7eb46827b58be3edc6478e5764736f6c63430008120033","sourceMap":"1123:14094:37:-:0;;;;;;;6007:13:19;1123:14094:37;;;;;;;;;;;;;;6078:31:19;6074:139;;-1:-1:-1;1123:14094:37;;;;;;;;;6074:139:19;1123:14094:37;;;;;;6007:13:19;1123:14094:37;6174:28:19;1123:14094:37;;;;;;6174:28:19;6074:139;;;1123:14094:37;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461244157806301ffc9a71461238757806306fdde03146122f55780630de54ba0146122715780630e89341c146120ef5780631542bb9514611e7957806318e97fd114611cf65780632a55205a14611c485780632baf2acb14611bd75780632eb2c2d61461180f5780633512639c1461178f5780633a3d146f1461174f5780633ebc82c51461171657806340c1a064146116ed5780634e1273f41461154f5780634f558e79146115215780636b20c454146112d9578063715018a6146112c0578063894ba833146112715780638da5cb5b1461124857806395d89b4114611175578063a22cb4651461109e578063a7eae21c146109f3578063bd85b039146109c7578063c33ae88f1461099a578063cfdbf2541461097e578063e2200a0b146108ad578063e27a41bf1461085d578063e985e9c514610807578063ee070805146107e3578063f242432a1461044d578063f2fde38b146103c0578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101636020526020604060002054604051908152f35b600080fd5b346101be576101d1366125c1565b6001600160a01b0390921691903383148015610397575b6101f19061289f565b8215926101fe8415612bb9565b61020782612b94565b9161021184612b94565b946000604051610220816124e9565b52610343575b60005b83518110156102c45761023c818561288b565b51610247828861288b565b51908060005260fb602081815260406000205492848410610280579061027b95949392916000525203604060002055612859565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612c11565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a46103416040516124e9565b005b929060005b835181101561038f578061035f61038a928861288b565b5161036a828761288b565b5160005260fb60205261038360406000209182546129bb565b9055612859565b610348565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103d9612468565b6103e1612733565b6001600160a01b038116156103f9576103419061278b565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be57610466612468565b61046e61247e565b90608480356001600160401b0381116101be5761048f9036906004016126b4565b6001600160a01b039190838316331480156107b8575b6104ae9061289f565b828516156104bc8115612902565b6104c7604435612b94565b6104d2606435612b94565b9185871615610778575b6106ca575b5050604435600052602094609786526040600020848616600052865260406000205461051160643582101561295c565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061055c60643582546129bb565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b6105a357005b60a060006105ed958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a4830190612525565b0393165af16000918161069b575b5061067157505060019061060d612ab3565b6308c379a01461063c575b5061061f57005b60405162461bcd60e51b81528061063860048201612b3f565b0390fd5b610644612ad1565b90816106505750610618565b61063860405192839262461bcd60e51b845260048401526024830190612525565b6001600160e01b0319161490506103415760405162461bcd60e51b81528061063860048201612a6a565b6106bc919250843d86116106c3575b6106b48183612504565b810190612a4a565b90846105fb565b503d6106aa565b92959194909360005b8451811015610769576106e6818661288b565b51906106f2818861288b565b518260005260fb602052604060002054818110610726576107219360005260fb60205203604060002055612859565b6106d3565b60405162461bcd60e51b81526020600482015260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104e1565b959260009794919592975b86518110156107aa578061079a6107a5928b61288b565b5161036a828a61288b565b610783565b5092959691949093966104dc565b5082841660005260986020526040600020336000526020526104ae60ff6040600020541690506104a5565b346101be5760003660031901126101be57602060ff61016154166040519015158152f35b346101be5760403660031901126101be57610820612468565b61082861247e565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be57610876612733565b60ff610161541661089b576101665461034190600435906001600160a01b0316613288565b604051637abbf1c960e01b8152600490fd5b346101be5760403660031901126101be576004356108c961247e565b906108d2612733565b60ff610161541661089b578060005261016360205260ff6002604060002001541615610966576001600160a01b0382161561095457806000526101686020526040600020549160648302928084046064149015171561093e576001600160601b036103419316916131db565b634e487b7160e01b600052601160045260246000fd5b604051637827912560e01b8152600490fd5b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760003660031901126101be57602060405160648152f35b346101be5760203660031901126101be576004356000526101656020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be57610a23903690600401612594565b906024356001600160401b0381116101be57610a43903690600401612594565b6044356001600160401b0381116101be57610a62903690600401612594565b90929091906064356001600160a01b03811690036101be57608435956001600160a01b03871687036101be576000549560ff8760081c161596878098611091575b801561107a575b1561101e5760ff1981166001176000558761100c575b506064356001600160a01b031615610954576001600160401b038211610e14578190610aee61015f54612494565b601f8111610f9e575b50600090601f8311600114610f1557600092610f0a575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610e1457610b3f61016054612494565b601f8111610ea8575b50600090601f8311600114610e3557610bb39493929160009183610e2a575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ba360ff60005460081c16610b9e81612cbd565b612cbd565b610bac3361278b565b369161266e565b91610bc960ff60005460081c16610b9e81612cbd565b82516001600160401b038111610e1457610be4609954612494565b601f8111610daf575b506020601f8211600114610d485781929394600092610d3d575b50508160011b916000199060031b1c1916176099555b610c3b60ff60005460081c16610c3281612cbd565b610b9e81612cbd565b61016680546001600160a01b0319166064356001600160a01b0316179055600a610167556040516103e890602090610c72816124ce565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610ce5575b50610ca760643561278b565b610cad57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101646020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610c9b565b015190508480610c07565b601f198216906099600052806000209160005b818110610d9757509583600195969710610d7e575b505050811b01609955610c1d565b015160001960f88460031b161c19169055848080610d70565b9192602060018192868b015181550194019201610d5b565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610e0a575b601f0160051c01905b818110610dfe5750610bed565b60008155600101610df1565b9091508190610de8565b634e487b7160e01b600052604160045260246000fd5b013590508780610b67565b61016060005260206000209160005b601f1985168110610e905750918391600193610bb3979695601f19811610610e76575b505050811b0161016055610b7e565b0135600019600384901b60f8161c19169055878080610e67565b90926020600181928686013581550194019101610e44565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610f03575b601f830160051c82018110610ef7575050610b48565b60008155600101610ee1565b5080610ee1565b013590508880610b0e565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610f86576001945083601f19811610610f6c575b505050811b0161015f55610b25565b0135600019600384901b60f8161c19169055888080610f5d565b81810135835560209485019460019093019201610f42565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510611005575b90849392915b601f830160051c82018110610ff6575050610af7565b60008155859450600101610fe0565b5080610fda565b61ffff19166101011760005588610ac0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610aaa5750600160ff821614610aaa565b50600160ff821610610aa3565b346101be576110ac36612565565b6001600160a01b039091169033821461111e573360005260986020526040600020826000526020526110ee8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be5760405160009061016080549061119b82612494565b90818452600192838116908160001461122057506001146111df575b6111db846111c781880382612504565b604051918291602083526020830190612525565b0390f35b90935060005260209283600020916000925b82841061120d57505050816111db936111c792820101936111b7565b80548585018701529285019281016111f1565b6111db96506111c79450602092508593915060ff191682840152151560051b820101936111b7565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be5761128a612733565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760003660031901126101be57610954612733565b346101be5760603660031901126101be576112f2612468565b6024906001600160401b039082358281116101be57611315903690600401612650565b9160449081359081116101be57611330903690600401612650565b6001600160a01b039092169233841480156114f8575b61134f9061289f565b831561135b8115612bb9565b61136882518551146129c8565b6000604051611376816124e9565b526114c0575b60005b815181101561141857611392818361288b565b5161139d828661288b565b51908060005260fb6020818152604060002054928484106113d657906113d195949392916000525203604060002055612859565b61137f565b60405162461bcd60e51b8152600481018390526028818d0152600080516020613393833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b825181101561148d5780611435611488928561288b565b51611440828761288b565b519080600052609760209080825260406000208760005282526040600020549261146c85851015612c11565b6000528152604060002090866000525203604060002055612859565b61141e565b50906000805160206133538339815191526114b2600094604051918291339583612a25565b0390a46103416040516124e9565b9260009491945b84518110156114ee57806114de6114e9928661288b565b5161036a828861288b565b6114c7565b509293909361137c565b5083600052609860205260406000203360005260205261134f60ff604060002054169050611346565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be5781600401359061158c826125eb565b9261159a6040519485612504565b82845260209260248486019160051b830101913683116101be57602401905b8282106116ce575050506024359081116101be576115db903690600401612650565b8251815103611677578251926115f0846125eb565b936115fe6040519586612504565b80855261160d601f19916125eb565b01368486013760005b81518110156116605761165b9061164b6001600160a01b03611638838661288b565b5116611644838761288b565b51906127d4565b611655828861288b565b52612859565b611616565b5050506111db6040519282849384528301906126ff565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115b9565b346101be5760203660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760203660031901126101be5761172f612468565b611737612733565b60ff610161541661089b576101675461034191613288565b346101be5760203660031901126101be576001600160a01b03611770612468565b16600052610164602052602060ff604060002054166040519015158152f35b346101be5760603660031901126101be576117a8612468565b6001600160401b03906024358281116101be576117c99036906004016126cf565b926044359081116101be576117e29036906004016126cf565b919060ff610161541661089b5761180161180992610341963691612602565b923691612602565b91612d1d565b346101be5760031960a0368201126101be57611829612468565b9061183261247e565b6044908135926001600160401b03938481116101be57611856903690600401612650565b606480358681116101be5761186f903690600401612650565b9460849687359081116101be5761188a9036906004016126b4565b6001600160a01b039489861633148015611bac575b6118a89061289f565b6118b585518951146129c8565b858716156118c38115612902565b868b1615611b69575b611ab4575b60005b855181101561196957806118eb611964928861288b565b518c6118f7838d61288b565b519180600052609790838c60209484865260406000208282166000528652604060002054916119288484101561295c565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c166000525261038360406000209182546129bb565b6118d4565b50888a9897969497896040518860008051602061335383398151915289808d169416928061199987339583612a25565b0390a4873b6119a457005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a487016119d8916126ff565b908487830301908701526119eb916126ff565b9184830301908401526119fd91612525565b03921691815a602094600091f160009181611a94575b50611a6c5750506001611a24612ab3565b6308c379a014611a35575b61061f57005b611a3d612ad1565b80611a485750611a2f565b60405162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916146103415760405162461bcd60e51b81528061063860048201612a6a565b611aad91925060203d81116106c3576106b48183612504565b9083611a13565b9796949060009993999692965b8551811015611b5957611ad4818761288b565b51611adf828961288b565b519080600052602060fb815260406000205491838310611b1857611b139493929160fb916000525203604060002055612859565b611ac1565b508b9067616c537570706c7960c01b8f6000805160206133938339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b50909496979892989591956118d1565b99969498959392919060005b8a51811015611b9d57808b61036a82611b91611b98958f61288b565b519261288b565b611b75565b509091929395989496996118cc565b50858a1660005260986020526040600020336000526020526118a860ff60406000205416905061189f565b346101be57611be5366125c1565b9160ff610161541661089b57602092611c409160405190611c05826124ce565b6001825285368184013760405192611c1c846124ce565b6001845286368186013785611c3084612868565b52611c3a84612868565b52612d1d565b604051908152f35b346101be5760403660031901126101be5760243560043560005261012e60205260406000209060405191611c7b836124ce565b546001600160a01b0380821680855260a09290921c6020850152929015611cd3575b6001600160601b036020820151169182810292818404149015171561093e57604092612710915116918351928352046020820152f35b50604051611ce0816124ce565b61012d54838116825260a01c6020820152611c9d565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611d2a903690600401612594565b9190611d34612733565b60ff610161541661089b57836000526101639160209280845260ff6002604060002001541615611e6057856000528352600180604060002001918511610e1457611d8885611d828454612494565b84612c69565b6000601f8611600114611de95791858060008051602061337383398151915297969593611dd995600093611dde575b501b906000198760031b1c19161790555b60405193838594855284019161315b565b0390a2005b85013592508a611db7565b601f1986169083600052856000209160005b818110611e4b575091879695939160008051602061337383398151915298611dd9969410611e31575b505085811b019055611dc8565b840135600019600389901b60f8161c191690558880611e24565b86830135845592840192918701918701611dfb565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576001600160401b036004358181116101be57611eaa903690600401612594565b602435916001600160a01b03604435818116938482036101be57611ecc612733565b60ff610161541661089b5785156120dd5784156109545761016295611ef18754612859565b809755604051606081018181108a821117610e1457604052818152611f1736848861266e565b986020998a83019081526040830191600183528a6000526101638c526040600020935184556001840191518051918211610e1457611f5f82611f598554612494565b85612c69565b8c908d601f841160011461206c5750918060029492611fad979694600092612061575b50508160011b916000199060031b1c19161790555b51151591019060ff801983541691151516179055565b61016754928760005261016889528360406000205560648402938085046064149015171561093e578794612010612056926001600160601b037fc07473765c308da8ff95c4974c60af7332d93777f002550fa063b77064a6f7b2971690886131db565b856000805160206133738339815191526120368c6040519181839283528201898d61315b565b0390a26033541695604051938493845260408b850152604084019161315b565b0390a4604051908152f35b015190508f80611f82565b9190601f1984168560005283600020936000905b8282106120c5575050926001928592611fad99989660029896106120ac575b505050811b019055611f97565b015160001960f88460031b161c191690558f808061209f565b80600186978294978701518155019601940190612080565b604051631dd0e19360e01b8152600490fd5b346101be576020806003193601126101be5760043560005261016381526001806040600020019082604051809360009080549061212b82612494565b80855291868116908115612250575060011461220f575b505061215092500383612504565b81511561216e5750905b6111db604051928284938452830190612525565b905060405190600090836099549161218583612494565b928386528582821691826000146121ef5750506001146121b5575b505050816121af910382612504565b9061215a565b91909250609960005282600020916000925b8284106121dc575050508201018183856121a0565b80548685018601529284019281016121c7565b60ff19168482015293151560051b840190920193508591508690506121a0565b9091506000528260002090846000925b828410612239575050509161215092820101859287612142565b80548885018701528794509285019286910161221f565b91505061215094925060ff191682840152151560051b820101859287612142565b346101be5761227f36612565565b90612288612733565b60ff610161541661089b576001600160a01b03169081156109545760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261016482526122ea8160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be5760405160009061015f80549061231b82612494565b9081845260019283811690816000146112205750600114612346576111db846111c781880382612504565b90935060005260209283600020916000925b82841061237457505050816111db936111c792820101936111b7565b8054858501870152928501928101612358565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be57602090635a08b45360e11b8114908115612430575b81156123d3575b506040519015158152f35b63152a902d60e11b8114915081156123ed575b50826123c8565b636cdb3d1360e11b81149150811561241f575b811561240e575b50826123e6565b6301ffc9a760e01b14905082612407565b6303a24d0760e21b81149150612400565b631030681960e21b811491506123c1565b346101be5760403660031901126101be576020611c4061245f612468565b602435906127d4565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c921680156124c4575b60208310146124ae57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124a3565b604081019081106001600160401b03821117610e1457604052565b602081019081106001600160401b03821117610e1457604052565b90601f801991011681019081106001600160401b03821117610e1457604052565b919082519283825260005b848110612551575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612530565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610e145760051b60200190565b929161260d826125eb565b9161261b6040519384612504565b829481845260208094019160051b81019283116101be57905b8282106126415750505050565b81358152908301908301612634565b9080601f830112156101be5781602061266b93359101612602565b90565b9291926001600160401b038211610e145760405191612697601f8201601f191660200184612504565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be5781602061266b9335910161266e565b9181601f840112156101be578235916001600160401b0383116101be576020808501948460051b0101116101be57565b90815180825260208080930193019160005b82811061271f575050505090565b835185529381019392810192600101612711565b6033546001600160a01b0316330361274757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561280157600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b600019811461093e5760010190565b8051156128755760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156128755760209160051b010190565b156128a657565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561290957565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561296357565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9190820180921161093e57565b156129cf57565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612a3c61266b936040845260408401906126ff565b9160208184039101526126ff565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612ac057565b905060046000803e60005160e01c90565b600060443d1061266b57604051600319913d83016004833e81516001600160401b03918282113d602484011117612b2e57818401948551938411612b36573d85010160208487010111612b2e575061266b92910160200190612504565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612ba1826124ce565b6001825260203681840137612bb582612868565b5290565b15612bc057565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612c1857565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c7757505050565b600091825260208220906020601f850160051c83019410612cb3575b601f0160051c01915b828110612ca857505050565b818155600101612c9c565b9092508290612c93565b15612cc457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b038083169291908315610954576033541633141580613141575b61312957835115613117578351815103613105578351926064938481116130e7575060015b8551811015612dd557612d78818761288b565b516000198201828111612dc057612d8f908861288b565b511015612d9e57600101612d65565b612daa6024918761288b565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612ebf57612df3868461288b565b519586600052610163602081815260409060ff60028360002001541615612ea757612e1e848961288b565b5115612e96578960005261016590818152612e488360002054612e41878c61288b565b51906129bb565b938b60005281528260002054808511612e74575060009a8b525290972096909655600190950194612de0565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612ed5876124e9565b60008752612ee686518551146129c8565b60005b8651811015612f285780612f00612f23928761288b565b51612f0b828a61288b565b5160005260fb602052610383886000209182546129bb565b612ee9565b5090919560005b8651811015612f795780612f46612f74928761288b565b51612f51828a61288b565b5160005260206097815288600020908c60005252610383886000209182546129bb565b612f2f565b5091969093958160008851600080516020613353833981519152339180612fa18a8d83612a25565b0390a43b612fb2575b505050505050565b6130056000602094613014895197889687958694612ff263bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a48801906126ff565b90600319948588840301908801526126ff565b91848303016084850152612525565b03925af1600091816130c7575b5061309b5750506001613032612ab3565b6308c379a014613065575b61304e57505b388080808080612faa565b5162461bcd60e51b81528061063860048201612b3f565b61306d612ad1565b80613078575061303d565b825162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916036130b05750613043565b5162461bcd60e51b81528061063860048201612a6a565b6130e091925060203d81116106c3576106b48183612504565b9038613021565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016460205260ff6040600020541615612d40565b908060209392818452848401376000828201840152601f01601f1916010190565b1561318357565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b916001600160601b0316906131f461271083111561317c565b6001600160a01b039081169283156132435760405193613213856124ce565b84526020808501938452600091825261012e9052604090209251915160a01b6001600160a01b0319169116179055565b60405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b6001600160a01b039081169190821561095457606482116133325760018060a01b0319926101668185825416179055826101675560648302928084046064149015171561093e57613320906001600160601b0384166132eb61271082111561317c565b60206040516132f9816124ce565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a2646970667358221220b7720fa90ac9df32d7bfb6ee34e640368972d81f7eb46827b58be3edc6478e5764736f6c63430008120033","sourceMap":"1123:14094:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;10028:12;1123:14094;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;;;;929:10:28;764:23:23;;:66;;;;1123:14094:37;743:159:23;;;:::i;:::-;11246:18:20;;;11238:66;11246:18;;11238:66;:::i;:::-;11379:21;;;:::i;:::-;11437:25;;;;:::i;:::-;1123:14094:37;;;;;;;:::i;:::-;;1658:156:24;;1123:14094:37;;1896:3:24;1123:14094:37;;1880:14:24;;;;;1932:6;;;;:::i;:::-;1123:14094:37;1973:10:24;;;;:::i;:::-;1123:14094:37;;;;;2018:12:24;1123:14094:37;;;;;;;;2060:16:24;;;;1123:14094:37;;;1896:3:24;1123:14094:37;;;;;;;;;;;;;1896:3:24;:::i;:::-;1865:13;;1123:14094:37;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:37;;;;-1:-1:-1;;;1123:14094:37;;;;;;;1880:14:24;1123:14094:37;1880:14:24;;;1123:14094:37;;;11572:9:20;1123:14094:37;;;;;;;;;;;;;;;11601:70:20;11609:21;;;;11601:70;:::i;:::-;1123:14094:37;;;11572:9:20;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;11773:54:20;1123:14094:37;929:10:28;11773:54:20;;1123:14094:37;;;;:::i;:::-;;1658:156:24;1701:13;;1123:14094:37;1732:3:24;1123:14094:37;;1716:14:24;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:37;1768:6:24;;;;:::i;:::-;1123:14094:37;;;1755:12:24;1123:14094:37;;1755:34:24;1123:14094:37;;;;;;1755:34:24;:::i;:::-;1123:14094:37;;1732:3:24;:::i;:::-;1701:13;;1716:14;;;;1658:156;;764:66:23;1123:14094:37;;;;3873:18:20;1123:14094:37;;;;;929:10:28;1123:14094:37;;;;743:159:23;1123:14094:37;;;;;;764:66:23;;;;1123:14094:37;;;;;;-1:-1:-1;;1123:14094:37;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;2402:22:17;1123:14094:37;;2496:8:17;;;:::i;1123:14094:37:-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;;;;929:10:28;4184:20:20;:60;;;;1123:14094:37;4163:153:20;;;:::i;:::-;1123:14094:37;;;5507:16:20;5499:66;5507:16;;5499:66;:::i;:::-;5640:21;1123:14094:37;;5640:21:20;:::i;:::-;5698:25;1123:14094:37;;5698:25:20;:::i;:::-;1123:14094:37;;;;1662:18:24;1658:156;;1123:14094:37;1824:424:24;;1123:14094:37;;;;;;;;;5827:9:20;1123:14094:37;;;;;;;;;;;;;;;;5856:76:20;1123:14094:37;;5864:21:20;;;5856:76;:::i;:::-;1123:14094:37;;;;5827:9:20;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;5827:9:20;1123:14094:37;;;;;;;;;;;;;;;6028:27:20;1123:14094:37;;;;6028:27:20;:::i;:::-;1123:14094:37;;;;;;;;;;;;;;;;;;;;;929:10:28;6071:46:20;1123:14094:37;929:10:28;6071:46:20;;1713:19:27;;15996:538:20;;1123:14094:37;15996:538:20;1123:14094:37;;;;;;;;;;;;;;;;;;;16035:83:20;;;;929:10:28;1123:14094:37;16035:83:20;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16035:83:20;1123:14094:37;;16035:83:20;;1123:14094:37;;16035:83:20;;;15996:538;-1:-1:-1;16031:493:20;;;;1123:14094:37;16031:493:20;;;:::i;:::-;;;;;;;;;1123:14094:37;16031:493:20;1123:14094:37;;-1:-1:-1;;;16447:62:20;;1123:14094:37;16447:62:20;1123:14094:37;16447:62:20;;;:::i;:::-;;;;16031:493;16341:81;;:::i;:::-;;;;;16031:493;;;16341:81;1123:14094:37;;;;;;;;;16393:14:20;;1123:14094:37;16393:14:20;;1123:14094:37;;;;;;:::i;16031:493:20:-;-1:-1:-1;;;;;;1123:14094:37;16163:163:20;;-1:-1:-1;16031:493:20;16163:163;1123:14094:37;;-1:-1:-1;;;16257:50:20;;1123:14094:37;16257:50:20;1123:14094:37;16257:50:20;;;:::i;16035:83::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1824:424:24;1865:13;;;;;;1123:14094:37;1896:3:24;1123:14094:37;;1880:14:24;;;;;1932:6;;;;:::i;:::-;1123:14094:37;1973:10:24;;;;;:::i;:::-;1123:14094:37;;;;2018:12:24;1123:14094:37;;;;;;2060:16:24;;;1123:14094:37;;1896:3:24;1123:14094:37;;;2018:12:24;1123:14094:37;;;;;;;1896:3:24;:::i;:::-;1865:13;;1123:14094:37;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:37;;;;-1:-1:-1;;;1123:14094:37;;;;;;;1880:14:24;;;;;;;;;1824:424;;;;1658:156;1701:13;;1123:14094:37;1701:13:24;;;;;;1732:3;1123:14094:37;;1716:14:24;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:37;1768:6:24;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;1658:156;;4184:60:20;1123:14094:37;;;;;;3873:18:20;1123:14094:37;;;;;929:10:28;1123:14094:37;;;;4163:153:20;1123:14094:37;;;;;;4184:60:20;;;;1123:14094:37;;;;;;-1:-1:-1;;1123:14094:37;;;;;;1372:29;1123:14094;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;3873:18:20;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;1303:62:17;;:::i;:::-;1123:14094:37;2881:8;1123:14094;;2877:41;;8351:22;1123:14094;8375:11;;1123:14094;;;-1:-1:-1;;;;;1123:14094:37;8375:11;:::i;2877:41::-;1123:14094;;-1:-1:-1;;;2898:20:37;;1123:14094;;2898:20;1123:14094;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;:::i;:::-;1303:62:17;;;:::i;:::-;1123:14094:37;2881:8;1123:14094;;2877:41;;1123:14094;;;3171:12;1123:14094;;;3171:29;1123:14094;;;3171:29;1123:14094;;3170:30;3166:70;;-1:-1:-1;;;;;1123:14094:37;;13268:23;13264:60;;1123:14094;;;13380:23;1123:14094;;;;;;;1558:3;1123:14094;;;;;;1558:3;1123:14094;;;;;;;-1:-1:-1;;;;;13373:68:37;1123:14094;;13373:68;;:::i;1123:14094::-;;;;;;;;;;;;13264:60;1123:14094;;-1:-1:-1;;;13300:24:37;;1123:14094;;13300:24;3166:70;1123:14094;;;;3209:27;;;;;;1123:14094;3209:27;;1123:14094;3209:27;1123:14094;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;1558:3;1123:14094;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;10202:16;1123:14094;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;1033:12:24;1123:14094:37;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;3301:14:19;3347:34;;;;;;1123:14094:37;3346:108:19;;;;1123:14094:37;;;;-1:-1:-1;;1123:14094:37;;;;;;;3562:65:19;;1123:14094:37;-1:-1:-1;1123:14094:37;;-1:-1:-1;;;;;1123:14094:37;3708:22;3704:59;;-1:-1:-1;;;;;1123:14094:37;;;;;;;3864:12;1123:14094;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3864:12;1123:14094;;-1:-1:-1;;;;;1123:14094:37;;;;;3886:16;1123:14094;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3886:16;1123:14094;;3912:16;1123:14094;;;;;;;5366:69:19;1123:14094:37;;;;;;5366:69:19;;;:::i;:::-;;:::i;:::-;1195:12:17;929:10:28;1195:12:17;:::i;:::-;1123:14094:37;;;:::i;:::-;;5366:69:19;1123:14094:37;;;;;;5366:69:19;;;:::i;:::-;1123:14094:37;;-1:-1:-1;;;;;1123:14094:37;;;;;8623:13:20;1123:14094:37;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:20;1123:14094:37;;5366:69:19;1123:14094:37;;;;;;5366:69:19;;;:::i;:::-;;;;:::i;:::-;12807:34:37;1123:14094;;-1:-1:-1;;;;;;1123:14094:37;;;-1:-1:-1;;;;;1123:14094:37;;;;1694:2;12851:38;1123:14094;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;;;;;;3314:35:26;;;;1123:14094:37;;;;-1:-1:-1;;;1123:14094:37;3292:57:26;1123:14094:37;;;4330:252;;1123:14094;;4710:8;1123:14094;;4710:8;:::i;:::-;3647:99:19;;1123:14094:37;3647:99:19;1123:14094:37;;;;;;;3721:14:19;1123:14094:37;;;;;;3721:14:19;1123:14094:37;4330:252;-1:-1:-1;;;;;1123:14094:37;;;;;4471:15;1123:14094;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;;;;4528:43;;;4330:252;;;1123:14094;;;;-1:-1:-1;1123:14094:37;;;;;;;;;;8623:13:20;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:20;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:20;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;3886:16;1123:14094;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3886:16;1123:14094;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3886:16;1123:14094;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;;-1:-1:-1;1123:14094:37;;;;;3864:12;1123:14094;;;;;-1:-1:-1;1123:14094:37;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;3864:12;1123:14094;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3864:12;1123:14094;;;;-1:-1:-1;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;-1:-1:-1;1123:14094:37;;;3562:65:19;-1:-1:-1;;1123:14094:37;;;;;3562:65:19;;;1123:14094:37;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;3346:108:19;3426:4;;1713:19:27;:23;3387:66:19;;3346:108;3387:66;1123:14094:37;;;;;3436:17:19;3346:108;;3347:34;1123:14094:37;;;;;3365:16:19;3347:34;;1123:14094:37;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;;;929:10:28;13309:17:20;;1123:14094:37;;929:10:28;1123:14094:37;;13382:18:20;1123:14094:37;;;;;;;;;;13382:46:20;1123:14094:37;;;;;;;;;;;;;;;;;;;13382:46:20;1123:14094:37;;;;;;;13443:41:20;1123:14094:37;929:10:28;13443:41:20;;1123:14094:37;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;1337:29;;1123:14094;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;1513:6:17;1123:14094:37;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;1303:62:17;;:::i;:::-;9274:15:37;1123:14094;;-1:-1:-1;;1123:14094:37;9285:4;1123:14094;;;9321:10;9304:28;-1:-1:-1;;9304:28:37;1123:14094;;;;;;;-1:-1:-1;;1123:14094:37;;;;1303:62:17;;:::i;1123:14094:37:-;;;;;;-1:-1:-1;;1123:14094:37;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;;;929:10:28;1080:23:23;;:66;;;;1123:14094:37;1059:159:23;;;:::i;:::-;12266:18:20;;12258:66;12266:18;;12258:66;:::i;:::-;12334:81;1123:14094:37;;;;12342:28:20;12334:81;:::i;:::-;1123:14094:37;;;;;;:::i;:::-;;1658:156:24;;1123:14094:37;;1896:3:24;1123:14094:37;;1880:14:24;;;;;1932:6;;;;:::i;:::-;1123:14094:37;1973:10:24;;;;:::i;:::-;1123:14094:37;;;;;2018:12:24;1123:14094:37;;;;;;;;2060:16:24;;;;1123:14094:37;;;1896:3:24;1123:14094:37;;;;;;;;;;;;;1896:3:24;:::i;:::-;1865:13;;1123:14094:37;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:37;;;;-1:-1:-1;;;1123:14094:37;;;;;;;1880:14:24;;;;1123:14094:37;12581:3:20;1123:14094:37;;12565:14:20;;;;;12613:6;;12581:3;12613:6;;;:::i;:::-;1123:14094:37;12650:10:20;;;;:::i;:::-;1123:14094:37;;;;;12697:9:20;1123:14094:37;;;;;;;;;;;;;;;;;12738:21:20;12730:70;12738:21;;;;12730:70;:::i;:::-;1123:14094:37;;;;;;;;;;;;;;;;;12581:3:20;:::i;:::-;12550:13;;12565:14;;;-1:-1:-1;;;;;;;;;;;12924:55:20;1123:14094:37;12565:14:20;1123:14094:37;;929:10:28;;;;12924:55:20;;;:::i;:::-;;;;1123:14094:37;;;;:::i;1658:156:24:-;1701:13;1123:14094:37;1701:13:24;;;1732:3;1123:14094:37;;1716:14:24;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:37;1768:6:24;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;1658:156;;1080:66:23;1123:14094:37;;;;3873:18:20;1123:14094:37;;;;;929:10:28;1123:14094:37;;;;1059:159:23;1123:14094:37;;;;;;1080:66:23;;;;1123:14094:37;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;1033:12:24;1123:14094:37;;;;;;;1229:44:24;;1123:14094:37;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;3146:29:20;1123:14094:37;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3347:3:20;1123:14094:37;;3326:19:20;;;;;3347:3;;3385:30;-1:-1:-1;;;;;3395:11:20;1123:14094:37;3395:11:20;;:::i;:::-;1123:14094:37;;3408:6:20;;;;:::i;:::-;1123:14094:37;3385:30:20;;:::i;:::-;3366:49;;;;:::i;:::-;1123:14094:37;3347:3:20;:::i;:::-;3311:13;;3326:19;;;;1123:14094:37;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;1513:6:17;1123:14094:37;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;1123:14094:37;2881:8;1123:14094;;2877:41;;8154:24;1123:14094;8154:24;;;:::i;1123:14094::-;;;;;;-1:-1:-1;;1123:14094:37;;;;-1:-1:-1;;;;;1123:14094:37;;:::i;:::-;;;;9863:15;1123:14094;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;2881:8;1123:14094;;2877:41;;1123:14094;;;5618:44;1123:14094;;;;:::i;:::-;;;;;:::i;:::-;5618:44;;:::i;1123:14094::-;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;;;929:10:28;4675:20:20;:60;;;;1123:14094:37;4654:153:20;;;:::i;:::-;6817:81;1123:14094:37;;;;6825:28:20;6817:81;:::i;:::-;1123:14094:37;;;6916:16:20;6908:66;6916:16;;6908:66;:::i;:::-;1123:14094:37;;;1662:18:24;1658:156;;1123:14094:37;1824:424:24;;1123:14094:37;;7134:3:20;1123:14094:37;;7118:14:20;;;;;7166:6;;7134:3;7166:6;;;:::i;:::-;1123:14094:37;7203:10:20;;;;;:::i;:::-;1123:14094:37;;;;;7250:9:20;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;7291:21:20;7283:76;7291:21;;;;7283:76;:::i;:::-;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7471:27:20;1123:14094:37;;;;;;7471:27:20;:::i;7134:3::-;7103:13;;7118:14;;;;;;;;;1123:14094:37;;;;-1:-1:-1;;;;;;;;;;;1123:14094:37;;;;;;929:10:28;;7524:47:20;929:10:28;;7524:47:20;;;:::i;:::-;;;;1713:19:27;;16774:580:20;;1123:14094:37;16774:580:20;1123:14094:37;;;;;;;;;;;16813:90:20;;;;929:10:28;1123:14094:37;16813:90:20;;1123:14094:37;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;16813:90:20;1123:14094:37;;16813:90:20;;;1123:14094:37;16813:90:20;1123:14094:37;16813:90:20;;1123:14094:37;;16813:90:20;;;16774:580;-1:-1:-1;16809:535:20;;;;1123:14094:37;16809:535:20;;:::i;:::-;;;;;;;;1123:14094:37;16809:535:20;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;1123:14094:37;;-1:-1:-1;;;17213:14:20;;1123:14094:37;;17213:14:20;;1123:14094:37;;;;;;;;;;;:::i;16809:535:20:-;-1:-1:-1;;;;;;1123:14094:37;16978:168:20;16809:535;16978:168;1123:14094:37;;-1:-1:-1;;;17077:50:20;;1123:14094:37;17077:50:20;1123:14094:37;17077:50:20;;;:::i;16813:90::-;;;;;1123:14094:37;16813:90:20;;;;;;;;;:::i;:::-;;;;;1824:424:24;1865:13;;;;1123:14094:37;1865:13:24;;;;;;1896:3;1123:14094:37;;1880:14:24;;;;;1932:6;;;;:::i;:::-;1123:14094:37;1973:10:24;;;;:::i;:::-;1123:14094:37;;;;;;2018:12:24;1123:14094:37;;;;;;2060:16:24;;;;1123:14094:37;;1896:3:24;1123:14094:37;;;;2018:12:24;1123:14094:37;;;;;;;;;1896:3:24;:::i;:::-;1865:13;;1123:14094:37;;;;-1:-1:-1;;;1123:14094:37;-1:-1:-1;;;;;;;;;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;1880:14:24;;;;;;;;;;;;1824:424;;1658:156;1701:13;;;;;;;;;1123:14094:37;1732:3:24;1123:14094:37;;1716:14:24;;;;;1779:10;;1768:6;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:37;1768:6:24;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;;1658:156;;4675:60:20;1123:14094:37;;;;;;3873:18:20;1123:14094:37;;;;;929:10:28;1123:14094:37;;;;4654:153:20;1123:14094:37;;;;;;4675:60:20;;;;1123:14094:37;;;;;;;:::i;:::-;;;2881:8;1123:14094;;2877:41;;1123:14094;;5387:7;1123:14094;;;;;;;:::i;:::-;5225:1;1123:14094;;;;;;;;;;;;;;:::i;:::-;5225:1;1123:14094;;;;;;;;5290:22;;;;:::i;:::-;1123:14094;5322:20;;;:::i;:::-;1123:14094;5387:7;:::i;:::-;1123:14094;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;2122:17:26;1123:14094:37;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;;;2163:30:26;2159:90;;1123:14094:37;-1:-1:-1;;;;;1123:14094:37;2296:23:26;;1123:14094:37;;;;;;;;;;;;;;;;;;;2756:5:26;1123:14094:37;;;;;;;;;;;;;;;2159:90:26;1123:14094:37;;;;;;:::i;:::-;2219:19:26;1123:14094:37;;;;;;;;;;;;2159:90:26;;1123:14094:37;;;;;;-1:-1:-1;;1123:14094:37;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;:::i;:::-;1303:62:17;;;;:::i;:::-;1123:14094:37;2881:8;1123:14094;;2877:41;;1123:14094;;;3171:12;1123:14094;;;;;;;3171:29;1123:14094;;;3171:29;1123:14094;;3170:30;3166:70;;1123:14094;;;;;;;;;;8933:31;1123:14094;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9060:24;;;1123:14094;;;;;;-1:-1:-1;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:70;1123:14094;;-1:-1:-1;;;3209:27:37;;1123:14094;3209:27;;1123:14094;;;;;3209:27;1123:14094;;;;;;-1:-1:-1;;1123:14094:37;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;1303:62:17;;:::i;:::-;1123:14094:37;2881:8;1123:14094;;2877:41;;11446:15;;11442:51;;11507:30;;11503:67;;11660:16;1123:14094;11660:16;1123:14094;;11660:16;:::i;:::-;1123:14094;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;11832:40;;;;1123:14094;;;;11832:40;;1123:14094;;;;;;;11808:12;1123:14094;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11917:24;1123:14094;;;;;11882:23;1123:14094;;;;;;;1558:3;1123:14094;;;;;;1558:3;1123:14094;;;;;;;;;11995:59;1946:3;1123:14094;-1:-1:-1;;;;;12197:71:37;1123:14094;;11995:59;;;:::i;:::-;1123:14094;-1:-1:-1;;;;;;;;;;;1123:14094:37;;;;;;;;;;;;;;;:::i;:::-;12159:23;;;1513:6:17;1123:14094:37;;;;;;;;;;;1946:3;;;;1123:14094;1946:3;;;;:::i;:::-;12197:71;;;1123:14094;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11442:51;1123:14094;;-1:-1:-1;;;11470:23:37;;1123:14094;;11470:23;1123:14094;;;;;;;;;;;;;;;;;10419:12;1123:14094;;;;;;;10419:31;1123:14094;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;10467:26;:59;;;;;1123:14094;;;;;;;;;;;;;:::i;10467:59::-;1123:14094;;;;;;;;2440:4:20;1123:14094:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10467:59;;;1123:14094;;;;;2440:4:20;1123:14094:37;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;-1:-1:-1;1123:14094:37;;-1:-1:-1;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1303:62:17;;;:::i;:::-;1123:14094:37;2881:8;1123:14094;;2877:41;;-1:-1:-1;;;;;1123:14094:37;;7727:21;;7723:58;;1123:14094;7934:41;1123:14094;;;;7883:15;1123:14094;;7883:36;1123:14094;;;;;;;;;;;;;;;;;;;7883:36;1123:14094;;;;;;;7934:41;1123:14094;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;1304:27;;1123:14094;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10775:46:37;;;:97;;;;1123:14094;10775:150;;;;1123:14094;;;;;;;;;;10775:150;-1:-1:-1;;;1810:52:26;;;-1:-1:-1;1810:92:26;;;;10775:150:37;;;;;1810:92:26;-1:-1:-1;;;1759:52:20;;;-1:-1:-1;1759:131:20;;;;1810:92:26;1759:183:20;;;;1810:92:26;;;;;1759:183:20;-1:-1:-1;;;1168:51:29;;-1:-1:-1;1759:183:20;;;:131;-1:-1:-1;;;1827:63:20;;;-1:-1:-1;1759:131:20;;10775:97:37;-1:-1:-1;;;10825:47:37;;;-1:-1:-1;10775:97:37;;1123:14094;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;1599:130:17;1513:6;1123:14094:37;-1:-1:-1;;;;;1123:14094:37;929:10:28;1662:23:17;1123:14094:37;;1599:130:17:o;1123:14094:37:-;;;;;;;;;;;;;;;;;;;;;;;;;2666:187:17;2758:6;1123:14094:37;;-1:-1:-1;;;;;1123:14094:37;;;-1:-1:-1;;;;;;1123:14094:37;;;;;;;;;;2806:40:17;-1:-1:-1;;2806:40:17;2666:187::o;2593:227:20:-;-1:-1:-1;;;;;1123:14094:37;;2706:21:20;;1123:14094:37;;2725:1:20;1123:14094:37;2791:9:20;1123:14094:37;;;2725:1:20;1123:14094:37;;2725:1:20;1123:14094:37;;;;2725:1:20;1123:14094:37;;2593:227:20;:::o;1123:14094:37:-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;;1123:14094:37;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;1123:14094:37;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;:::o;17366:193:20:-;1123:14094:37;;;;;;:::i;:::-;17499:1:20;1123:14094:37;;;;;;;;17511:18:20;;;:::i;:::-;1123:14094:37;17366:193:20;:::o;1123:14094:37:-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;1123:14094:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;5941:1549;;;-1:-1:-1;;;;;1123:14094:37;;;;5941:1549;;6289:23;;6285:60;;1513:6:17;1123:14094:37;;6359:10;:21;;:53;;;5941:1549;6355:94;;1123:14094;;13755:21;13751:46;;1123:14094;;;;13811:35;13807:69;;1123:14094;;1558:3;;13890:33;;;;13886:97;;13999:13;1123:14094;13999:13;1123:14094;;14014:20;;;;;14055:12;;;;:::i;:::-;1123:14094;-1:-1:-1;;1123:14094:37;;;;;;;14071:16;;;;:::i;:::-;1123:14094;-1:-1:-1;14055:32:37;14051:87;;1123:14094;;13999:13;;14051:87;14125:12;1123:14094;14125:12;;;:::i;:::-;1123:14094;;;14096:42;;;;;;;;;1123:14094;14096:42;1123:14094;;;;;;;;;;;;14014:20;;;;;;;;1123:14094;6509:817;6514:13;1123:14094;;6529:20;;;;;6584:12;;;;:::i;:::-;1123:14094;;;;;6615:12;1123:14094;;;;;;;6615:28;1123:14094;;;6615:28;1123:14094;;6614:29;6610:68;;6696:11;;;;:::i;:::-;1123:14094;6696:16;6692:49;;1123:14094;;;6870:16;1123:14094;;;;6870:39;1123:14094;;;;6898:11;;;;:::i;:::-;1123:14094;6870:39;;:::i;:::-;1123:14094;;;;;;;;;;6992:32;;;6988:104;;-1:-1:-1;1123:14094:37;;;;;;;;;;;;;;;;;6514:13;;6988:104;1123:14094;;;;;;7033:59;;;;;;;;;1123:14094;;;;;;;;;7033:59;6692:49;1123:14094;;-1:-1:-1;;;6721:20:37;;;;;6610:68;1123:14094;;-1:-1:-1;;;6652:26:37;;;;;1123:14094;;;;;6652:26;6529:20;;;;;;;;1123:14094;;;;;;;;:::i;:::-;;;;10313:81:20;1123:14094:37;;;;10321:28:20;10313:81;:::i;:::-;1123:14094:37;1732:3:24;1123:14094:37;;1716:14:24;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:37;1768:6:24;;;;:::i;:::-;1123:14094:37;;;1755:12:24;1123:14094:37;;1755:34:24;1123:14094:37;;;;;;1755:34:24;:::i;1732:3::-;1701:13;;1716:14;;;;;1123:14094:37;10560:3:20;1123:14094:37;;10544:14:20;;;;;10604:10;;10560:3;10604:10;;;:::i;:::-;1123:14094:37;10589:6:20;;;;:::i;:::-;1123:14094:37;;;;10579:9:20;1123:14094:37;;;;;;;;;;10579:35:20;1123:14094:37;;;;;;10579:35:20;:::i;10560:3::-;10529:13;;10544:14;;;;;;;1123:14094:37;;;;-1:-1:-1;;;;;;;;;;;6359:10:37;10640:53:20;;;;;;;:::i;:::-;;;;1713:19:27;16774:580:20;;10524:101;5941:1549:37;;;;;;:::o;16774:580:20:-;1123:14094:37;;;;;;;;;;;;;;;;;;16813:90:20;;;;6359:10:37;16813:90:20;;;1123:14094:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;16813:90:20;;;;1123:14094:37;;16813:90:20;;;16774:580;-1:-1:-1;16809:535:20;;;;1123:14094:37;16809:535:20;;:::i;:::-;;;;;;;;;;16774:580;;;;;;;;16809:535;1123:14094:37;-1:-1:-1;;;17267:62:20;;1123:14094:37;17267:62:20;16813:90;17267:62;;;:::i;16809:535::-;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;1123:14094:37;;-1:-1:-1;;;17213:14:20;;1123:14094:37;16813:90:20;17213:14;;1123:14094:37;;;;;;;;;;;:::i;16809:535:20:-;-1:-1:-1;;;;;;1123:14094:37;16982:71:20;16978:168;;16809:535;;;16978:168;1123:14094:37;-1:-1:-1;;;17077:50:20;;1123:14094:37;17077:50:20;16813:90;17077:50;;;:::i;16813:90::-;;;;;1123:14094:37;16813:90:20;;;;;;;;;:::i;:::-;;;;;13886:97:37;1123:14094;;;;;13932:51;;;;;;;;;1123:14094;;;;;13932:51;13807:69;1123:14094;;-1:-1:-1;;;13855:21:37;;;;;13751:46;1123:14094;;-1:-1:-1;;;13785:12:37;;;;;6355:94;1123:14094;;-1:-1:-1;;;6421:28:37;;6359:10;6421:28;;;1123:14094;;;6421:28;6359:53;:10;;6310:1;1123:14094;6385:15;1123:14094;;;;6310:1;1123:14094;;;6384:28;6359:53;;1123:14094;;;;;;;;;;;;;-1:-1:-1;1123:14094:37;;;;;;;;-1:-1:-1;;1123:14094:37;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:37;;;;;;;3790:351:26;;-1:-1:-1;;;;;1123:14094:37;3907:33:26;3899:88;2756:5;3907:33;;;3899:88;:::i;:::-;-1:-1:-1;;;;;1123:14094:37;;;;4005:22:26;;1123:14094:37;;;;;;;;:::i;:::-;;;4099:35:26;;;;1123:14094:37;;;-1:-1:-1;1123:14094:37;;;4070:17:26;1123:14094:37;;;;;;;;;;;-1:-1:-1;;;;;;1123:14094:37;;;;;;3790:351:26:o;1123:14094:37:-;;;-1:-1:-1;;;1123:14094:37;;;;;;;;;;;;;;;;;;;;12499:484;-1:-1:-1;;;;;1123:14094:37;;;;12499:484;12596:23;;12592:60;;1558:3;12666:36;;12662:135;;1123:14094;;;;;;12807:34;;1123:14094;;;;;;;;;12851:38;1123:14094;1558:3;1123:14094;;;;;;1558:3;1123:14094;;;;;;;;;-1:-1:-1;;;;;1123:14094:37;;3123:88:26;2756:5;3131:33;;;3123:88;:::i;:::-;3314:35;1123:14094:37;;;;;:::i;:::-;;;;3314:35:26;1123:14094:37;3292:57:26;1123:14094:37;;-1:-1:-1;;;;;;1123:14094:37;-1:-1:-1;;;;;1123:14094:37;;;;;;;;;;;3292:57:26;1123:14094:37;;;;;;;;;;;;12499:484::o;12662:135::-;1123:14094;;-1:-1:-1;;;12725:61:37;;;;;1123:14094;;;1558:3;1123:14094;;;;;;12725:61","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","burn(address,uint256,uint256)":"f5298aca","burnBatch(address,uint256[],uint256[])":"6b20c454","createToken(string,uint256,address)":"1542bb95","disableContract()":"894ba833","disabled()":"ee070805","exists(uint256)":"4f558e79","init(string,string,string,address,address)":"a7eae21c","isApprovedForAll(address,address)":"e985e9c5","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintBatchTo(address,uint256[],uint256[])":"3512639c","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","royaltyInfo(uint256,uint256)":"2a55205a","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","setDefaultRoyaltyPercentage(uint256)":"e27a41bf","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","setRoyaltyReceiverForToken(uint256,address)":"e2200a0b","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","totalSupply(uint256)":"bd85b039","transferOwnership(address)":"f2fde38b","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RoyaltyPercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"royaltyReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"burnBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_royaltyReceiver\",\"type\":\"address\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBatchTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_percentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRoyaltyPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setRoyaltyReceiverForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Clone-safe upgradeable-style implementation used behind minimal proxies. Token ids start at 1.\",\"errors\":{\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported percentage.\",\"supplied\":\"Percentage supplied by the caller.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"params\":{\"tokenId\":\"Token id that is not greater than the previous token id.\"}}]},\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,address,uint256,string)\":{\"params\":{\"creator\":\"Collection owner reported as creator when the token id is created.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"royaltyReceiver\":\"ERC2981 royalty receiver configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createToken(string,uint256,address)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_royaltyReceiver\":\"ERC2981 royalty receiver for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"exists(uint256)\":{\"details\":\"Indicates whether any token exist with a given id, or not.\"},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and ERC2981 royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintBatchTo(address,uint256[],uint256[])\":{\"details\":\"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.\",\"params\":{\"_amounts\":\"Quantities to mint for each token id.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenIds\":\"Existing token ids to mint.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"Minted token id.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"details\":\"Tokens created before this update keep their token-specific royalty percentage.\",\"params\":{\"_percentage\":\"New royalty percentage, expressed as whole percentage points.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"details\":\"Token-specific royalty receivers take precedence over this value.\",\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"details\":\"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.\",\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"setRoyaltyReceiverForToken(uint256,address)\":{\"details\":\"The token's existing royalty percentage is preserved.\",\"params\":{\"_receiver\":\"New token-specific royalty receiver.\",\"_tokenId\":\"Token id whose royalty receiver is updated.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"totalSupply(uint256)\":{\"details\":\"Total amount of tokens in with a given id.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"stateVariables\":{\"MAX_BATCH_SIZE\":{\"return\":\"Maximum supported batch item count.\",\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"disabled\":{\"return\":\"True when disabled.\",\"returns\":{\"_0\":\"True when disabled.\"}},\"name\":{\"return\":\"Collection name.\",\"returns\":{\"_0\":\"Collection name.\"}},\"symbol\":{\"return\":\"Collection symbol.\",\"returns\":{\"_0\":\"Collection symbol.\"}}},\"title\":\"RareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"BatchLengthMismatch()\":[{\"notice\":\"Reverted when parallel batch arrays have different lengths.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"notice\":\"Reverted when the default royalty percentage is above 100%.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,address,uint256,string)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch mint operations.\"},\"createToken(string,uint256,address)\":{\"notice\":\"Creates a new token type.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintBatchTo(address,uint256[],uint256[])\":{\"notice\":\"Mints existing token ids to a receiver.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints one existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"renounceOwnership()\":{\"notice\":\"Prevents the collection owner, and therefore creator proxy, from becoming the zero address.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"notice\":\"Updates the fallback ERC2981 royalty percentage.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the fallback ERC2981 royalty receiver.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes collection-wide minter approval for an address.\"},\"setRoyaltyReceiverForToken(uint256,address)\":{\"notice\":\"Updates the ERC2981 royalty receiver for one token id.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Basic RARE Protocol ERC1155 collection with creator and royalty support.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/RareERC1155.sol\":\"RareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7\",\"dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol\":{\"keccak256\":\"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98\",\"dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8\",\"dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol\":{\"keccak256\":\"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9\",\"dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/ERC1155/RareERC1155.sol\":{\"keccak256\":\"0x580c03eaabe68708b30d0627a8ea44ebb7de24150a0ad6047266ef44cf2731a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7320879b3bb31bc0226013499865f7cc605f2845b4fb6700daa94cf5e928622a\",\"dweb:/ipfs/QmesNVNev1i2iR57BFFAKa64xeBLqTTUqVBECDgYd46MT4\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[],"type":"error","name":"BatchLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"RoyaltyPercentageTooHigh"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"address","name":"royaltyReceiver","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"values","type":"uint256[]","indexed":false}],"type":"event","name":"TransferBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"TransferSingle","anonymous":false},{"inputs":[{"internalType":"string","name":"value","type":"string","indexed":false},{"internalType":"uint256","name":"id","type":"uint256","indexed":true}],"type":"event","name":"URI","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"burnBatch"},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"address","name":"_royaltyReceiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"mintBatchTo"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyPercentage"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyReceiverForToken"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"createToken(string,uint256,address)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_royaltyReceiver":"ERC2981 royalty receiver for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"exists(uint256)":{"details":"Indicates whether any token exist with a given id, or not."},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and ERC2981 royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedForAll(address,address)":{"details":"See {IERC1155-isApprovedForAll}."},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintBatchTo(address,uint256[],uint256[])":{"details":"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.","params":{"_amounts":"Quantities to mint for each token id.","_receiver":"Address that receives the minted tokens.","_tokenIds":"Existing token ids to mint."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"Minted token id."}},"owner()":{"details":"Returns the address of the current owner."},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"See {IERC1155-safeBatchTransferFrom}."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"See {IERC1155-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC1155-setApprovalForAll}."},"setDefaultRoyaltyPercentage(uint256)":{"details":"Tokens created before this update keep their token-specific royalty percentage.","params":{"_percentage":"New royalty percentage, expressed as whole percentage points."}},"setDefaultRoyaltyReceiver(address)":{"details":"Token-specific royalty receivers take precedence over this value.","params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"details":"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.","params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"setRoyaltyReceiverForToken(uint256,address)":{"details":"The token's existing royalty percentage is preserved.","params":{"_receiver":"New token-specific royalty receiver.","_tokenId":"Token id whose royalty receiver is updated."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"totalSupply(uint256)":{"details":"Total amount of tokens in with a given id."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch mint operations."},"createToken(string,uint256,address)":{"notice":"Creates a new token type."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintBatchTo(address,uint256[],uint256[])":{"notice":"Mints existing token ids to a receiver."},"mintTo(address,uint256,uint256)":{"notice":"Mints one existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"renounceOwnership()":{"notice":"Prevents the collection owner, and therefore creator proxy, from becoming the zero address."},"setDefaultRoyaltyPercentage(uint256)":{"notice":"Updates the fallback ERC2981 royalty percentage."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the fallback ERC2981 royalty receiver."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes collection-wide minter approval for an address."},"setRoyaltyReceiverForToken(uint256,address)":{"notice":"Updates the ERC2981 royalty receiver for one token id."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/RareERC1155.sol":"RareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol":{"keccak256":"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856","urls":["bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7","dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"keccak256":"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b","urls":["bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce","dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol":{"keccak256":"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8","urls":["bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83","dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol":{"keccak256":"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7","urls":["bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98","dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"keccak256":"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e","urls":["bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8","dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"keccak256":"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448","urls":["bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9","dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol":{"keccak256":"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f","urls":["bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9","dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a","urls":["bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7","dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/ERC1155/RareERC1155.sol":{"keccak256":"0x580c03eaabe68708b30d0627a8ea44ebb7de24150a0ad6047266ef44cf2731a3","urls":["bzz-raw://7320879b3bb31bc0226013499865f7cc605f2845b4fb6700daa94cf5e928622a","dweb:/ipfs/QmesNVNev1i2iR57BFFAKa64xeBLqTTUqVBECDgYd46MT4"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":37} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBatch","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnBatch","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"},{"name":"_royaltyReceiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"exists","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintBatchTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyPercentage","inputs":[{"name":"_percentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyReceiverForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"_interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"royaltyReceiver","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"TransferBatch","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"values","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"TransferSingle","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"URI","inputs":[{"name":"value","type":"string","indexed":false,"internalType":"string"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"BatchLengthMismatch","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"RoyaltyPercentageTooHigh","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x60808060405234620000c6576000549060ff8260081c1662000074575060ff8082160362000038575b6040516133e89081620000cc8239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461244157806301ffc9a71461238757806306fdde03146122f55780630de54ba0146122715780630e89341c146120ef5780631542bb9514611e7957806318e97fd114611cf65780632a55205a14611c485780632baf2acb14611bd75780632eb2c2d61461180f5780633512639c1461178f5780633a3d146f1461174f5780633ebc82c51461171657806340c1a064146116ed5780634e1273f41461154f5780634f558e79146115215780636b20c454146112d9578063715018a6146112c0578063894ba833146112715780638da5cb5b1461124857806395d89b4114611175578063a22cb4651461109e578063a7eae21c146109f3578063bd85b039146109c7578063c33ae88f1461099a578063cfdbf2541461097e578063e2200a0b146108ad578063e27a41bf1461085d578063e985e9c514610807578063ee070805146107e3578063f242432a1461044d578063f2fde38b146103c0578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101636020526020604060002054604051908152f35b600080fd5b346101be576101d1366125c1565b6001600160a01b0390921691903383148015610397575b6101f19061289f565b8215926101fe8415612bb9565b61020782612b94565b9161021184612b94565b946000604051610220816124e9565b52610343575b60005b83518110156102c45761023c818561288b565b51610247828861288b565b51908060005260fb602081815260406000205492848410610280579061027b95949392916000525203604060002055612859565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612c11565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a46103416040516124e9565b005b929060005b835181101561038f578061035f61038a928861288b565b5161036a828761288b565b5160005260fb60205261038360406000209182546129bb565b9055612859565b610348565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103d9612468565b6103e1612733565b6001600160a01b038116156103f9576103419061278b565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be57610466612468565b61046e61247e565b90608480356001600160401b0381116101be5761048f9036906004016126b4565b6001600160a01b039190838316331480156107b8575b6104ae9061289f565b828516156104bc8115612902565b6104c7604435612b94565b6104d2606435612b94565b9185871615610778575b6106ca575b5050604435600052602094609786526040600020848616600052865260406000205461051160643582101561295c565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061055c60643582546129bb565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b6105a357005b60a060006105ed958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a4830190612525565b0393165af16000918161069b575b5061067157505060019061060d612ab3565b6308c379a01461063c575b5061061f57005b60405162461bcd60e51b81528061063860048201612b3f565b0390fd5b610644612ad1565b90816106505750610618565b61063860405192839262461bcd60e51b845260048401526024830190612525565b6001600160e01b0319161490506103415760405162461bcd60e51b81528061063860048201612a6a565b6106bc919250843d86116106c3575b6106b48183612504565b810190612a4a565b90846105fb565b503d6106aa565b92959194909360005b8451811015610769576106e6818661288b565b51906106f2818861288b565b518260005260fb602052604060002054818110610726576107219360005260fb60205203604060002055612859565b6106d3565b60405162461bcd60e51b81526020600482015260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104e1565b959260009794919592975b86518110156107aa578061079a6107a5928b61288b565b5161036a828a61288b565b610783565b5092959691949093966104dc565b5082841660005260986020526040600020336000526020526104ae60ff6040600020541690506104a5565b346101be5760003660031901126101be57602060ff61016154166040519015158152f35b346101be5760403660031901126101be57610820612468565b61082861247e565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be57610876612733565b60ff610161541661089b576101665461034190600435906001600160a01b0316613288565b604051637abbf1c960e01b8152600490fd5b346101be5760403660031901126101be576004356108c961247e565b906108d2612733565b60ff610161541661089b578060005261016360205260ff6002604060002001541615610966576001600160a01b0382161561095457806000526101686020526040600020549160648302928084046064149015171561093e576001600160601b036103419316916131db565b634e487b7160e01b600052601160045260246000fd5b604051637827912560e01b8152600490fd5b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760003660031901126101be57602060405160648152f35b346101be5760203660031901126101be576004356000526101656020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be57610a23903690600401612594565b906024356001600160401b0381116101be57610a43903690600401612594565b6044356001600160401b0381116101be57610a62903690600401612594565b90929091906064356001600160a01b03811690036101be57608435956001600160a01b03871687036101be576000549560ff8760081c161596878098611091575b801561107a575b1561101e5760ff1981166001176000558761100c575b506064356001600160a01b031615610954576001600160401b038211610e14578190610aee61015f54612494565b601f8111610f9e575b50600090601f8311600114610f1557600092610f0a575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610e1457610b3f61016054612494565b601f8111610ea8575b50600090601f8311600114610e3557610bb39493929160009183610e2a575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ba360ff60005460081c16610b9e81612cbd565b612cbd565b610bac3361278b565b369161266e565b91610bc960ff60005460081c16610b9e81612cbd565b82516001600160401b038111610e1457610be4609954612494565b601f8111610daf575b506020601f8211600114610d485781929394600092610d3d575b50508160011b916000199060031b1c1916176099555b610c3b60ff60005460081c16610c3281612cbd565b610b9e81612cbd565b61016680546001600160a01b0319166064356001600160a01b0316179055600a610167556040516103e890602090610c72816124ce565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610ce5575b50610ca760643561278b565b610cad57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101646020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610c9b565b015190508480610c07565b601f198216906099600052806000209160005b818110610d9757509583600195969710610d7e575b505050811b01609955610c1d565b015160001960f88460031b161c19169055848080610d70565b9192602060018192868b015181550194019201610d5b565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610e0a575b601f0160051c01905b818110610dfe5750610bed565b60008155600101610df1565b9091508190610de8565b634e487b7160e01b600052604160045260246000fd5b013590508780610b67565b61016060005260206000209160005b601f1985168110610e905750918391600193610bb3979695601f19811610610e76575b505050811b0161016055610b7e565b0135600019600384901b60f8161c19169055878080610e67565b90926020600181928686013581550194019101610e44565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610f03575b601f830160051c82018110610ef7575050610b48565b60008155600101610ee1565b5080610ee1565b013590508880610b0e565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610f86576001945083601f19811610610f6c575b505050811b0161015f55610b25565b0135600019600384901b60f8161c19169055888080610f5d565b81810135835560209485019460019093019201610f42565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510611005575b90849392915b601f830160051c82018110610ff6575050610af7565b60008155859450600101610fe0565b5080610fda565b61ffff19166101011760005588610ac0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610aaa5750600160ff821614610aaa565b50600160ff821610610aa3565b346101be576110ac36612565565b6001600160a01b039091169033821461111e573360005260986020526040600020826000526020526110ee8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be5760405160009061016080549061119b82612494565b90818452600192838116908160001461122057506001146111df575b6111db846111c781880382612504565b604051918291602083526020830190612525565b0390f35b90935060005260209283600020916000925b82841061120d57505050816111db936111c792820101936111b7565b80548585018701529285019281016111f1565b6111db96506111c79450602092508593915060ff191682840152151560051b820101936111b7565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be5761128a612733565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760003660031901126101be57610954612733565b346101be5760603660031901126101be576112f2612468565b6024906001600160401b039082358281116101be57611315903690600401612650565b9160449081359081116101be57611330903690600401612650565b6001600160a01b039092169233841480156114f8575b61134f9061289f565b831561135b8115612bb9565b61136882518551146129c8565b6000604051611376816124e9565b526114c0575b60005b815181101561141857611392818361288b565b5161139d828661288b565b51908060005260fb6020818152604060002054928484106113d657906113d195949392916000525203604060002055612859565b61137f565b60405162461bcd60e51b8152600481018390526028818d0152600080516020613393833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b825181101561148d5780611435611488928561288b565b51611440828761288b565b519080600052609760209080825260406000208760005282526040600020549261146c85851015612c11565b6000528152604060002090866000525203604060002055612859565b61141e565b50906000805160206133538339815191526114b2600094604051918291339583612a25565b0390a46103416040516124e9565b9260009491945b84518110156114ee57806114de6114e9928661288b565b5161036a828861288b565b6114c7565b509293909361137c565b5083600052609860205260406000203360005260205261134f60ff604060002054169050611346565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be5781600401359061158c826125eb565b9261159a6040519485612504565b82845260209260248486019160051b830101913683116101be57602401905b8282106116ce575050506024359081116101be576115db903690600401612650565b8251815103611677578251926115f0846125eb565b936115fe6040519586612504565b80855261160d601f19916125eb565b01368486013760005b81518110156116605761165b9061164b6001600160a01b03611638838661288b565b5116611644838761288b565b51906127d4565b611655828861288b565b52612859565b611616565b5050506111db6040519282849384528301906126ff565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115b9565b346101be5760203660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760203660031901126101be5761172f612468565b611737612733565b60ff610161541661089b576101675461034191613288565b346101be5760203660031901126101be576001600160a01b03611770612468565b16600052610164602052602060ff604060002054166040519015158152f35b346101be5760603660031901126101be576117a8612468565b6001600160401b03906024358281116101be576117c99036906004016126cf565b926044359081116101be576117e29036906004016126cf565b919060ff610161541661089b5761180161180992610341963691612602565b923691612602565b91612d1d565b346101be5760031960a0368201126101be57611829612468565b9061183261247e565b6044908135926001600160401b03938481116101be57611856903690600401612650565b606480358681116101be5761186f903690600401612650565b9460849687359081116101be5761188a9036906004016126b4565b6001600160a01b039489861633148015611bac575b6118a89061289f565b6118b585518951146129c8565b858716156118c38115612902565b868b1615611b69575b611ab4575b60005b855181101561196957806118eb611964928861288b565b518c6118f7838d61288b565b519180600052609790838c60209484865260406000208282166000528652604060002054916119288484101561295c565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c166000525261038360406000209182546129bb565b6118d4565b50888a9897969497896040518860008051602061335383398151915289808d169416928061199987339583612a25565b0390a4873b6119a457005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a487016119d8916126ff565b908487830301908701526119eb916126ff565b9184830301908401526119fd91612525565b03921691815a602094600091f160009181611a94575b50611a6c5750506001611a24612ab3565b6308c379a014611a35575b61061f57005b611a3d612ad1565b80611a485750611a2f565b60405162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916146103415760405162461bcd60e51b81528061063860048201612a6a565b611aad91925060203d81116106c3576106b48183612504565b9083611a13565b9796949060009993999692965b8551811015611b5957611ad4818761288b565b51611adf828961288b565b519080600052602060fb815260406000205491838310611b1857611b139493929160fb916000525203604060002055612859565b611ac1565b508b9067616c537570706c7960c01b8f6000805160206133938339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b50909496979892989591956118d1565b99969498959392919060005b8a51811015611b9d57808b61036a82611b91611b98958f61288b565b519261288b565b611b75565b509091929395989496996118cc565b50858a1660005260986020526040600020336000526020526118a860ff60406000205416905061189f565b346101be57611be5366125c1565b9160ff610161541661089b57602092611c409160405190611c05826124ce565b6001825285368184013760405192611c1c846124ce565b6001845286368186013785611c3084612868565b52611c3a84612868565b52612d1d565b604051908152f35b346101be5760403660031901126101be5760243560043560005261012e60205260406000209060405191611c7b836124ce565b546001600160a01b0380821680855260a09290921c6020850152929015611cd3575b6001600160601b036020820151169182810292818404149015171561093e57604092612710915116918351928352046020820152f35b50604051611ce0816124ce565b61012d54838116825260a01c6020820152611c9d565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611d2a903690600401612594565b9190611d34612733565b60ff610161541661089b57836000526101639160209280845260ff6002604060002001541615611e6057856000528352600180604060002001918511610e1457611d8885611d828454612494565b84612c69565b6000601f8611600114611de95791858060008051602061337383398151915297969593611dd995600093611dde575b501b906000198760031b1c19161790555b60405193838594855284019161315b565b0390a2005b85013592508a611db7565b601f1986169083600052856000209160005b818110611e4b575091879695939160008051602061337383398151915298611dd9969410611e31575b505085811b019055611dc8565b840135600019600389901b60f8161c191690558880611e24565b86830135845592840192918701918701611dfb565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576001600160401b036004358181116101be57611eaa903690600401612594565b602435916001600160a01b03604435818116938482036101be57611ecc612733565b60ff610161541661089b5785156120dd5784156109545761016295611ef18754612859565b809755604051606081018181108a821117610e1457604052818152611f1736848861266e565b986020998a83019081526040830191600183528a6000526101638c526040600020935184556001840191518051918211610e1457611f5f82611f598554612494565b85612c69565b8c908d601f841160011461206c5750918060029492611fad979694600092612061575b50508160011b916000199060031b1c19161790555b51151591019060ff801983541691151516179055565b61016754928760005261016889528360406000205560648402938085046064149015171561093e578794612010612056926001600160601b037fc07473765c308da8ff95c4974c60af7332d93777f002550fa063b77064a6f7b2971690886131db565b856000805160206133738339815191526120368c6040519181839283528201898d61315b565b0390a26033541695604051938493845260408b850152604084019161315b565b0390a4604051908152f35b015190508f80611f82565b9190601f1984168560005283600020936000905b8282106120c5575050926001928592611fad99989660029896106120ac575b505050811b019055611f97565b015160001960f88460031b161c191690558f808061209f565b80600186978294978701518155019601940190612080565b604051631dd0e19360e01b8152600490fd5b346101be576020806003193601126101be5760043560005261016381526001806040600020019082604051809360009080549061212b82612494565b80855291868116908115612250575060011461220f575b505061215092500383612504565b81511561216e5750905b6111db604051928284938452830190612525565b905060405190600090836099549161218583612494565b928386528582821691826000146121ef5750506001146121b5575b505050816121af910382612504565b9061215a565b91909250609960005282600020916000925b8284106121dc575050508201018183856121a0565b80548685018601529284019281016121c7565b60ff19168482015293151560051b840190920193508591508690506121a0565b9091506000528260002090846000925b828410612239575050509161215092820101859287612142565b80548885018701528794509285019286910161221f565b91505061215094925060ff191682840152151560051b820101859287612142565b346101be5761227f36612565565b90612288612733565b60ff610161541661089b576001600160a01b03169081156109545760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261016482526122ea8160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be5760405160009061015f80549061231b82612494565b9081845260019283811690816000146112205750600114612346576111db846111c781880382612504565b90935060005260209283600020916000925b82841061237457505050816111db936111c792820101936111b7565b8054858501870152928501928101612358565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be57602090635a08b45360e11b8114908115612430575b81156123d3575b506040519015158152f35b63152a902d60e11b8114915081156123ed575b50826123c8565b636cdb3d1360e11b81149150811561241f575b811561240e575b50826123e6565b6301ffc9a760e01b14905082612407565b6303a24d0760e21b81149150612400565b631030681960e21b811491506123c1565b346101be5760403660031901126101be576020611c4061245f612468565b602435906127d4565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c921680156124c4575b60208310146124ae57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124a3565b604081019081106001600160401b03821117610e1457604052565b602081019081106001600160401b03821117610e1457604052565b90601f801991011681019081106001600160401b03821117610e1457604052565b919082519283825260005b848110612551575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612530565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610e145760051b60200190565b929161260d826125eb565b9161261b6040519384612504565b829481845260208094019160051b81019283116101be57905b8282106126415750505050565b81358152908301908301612634565b9080601f830112156101be5781602061266b93359101612602565b90565b9291926001600160401b038211610e145760405191612697601f8201601f191660200184612504565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be5781602061266b9335910161266e565b9181601f840112156101be578235916001600160401b0383116101be576020808501948460051b0101116101be57565b90815180825260208080930193019160005b82811061271f575050505090565b835185529381019392810192600101612711565b6033546001600160a01b0316330361274757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561280157600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b600019811461093e5760010190565b8051156128755760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156128755760209160051b010190565b156128a657565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561290957565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561296357565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9190820180921161093e57565b156129cf57565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612a3c61266b936040845260408401906126ff565b9160208184039101526126ff565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612ac057565b905060046000803e60005160e01c90565b600060443d1061266b57604051600319913d83016004833e81516001600160401b03918282113d602484011117612b2e57818401948551938411612b36573d85010160208487010111612b2e575061266b92910160200190612504565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612ba1826124ce565b6001825260203681840137612bb582612868565b5290565b15612bc057565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612c1857565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c7757505050565b600091825260208220906020601f850160051c83019410612cb3575b601f0160051c01915b828110612ca857505050565b818155600101612c9c565b9092508290612c93565b15612cc457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b038083169291908315610954576033541633141580613141575b61312957835115613117578351815103613105578351926064938481116130e7575060015b8551811015612dd557612d78818761288b565b516000198201828111612dc057612d8f908861288b565b511015612d9e57600101612d65565b612daa6024918761288b565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612ebf57612df3868461288b565b519586600052610163602081815260409060ff60028360002001541615612ea757612e1e848961288b565b5115612e96578960005261016590818152612e488360002054612e41878c61288b565b51906129bb565b938b60005281528260002054808511612e74575060009a8b525290972096909655600190950194612de0565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612ed5876124e9565b60008752612ee686518551146129c8565b60005b8651811015612f285780612f00612f23928761288b565b51612f0b828a61288b565b5160005260fb602052610383886000209182546129bb565b612ee9565b5090919560005b8651811015612f795780612f46612f74928761288b565b51612f51828a61288b565b5160005260206097815288600020908c60005252610383886000209182546129bb565b612f2f565b5091969093958160008851600080516020613353833981519152339180612fa18a8d83612a25565b0390a43b612fb2575b505050505050565b6130056000602094613014895197889687958694612ff263bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a48801906126ff565b90600319948588840301908801526126ff565b91848303016084850152612525565b03925af1600091816130c7575b5061309b5750506001613032612ab3565b6308c379a014613065575b61304e57505b388080808080612faa565b5162461bcd60e51b81528061063860048201612b3f565b61306d612ad1565b80613078575061303d565b825162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916036130b05750613043565b5162461bcd60e51b81528061063860048201612a6a565b6130e091925060203d81116106c3576106b48183612504565b9038613021565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016460205260ff6040600020541615612d40565b908060209392818452848401376000828201840152601f01601f1916010190565b1561318357565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b916001600160601b0316906131f461271083111561317c565b6001600160a01b039081169283156132435760405193613213856124ce565b84526020808501938452600091825261012e9052604090209251915160a01b6001600160a01b0319169116179055565b60405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b6001600160a01b039081169190821561095457606482116133325760018060a01b0319926101668185825416179055826101675560648302928084046064149015171561093e57613320906001600160601b0384166132eb61271082111561317c565b60206040516132f9816124ce565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a2646970667358221220b7720fa90ac9df32d7bfb6ee34e640368972d81f7eb46827b58be3edc6478e5764736f6c63430008120033","sourceMap":"1123:14094:82:-:0;;;;;;;6007:13:18;1123:14094:82;;;;;;;;;;;;;;6078:31:18;6074:139;;-1:-1:-1;1123:14094:82;;;;;;;;;6074:139:18;1123:14094:82;;;;;;6007:13:18;1123:14094:82;6174:28:18;1123:14094:82;;;;;;6174:28:18;6074:139;;;1123:14094:82;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461244157806301ffc9a71461238757806306fdde03146122f55780630de54ba0146122715780630e89341c146120ef5780631542bb9514611e7957806318e97fd114611cf65780632a55205a14611c485780632baf2acb14611bd75780632eb2c2d61461180f5780633512639c1461178f5780633a3d146f1461174f5780633ebc82c51461171657806340c1a064146116ed5780634e1273f41461154f5780634f558e79146115215780636b20c454146112d9578063715018a6146112c0578063894ba833146112715780638da5cb5b1461124857806395d89b4114611175578063a22cb4651461109e578063a7eae21c146109f3578063bd85b039146109c7578063c33ae88f1461099a578063cfdbf2541461097e578063e2200a0b146108ad578063e27a41bf1461085d578063e985e9c514610807578063ee070805146107e3578063f242432a1461044d578063f2fde38b146103c0578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101636020526020604060002054604051908152f35b600080fd5b346101be576101d1366125c1565b6001600160a01b0390921691903383148015610397575b6101f19061289f565b8215926101fe8415612bb9565b61020782612b94565b9161021184612b94565b946000604051610220816124e9565b52610343575b60005b83518110156102c45761023c818561288b565b51610247828861288b565b51908060005260fb602081815260406000205492848410610280579061027b95949392916000525203604060002055612859565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612c11565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a46103416040516124e9565b005b929060005b835181101561038f578061035f61038a928861288b565b5161036a828761288b565b5160005260fb60205261038360406000209182546129bb565b9055612859565b610348565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103d9612468565b6103e1612733565b6001600160a01b038116156103f9576103419061278b565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be57610466612468565b61046e61247e565b90608480356001600160401b0381116101be5761048f9036906004016126b4565b6001600160a01b039190838316331480156107b8575b6104ae9061289f565b828516156104bc8115612902565b6104c7604435612b94565b6104d2606435612b94565b9185871615610778575b6106ca575b5050604435600052602094609786526040600020848616600052865260406000205461051160643582101561295c565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061055c60643582546129bb565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b6105a357005b60a060006105ed958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a4830190612525565b0393165af16000918161069b575b5061067157505060019061060d612ab3565b6308c379a01461063c575b5061061f57005b60405162461bcd60e51b81528061063860048201612b3f565b0390fd5b610644612ad1565b90816106505750610618565b61063860405192839262461bcd60e51b845260048401526024830190612525565b6001600160e01b0319161490506103415760405162461bcd60e51b81528061063860048201612a6a565b6106bc919250843d86116106c3575b6106b48183612504565b810190612a4a565b90846105fb565b503d6106aa565b92959194909360005b8451811015610769576106e6818661288b565b51906106f2818861288b565b518260005260fb602052604060002054818110610726576107219360005260fb60205203604060002055612859565b6106d3565b60405162461bcd60e51b81526020600482015260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104e1565b959260009794919592975b86518110156107aa578061079a6107a5928b61288b565b5161036a828a61288b565b610783565b5092959691949093966104dc565b5082841660005260986020526040600020336000526020526104ae60ff6040600020541690506104a5565b346101be5760003660031901126101be57602060ff61016154166040519015158152f35b346101be5760403660031901126101be57610820612468565b61082861247e565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be57610876612733565b60ff610161541661089b576101665461034190600435906001600160a01b0316613288565b604051637abbf1c960e01b8152600490fd5b346101be5760403660031901126101be576004356108c961247e565b906108d2612733565b60ff610161541661089b578060005261016360205260ff6002604060002001541615610966576001600160a01b0382161561095457806000526101686020526040600020549160648302928084046064149015171561093e576001600160601b036103419316916131db565b634e487b7160e01b600052601160045260246000fd5b604051637827912560e01b8152600490fd5b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760003660031901126101be57602060405160648152f35b346101be5760203660031901126101be576004356000526101656020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be57610a23903690600401612594565b906024356001600160401b0381116101be57610a43903690600401612594565b6044356001600160401b0381116101be57610a62903690600401612594565b90929091906064356001600160a01b03811690036101be57608435956001600160a01b03871687036101be576000549560ff8760081c161596878098611091575b801561107a575b1561101e5760ff1981166001176000558761100c575b506064356001600160a01b031615610954576001600160401b038211610e14578190610aee61015f54612494565b601f8111610f9e575b50600090601f8311600114610f1557600092610f0a575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610e1457610b3f61016054612494565b601f8111610ea8575b50600090601f8311600114610e3557610bb39493929160009183610e2a575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ba360ff60005460081c16610b9e81612cbd565b612cbd565b610bac3361278b565b369161266e565b91610bc960ff60005460081c16610b9e81612cbd565b82516001600160401b038111610e1457610be4609954612494565b601f8111610daf575b506020601f8211600114610d485781929394600092610d3d575b50508160011b916000199060031b1c1916176099555b610c3b60ff60005460081c16610c3281612cbd565b610b9e81612cbd565b61016680546001600160a01b0319166064356001600160a01b0316179055600a610167556040516103e890602090610c72816124ce565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610ce5575b50610ca760643561278b565b610cad57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101646020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610c9b565b015190508480610c07565b601f198216906099600052806000209160005b818110610d9757509583600195969710610d7e575b505050811b01609955610c1d565b015160001960f88460031b161c19169055848080610d70565b9192602060018192868b015181550194019201610d5b565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610e0a575b601f0160051c01905b818110610dfe5750610bed565b60008155600101610df1565b9091508190610de8565b634e487b7160e01b600052604160045260246000fd5b013590508780610b67565b61016060005260206000209160005b601f1985168110610e905750918391600193610bb3979695601f19811610610e76575b505050811b0161016055610b7e565b0135600019600384901b60f8161c19169055878080610e67565b90926020600181928686013581550194019101610e44565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610f03575b601f830160051c82018110610ef7575050610b48565b60008155600101610ee1565b5080610ee1565b013590508880610b0e565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610f86576001945083601f19811610610f6c575b505050811b0161015f55610b25565b0135600019600384901b60f8161c19169055888080610f5d565b81810135835560209485019460019093019201610f42565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510611005575b90849392915b601f830160051c82018110610ff6575050610af7565b60008155859450600101610fe0565b5080610fda565b61ffff19166101011760005588610ac0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610aaa5750600160ff821614610aaa565b50600160ff821610610aa3565b346101be576110ac36612565565b6001600160a01b039091169033821461111e573360005260986020526040600020826000526020526110ee8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be5760405160009061016080549061119b82612494565b90818452600192838116908160001461122057506001146111df575b6111db846111c781880382612504565b604051918291602083526020830190612525565b0390f35b90935060005260209283600020916000925b82841061120d57505050816111db936111c792820101936111b7565b80548585018701529285019281016111f1565b6111db96506111c79450602092508593915060ff191682840152151560051b820101936111b7565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be5761128a612733565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760003660031901126101be57610954612733565b346101be5760603660031901126101be576112f2612468565b6024906001600160401b039082358281116101be57611315903690600401612650565b9160449081359081116101be57611330903690600401612650565b6001600160a01b039092169233841480156114f8575b61134f9061289f565b831561135b8115612bb9565b61136882518551146129c8565b6000604051611376816124e9565b526114c0575b60005b815181101561141857611392818361288b565b5161139d828661288b565b51908060005260fb6020818152604060002054928484106113d657906113d195949392916000525203604060002055612859565b61137f565b60405162461bcd60e51b8152600481018390526028818d0152600080516020613393833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b825181101561148d5780611435611488928561288b565b51611440828761288b565b519080600052609760209080825260406000208760005282526040600020549261146c85851015612c11565b6000528152604060002090866000525203604060002055612859565b61141e565b50906000805160206133538339815191526114b2600094604051918291339583612a25565b0390a46103416040516124e9565b9260009491945b84518110156114ee57806114de6114e9928661288b565b5161036a828861288b565b6114c7565b509293909361137c565b5083600052609860205260406000203360005260205261134f60ff604060002054169050611346565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be5781600401359061158c826125eb565b9261159a6040519485612504565b82845260209260248486019160051b830101913683116101be57602401905b8282106116ce575050506024359081116101be576115db903690600401612650565b8251815103611677578251926115f0846125eb565b936115fe6040519586612504565b80855261160d601f19916125eb565b01368486013760005b81518110156116605761165b9061164b6001600160a01b03611638838661288b565b5116611644838761288b565b51906127d4565b611655828861288b565b52612859565b611616565b5050506111db6040519282849384528301906126ff565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115b9565b346101be5760203660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760203660031901126101be5761172f612468565b611737612733565b60ff610161541661089b576101675461034191613288565b346101be5760203660031901126101be576001600160a01b03611770612468565b16600052610164602052602060ff604060002054166040519015158152f35b346101be5760603660031901126101be576117a8612468565b6001600160401b03906024358281116101be576117c99036906004016126cf565b926044359081116101be576117e29036906004016126cf565b919060ff610161541661089b5761180161180992610341963691612602565b923691612602565b91612d1d565b346101be5760031960a0368201126101be57611829612468565b9061183261247e565b6044908135926001600160401b03938481116101be57611856903690600401612650565b606480358681116101be5761186f903690600401612650565b9460849687359081116101be5761188a9036906004016126b4565b6001600160a01b039489861633148015611bac575b6118a89061289f565b6118b585518951146129c8565b858716156118c38115612902565b868b1615611b69575b611ab4575b60005b855181101561196957806118eb611964928861288b565b518c6118f7838d61288b565b519180600052609790838c60209484865260406000208282166000528652604060002054916119288484101561295c565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c166000525261038360406000209182546129bb565b6118d4565b50888a9897969497896040518860008051602061335383398151915289808d169416928061199987339583612a25565b0390a4873b6119a457005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a487016119d8916126ff565b908487830301908701526119eb916126ff565b9184830301908401526119fd91612525565b03921691815a602094600091f160009181611a94575b50611a6c5750506001611a24612ab3565b6308c379a014611a35575b61061f57005b611a3d612ad1565b80611a485750611a2f565b60405162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916146103415760405162461bcd60e51b81528061063860048201612a6a565b611aad91925060203d81116106c3576106b48183612504565b9083611a13565b9796949060009993999692965b8551811015611b5957611ad4818761288b565b51611adf828961288b565b519080600052602060fb815260406000205491838310611b1857611b139493929160fb916000525203604060002055612859565b611ac1565b508b9067616c537570706c7960c01b8f6000805160206133938339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b50909496979892989591956118d1565b99969498959392919060005b8a51811015611b9d57808b61036a82611b91611b98958f61288b565b519261288b565b611b75565b509091929395989496996118cc565b50858a1660005260986020526040600020336000526020526118a860ff60406000205416905061189f565b346101be57611be5366125c1565b9160ff610161541661089b57602092611c409160405190611c05826124ce565b6001825285368184013760405192611c1c846124ce565b6001845286368186013785611c3084612868565b52611c3a84612868565b52612d1d565b604051908152f35b346101be5760403660031901126101be5760243560043560005261012e60205260406000209060405191611c7b836124ce565b546001600160a01b0380821680855260a09290921c6020850152929015611cd3575b6001600160601b036020820151169182810292818404149015171561093e57604092612710915116918351928352046020820152f35b50604051611ce0816124ce565b61012d54838116825260a01c6020820152611c9d565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611d2a903690600401612594565b9190611d34612733565b60ff610161541661089b57836000526101639160209280845260ff6002604060002001541615611e6057856000528352600180604060002001918511610e1457611d8885611d828454612494565b84612c69565b6000601f8611600114611de95791858060008051602061337383398151915297969593611dd995600093611dde575b501b906000198760031b1c19161790555b60405193838594855284019161315b565b0390a2005b85013592508a611db7565b601f1986169083600052856000209160005b818110611e4b575091879695939160008051602061337383398151915298611dd9969410611e31575b505085811b019055611dc8565b840135600019600389901b60f8161c191690558880611e24565b86830135845592840192918701918701611dfb565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576001600160401b036004358181116101be57611eaa903690600401612594565b602435916001600160a01b03604435818116938482036101be57611ecc612733565b60ff610161541661089b5785156120dd5784156109545761016295611ef18754612859565b809755604051606081018181108a821117610e1457604052818152611f1736848861266e565b986020998a83019081526040830191600183528a6000526101638c526040600020935184556001840191518051918211610e1457611f5f82611f598554612494565b85612c69565b8c908d601f841160011461206c5750918060029492611fad979694600092612061575b50508160011b916000199060031b1c19161790555b51151591019060ff801983541691151516179055565b61016754928760005261016889528360406000205560648402938085046064149015171561093e578794612010612056926001600160601b037fc07473765c308da8ff95c4974c60af7332d93777f002550fa063b77064a6f7b2971690886131db565b856000805160206133738339815191526120368c6040519181839283528201898d61315b565b0390a26033541695604051938493845260408b850152604084019161315b565b0390a4604051908152f35b015190508f80611f82565b9190601f1984168560005283600020936000905b8282106120c5575050926001928592611fad99989660029896106120ac575b505050811b019055611f97565b015160001960f88460031b161c191690558f808061209f565b80600186978294978701518155019601940190612080565b604051631dd0e19360e01b8152600490fd5b346101be576020806003193601126101be5760043560005261016381526001806040600020019082604051809360009080549061212b82612494565b80855291868116908115612250575060011461220f575b505061215092500383612504565b81511561216e5750905b6111db604051928284938452830190612525565b905060405190600090836099549161218583612494565b928386528582821691826000146121ef5750506001146121b5575b505050816121af910382612504565b9061215a565b91909250609960005282600020916000925b8284106121dc575050508201018183856121a0565b80548685018601529284019281016121c7565b60ff19168482015293151560051b840190920193508591508690506121a0565b9091506000528260002090846000925b828410612239575050509161215092820101859287612142565b80548885018701528794509285019286910161221f565b91505061215094925060ff191682840152151560051b820101859287612142565b346101be5761227f36612565565b90612288612733565b60ff610161541661089b576001600160a01b03169081156109545760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261016482526122ea8160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be5760405160009061015f80549061231b82612494565b9081845260019283811690816000146112205750600114612346576111db846111c781880382612504565b90935060005260209283600020916000925b82841061237457505050816111db936111c792820101936111b7565b8054858501870152928501928101612358565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be57602090635a08b45360e11b8114908115612430575b81156123d3575b506040519015158152f35b63152a902d60e11b8114915081156123ed575b50826123c8565b636cdb3d1360e11b81149150811561241f575b811561240e575b50826123e6565b6301ffc9a760e01b14905082612407565b6303a24d0760e21b81149150612400565b631030681960e21b811491506123c1565b346101be5760403660031901126101be576020611c4061245f612468565b602435906127d4565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c921680156124c4575b60208310146124ae57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124a3565b604081019081106001600160401b03821117610e1457604052565b602081019081106001600160401b03821117610e1457604052565b90601f801991011681019081106001600160401b03821117610e1457604052565b919082519283825260005b848110612551575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612530565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610e145760051b60200190565b929161260d826125eb565b9161261b6040519384612504565b829481845260208094019160051b81019283116101be57905b8282106126415750505050565b81358152908301908301612634565b9080601f830112156101be5781602061266b93359101612602565b90565b9291926001600160401b038211610e145760405191612697601f8201601f191660200184612504565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be5781602061266b9335910161266e565b9181601f840112156101be578235916001600160401b0383116101be576020808501948460051b0101116101be57565b90815180825260208080930193019160005b82811061271f575050505090565b835185529381019392810192600101612711565b6033546001600160a01b0316330361274757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561280157600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b600019811461093e5760010190565b8051156128755760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156128755760209160051b010190565b156128a657565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561290957565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561296357565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9190820180921161093e57565b156129cf57565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612a3c61266b936040845260408401906126ff565b9160208184039101526126ff565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612ac057565b905060046000803e60005160e01c90565b600060443d1061266b57604051600319913d83016004833e81516001600160401b03918282113d602484011117612b2e57818401948551938411612b36573d85010160208487010111612b2e575061266b92910160200190612504565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612ba1826124ce565b6001825260203681840137612bb582612868565b5290565b15612bc057565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612c1857565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c7757505050565b600091825260208220906020601f850160051c83019410612cb3575b601f0160051c01915b828110612ca857505050565b818155600101612c9c565b9092508290612c93565b15612cc457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b038083169291908315610954576033541633141580613141575b61312957835115613117578351815103613105578351926064938481116130e7575060015b8551811015612dd557612d78818761288b565b516000198201828111612dc057612d8f908861288b565b511015612d9e57600101612d65565b612daa6024918761288b565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612ebf57612df3868461288b565b519586600052610163602081815260409060ff60028360002001541615612ea757612e1e848961288b565b5115612e96578960005261016590818152612e488360002054612e41878c61288b565b51906129bb565b938b60005281528260002054808511612e74575060009a8b525290972096909655600190950194612de0565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612ed5876124e9565b60008752612ee686518551146129c8565b60005b8651811015612f285780612f00612f23928761288b565b51612f0b828a61288b565b5160005260fb602052610383886000209182546129bb565b612ee9565b5090919560005b8651811015612f795780612f46612f74928761288b565b51612f51828a61288b565b5160005260206097815288600020908c60005252610383886000209182546129bb565b612f2f565b5091969093958160008851600080516020613353833981519152339180612fa18a8d83612a25565b0390a43b612fb2575b505050505050565b6130056000602094613014895197889687958694612ff263bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a48801906126ff565b90600319948588840301908801526126ff565b91848303016084850152612525565b03925af1600091816130c7575b5061309b5750506001613032612ab3565b6308c379a014613065575b61304e57505b388080808080612faa565b5162461bcd60e51b81528061063860048201612b3f565b61306d612ad1565b80613078575061303d565b825162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916036130b05750613043565b5162461bcd60e51b81528061063860048201612a6a565b6130e091925060203d81116106c3576106b48183612504565b9038613021565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016460205260ff6040600020541615612d40565b908060209392818452848401376000828201840152601f01601f1916010190565b1561318357565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b916001600160601b0316906131f461271083111561317c565b6001600160a01b039081169283156132435760405193613213856124ce565b84526020808501938452600091825261012e9052604090209251915160a01b6001600160a01b0319169116179055565b60405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b6001600160a01b039081169190821561095457606482116133325760018060a01b0319926101668185825416179055826101675560648302928084046064149015171561093e57613320906001600160601b0384166132eb61271082111561317c565b60206040516132f9816124ce565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a2646970667358221220b7720fa90ac9df32d7bfb6ee34e640368972d81f7eb46827b58be3edc6478e5764736f6c63430008120033","sourceMap":"1123:14094:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;10028:12;1123:14094;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;;;;929:10:29;764:23:24;;:66;;;;1123:14094:82;743:159:24;;;:::i;:::-;11246:18:21;;;11238:66;11246:18;;11238:66;:::i;:::-;11379:21;;;:::i;:::-;11437:25;;;;:::i;:::-;1123:14094:82;;;;;;;:::i;:::-;;1658:156:25;;1123:14094:82;;1896:3:25;1123:14094:82;;1880:14:25;;;;;1932:6;;;;:::i;:::-;1123:14094:82;1973:10:25;;;;:::i;:::-;1123:14094:82;;;;;2018:12:25;1123:14094:82;;;;;;;;2060:16:25;;;;1123:14094:82;;;1896:3:25;1123:14094:82;;;;;;;;;;;;;1896:3:25;:::i;:::-;1865:13;;1123:14094:82;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:82;;;;-1:-1:-1;;;1123:14094:82;;;;;;;1880:14:25;1123:14094:82;1880:14:25;;;1123:14094:82;;;11572:9:21;1123:14094:82;;;;;;;;;;;;;;;11601:70:21;11609:21;;;;11601:70;:::i;:::-;1123:14094:82;;;11572:9:21;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;11773:54:21;1123:14094:82;929:10:29;11773:54:21;;1123:14094:82;;;;:::i;:::-;;1658:156:25;1701:13;;1123:14094:82;1732:3:25;1123:14094:82;;1716:14:25;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:82;1768:6:25;;;;:::i;:::-;1123:14094:82;;;1755:12:25;1123:14094:82;;1755:34:25;1123:14094:82;;;;;;1755:34:25;:::i;:::-;1123:14094:82;;1732:3:25;:::i;:::-;1701:13;;1716:14;;;;1658:156;;764:66:24;1123:14094:82;;;;3873:18:21;1123:14094:82;;;;;929:10:29;1123:14094:82;;;;743:159:24;1123:14094:82;;;;;;764:66:24;;;;1123:14094:82;;;;;;-1:-1:-1;;1123:14094:82;;;;;;:::i;:::-;1303:62:12;;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;2402:22:12;1123:14094:82;;2496:8:12;;;:::i;1123:14094:82:-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;;;;929:10:29;4184:20:21;:60;;;;1123:14094:82;4163:153:21;;;:::i;:::-;1123:14094:82;;;5507:16:21;5499:66;5507:16;;5499:66;:::i;:::-;5640:21;1123:14094:82;;5640:21:21;:::i;:::-;5698:25;1123:14094:82;;5698:25:21;:::i;:::-;1123:14094:82;;;;1662:18:25;1658:156;;1123:14094:82;1824:424:25;;1123:14094:82;;;;;;;;;5827:9:21;1123:14094:82;;;;;;;;;;;;;;;;5856:76:21;1123:14094:82;;5864:21:21;;;5856:76;:::i;:::-;1123:14094:82;;;;5827:9:21;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;5827:9:21;1123:14094:82;;;;;;;;;;;;;;;6028:27:21;1123:14094:82;;;;6028:27:21;:::i;:::-;1123:14094:82;;;;;;;;;;;;;;;;;;;;;929:10:29;6071:46:21;1123:14094:82;929:10:29;6071:46:21;;1713:19:28;;15996:538:21;;1123:14094:82;15996:538:21;1123:14094:82;;;;;;;;;;;;;;;;;;;16035:83:21;;;;929:10:29;1123:14094:82;16035:83:21;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16035:83:21;1123:14094:82;;16035:83:21;;1123:14094:82;;16035:83:21;;;15996:538;-1:-1:-1;16031:493:21;;;;1123:14094:82;16031:493:21;;;:::i;:::-;;;;;;;;;1123:14094:82;16031:493:21;1123:14094:82;;-1:-1:-1;;;16447:62:21;;1123:14094:82;16447:62:21;1123:14094:82;16447:62:21;;;:::i;:::-;;;;16031:493;16341:81;;:::i;:::-;;;;;16031:493;;;16341:81;1123:14094:82;;;;;;;;;16393:14:21;;1123:14094:82;16393:14:21;;1123:14094:82;;;;;;:::i;16031:493:21:-;-1:-1:-1;;;;;;1123:14094:82;16163:163:21;;-1:-1:-1;16031:493:21;16163:163;1123:14094:82;;-1:-1:-1;;;16257:50:21;;1123:14094:82;16257:50:21;1123:14094:82;16257:50:21;;;:::i;16035:83::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1824:424:25;1865:13;;;;;;1123:14094:82;1896:3:25;1123:14094:82;;1880:14:25;;;;;1932:6;;;;:::i;:::-;1123:14094:82;1973:10:25;;;;;:::i;:::-;1123:14094:82;;;;2018:12:25;1123:14094:82;;;;;;2060:16:25;;;1123:14094:82;;1896:3:25;1123:14094:82;;;2018:12:25;1123:14094:82;;;;;;;1896:3:25;:::i;:::-;1865:13;;1123:14094:82;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:82;;;;-1:-1:-1;;;1123:14094:82;;;;;;;1880:14:25;;;;;;;;;1824:424;;;;1658:156;1701:13;;1123:14094:82;1701:13:25;;;;;;1732:3;1123:14094:82;;1716:14:25;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:82;1768:6:25;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;1658:156;;4184:60:21;1123:14094:82;;;;;;3873:18:21;1123:14094:82;;;;;929:10:29;1123:14094:82;;;;4163:153:21;1123:14094:82;;;;;;4184:60:21;;;;1123:14094:82;;;;;;-1:-1:-1;;1123:14094:82;;;;;;1372:29;1123:14094;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;3873:18:21;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;1303:62:12;;:::i;:::-;1123:14094:82;2881:8;1123:14094;;2877:41;;8351:22;1123:14094;8375:11;;1123:14094;;;-1:-1:-1;;;;;1123:14094:82;8375:11;:::i;2877:41::-;1123:14094;;-1:-1:-1;;;2898:20:82;;1123:14094;;2898:20;1123:14094;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;:::i;:::-;1303:62:12;;;:::i;:::-;1123:14094:82;2881:8;1123:14094;;2877:41;;1123:14094;;;3171:12;1123:14094;;;3171:29;1123:14094;;;3171:29;1123:14094;;3170:30;3166:70;;-1:-1:-1;;;;;1123:14094:82;;13268:23;13264:60;;1123:14094;;;13380:23;1123:14094;;;;;;;1558:3;1123:14094;;;;;;1558:3;1123:14094;;;;;;;-1:-1:-1;;;;;13373:68:82;1123:14094;;13373:68;;:::i;1123:14094::-;;;;;;;;;;;;13264:60;1123:14094;;-1:-1:-1;;;13300:24:82;;1123:14094;;13300:24;3166:70;1123:14094;;;;3209:27;;;;;;1123:14094;3209:27;;1123:14094;3209:27;1123:14094;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;1558:3;1123:14094;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;10202:16;1123:14094;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;1033:12:25;1123:14094:82;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;3301:14:18;3347:34;;;;;;1123:14094:82;3346:108:18;;;;1123:14094:82;;;;-1:-1:-1;;1123:14094:82;;;;;;;3562:65:18;;1123:14094:82;-1:-1:-1;1123:14094:82;;-1:-1:-1;;;;;1123:14094:82;3708:22;3704:59;;-1:-1:-1;;;;;1123:14094:82;;;;;;;3864:12;1123:14094;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3864:12;1123:14094;;-1:-1:-1;;;;;1123:14094:82;;;;;3886:16;1123:14094;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3886:16;1123:14094;;3912:16;1123:14094;;;;;;;5366:69:18;1123:14094:82;;;;;;5366:69:18;;;:::i;:::-;;:::i;:::-;1195:12:12;929:10:29;1195:12:12;:::i;:::-;1123:14094:82;;;:::i;:::-;;5366:69:18;1123:14094:82;;;;;;5366:69:18;;;:::i;:::-;1123:14094:82;;-1:-1:-1;;;;;1123:14094:82;;;;;8623:13:21;1123:14094:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:21;1123:14094:82;;5366:69:18;1123:14094:82;;;;;;5366:69:18;;;:::i;:::-;;;;:::i;:::-;12807:34:82;1123:14094;;-1:-1:-1;;;;;;1123:14094:82;;;-1:-1:-1;;;;;1123:14094:82;;;;1694:2;12851:38;1123:14094;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;;;;;;3314:35:27;;;;1123:14094:82;;;;-1:-1:-1;;;1123:14094:82;3292:57:27;1123:14094:82;;;4330:252;;1123:14094;;4710:8;1123:14094;;4710:8;:::i;:::-;3647:99:18;;1123:14094:82;3647:99:18;1123:14094:82;;;;;;;3721:14:18;1123:14094:82;;;;;;3721:14:18;1123:14094:82;4330:252;-1:-1:-1;;;;;1123:14094:82;;;;;4471:15;1123:14094;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;;;;4528:43;;;4330:252;;;1123:14094;;;;-1:-1:-1;1123:14094:82;;;;;;;;;;8623:13:21;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:21;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:21;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;3886:16;1123:14094;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3886:16;1123:14094;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3886:16;1123:14094;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;;-1:-1:-1;1123:14094:82;;;;;3864:12;1123:14094;;;;;-1:-1:-1;1123:14094:82;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;3864:12;1123:14094;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3864:12;1123:14094;;;;-1:-1:-1;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;-1:-1:-1;1123:14094:82;;;3562:65:18;-1:-1:-1;;1123:14094:82;;;;;3562:65:18;;;1123:14094:82;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;3346:108:18;3426:4;;1713:19:28;:23;3387:66:18;;3346:108;3387:66;1123:14094:82;;;;;3436:17:18;3346:108;;3347:34;1123:14094:82;;;;;3365:16:18;3347:34;;1123:14094:82;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;;;929:10:29;13309:17:21;;1123:14094:82;;929:10:29;1123:14094:82;;13382:18:21;1123:14094:82;;;;;;;;;;13382:46:21;1123:14094:82;;;;;;;;;;;;;;;;;;;13382:46:21;1123:14094:82;;;;;;;13443:41:21;1123:14094:82;929:10:29;13443:41:21;;1123:14094:82;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;1337:29;;1123:14094;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;1513:6:12;1123:14094:82;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;1303:62:12;;:::i;:::-;9274:15:82;1123:14094;;-1:-1:-1;;1123:14094:82;9285:4;1123:14094;;;9321:10;9304:28;-1:-1:-1;;9304:28:82;1123:14094;;;;;;;-1:-1:-1;;1123:14094:82;;;;1303:62:12;;:::i;1123:14094:82:-;;;;;;-1:-1:-1;;1123:14094:82;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;;;929:10:29;1080:23:24;;:66;;;;1123:14094:82;1059:159:24;;;:::i;:::-;12266:18:21;;12258:66;12266:18;;12258:66;:::i;:::-;12334:81;1123:14094:82;;;;12342:28:21;12334:81;:::i;:::-;1123:14094:82;;;;;;:::i;:::-;;1658:156:25;;1123:14094:82;;1896:3:25;1123:14094:82;;1880:14:25;;;;;1932:6;;;;:::i;:::-;1123:14094:82;1973:10:25;;;;:::i;:::-;1123:14094:82;;;;;2018:12:25;1123:14094:82;;;;;;;;2060:16:25;;;;1123:14094:82;;;1896:3:25;1123:14094:82;;;;;;;;;;;;;1896:3:25;:::i;:::-;1865:13;;1123:14094:82;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:82;;;;-1:-1:-1;;;1123:14094:82;;;;;;;1880:14:25;;;;1123:14094:82;12581:3:21;1123:14094:82;;12565:14:21;;;;;12613:6;;12581:3;12613:6;;;:::i;:::-;1123:14094:82;12650:10:21;;;;:::i;:::-;1123:14094:82;;;;;12697:9:21;1123:14094:82;;;;;;;;;;;;;;;;;12738:21:21;12730:70;12738:21;;;;12730:70;:::i;:::-;1123:14094:82;;;;;;;;;;;;;;;;;12581:3:21;:::i;:::-;12550:13;;12565:14;;;-1:-1:-1;;;;;;;;;;;12924:55:21;1123:14094:82;12565:14:21;1123:14094:82;;929:10:29;;;;12924:55:21;;;:::i;:::-;;;;1123:14094:82;;;;:::i;1658:156:25:-;1701:13;1123:14094:82;1701:13:25;;;1732:3;1123:14094:82;;1716:14:25;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:82;1768:6:25;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;1658:156;;1080:66:24;1123:14094:82;;;;3873:18:21;1123:14094:82;;;;;929:10:29;1123:14094:82;;;;1059:159:24;1123:14094:82;;;;;;1080:66:24;;;;1123:14094:82;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;1033:12:25;1123:14094:82;;;;;;;1229:44:25;;1123:14094:82;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;3146:29:21;1123:14094:82;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3347:3:21;1123:14094:82;;3326:19:21;;;;;3347:3;;3385:30;-1:-1:-1;;;;;3395:11:21;1123:14094:82;3395:11:21;;:::i;:::-;1123:14094:82;;3408:6:21;;;;:::i;:::-;1123:14094:82;3385:30:21;;:::i;:::-;3366:49;;;;:::i;:::-;1123:14094:82;3347:3:21;:::i;:::-;3311:13;;3326:19;;;;1123:14094:82;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;1513:6:12;1123:14094:82;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;:::i;:::-;1303:62:12;;:::i;:::-;1123:14094:82;2881:8;1123:14094;;2877:41;;8154:24;1123:14094;8154:24;;;:::i;1123:14094::-;;;;;;-1:-1:-1;;1123:14094:82;;;;-1:-1:-1;;;;;1123:14094:82;;:::i;:::-;;;;9863:15;1123:14094;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;2881:8;1123:14094;;2877:41;;1123:14094;;;5618:44;1123:14094;;;;:::i;:::-;;;;;:::i;:::-;5618:44;;:::i;1123:14094::-;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;;;929:10:29;4675:20:21;:60;;;;1123:14094:82;4654:153:21;;;:::i;:::-;6817:81;1123:14094:82;;;;6825:28:21;6817:81;:::i;:::-;1123:14094:82;;;6916:16:21;6908:66;6916:16;;6908:66;:::i;:::-;1123:14094:82;;;1662:18:25;1658:156;;1123:14094:82;1824:424:25;;1123:14094:82;;7134:3:21;1123:14094:82;;7118:14:21;;;;;7166:6;;7134:3;7166:6;;;:::i;:::-;1123:14094:82;7203:10:21;;;;;:::i;:::-;1123:14094:82;;;;;7250:9:21;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;7291:21:21;7283:76;7291:21;;;;7283:76;:::i;:::-;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7471:27:21;1123:14094:82;;;;;;7471:27:21;:::i;7134:3::-;7103:13;;7118:14;;;;;;;;;1123:14094:82;;;;-1:-1:-1;;;;;;;;;;;1123:14094:82;;;;;;929:10:29;;7524:47:21;929:10:29;;7524:47:21;;;:::i;:::-;;;;1713:19:28;;16774:580:21;;1123:14094:82;16774:580:21;1123:14094:82;;;;;;;;;;;16813:90:21;;;;929:10:29;1123:14094:82;16813:90:21;;1123:14094:82;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;16813:90:21;1123:14094:82;;16813:90:21;;;1123:14094:82;16813:90:21;1123:14094:82;16813:90:21;;1123:14094:82;;16813:90:21;;;16774:580;-1:-1:-1;16809:535:21;;;;1123:14094:82;16809:535:21;;:::i;:::-;;;;;;;;1123:14094:82;16809:535:21;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;1123:14094:82;;-1:-1:-1;;;17213:14:21;;1123:14094:82;;17213:14:21;;1123:14094:82;;;;;;;;;;;:::i;16809:535:21:-;-1:-1:-1;;;;;;1123:14094:82;16978:168:21;16809:535;16978:168;1123:14094:82;;-1:-1:-1;;;17077:50:21;;1123:14094:82;17077:50:21;1123:14094:82;17077:50:21;;;:::i;16813:90::-;;;;;1123:14094:82;16813:90:21;;;;;;;;;:::i;:::-;;;;;1824:424:25;1865:13;;;;1123:14094:82;1865:13:25;;;;;;1896:3;1123:14094:82;;1880:14:25;;;;;1932:6;;;;:::i;:::-;1123:14094:82;1973:10:25;;;;:::i;:::-;1123:14094:82;;;;;;2018:12:25;1123:14094:82;;;;;;2060:16:25;;;;1123:14094:82;;1896:3:25;1123:14094:82;;;;2018:12:25;1123:14094:82;;;;;;;;;1896:3:25;:::i;:::-;1865:13;;1123:14094:82;;;;-1:-1:-1;;;1123:14094:82;-1:-1:-1;;;;;;;;;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;1880:14:25;;;;;;;;;;;;1824:424;;1658:156;1701:13;;;;;;;;;1123:14094:82;1732:3:25;1123:14094:82;;1716:14:25;;;;;1779:10;;1768:6;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:82;1768:6:25;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;;1658:156;;4675:60:21;1123:14094:82;;;;;;3873:18:21;1123:14094:82;;;;;929:10:29;1123:14094:82;;;;4654:153:21;1123:14094:82;;;;;;4675:60:21;;;;1123:14094:82;;;;;;;:::i;:::-;;;2881:8;1123:14094;;2877:41;;1123:14094;;5387:7;1123:14094;;;;;;;:::i;:::-;5225:1;1123:14094;;;;;;;;;;;;;;:::i;:::-;5225:1;1123:14094;;;;;;;;5290:22;;;;:::i;:::-;1123:14094;5322:20;;;:::i;:::-;1123:14094;5387:7;:::i;:::-;1123:14094;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;2122:17:27;1123:14094:82;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;;;2163:30:27;2159:90;;1123:14094:82;-1:-1:-1;;;;;1123:14094:82;2296:23:27;;1123:14094:82;;;;;;;;;;;;;;;;;;;2756:5:27;1123:14094:82;;;;;;;;;;;;;;;2159:90:27;1123:14094:82;;;;;;:::i;:::-;2219:19:27;1123:14094:82;;;;;;;;;;;;2159:90:27;;1123:14094:82;;;;;;-1:-1:-1;;1123:14094:82;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;:::i;:::-;1303:62:12;;;;:::i;:::-;1123:14094:82;2881:8;1123:14094;;2877:41;;1123:14094;;;3171:12;1123:14094;;;;;;;3171:29;1123:14094;;;3171:29;1123:14094;;3170:30;3166:70;;1123:14094;;;;;;;;;;8933:31;1123:14094;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9060:24;;;1123:14094;;;;;;-1:-1:-1;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:70;1123:14094;;-1:-1:-1;;;3209:27:82;;1123:14094;3209:27;;1123:14094;;;;;3209:27;1123:14094;;;;;;-1:-1:-1;;1123:14094:82;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;1303:62:12;;:::i;:::-;1123:14094:82;2881:8;1123:14094;;2877:41;;11446:15;;11442:51;;11507:30;;11503:67;;11660:16;1123:14094;11660:16;1123:14094;;11660:16;:::i;:::-;1123:14094;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;11832:40;;;;1123:14094;;;;11832:40;;1123:14094;;;;;;;11808:12;1123:14094;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11917:24;1123:14094;;;;;11882:23;1123:14094;;;;;;;1558:3;1123:14094;;;;;;1558:3;1123:14094;;;;;;;;;11995:59;1946:3;1123:14094;-1:-1:-1;;;;;12197:71:82;1123:14094;;11995:59;;;:::i;:::-;1123:14094;-1:-1:-1;;;;;;;;;;;1123:14094:82;;;;;;;;;;;;;;;:::i;:::-;12159:23;;;1513:6:12;1123:14094:82;;;;;;;;;;;1946:3;;;;1123:14094;1946:3;;;;:::i;:::-;12197:71;;;1123:14094;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11442:51;1123:14094;;-1:-1:-1;;;11470:23:82;;1123:14094;;11470:23;1123:14094;;;;;;;;;;;;;;;;;10419:12;1123:14094;;;;;;;10419:31;1123:14094;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;10467:26;:59;;;;;1123:14094;;;;;;;;;;;;;:::i;10467:59::-;1123:14094;;;;;;;;2440:4:21;1123:14094:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10467:59;;;1123:14094;;;;;2440:4:21;1123:14094:82;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;-1:-1:-1;1123:14094:82;;-1:-1:-1;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1303:62:12;;;:::i;:::-;1123:14094:82;2881:8;1123:14094;;2877:41;;-1:-1:-1;;;;;1123:14094:82;;7727:21;;7723:58;;1123:14094;7934:41;1123:14094;;;;7883:15;1123:14094;;7883:36;1123:14094;;;;;;;;;;;;;;;;;;;7883:36;1123:14094;;;;;;;7934:41;1123:14094;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;1304:27;;1123:14094;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10775:46:82;;;:97;;;;1123:14094;10775:150;;;;1123:14094;;;;;;;;;;10775:150;-1:-1:-1;;;1810:52:27;;;-1:-1:-1;1810:92:27;;;;10775:150:82;;;;;1810:92:27;-1:-1:-1;;;1759:52:21;;;-1:-1:-1;1759:131:21;;;;1810:92:27;1759:183:21;;;;1810:92:27;;;;;1759:183:21;-1:-1:-1;;;1168:51:31;;-1:-1:-1;1759:183:21;;;:131;-1:-1:-1;;;1827:63:21;;;-1:-1:-1;1759:131:21;;10775:97:82;-1:-1:-1;;;10825:47:82;;;-1:-1:-1;10775:97:82;;1123:14094;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;1599:130:12;1513:6;1123:14094:82;-1:-1:-1;;;;;1123:14094:82;929:10:29;1662:23:12;1123:14094:82;;1599:130:12:o;1123:14094:82:-;;;;;;;;;;;;;;;;;;;;;;;;;2666:187:12;2758:6;1123:14094:82;;-1:-1:-1;;;;;1123:14094:82;;;-1:-1:-1;;;;;;1123:14094:82;;;;;;;;;;2806:40:12;-1:-1:-1;;2806:40:12;2666:187::o;2593:227:21:-;-1:-1:-1;;;;;1123:14094:82;;2706:21:21;;1123:14094:82;;2725:1:21;1123:14094:82;2791:9:21;1123:14094:82;;;2725:1:21;1123:14094:82;;2725:1:21;1123:14094:82;;;;2725:1:21;1123:14094:82;;2593:227:21;:::o;1123:14094:82:-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;;1123:14094:82;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;:::o;17366:193:21:-;1123:14094:82;;;;;;:::i;:::-;17499:1:21;1123:14094:82;;;;;;;;17511:18:21;;;:::i;:::-;1123:14094:82;17366:193:21;:::o;1123:14094:82:-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;5941:1549;;;-1:-1:-1;;;;;1123:14094:82;;;;5941:1549;;6289:23;;6285:60;;1513:6:12;1123:14094:82;;6359:10;:21;;:53;;;5941:1549;6355:94;;1123:14094;;13755:21;13751:46;;1123:14094;;;;13811:35;13807:69;;1123:14094;;1558:3;;13890:33;;;;13886:97;;13999:13;1123:14094;13999:13;1123:14094;;14014:20;;;;;14055:12;;;;:::i;:::-;1123:14094;-1:-1:-1;;1123:14094:82;;;;;;;14071:16;;;;:::i;:::-;1123:14094;-1:-1:-1;14055:32:82;14051:87;;1123:14094;;13999:13;;14051:87;14125:12;1123:14094;14125:12;;;:::i;:::-;1123:14094;;;14096:42;;;;;;;;;1123:14094;14096:42;1123:14094;;;;;;;;;;;;14014:20;;;;;;;;1123:14094;6509:817;6514:13;1123:14094;;6529:20;;;;;6584:12;;;;:::i;:::-;1123:14094;;;;;6615:12;1123:14094;;;;;;;6615:28;1123:14094;;;6615:28;1123:14094;;6614:29;6610:68;;6696:11;;;;:::i;:::-;1123:14094;6696:16;6692:49;;1123:14094;;;6870:16;1123:14094;;;;6870:39;1123:14094;;;;6898:11;;;;:::i;:::-;1123:14094;6870:39;;:::i;:::-;1123:14094;;;;;;;;;;6992:32;;;6988:104;;-1:-1:-1;1123:14094:82;;;;;;;;;;;;;;;;;6514:13;;6988:104;1123:14094;;;;;;7033:59;;;;;;;;;1123:14094;;;;;;;;;7033:59;6692:49;1123:14094;;-1:-1:-1;;;6721:20:82;;;;;6610:68;1123:14094;;-1:-1:-1;;;6652:26:82;;;;;1123:14094;;;;;6652:26;6529:20;;;;;;;;1123:14094;;;;;;;;:::i;:::-;;;;10313:81:21;1123:14094:82;;;;10321:28:21;10313:81;:::i;:::-;1123:14094:82;1732:3:25;1123:14094:82;;1716:14:25;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:82;1768:6:25;;;;:::i;:::-;1123:14094:82;;;1755:12:25;1123:14094:82;;1755:34:25;1123:14094:82;;;;;;1755:34:25;:::i;1732:3::-;1701:13;;1716:14;;;;;1123:14094:82;10560:3:21;1123:14094:82;;10544:14:21;;;;;10604:10;;10560:3;10604:10;;;:::i;:::-;1123:14094:82;10589:6:21;;;;:::i;:::-;1123:14094:82;;;;10579:9:21;1123:14094:82;;;;;;;;;;10579:35:21;1123:14094:82;;;;;;10579:35:21;:::i;10560:3::-;10529:13;;10544:14;;;;;;;1123:14094:82;;;;-1:-1:-1;;;;;;;;;;;6359:10:82;10640:53:21;;;;;;;:::i;:::-;;;;1713:19:28;16774:580:21;;10524:101;5941:1549:82;;;;;;:::o;16774:580:21:-;1123:14094:82;;;;;;;;;;;;;;;;;;16813:90:21;;;;6359:10:82;16813:90:21;;;1123:14094:82;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;16813:90:21;;;;1123:14094:82;;16813:90:21;;;16774:580;-1:-1:-1;16809:535:21;;;;1123:14094:82;16809:535:21;;:::i;:::-;;;;;;;;;;16774:580;;;;;;;;16809:535;1123:14094:82;-1:-1:-1;;;17267:62:21;;1123:14094:82;17267:62:21;16813:90;17267:62;;;:::i;16809:535::-;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;1123:14094:82;;-1:-1:-1;;;17213:14:21;;1123:14094:82;16813:90:21;17213:14;;1123:14094:82;;;;;;;;;;;:::i;16809:535:21:-;-1:-1:-1;;;;;;1123:14094:82;16982:71:21;16978:168;;16809:535;;;16978:168;1123:14094:82;-1:-1:-1;;;17077:50:21;;1123:14094:82;17077:50:21;16813:90;17077:50;;;:::i;16813:90::-;;;;;1123:14094:82;16813:90:21;;;;;;;;;:::i;:::-;;;;;13886:97:82;1123:14094;;;;;13932:51;;;;;;;;;1123:14094;;;;;13932:51;13807:69;1123:14094;;-1:-1:-1;;;13855:21:82;;;;;13751:46;1123:14094;;-1:-1:-1;;;13785:12:82;;;;;6355:94;1123:14094;;-1:-1:-1;;;6421:28:82;;6359:10;6421:28;;;1123:14094;;;6421:28;6359:53;:10;;6310:1;1123:14094;6385:15;1123:14094;;;;6310:1;1123:14094;;;6384:28;6359:53;;1123:14094;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;;;-1:-1:-1;;1123:14094:82;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;3790:351:27;;-1:-1:-1;;;;;1123:14094:82;3907:33:27;3899:88;2756:5;3907:33;;;3899:88;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;;;4005:22:27;;1123:14094:82;;;;;;;;:::i;:::-;;;4099:35:27;;;;1123:14094:82;;;-1:-1:-1;1123:14094:82;;;4070:17:27;1123:14094:82;;;;;;;;;;;-1:-1:-1;;;;;;1123:14094:82;;;;;;3790:351:27:o;1123:14094:82:-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;12499:484;-1:-1:-1;;;;;1123:14094:82;;;;12499:484;12596:23;;12592:60;;1558:3;12666:36;;12662:135;;1123:14094;;;;;;12807:34;;1123:14094;;;;;;;;;12851:38;1123:14094;1558:3;1123:14094;;;;;;1558:3;1123:14094;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;3123:88:27;2756:5;3131:33;;;3123:88;:::i;:::-;3314:35;1123:14094:82;;;;;:::i;:::-;;;;3314:35:27;1123:14094:82;3292:57:27;1123:14094:82;;-1:-1:-1;;;;;;1123:14094:82;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;3292:57:27;1123:14094:82;;;;;;;;;;;;12499:484::o;12662:135::-;1123:14094;;-1:-1:-1;;;12725:61:82;;;;;1123:14094;;;1558:3;1123:14094;;;;;;12725:61","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","burn(address,uint256,uint256)":"f5298aca","burnBatch(address,uint256[],uint256[])":"6b20c454","createToken(string,uint256,address)":"1542bb95","disableContract()":"894ba833","disabled()":"ee070805","exists(uint256)":"4f558e79","init(string,string,string,address,address)":"a7eae21c","isApprovedForAll(address,address)":"e985e9c5","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintBatchTo(address,uint256[],uint256[])":"3512639c","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","royaltyInfo(uint256,uint256)":"2a55205a","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","setDefaultRoyaltyPercentage(uint256)":"e27a41bf","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","setRoyaltyReceiverForToken(uint256,address)":"e2200a0b","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","totalSupply(uint256)":"bd85b039","transferOwnership(address)":"f2fde38b","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RoyaltyPercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"royaltyReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"burnBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_royaltyReceiver\",\"type\":\"address\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBatchTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_percentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRoyaltyPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setRoyaltyReceiverForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Clone-safe upgradeable-style implementation used behind minimal proxies. Token ids start at 1.\",\"errors\":{\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported percentage.\",\"supplied\":\"Percentage supplied by the caller.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"params\":{\"tokenId\":\"Token id that is not greater than the previous token id.\"}}]},\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,address,uint256,string)\":{\"params\":{\"creator\":\"Collection owner reported as creator when the token id is created.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"royaltyReceiver\":\"ERC2981 royalty receiver configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createToken(string,uint256,address)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_royaltyReceiver\":\"ERC2981 royalty receiver for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"exists(uint256)\":{\"details\":\"Indicates whether any token exist with a given id, or not.\"},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and ERC2981 royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintBatchTo(address,uint256[],uint256[])\":{\"details\":\"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.\",\"params\":{\"_amounts\":\"Quantities to mint for each token id.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenIds\":\"Existing token ids to mint.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"Minted token id.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"details\":\"Tokens created before this update keep their token-specific royalty percentage.\",\"params\":{\"_percentage\":\"New royalty percentage, expressed as whole percentage points.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"details\":\"Token-specific royalty receivers take precedence over this value.\",\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"details\":\"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.\",\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"setRoyaltyReceiverForToken(uint256,address)\":{\"details\":\"The token's existing royalty percentage is preserved.\",\"params\":{\"_receiver\":\"New token-specific royalty receiver.\",\"_tokenId\":\"Token id whose royalty receiver is updated.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"totalSupply(uint256)\":{\"details\":\"Total amount of tokens in with a given id.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"stateVariables\":{\"MAX_BATCH_SIZE\":{\"return\":\"Maximum supported batch item count.\",\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"disabled\":{\"return\":\"True when disabled.\",\"returns\":{\"_0\":\"True when disabled.\"}},\"name\":{\"return\":\"Collection name.\",\"returns\":{\"_0\":\"Collection name.\"}},\"symbol\":{\"return\":\"Collection symbol.\",\"returns\":{\"_0\":\"Collection symbol.\"}}},\"title\":\"RareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"BatchLengthMismatch()\":[{\"notice\":\"Reverted when parallel batch arrays have different lengths.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"notice\":\"Reverted when the default royalty percentage is above 100%.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,address,uint256,string)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch mint operations.\"},\"createToken(string,uint256,address)\":{\"notice\":\"Creates a new token type.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintBatchTo(address,uint256[],uint256[])\":{\"notice\":\"Mints existing token ids to a receiver.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints one existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"renounceOwnership()\":{\"notice\":\"Prevents the collection owner, and therefore creator proxy, from becoming the zero address.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"notice\":\"Updates the fallback ERC2981 royalty percentage.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the fallback ERC2981 royalty receiver.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes collection-wide minter approval for an address.\"},\"setRoyaltyReceiverForToken(uint256,address)\":{\"notice\":\"Updates the ERC2981 royalty receiver for one token id.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Basic RARE Protocol ERC1155 collection with creator and royalty support.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/RareERC1155.sol\":\"RareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7\",\"dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol\":{\"keccak256\":\"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98\",\"dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8\",\"dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol\":{\"keccak256\":\"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9\",\"dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/ERC1155/RareERC1155.sol\":{\"keccak256\":\"0x580c03eaabe68708b30d0627a8ea44ebb7de24150a0ad6047266ef44cf2731a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7320879b3bb31bc0226013499865f7cc605f2845b4fb6700daa94cf5e928622a\",\"dweb:/ipfs/QmesNVNev1i2iR57BFFAKa64xeBLqTTUqVBECDgYd46MT4\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[],"type":"error","name":"BatchLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"RoyaltyPercentageTooHigh"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"address","name":"royaltyReceiver","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"values","type":"uint256[]","indexed":false}],"type":"event","name":"TransferBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"TransferSingle","anonymous":false},{"inputs":[{"internalType":"string","name":"value","type":"string","indexed":false},{"internalType":"uint256","name":"id","type":"uint256","indexed":true}],"type":"event","name":"URI","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"burnBatch"},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"address","name":"_royaltyReceiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"mintBatchTo"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyPercentage"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyReceiverForToken"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"createToken(string,uint256,address)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_royaltyReceiver":"ERC2981 royalty receiver for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"exists(uint256)":{"details":"Indicates whether any token exist with a given id, or not."},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and ERC2981 royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedForAll(address,address)":{"details":"See {IERC1155-isApprovedForAll}."},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintBatchTo(address,uint256[],uint256[])":{"details":"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.","params":{"_amounts":"Quantities to mint for each token id.","_receiver":"Address that receives the minted tokens.","_tokenIds":"Existing token ids to mint."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"Minted token id."}},"owner()":{"details":"Returns the address of the current owner."},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"See {IERC1155-safeBatchTransferFrom}."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"See {IERC1155-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC1155-setApprovalForAll}."},"setDefaultRoyaltyPercentage(uint256)":{"details":"Tokens created before this update keep their token-specific royalty percentage.","params":{"_percentage":"New royalty percentage, expressed as whole percentage points."}},"setDefaultRoyaltyReceiver(address)":{"details":"Token-specific royalty receivers take precedence over this value.","params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"details":"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.","params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"setRoyaltyReceiverForToken(uint256,address)":{"details":"The token's existing royalty percentage is preserved.","params":{"_receiver":"New token-specific royalty receiver.","_tokenId":"Token id whose royalty receiver is updated."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"totalSupply(uint256)":{"details":"Total amount of tokens in with a given id."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch mint operations."},"createToken(string,uint256,address)":{"notice":"Creates a new token type."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintBatchTo(address,uint256[],uint256[])":{"notice":"Mints existing token ids to a receiver."},"mintTo(address,uint256,uint256)":{"notice":"Mints one existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"renounceOwnership()":{"notice":"Prevents the collection owner, and therefore creator proxy, from becoming the zero address."},"setDefaultRoyaltyPercentage(uint256)":{"notice":"Updates the fallback ERC2981 royalty percentage."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the fallback ERC2981 royalty receiver."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes collection-wide minter approval for an address."},"setRoyaltyReceiverForToken(uint256,address)":{"notice":"Updates the ERC2981 royalty receiver for one token id."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/RareERC1155.sol":"RareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol":{"keccak256":"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856","urls":["bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7","dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"keccak256":"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b","urls":["bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce","dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol":{"keccak256":"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8","urls":["bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83","dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol":{"keccak256":"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7","urls":["bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98","dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"keccak256":"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e","urls":["bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8","dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"keccak256":"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448","urls":["bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9","dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol":{"keccak256":"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f","urls":["bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9","dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a","urls":["bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7","dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/ERC1155/RareERC1155.sol":{"keccak256":"0x580c03eaabe68708b30d0627a8ea44ebb7de24150a0ad6047266ef44cf2731a3","urls":["bzz-raw://7320879b3bb31bc0226013499865f7cc605f2845b4fb6700daa94cf5e928622a","dweb:/ipfs/QmesNVNev1i2iR57BFFAKa64xeBLqTTUqVBECDgYd46MT4"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":82} \ No newline at end of file diff --git a/abis/RareERC1155CheckoutExecutionModule.json b/abis/RareERC1155CheckoutExecutionModule.json new file mode 100644 index 0000000..cfdc2a9 --- /dev/null +++ b/abis/RareERC1155CheckoutExecutionModule.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_CHECKOUT_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"checkout","inputs":[{"name":"_items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[{"name":"execution","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","components":[{"name":"summary","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","components":[{"name":"filledCount","type":"uint256","internalType":"uint256"},{"name":"skippedCount","type":"uint256","internalType":"uint256"},{"name":"ethSpent","type":"uint256","internalType":"uint256"},{"name":"ethRefunded","type":"uint256","internalType":"uint256"}]},{"name":"items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","components":[{"name":"itemIndex","type":"uint256","internalType":"uint256"},{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"filled","type":"bool","internalType":"bool"},{"name":"failureStage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","internalType":"bytes4"},{"name":"failureData","type":"bytes","internalType":"bytes"},{"name":"totalPaid","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"payable"},{"type":"function","name":"executeCheckoutItem","inputs":[{"name":"_item","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"_remainingEth","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_grossAmount","type":"uint256","internalType":"uint256"},{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[{"name":"totalPaid","type":"uint256","internalType":"uint256"},{"name":"newRemainingEth","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"executeCheckoutPayout","inputs":[{"name":"_item","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"_seller","type":"address","internalType":"address"},{"name":"_grossAmount","type":"uint256","internalType":"uint256"},{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x60a0806040523461002357306080526146d390816100298239608051816133710152f35b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c9081632c0c49ee1461006a5750806359a8a40a14610065578063a3eaf4d914610060578063cfdbf2541461005b5763d65852a61461005657600080fd5b6103fc565b6103e0565b6103c4565b610326565b60203660031901126100e9576004356001600160401b0381116100e5576100e19161009c6100d59236906004016100ec565b916100a760c0604052565b604051906100b482610499565b8082528060208301528060408301526060820152608052606060a052610586565b60405191829182610193565b0390f35b5080fd5b80fd5b9181601f8401121561011c578235916001600160401b03831161011c576020808501948460051b01011161011c57565b600080fd5b634e487b7160e01b600052602160045260246000fd5b6006111561014157565b610121565b9060068210156101415752565b919082519283825260005b84811061017f575050826000602080949584010152601f8019910116010190565b60208183018101518483018201520161015e565b9060209182815260c09283820191835193845183830152828501516040908184015283818701516060978891828701520151926080938486015201519660a0908180860152885180975260e0918286019487848a60051b8901019b01996000975b8a891061020a5750505050505050505050505090565b909192939495969798999a9b8a806001928f60df19868303018d5251908151815261023d838301518483019060ff169052565b818c01516001600160a01b0316818d01528187015181880152878201516001600160a01b031688820152818901516001600160a01b0316818a0152818a0151818b01528a8201518b820152610100808301511515908201526102a86101208084015190830190610146565b610140828101516001600160e01b031916908201526102d861016080840151906101a08091850152830190610153565b91610180809101519101529e0199019901979a9998969594939291906101f4565b908161010091031261011c5790565b6001600160a01b0381160361011c57565b359061032482610308565b565b60e036600319011261011c576001600160401b0360043581811161011c576103529036906004016102f9565b6044359061035f82610308565b60a43583811161011c576103779036906004016100ec565b9060c43594851161011c576103936103a79536906004016100ec565b94909360843591606435916024359061098f565b60408051928352602083019190915290f35b600091031261011c57565b3461011c57600036600319011261011c57602060405160328152f35b3461011c57600036600319011261011c576020604051604b8152f35b60c036600319011261011c576001600160401b0360043581811161011c576104289036906004016102f9565b6024359061043582610308565b60843583811161011c5761044d9036906004016100ec565b9060a43594851161011c576104696104819536906004016100ec565b94909361047461336e565b6064359160443591610e88565b005b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b038211176104b457604052565b610483565b6001600160401b0381116104b457604052565b60e081019081106001600160401b038211176104b457604052565b606081019081106001600160401b038211176104b457604052565b602081019081106001600160401b038211176104b457604052565b604081019081106001600160401b038211176104b457604052565b90601f801991011681019081106001600160401b038211176104b457604052565b604051906101a082018281106001600160401b038211176104b457604052565b60405190610324826104e7565b9061058f61336e565b610598816145ac565b6105a181610828565b60a09081526105af82610878565b906000923494845b8281106106c157505050505050806060608051015280610639575b506080517ff769e48349f9b4903ef362e95411b2c4778d3bdaf9dc87b0d25f29f2813ea1638151916020810151610631606060408401519301516040519384933397859094939260609260808301968352602083015260408201520152565b0390a2608090565b73__$11854c5905aa23948096e0e4d7059bb9de$__803b1561011c57604051637baf92a360e01b815260008051602061467e833981519152600482015260006024820181905233604483015260648201939093529190829060849082905af480156106bc57156105d257806106b06106b6926104b9565b806103b9565b386105d2565b610983565b6106dc868689846106d78189899e9c9d9e610905565b611035565b9196901561077c575090610755610702600193996106fb848888610905565b908a61258a565b96608080516107118151610942565b9052848060a01b0361072f6060610729878b8b610905565b01610962565b161561075e575b505b61074f83885183610749838361096f565b5261096f565b506122cc565b019493946105b7565b6107746040610180840151925101918251610955565b905238610736565b97956001929150610755906020608051016107978151610942565b9052610738565b6001600160401b0381116104b45760051b60200190565b604051906101a082018281106001600160401b038211176104b457604052816101806000918281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201528261014082015260606101608201520152565b906108328261079e565b61083f6040519182610538565b8281528092610850601f199161079e565b019060005b82811061086157505050565b60209061086c6107b5565b82828501015201610855565b906108828261079e565b60409061089182519182610538565b83815280936108a2601f199161079e565b0190600092835b8381106108b7575050505050565b81519060608201918083106001600160401b038411176104b457602092845286815282878183015287858301528286010152016108a9565b634e487b7160e01b600052603260045260246000fd5b91908110156109275760051b8101359060fe198136030182121561011c570190565b6108ef565b634e487b7160e01b600052601160045260246000fd5b906001820180921161095057565b61092c565b9190820180921161095057565b3561096c81610308565b90565b80518210156109275760209160051b010190565b6040513d6000823e3d90fd5b906109a898979695949392916109a361336e565b610a39565b9091565b60ff81160361011c57565b3561096c816109ac565b90604061096c92600181528160208201520190610153565b90604061096c92600281528160208201520190610153565b90604061096c92600581528160208201520190610153565b90604061096c92600481528160208201520190610153565b90604061096c92600381528160208201520190610153565b98979695949392919060ff8a35610a4f816109ac565b1615610ad357600160ff610a628c6109b7565b1614610ac957610ac5610a9e610aac610a7a8d6109b7565b60405163bb75025d60e01b602082015260ff90911660248201529182906044820190565b03601f198101835282610538565b604051631ee0c01d60e31b8152918291600483016109c1565b0390fd5b6109a89899611590565b95929491969893908695610ae7818a610955565b986060870198610b00818c610afb8d610962565b612860565b8051610d0d575090610b89949392916020890190610b25610b2083610962565b611359565b9a610b3f60808c0135809d90600052602052604060002090565b5415158b8d610b6881610b59610b5489610962565b611392565b90600052602052604060002090565b54151592610cdd575b5050610ca1575b6001600160a01b039788908e610962565b16610c4757509089610b9c8e8d946114be565b9f7f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c9a60a09a610c2a99610bf498610c1698610bfc610c10995b610be8610be28b610962565b91613872565b60c08a01359d8e613872565b91339061311a565b8b81610c31575b5050505050505050610962565b99610962565b90604051958695339b1698013592856114cb565b0390a49190565b610c3a9761200c565b893880808080808b610c03565b9e610c109291508a907f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c9a8f9a8f998f98610c1698610bfc60a09f9b610c9c610c2a9f9d610c97610bf49f610962565b612a9e565b610bd6565b610ccc610cb98d610b59610cb487610962565b611404565b3360009081526020919091526040902090565b610cd68154610942565b9055610b78565b60c0610cfa610cb9610d0493610b59610cf58b610962565b6113cb565b9201358254610955565b90558b8d610b71565b604051631ee0c01d60e31b8152908190610ac590600483016109d9565b91908082526020809201929160005b828110610d47575050505090565b9091929382806001928735610d5b81610308565b848060a01b03168152019501910192919092610d39565b91908082526020809201929160005b828110610d8f575050505090565b90919293828060019260ff8835610da5816109ac565b16815201950193929101610d81565b97959361096c999793610e0b969260008051602061467e8339815191528b5260018060a01b03948580921660208d01521660408b015260608a015260808901521660a08701526101008060c0880152860191610d2a565b9260e0818503910152610d72565b989694909361096c9a9894602094610e79989460008051602061467e8339815191528d528c60018060a01b03978880951691015260408d01521660608b015260808a015260a08901521660c08701526101208060e0880152860191610d2a565b92610100818503910152610d72565b97969592919094939560ff610e9c8a6109b7565b1615610f6957600160ff610eaf8b6109b7565b1614610ee257610ac5610ec18a6109b7565b60405163bb75025d60e01b815260ff90911660048201529081906024820190565b979192939495969773__$11854c5905aa23948096e0e4d7059bb9de$__94610f0c60208501610962565b96610f1960608601610962565b99873b1561011c57600099608097610f4b966040519d8e9c8d9b8c9b63981e8fc560e01b8d5201359060048c01610e19565b03915af480156106bc57610f5c5750565b806106b0610324926104b9565b9791969794909493929373__$11854c5905aa23948096e0e4d7059bb9de$__94610fa16060610f9a60208701610962565b9501610962565b94863b1561011c57600098610f4b946040519b8c9a8b998a99631872482b60e31b8b5260048b01610db4565b60405190610fda82610502565b60008252565b3d1561101a573d906001600160401b0382116104b4576040519161100e601f8201601f191660200184610538565b82523d6000602084013e565b606090565b919082604091031261011c576020825192015190565b908161104d91959394956110476107b5565b50612133565b928094611059836117d8565b8051909692906001600160a01b031680611145575b50156111345750906110869160608601519185612474565b805161112657507f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c546000938493926110c8926001600160a01b031693611295565b90602082519201905af46110da610fe0565b901561110c576110f59192506020808251830101910161101f565b600161010084015291906101808201529160019190565b61111861111f916123a5565b9083612236565b9160009190565b91505061111f91508261220d565b93505050935061111f91508261220d565b6001600160a01b031660808901523861106e565b9035601e198236030181121561011c5701602081359101916001600160401b03821161011c578160051b3603831361011c57565b81835290916001600160fb1b03831161011c5760209260051b809284830137010190565b9061124b61096c9260ff81356111c6816109ac565b16835260208101356111d781610308565b6001600160a01b031660208401526112046111f460408301610319565b6001600160a01b03166040850152565b61122361121360608301610319565b6001600160a01b03166060850152565b6080810135608084015260a081013560a084015260c081013560c084015260e0810190611159565b9091610100908160e0820152019161118d565b90815180825260208080930193019160005b82811061127e575050505090565b835160ff1685529381019392810192600101611270565b8251602080850151604080870151608088015160a0909801519151632cd4520560e11b8186015260e060248201529796889692956001600160a01b03949193908516906112e7906101048a01906111b1565b9360448901526064880152608487015260a486015260231992838683030160c48701528080885193848152019701926000905b83821061133c5750505050508284030160e483015261096c92610a9e9161125e565b84518116895297820197899750938201936001919091019061131a565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5116020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5106020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5126020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5136020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d6020526040902090565b60631981019190821161095057565b9190820391821161095057565b6001600160a01b03918216815260208101929092529091166040820152606081019190915260800190565b8181029291811591840414171561095057565b818110611514575050565b60008155600101611509565b600560009182815582600182015582600282015582600382015560048101805484825580611576575b505001908154908083558161155d57505050565b60208161032494601f935220910160051c810190611509565b6115899185526020852090810190611509565b3880611549565b9498959097929691939888996115a6818a610955565b996115b8818c610afb60608c01610962565b9b8c51611779579a9b508b9a6001600160a01b036115d860608b01610962565b1661175a57506116aa969798999a6115ef916114be565b995b6002611639896116228c608061161161160c60208401610962565b61143d565b910135600052602052604060002090565b9060018060a01b0316600052602052604060002090565b0161164960c08b013582546114be565b80915515611731575b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50a546116a3908a906001600160a01b031661168f60208301610962565b908b608060c0850135940135923392612cce565b878961200c565b6116b660208301610962565b917f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d78869461172c6116e760608401610962565b6040805160808087013582526001600160a01b03938416602083015260a08701359282019290925260c090950135606086015295811695339590911693918291820190565b0390a4565b611755611750896116228c610b5961160c602060808401359301610962565b611520565b611652565b9a88999a915061177490610c9760606116aa9a9b01610962565b6115f1565b604051631ee0c01d60e31b815280610ac58f600483016109d9565b6040519060c082018281106001600160401b038211176104b457604052606060a0836000815260006020820152600060408201526000838201528260808201520152565b906117e1611794565b9082356117ed816109ac565b60ff811693841561185257611801826109ac565b6001851461183d5750611813906109ac565b6040519263bb75025d60e01b6020850152602484015260248352611836836104e7565b6000929190565b9193505061184b9150611ba9565b9192909190565b9193505061184b91506118a4565b903590601e198136030182121561011c57018035906001600160401b03821161011c57602001918160051b3603831361011c57565b9081602091031261011c575190565b6118ac611794565b90606081016118c96118c56118c083610962565b61268a565b1590565b611ab157602091828101916118e86118c56118e385610962565b612718565b611a6c5790611928916118fa84610962565b9061193261190782610962565b9260808501359360a086013595868660c0830135998360e08c950190611860565b9590943391614099565b60808101516001600160a01b03168a5296909115611a40575050505050508181015180838501528061198e575b506060915060a0810151608084015260c081015160a08401520151606082015260019161198a610fcd565b9190565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d501546119f09184916119d0906001600160a01b03165b6001600160a01b031690565b60405180809581946361fe24a960e11b8352600483019190602083019252565b03915afa9081156106bc57606093600092611a13575b505060408401523861195f565b611a329250803d10611a39575b611a2a8183610538565b810190611895565b3880611a06565b503d611a20565b611a649750611a5491929394959650610962565b611a5e3393610962565b916133b2565b916000929190565b5050611a7d61183691949294610962565b604051630f20e39960e21b958101959095526001600160a01b0316602485015283604481015b03601f198101855284610538565b611aa3939150611ac361183691610962565b60405163cd5f748960e01b60208201526001600160a01b0390911660248201529384906044820190565b6040519060a082018281106001600160401b038211176104b457604052606060808360008152600060208201526000604082015282808201520152565b9081602091031261011c5751801515810361011c5790565b6001600160a01b0391821681529116602082015260400190565b6001600160a01b039091168152602081019190915260400190565b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b90611bb2611794565b90604080840190611bd2611bc583610962565b6001600160a01b03168552565b611bde6119c483610962565b3314611fd2576060850190611bf86118c56118c084610962565b611f955760209182870196611c126118c56118e38a610962565b611f5657611c1e611aed565b50611c2888610962565b9160c0611c5b611c3788610962565b94611c4184610962565b946080810135809660a08301359586930135988994614481565b93909115611f2e57505050611c756119c46119c48b610962565b611cd186611c8289610962565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50a54611cb6906001600160a01b03166119c4565b885163e985e9c560e01b815293849283929060048401611b42565b0381855afa60009181611eff575b50611d1c575050505050611aa390611d02611cfc61183695610962565b97610962565b905196879363d65b0d6960e01b9085015260248401611b42565b96929493959615611ee6578685611d5092611d3686610962565b8751809581948293627eeac760e11b845260048401611b5c565b03915afa60009181611ec7575b50611dbe57505091611836949391611d7a610c10611aa395610962565b9051988995636906ef1760e11b90870152602486019093600093608093969560a084019760018060a01b038092168552166020840152604083015260608201520152565b92949182849a959297989a10611e8f57505050508284018051868601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50154611e3a939250859190611e18906001600160a01b03166119c4565b905190835180809681946361fe24a960e11b8352600483019190602083019252565b03915afa9182156106bc57608094600093611e70575b5050840152606081015182840152015160a082015260019161198a610fcd565b611e87929350803d10611a3957611a2a8183610538565b903880611e50565b611836965094611ead611ea7611aa3969b9997610962565b9a610962565b9051998a96636906ef1760e11b9088015260248701611b77565b611edf919250883d8a11611a3957611a2a8183610538565b9038611d5d565b5050611836949350611aa39250611cfc611d0291610962565b611f20919250883d8a11611f27575b611f188183610538565b810190611b2a565b9038611cdf565b503d611f0e565b939550939691509450611f50611f4a611f4a611a64999b610962565b92610962565b926136fd565b5050946118369250611f6a611aa391610962565b9551630f20e39960e21b928101929092526001600160a01b0390951660248201529384906044820190565b90611aa395506118369250611fa990610962565b905163cd5f748960e01b60208201526001600160a01b0390911660248201529384906044820190565b611aa39450611fe361183692610962565b905163aac1ae8b60e01b60208201526001600160a01b0390911660248201529384906044820190565b9497969795919593929360018060a01b0390817f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c541697604051966020918461206d848b019b636b2c295360e11b8d5260c060248d015260e48c01906111b1565b961660448a0152606489015260848801528060231994858982030160a48a01528381520195926000905b8382106120f557505050505092610a9e83600098996120c3948a999897858098030160c4860152610d72565b51915af46120cf610fe0565b90156120d85750565b604051631ee0c01d60e31b8152908190610ac590600483016109f1565b90919293968380600192848b3561210b81610308565b1681520198019493920190612097565b60405161212781610502565b60008152906000368137565b9061213c6107b5565b5060c0612148826109b7565b916121d461215860208301610962565b6121c461216760408501610962565b6121a861217660608701610962565b9361219861218261211b565b9961218b610559565b9b8c5260ff1660208c0152565b6001600160a01b031660408a0152565b60808581013560608a01526001600160a01b0390911690880152565b6001600160a01b031660a0860152565b60a081013582850152013560e0830152600061010083015260006101208301526000610140830152610160820152600061018082015290565b6001610120820152610160906001600160e01b031961222b84613897565b166101408201520152565b6006821015610141576101609161012082015263ffffffff60e01b61222b84613897565b9081526001600160a01b039182166020820152911660408201526060810191909152608081019190915290151560a0820152949392610120926122c7926122a59060c0890190610146565b6001600160e01b03191660e08701526101406101008701819052860190610153565b930152565b80519060208101516122de9060ff1690565b60408201519092906001600160a01b031660608301516080840151909391906001600160a01b031660a08301519094906001600160a01b03169260c08101519060e081015161010082015161233290151590565b6101208301519061234282610137565b6101408401516001600160e01b0319169261016085015194610180015195604051998a99600160a01b60019003169d60ff169c61237f998b61225a565b037f844491b54cb1a58801f9eb51fecfaf5076847131d8f6ec580232d9766e3fae4f91a4565b906123af826123c1565b916123bc57505060059190565b925090565b631ee0c01d60e31b6001600160e01b03196123db83613897565b1614801590612469575b61245a57602481015191604482015160648301928351916005861190811561244e575b5061243b5761241790516114af565b1061242c5761242583610137565b6001929190565b6000925082915061096c610fcd565b505091505060009060009061096c610fcd565b60409150141538612408565b5060009060009061096c610fcd565b5060648151106123e5565b9060ff8235612482816109ac565b1615801590612511575b6124fa576124b260c0916124bb946124a660208601610962565b90608086013592612519565b91013590610955565b818111156124f057604051635bdd08f560e01b60208201526024810191909152604481019190915261096c8160648101610a9e565b505061096c610fcd565b5050505060405161250a81610502565b6000815290565b50831561248c565b9192909260005b848110612531575050505050600090565b6001600160a01b0380612544838761096f565b5151169083161480612573575b61255d57600101612520565b9150506040925061256d9161096f565b51015190565b50826020612581838761096f565b51015114612551565b9160ff612596826109b7565b166126845760005b8281106125f957508161096c938260c06125bd60206125f39601610962565b916125d86125c9610579565b6001600160a01b039094168452565b6080810135602084015201356040820152610749838361096f565b50610942565b612614612606828661096f565b51516001600160a01b031690565b6020906126256119c4838601610962565b6001600160a01b03909116149081612669575b506126455760010161259e565b604061265860c09261266494959661096f565b51019201358251610955565b905290565b9050612675828661096f565b51015160808301351438612638565b50905090565b6001600160a01b03908116908115612711576020907f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d505541691602460405180948193632d5ad3d560e01b835260048301525afa600091816126f1575b5061096c5750600090565b61270a91925060203d8111611f2757611f188183610538565b90386126e6565b5050600190565b803b15159081612726575090565b90506040519060208083018160006301ffc9a760e01b9586845286602482015260248152612753816104e7565b51617530938685fa933d60005190866127f8575b50856127ee575b508461278b575b50505081612781575090565b61096c9150612803565b83945090600091839460405185810192835263ffffffff60e01b6024820152602481526127b7816104e7565b5192fa60005190913d836127e3575b5050816127d9575b501590388080612775565b90501515386127ce565b1015915038806127c6565b151594503861276e565b841115955038612767565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152612833816104e7565b5191617530fa6000513d82612854575b508161284d575090565b9050151590565b60201115915038612843565b918115612a93576001600160a01b038316908115612a5b5750604080516370a0823160e01b8152336004820152602092908381602481855afa60009181612a3c575b506128e2575050516364db3d5960e01b918101919091526001600160a01b03909216602483015260448201526000606482015261096c8160848101610a9e565b8481106129fd57507f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50854612940918491612924906001600160a01b03166119c4565b9084518080958194636eb1769f60e11b83523360048401611b42565b03915afa600091816129de575b5061298c5750516337a950bb60e01b918101919091526001600160a01b03909216602483015260448201526000606482015261096c8160848101610a9e565b8381106129a057505050505061096c610fcd565b90516337a950bb60e01b928101929092526001600160a01b0390931660248201526044810191909152606481019190915261096c8160848101610a9e565b6129f6919250843d8611611a3957611a2a8183610538565b903861294d565b91516364db3d5960e01b93810193909352506001600160a01b0390931660248201526044810191909152606481019190915261096c8160848101610a9e565b612a54919250853d8711611a3957611a2a8183610538565b90386128a2565b925050808210156124f0576040516310da2c1360e21b60208201526024810191909152604481019190915261096c8160648101610a9e565b50505061096c610fcd565b90918215612cc957604080516370a0823160e01b8082523060048084019190915292959294926020929091906001600160a01b0385169060008582602481865afa909181612caa575b50612b0f578888610ac5612af9610fe0565b9251631ee0c01d60e31b815292839283016109d9565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50854909290612b46906001600160a01b03166119c4565b803b1561011c578951630aed65f560e11b81526001600160a01b038816818b0190815233602082015230604082015260608101879052909160009183919082908490829060800103925af19081612c97575b50612baa578888610ac5612af9610fe0565b8851908152308882019081529091600091869184918290819060200103915afa909181612c78575b50612be4578787610ac5612af9610fe0565b949693959460009190818110612c7057612bfe92506114be565b905b808203612c0f57505050505050565b8351636ff596f360e01b938101939093526001600160a01b03909516602483015260448201949094526064810193909352610ac590612c5b84608481015b03601f198101865285610538565b51631ee0c01d60e31b815292839283016109d9565b505090612c00565b612c90919250853d8711611a3957611a2a8183610538565b9038612bd2565b806106b0612ca4926104b9565b38612b98565b612cc2919250863d8811611a3957611a2a8183610538565b9038612ae7565b915050565b95939194909285600093604098895195627eeac760e11b80885287612cf88560049d8e8401611b5c565b038860018060a01b0393848c169260209b8c9181865afa909181612fc2575b50612d3f578d8d610ac5612d29610fe0565b9251631ee0c01d60e31b81529283928301610a09565b92888410612f9557858e8b8f8b90612d636000945195869384938b85528401611b5c565b0381875afa909181612f76575b50612d82578e8e610ac5612d29610fe0565b9416803b1561011c576000878f928f838f91612dee8f8f988e9051998a988997889663eb46c45b60e01b885287019391909260e0959360018060a01b03928380921687521660208601521660408401526060830152608082015260c060a0820152600060c08201520190565b03925af19081612f63575b50612e0b578c8c610ac5612d29610fe0565b8c518281528d908d9060008c8280612e268c8e838901611b5c565b0381885afa909181612f44575b50612e445750610ac5612d29610fe0565b87938c928b9296612e62600096519788958694859485528401611b5c565b03915afa909181612f25575b50612e80578c8c610ac5612d29610fe0565b90612e928880939e9b9d9c9e946114be565b1492831593612f10575b505050612ead575050505050505050565b8551638791019960e01b958101959095526001600160a01b039788166024860152604485015286166064840152909416608482015260a4810193909352610ac590612efb8460c48101612c4d565b51631ee0c01d60e31b81529283928301610a09565b612f1b929350610955565b1415388581612e9c565b612f3d9192508a3d8c11611a3957611a2a8183610538565b9038612e6e565b612f5c9192508d803d10611a3957611a2a8183610538565b9038612e33565b806106b0612f70926104b9565b38612df9565b612f8e9192508c8d3d10611a3957611a2a8183610538565b9038612d70565b50858c610ac58f612efb8d8f898f8d612c4d9387519a8b96636906ef1760e11b9088015260248701611b77565b612fda9192508b3d8d11611a3957611a2a8183610538565b9038612d17565b602090818184031261011c578051906001600160401b03821161011c57019180601f8401121561011c5782516130168161079e565b936130246040519586610538565b818552838086019260051b82010192831161011c578301905b82821061304b575050505090565b8151815290830190830161303d565b90815180825260208080930193019160005b82811061307a575050505090565b83518552938101939281019260010161306c565b9092916040820191604081528451809352606081019260208096019060005b8181106130c75750505061096c939481840391015261305a565b82516001600160a01b0316865294870194918701916001016130ad565b6001600160a01b03909116815260606020820181905261096c93919261310c9184019061305a565b91604081840391015261305a565b82516001600160a01b0382169593949392906131369082613311565b604080516313849cfd60e21b80825291986004989392916000818061315e88888f840161308e565b0381855afa600091816132f6575b50613194578a8a610ac561317e610fe0565b9251631ee0c01d60e31b81529283928301610a21565b92813b1561011c578a51630d4498e760e21b81528b92908b90600081806131bf8f8c8e8489016130e4565b038183875af190816132e3575b506131de578390610ac561317e610fe0565b86946131f760009551968795869485948552840161308e565b03915afa600091816132c0575b50613216578888610ac561317e610fe0565b979496959760005b83518110156132b457613231818361096f565b516132528b61324b84613244818961096f565b519261096f565b5190610955565b0361325f5760010161321e565b8988610ac58961329f8a612c4d8b6132828961327b818f61096f565b519961096f565b51908551988994631b3c965960e21b6020870152602486016114cb565b51631ee0c01d60e31b81529283928301610a21565b50505050505050509050565b6132dc91923d8091833e6132d48183610538565b810190612fe1565b9038613204565b806106b06132f0926104b9565b386131cc565b61330a91923d8091833e6132d48183610538565b903861316c565b919061331c8161079e565b9261332a6040519485610538565b818452601f196133398361079e565b013660208601378360005b8381106133515750505050565b8061335e6001928461096f565b828060a01b038516905201613344565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146133a057565b60405163197ba25b60e01b8152600490fd5b9492939591956133c581610b5984611476565b956001600160e01b03191694634ed1072f60e11b8087146136d8575063915b8f1d60e01b8681146136a35750600162bed83560e01b0319868114613685575063e2cf60cb60e01b868114613651575063c6b949a960e01b8681146136325750636d03a2e560e01b8681146135bc575063ae3586c560e01b9186831461354d5750635bdd08f560e01b9250505083811461351c575063456afd0b60e01b90508281146134f35750631d6bbb8d60e11b8281146134c45750632e834cbf60e11b91821490506134975750505061096c610fcd565b610a9e6134b0600161096c94015460018060a01b031690565b604051948593602085015260248401611b42565b6002939093015460405160208101949094526024840191909152604483015250905061096c8160648101610a9e565b93505050600361096c91015491610a9e6040519384926020840152602483019190602083019252565b9250935050610a9e600461096c93015460405194859360208501526024840160209093929193604081019481520152565b9297509250935061096c9450610a9e925061356b81610b5988611392565b549161357e8161162284610b598b611404565b5491604051978896602088015260248701919594939060809360a084019760018060a01b038093168552602085015216604083015260608201520152565b9550929091965061096c9550610a9e93506135da82610b5989611359565b54926135ed8161162285610b598c6113cb565b5492604051988997602089015260248801929060a09491979695929760c0850198600180881b0380931686526020860152166040840152606083015260808201520152565b9750505050505050506040519060208201526004815261096c8161051d565b60405160208101919091526001600160a01b039091166024820152965061096c955086945050604484019250610a9e915050565b9550505094505050610a9e6134b061096c935460018060a01b031690565b60405160208101919091526001600160a01b0390931660248401525090955061096c945085935050604483019150610a9e9050565b9550509150945061096c9350610a9e9150604051948593602085015260248401611b5c565b9492916137118161162287610b598661143d565b956001600160e01b0319169463c6b949a960e01b8087146136325750630bac95f560e21b8681146138325750635493bdef60e11b918683146138095750632e834cbf60e11b925050508381146137eb5750631d6bbb8d60e11b90508281146137bc57506364b7fccd60e11b91821490506137905750505061096c610fcd565b610a9e600261096c93015460405194859360208501526024840160209093929193604081019481520152565b6001939093015460405160208101949094526024840191909152604483015250905061096c8160648101610a9e565b935490945061096c939250610a9e91506001600160a01b03166134b0565b92975092509350610a9e9250600361096c950154916040519687956020870152602486016114cb565b60405160208101919091526001600160a01b039384166024820152604481019190915291166064820152945061096c935084925050608482019050610a9e565b90604051916138808361051d565b600183526020830160203682378351156109275752565b60048151106138a7576020015190565b50600090565b604051906138ba826104cc565b606060c083600081526000602082015260006040820152600083820152600060808201528260a08201520152565b9060405191828154918282526020928383019160005283600020936000905b82821061391d5750505061032492500383610538565b85546001600160a01b031684526001958601958895509381019390910190613907565b9060408051809380549261396761395b858560209181520190565b92600052602060002090565b9360005b81601f820110613d8357610324955492828210613d6d575b828210613d53575b828210613d39575b828210613d1f575b828210613d05575b828210613ceb575b828210613cd1575b828210613cb7575b828210613ca0575b50818110613c88575b818110613c70575b818110613c58575b818110613c40575b818110613c28575b818110613c10575b818110613bf8575b818110613be0575b818110613bc8575b818110613bb0575b818110613b98575b818110613b80575b818110613b68575b818110613b50575b818110613b38575b818110613b20575b818110613b08575b818110613af0575b818110613ad8575b818110613ac0575b818110613aa8575b818110613a90575b10613a82575b500383610538565b60f81c815260200138613a7a565b60f083901c60ff168452926001906020019301613a74565b60e883901c60ff168452926001906020019301613a6c565b60e083901c60ff168452926001906020019301613a64565b60d883901c60ff168452926001906020019301613a5c565b60d083901c60ff168452926001906020019301613a54565b60c883901c60ff168452926001906020019301613a4c565b60c083901c60ff168452926001906020019301613a44565b60b883901c60ff168452926001906020019301613a3c565b60b083901c60ff168452926001906020019301613a34565b60a883901c60ff168452926001906020019301613a2c565b60a083901c60ff168452926001906020019301613a24565b609883901c60ff168452926001906020019301613a1c565b609083901c60ff168452926001906020019301613a14565b608883901c60ff168452926001906020019301613a0c565b608083901c60ff168452926001906020019301613a04565b607883901c60ff1684529260019060200193016139fc565b607083901c60ff1684529260019060200193016139f4565b606883901c60ff1684529260019060200193016139ec565b606083901c60ff1684529260019060200193016139e4565b605883901c60ff1684529260019060200193016139dc565b605083901c60ff1684529260019060200193016139d4565b604883901c60ff1684529260019060200193016139cc565b83901c60ff168452926001906020019301386139c3565b603884901c60ff16855290936001906020019401906139bb565b603084901c60ff16855290936001906020019401906139b3565b602884901c60ff16855290936001906020019401906139ab565b602084811c60ff16865291949091600191019401906139a3565b601884901c60ff168552909360019060200194019061399b565b601084901c60ff1685529093600190602001940190613993565b600884901c60ff168552909360019060200194019061398b565b60ff841685529093600190602001940190613983565b919350916001610400602092614021885461401660ff613da78582851660ff169052565b613fef613e54613f9f8d613f4f89613eff8e613dcc8184018a8d60081c1660ff169052565b613ddf8584018a8d60101c1660ff169052565b888b610200606095613dfa878201858560181c1660ff169052565b613e0f6080958585888501921c1660ff169052565b613eb560a097613e28898401878760281c1660ff169052565b613e6560c09b613e418d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b613e7a6101208401878760481c1660ff169052565b613e8f6101408401878760501c1660ff169052565b613ea46101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b613eca6101a08201858560681c1660ff169052565b613edf6101c08201858560701c1660ff169052565b613ef46101e08201858560781c1660ff169052565b01921c1660ff169052565b613f146102208c01888b60881c1660ff169052565b613f296102408c01888b60901c1660ff169052565b613f3e6102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b613f646102a08a01868960a81c1660ff169052565b613f796102c08a01868960b01c1660ff169052565b613f8e6102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b613fb46103208801848760c81c1660ff169052565b613fc96103408801848760d01c1660ff169052565b613fde6103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b6140046103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b019501910191869391949261396b565b9060405161403e816104cc565b60c06140946006839560018060a01b038082541686526001820154166020860152600281015460408601526003810154606086015260048101546080860152614089600582016138e8565b60a086015201613940565b910152565b9690929695919493956140aa6138ad565b976140c06140bb82610b5985611476565b614031565b818a5280516001600160a01b031660808b01529660808801805160608c015288516001600160a01b0396919591908716801561430f57614100908661432b565b90156142f357156142d55761411b916118c5918486886143b0565b6142bc5786156142a35761413282610b5985611359565b546141448261162285610b59886113cb565b549088811515928361428f575b5050506142765761162282610b5961416f61417695610b5988611392565b5495611404565b54908015159182614263575b505061424d57518015159081614243575b5061422e5760608401514210614219576040840151850361420457602084015191811691166001600160a01b0316036141f15760c0926141d2916114f6565b602084015260a081015160a0840152015160c082015260019160009190565b50600093632e834cbf60e11b9392509050565b50600095631d6bbb8d60e11b95945092505050565b5060009563456afd0b60e01b95945092505050565b50600095635bdd08f560e01b95945092505050565b9050831138614193565b5060009663ae3586c560e01b9695509350505050565b61426e919250610942565b113880614182565b50600099636d03a2e560e01b9998509650505050505050565b61429a929350610955565b11388881614151565b5060009963c6b949a960e01b9998509650505050505050565b5060009963e2cf60cb60e01b9998509650505050505050565b5060009b600162bed83560e01b03199b9a5098505050505050505050565b5060009c63915b8f1d60e01b9c9b509950505050505050505050565b5060009c634ed1072f60e11b9c9b509950505050505050505050565b604051638da5cb5b60e01b60208201908152600482529293929061434e8161051d565b6000928392839251915afa90614362610fe0565b911580156143a5575b61439e576020828051810103126100e957506020015161438a81610308565b6001926001600160a01b0391821691161490565b9250508190565b50602082511061436b565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e602052604090209193929190600052602052604060002060405190604082018281106001600160401b038211176104b457604052600181549182845201549081602084015215908115614476575b5061446d5760405160609490941b6bffffffffffffffffffffffff19166020850190815261096c946144628160348101610a9e565b5190209051906145ee565b50505050600190565b90504210153861442d565b9493929061448d611aed565b958287528515614596576144a792610b596116229261143d565b9060028201549081156145815760038301548015159081614576575b506145615782546001600160a01b0391821691160361454d5782600183015403614539578311614526576144fc600592614518946114f6565b602085015261450d600482016138e8565b606085015201613940565b608082015260019160009190565b506000936364b7fccd60e11b9392509050565b50600094631d6bbb8d60e11b949350915050565b50600094632e834cbf60e11b949350915050565b50600095635493bdef60e11b95945092505050565b9050421015386144c3565b50600095630bac95f560e21b95945092505050565b5060009663c6b949a960e01b9695509350505050565b80156145dc57603281116145bd5750565b6044906040519063f80a484560e01b8252600482015260326024820152fd5b60405163c2e5347d60e01b8152600490fd5b9291909291600080925b82841061460757505050501490565b909192938460051b820135808211156000146146555760408051602081019384529081019190915261463c8160608101610a9e565b5190205b936000198114610950576001019291906145f8565b604080516020810192835290810192909252906146758160608101610a9e565b51902061464056fe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d500a2646970667358221220309a5b7adb8d8964d646932d2dbffb726a5120d87e0e4de7d494ce98ceeb54a064736f6c63430008120033","sourceMap":"1199:32380:167:-:0;;;;;;;509:4:168;501:13;;1199:32380:167;;;;;;501:13:168;1199:32380:167;;;;;;;;;","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":1636,"length":20},{"start":3861,"length":20},{"start":3998,"length":20}]}}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b6000803560e01c9081632c0c49ee1461006a5750806359a8a40a14610065578063a3eaf4d914610060578063cfdbf2541461005b5763d65852a61461005657600080fd5b6103fc565b6103e0565b6103c4565b610326565b60203660031901126100e9576004356001600160401b0381116100e5576100e19161009c6100d59236906004016100ec565b916100a760c0604052565b604051906100b482610499565b8082528060208301528060408301526060820152608052606060a052610586565b60405191829182610193565b0390f35b5080fd5b80fd5b9181601f8401121561011c578235916001600160401b03831161011c576020808501948460051b01011161011c57565b600080fd5b634e487b7160e01b600052602160045260246000fd5b6006111561014157565b610121565b9060068210156101415752565b919082519283825260005b84811061017f575050826000602080949584010152601f8019910116010190565b60208183018101518483018201520161015e565b9060209182815260c09283820191835193845183830152828501516040908184015283818701516060978891828701520151926080938486015201519660a0908180860152885180975260e0918286019487848a60051b8901019b01996000975b8a891061020a5750505050505050505050505090565b909192939495969798999a9b8a806001928f60df19868303018d5251908151815261023d838301518483019060ff169052565b818c01516001600160a01b0316818d01528187015181880152878201516001600160a01b031688820152818901516001600160a01b0316818a0152818a0151818b01528a8201518b820152610100808301511515908201526102a86101208084015190830190610146565b610140828101516001600160e01b031916908201526102d861016080840151906101a08091850152830190610153565b91610180809101519101529e0199019901979a9998969594939291906101f4565b908161010091031261011c5790565b6001600160a01b0381160361011c57565b359061032482610308565b565b60e036600319011261011c576001600160401b0360043581811161011c576103529036906004016102f9565b6044359061035f82610308565b60a43583811161011c576103779036906004016100ec565b9060c43594851161011c576103936103a79536906004016100ec565b94909360843591606435916024359061098f565b60408051928352602083019190915290f35b600091031261011c57565b3461011c57600036600319011261011c57602060405160328152f35b3461011c57600036600319011261011c576020604051604b8152f35b60c036600319011261011c576001600160401b0360043581811161011c576104289036906004016102f9565b6024359061043582610308565b60843583811161011c5761044d9036906004016100ec565b9060a43594851161011c576104696104819536906004016100ec565b94909361047461336e565b6064359160443591610e88565b005b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b038211176104b457604052565b610483565b6001600160401b0381116104b457604052565b60e081019081106001600160401b038211176104b457604052565b606081019081106001600160401b038211176104b457604052565b602081019081106001600160401b038211176104b457604052565b604081019081106001600160401b038211176104b457604052565b90601f801991011681019081106001600160401b038211176104b457604052565b604051906101a082018281106001600160401b038211176104b457604052565b60405190610324826104e7565b9061058f61336e565b610598816145ac565b6105a181610828565b60a09081526105af82610878565b906000923494845b8281106106c157505050505050806060608051015280610639575b506080517ff769e48349f9b4903ef362e95411b2c4778d3bdaf9dc87b0d25f29f2813ea1638151916020810151610631606060408401519301516040519384933397859094939260609260808301968352602083015260408201520152565b0390a2608090565b73__$11854c5905aa23948096e0e4d7059bb9de$__803b1561011c57604051637baf92a360e01b815260008051602061467e833981519152600482015260006024820181905233604483015260648201939093529190829060849082905af480156106bc57156105d257806106b06106b6926104b9565b806103b9565b386105d2565b610983565b6106dc868689846106d78189899e9c9d9e610905565b611035565b9196901561077c575090610755610702600193996106fb848888610905565b908a61258a565b96608080516107118151610942565b9052848060a01b0361072f6060610729878b8b610905565b01610962565b161561075e575b505b61074f83885183610749838361096f565b5261096f565b506122cc565b019493946105b7565b6107746040610180840151925101918251610955565b905238610736565b97956001929150610755906020608051016107978151610942565b9052610738565b6001600160401b0381116104b45760051b60200190565b604051906101a082018281106001600160401b038211176104b457604052816101806000918281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201528261014082015260606101608201520152565b906108328261079e565b61083f6040519182610538565b8281528092610850601f199161079e565b019060005b82811061086157505050565b60209061086c6107b5565b82828501015201610855565b906108828261079e565b60409061089182519182610538565b83815280936108a2601f199161079e565b0190600092835b8381106108b7575050505050565b81519060608201918083106001600160401b038411176104b457602092845286815282878183015287858301528286010152016108a9565b634e487b7160e01b600052603260045260246000fd5b91908110156109275760051b8101359060fe198136030182121561011c570190565b6108ef565b634e487b7160e01b600052601160045260246000fd5b906001820180921161095057565b61092c565b9190820180921161095057565b3561096c81610308565b90565b80518210156109275760209160051b010190565b6040513d6000823e3d90fd5b906109a898979695949392916109a361336e565b610a39565b9091565b60ff81160361011c57565b3561096c816109ac565b90604061096c92600181528160208201520190610153565b90604061096c92600281528160208201520190610153565b90604061096c92600581528160208201520190610153565b90604061096c92600481528160208201520190610153565b90604061096c92600381528160208201520190610153565b98979695949392919060ff8a35610a4f816109ac565b1615610ad357600160ff610a628c6109b7565b1614610ac957610ac5610a9e610aac610a7a8d6109b7565b60405163bb75025d60e01b602082015260ff90911660248201529182906044820190565b03601f198101835282610538565b604051631ee0c01d60e31b8152918291600483016109c1565b0390fd5b6109a89899611590565b95929491969893908695610ae7818a610955565b986060870198610b00818c610afb8d610962565b612860565b8051610d0d575090610b89949392916020890190610b25610b2083610962565b611359565b9a610b3f60808c0135809d90600052602052604060002090565b5415158b8d610b6881610b59610b5489610962565b611392565b90600052602052604060002090565b54151592610cdd575b5050610ca1575b6001600160a01b039788908e610962565b16610c4757509089610b9c8e8d946114be565b9f7f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c9a60a09a610c2a99610bf498610c1698610bfc610c10995b610be8610be28b610962565b91613872565b60c08a01359d8e613872565b91339061311a565b8b81610c31575b5050505050505050610962565b99610962565b90604051958695339b1698013592856114cb565b0390a49190565b610c3a9761200c565b893880808080808b610c03565b9e610c109291508a907f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c9a8f9a8f998f98610c1698610bfc60a09f9b610c9c610c2a9f9d610c97610bf49f610962565b612a9e565b610bd6565b610ccc610cb98d610b59610cb487610962565b611404565b3360009081526020919091526040902090565b610cd68154610942565b9055610b78565b60c0610cfa610cb9610d0493610b59610cf58b610962565b6113cb565b9201358254610955565b90558b8d610b71565b604051631ee0c01d60e31b8152908190610ac590600483016109d9565b91908082526020809201929160005b828110610d47575050505090565b9091929382806001928735610d5b81610308565b848060a01b03168152019501910192919092610d39565b91908082526020809201929160005b828110610d8f575050505090565b90919293828060019260ff8835610da5816109ac565b16815201950193929101610d81565b97959361096c999793610e0b969260008051602061467e8339815191528b5260018060a01b03948580921660208d01521660408b015260608a015260808901521660a08701526101008060c0880152860191610d2a565b9260e0818503910152610d72565b989694909361096c9a9894602094610e79989460008051602061467e8339815191528d528c60018060a01b03978880951691015260408d01521660608b015260808a015260a08901521660c08701526101208060e0880152860191610d2a565b92610100818503910152610d72565b97969592919094939560ff610e9c8a6109b7565b1615610f6957600160ff610eaf8b6109b7565b1614610ee257610ac5610ec18a6109b7565b60405163bb75025d60e01b815260ff90911660048201529081906024820190565b979192939495969773__$11854c5905aa23948096e0e4d7059bb9de$__94610f0c60208501610962565b96610f1960608601610962565b99873b1561011c57600099608097610f4b966040519d8e9c8d9b8c9b63981e8fc560e01b8d5201359060048c01610e19565b03915af480156106bc57610f5c5750565b806106b0610324926104b9565b9791969794909493929373__$11854c5905aa23948096e0e4d7059bb9de$__94610fa16060610f9a60208701610962565b9501610962565b94863b1561011c57600098610f4b946040519b8c9a8b998a99631872482b60e31b8b5260048b01610db4565b60405190610fda82610502565b60008252565b3d1561101a573d906001600160401b0382116104b4576040519161100e601f8201601f191660200184610538565b82523d6000602084013e565b606090565b919082604091031261011c576020825192015190565b908161104d91959394956110476107b5565b50612133565b928094611059836117d8565b8051909692906001600160a01b031680611145575b50156111345750906110869160608601519185612474565b805161112657507f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c546000938493926110c8926001600160a01b031693611295565b90602082519201905af46110da610fe0565b901561110c576110f59192506020808251830101910161101f565b600161010084015291906101808201529160019190565b61111861111f916123a5565b9083612236565b9160009190565b91505061111f91508261220d565b93505050935061111f91508261220d565b6001600160a01b031660808901523861106e565b9035601e198236030181121561011c5701602081359101916001600160401b03821161011c578160051b3603831361011c57565b81835290916001600160fb1b03831161011c5760209260051b809284830137010190565b9061124b61096c9260ff81356111c6816109ac565b16835260208101356111d781610308565b6001600160a01b031660208401526112046111f460408301610319565b6001600160a01b03166040850152565b61122361121360608301610319565b6001600160a01b03166060850152565b6080810135608084015260a081013560a084015260c081013560c084015260e0810190611159565b9091610100908160e0820152019161118d565b90815180825260208080930193019160005b82811061127e575050505090565b835160ff1685529381019392810192600101611270565b8251602080850151604080870151608088015160a0909801519151632cd4520560e11b8186015260e060248201529796889692956001600160a01b03949193908516906112e7906101048a01906111b1565b9360448901526064880152608487015260a486015260231992838683030160c48701528080885193848152019701926000905b83821061133c5750505050508284030160e483015261096c92610a9e9161125e565b84518116895297820197899750938201936001919091019061131a565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5116020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5106020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5126020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5136020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d6020526040902090565b60631981019190821161095057565b9190820391821161095057565b6001600160a01b03918216815260208101929092529091166040820152606081019190915260800190565b8181029291811591840414171561095057565b818110611514575050565b60008155600101611509565b600560009182815582600182015582600282015582600382015560048101805484825580611576575b505001908154908083558161155d57505050565b60208161032494601f935220910160051c810190611509565b6115899185526020852090810190611509565b3880611549565b9498959097929691939888996115a6818a610955565b996115b8818c610afb60608c01610962565b9b8c51611779579a9b508b9a6001600160a01b036115d860608b01610962565b1661175a57506116aa969798999a6115ef916114be565b995b6002611639896116228c608061161161160c60208401610962565b61143d565b910135600052602052604060002090565b9060018060a01b0316600052602052604060002090565b0161164960c08b013582546114be565b80915515611731575b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50a546116a3908a906001600160a01b031661168f60208301610962565b908b608060c0850135940135923392612cce565b878961200c565b6116b660208301610962565b917f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d78869461172c6116e760608401610962565b6040805160808087013582526001600160a01b03938416602083015260a08701359282019290925260c090950135606086015295811695339590911693918291820190565b0390a4565b611755611750896116228c610b5961160c602060808401359301610962565b611520565b611652565b9a88999a915061177490610c9760606116aa9a9b01610962565b6115f1565b604051631ee0c01d60e31b815280610ac58f600483016109d9565b6040519060c082018281106001600160401b038211176104b457604052606060a0836000815260006020820152600060408201526000838201528260808201520152565b906117e1611794565b9082356117ed816109ac565b60ff811693841561185257611801826109ac565b6001851461183d5750611813906109ac565b6040519263bb75025d60e01b6020850152602484015260248352611836836104e7565b6000929190565b9193505061184b9150611ba9565b9192909190565b9193505061184b91506118a4565b903590601e198136030182121561011c57018035906001600160401b03821161011c57602001918160051b3603831361011c57565b9081602091031261011c575190565b6118ac611794565b90606081016118c96118c56118c083610962565b61268a565b1590565b611ab157602091828101916118e86118c56118e385610962565b612718565b611a6c5790611928916118fa84610962565b9061193261190782610962565b9260808501359360a086013595868660c0830135998360e08c950190611860565b9590943391614099565b60808101516001600160a01b03168a5296909115611a40575050505050508181015180838501528061198e575b506060915060a0810151608084015260c081015160a08401520151606082015260019161198a610fcd565b9190565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d501546119f09184916119d0906001600160a01b03165b6001600160a01b031690565b60405180809581946361fe24a960e11b8352600483019190602083019252565b03915afa9081156106bc57606093600092611a13575b505060408401523861195f565b611a329250803d10611a39575b611a2a8183610538565b810190611895565b3880611a06565b503d611a20565b611a649750611a5491929394959650610962565b611a5e3393610962565b916133b2565b916000929190565b5050611a7d61183691949294610962565b604051630f20e39960e21b958101959095526001600160a01b0316602485015283604481015b03601f198101855284610538565b611aa3939150611ac361183691610962565b60405163cd5f748960e01b60208201526001600160a01b0390911660248201529384906044820190565b6040519060a082018281106001600160401b038211176104b457604052606060808360008152600060208201526000604082015282808201520152565b9081602091031261011c5751801515810361011c5790565b6001600160a01b0391821681529116602082015260400190565b6001600160a01b039091168152602081019190915260400190565b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b90611bb2611794565b90604080840190611bd2611bc583610962565b6001600160a01b03168552565b611bde6119c483610962565b3314611fd2576060850190611bf86118c56118c084610962565b611f955760209182870196611c126118c56118e38a610962565b611f5657611c1e611aed565b50611c2888610962565b9160c0611c5b611c3788610962565b94611c4184610962565b946080810135809660a08301359586930135988994614481565b93909115611f2e57505050611c756119c46119c48b610962565b611cd186611c8289610962565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50a54611cb6906001600160a01b03166119c4565b885163e985e9c560e01b815293849283929060048401611b42565b0381855afa60009181611eff575b50611d1c575050505050611aa390611d02611cfc61183695610962565b97610962565b905196879363d65b0d6960e01b9085015260248401611b42565b96929493959615611ee6578685611d5092611d3686610962565b8751809581948293627eeac760e11b845260048401611b5c565b03915afa60009181611ec7575b50611dbe57505091611836949391611d7a610c10611aa395610962565b9051988995636906ef1760e11b90870152602486019093600093608093969560a084019760018060a01b038092168552166020840152604083015260608201520152565b92949182849a959297989a10611e8f57505050508284018051868601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50154611e3a939250859190611e18906001600160a01b03166119c4565b905190835180809681946361fe24a960e11b8352600483019190602083019252565b03915afa9182156106bc57608094600093611e70575b5050840152606081015182840152015160a082015260019161198a610fcd565b611e87929350803d10611a3957611a2a8183610538565b903880611e50565b611836965094611ead611ea7611aa3969b9997610962565b9a610962565b9051998a96636906ef1760e11b9088015260248701611b77565b611edf919250883d8a11611a3957611a2a8183610538565b9038611d5d565b5050611836949350611aa39250611cfc611d0291610962565b611f20919250883d8a11611f27575b611f188183610538565b810190611b2a565b9038611cdf565b503d611f0e565b939550939691509450611f50611f4a611f4a611a64999b610962565b92610962565b926136fd565b5050946118369250611f6a611aa391610962565b9551630f20e39960e21b928101929092526001600160a01b0390951660248201529384906044820190565b90611aa395506118369250611fa990610962565b905163cd5f748960e01b60208201526001600160a01b0390911660248201529384906044820190565b611aa39450611fe361183692610962565b905163aac1ae8b60e01b60208201526001600160a01b0390911660248201529384906044820190565b9497969795919593929360018060a01b0390817f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c541697604051966020918461206d848b019b636b2c295360e11b8d5260c060248d015260e48c01906111b1565b961660448a0152606489015260848801528060231994858982030160a48a01528381520195926000905b8382106120f557505050505092610a9e83600098996120c3948a999897858098030160c4860152610d72565b51915af46120cf610fe0565b90156120d85750565b604051631ee0c01d60e31b8152908190610ac590600483016109f1565b90919293968380600192848b3561210b81610308565b1681520198019493920190612097565b60405161212781610502565b60008152906000368137565b9061213c6107b5565b5060c0612148826109b7565b916121d461215860208301610962565b6121c461216760408501610962565b6121a861217660608701610962565b9361219861218261211b565b9961218b610559565b9b8c5260ff1660208c0152565b6001600160a01b031660408a0152565b60808581013560608a01526001600160a01b0390911690880152565b6001600160a01b031660a0860152565b60a081013582850152013560e0830152600061010083015260006101208301526000610140830152610160820152600061018082015290565b6001610120820152610160906001600160e01b031961222b84613897565b166101408201520152565b6006821015610141576101609161012082015263ffffffff60e01b61222b84613897565b9081526001600160a01b039182166020820152911660408201526060810191909152608081019190915290151560a0820152949392610120926122c7926122a59060c0890190610146565b6001600160e01b03191660e08701526101406101008701819052860190610153565b930152565b80519060208101516122de9060ff1690565b60408201519092906001600160a01b031660608301516080840151909391906001600160a01b031660a08301519094906001600160a01b03169260c08101519060e081015161010082015161233290151590565b6101208301519061234282610137565b6101408401516001600160e01b0319169261016085015194610180015195604051998a99600160a01b60019003169d60ff169c61237f998b61225a565b037f844491b54cb1a58801f9eb51fecfaf5076847131d8f6ec580232d9766e3fae4f91a4565b906123af826123c1565b916123bc57505060059190565b925090565b631ee0c01d60e31b6001600160e01b03196123db83613897565b1614801590612469575b61245a57602481015191604482015160648301928351916005861190811561244e575b5061243b5761241790516114af565b1061242c5761242583610137565b6001929190565b6000925082915061096c610fcd565b505091505060009060009061096c610fcd565b60409150141538612408565b5060009060009061096c610fcd565b5060648151106123e5565b9060ff8235612482816109ac565b1615801590612511575b6124fa576124b260c0916124bb946124a660208601610962565b90608086013592612519565b91013590610955565b818111156124f057604051635bdd08f560e01b60208201526024810191909152604481019190915261096c8160648101610a9e565b505061096c610fcd565b5050505060405161250a81610502565b6000815290565b50831561248c565b9192909260005b848110612531575050505050600090565b6001600160a01b0380612544838761096f565b5151169083161480612573575b61255d57600101612520565b9150506040925061256d9161096f565b51015190565b50826020612581838761096f565b51015114612551565b9160ff612596826109b7565b166126845760005b8281106125f957508161096c938260c06125bd60206125f39601610962565b916125d86125c9610579565b6001600160a01b039094168452565b6080810135602084015201356040820152610749838361096f565b50610942565b612614612606828661096f565b51516001600160a01b031690565b6020906126256119c4838601610962565b6001600160a01b03909116149081612669575b506126455760010161259e565b604061265860c09261266494959661096f565b51019201358251610955565b905290565b9050612675828661096f565b51015160808301351438612638565b50905090565b6001600160a01b03908116908115612711576020907f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d505541691602460405180948193632d5ad3d560e01b835260048301525afa600091816126f1575b5061096c5750600090565b61270a91925060203d8111611f2757611f188183610538565b90386126e6565b5050600190565b803b15159081612726575090565b90506040519060208083018160006301ffc9a760e01b9586845286602482015260248152612753816104e7565b51617530938685fa933d60005190866127f8575b50856127ee575b508461278b575b50505081612781575090565b61096c9150612803565b83945090600091839460405185810192835263ffffffff60e01b6024820152602481526127b7816104e7565b5192fa60005190913d836127e3575b5050816127d9575b501590388080612775565b90501515386127ce565b1015915038806127c6565b151594503861276e565b841115955038612767565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152612833816104e7565b5191617530fa6000513d82612854575b508161284d575090565b9050151590565b60201115915038612843565b918115612a93576001600160a01b038316908115612a5b5750604080516370a0823160e01b8152336004820152602092908381602481855afa60009181612a3c575b506128e2575050516364db3d5960e01b918101919091526001600160a01b03909216602483015260448201526000606482015261096c8160848101610a9e565b8481106129fd57507f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50854612940918491612924906001600160a01b03166119c4565b9084518080958194636eb1769f60e11b83523360048401611b42565b03915afa600091816129de575b5061298c5750516337a950bb60e01b918101919091526001600160a01b03909216602483015260448201526000606482015261096c8160848101610a9e565b8381106129a057505050505061096c610fcd565b90516337a950bb60e01b928101929092526001600160a01b0390931660248201526044810191909152606481019190915261096c8160848101610a9e565b6129f6919250843d8611611a3957611a2a8183610538565b903861294d565b91516364db3d5960e01b93810193909352506001600160a01b0390931660248201526044810191909152606481019190915261096c8160848101610a9e565b612a54919250853d8711611a3957611a2a8183610538565b90386128a2565b925050808210156124f0576040516310da2c1360e21b60208201526024810191909152604481019190915261096c8160648101610a9e565b50505061096c610fcd565b90918215612cc957604080516370a0823160e01b8082523060048084019190915292959294926020929091906001600160a01b0385169060008582602481865afa909181612caa575b50612b0f578888610ac5612af9610fe0565b9251631ee0c01d60e31b815292839283016109d9565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50854909290612b46906001600160a01b03166119c4565b803b1561011c578951630aed65f560e11b81526001600160a01b038816818b0190815233602082015230604082015260608101879052909160009183919082908490829060800103925af19081612c97575b50612baa578888610ac5612af9610fe0565b8851908152308882019081529091600091869184918290819060200103915afa909181612c78575b50612be4578787610ac5612af9610fe0565b949693959460009190818110612c7057612bfe92506114be565b905b808203612c0f57505050505050565b8351636ff596f360e01b938101939093526001600160a01b03909516602483015260448201949094526064810193909352610ac590612c5b84608481015b03601f198101865285610538565b51631ee0c01d60e31b815292839283016109d9565b505090612c00565b612c90919250853d8711611a3957611a2a8183610538565b9038612bd2565b806106b0612ca4926104b9565b38612b98565b612cc2919250863d8811611a3957611a2a8183610538565b9038612ae7565b915050565b95939194909285600093604098895195627eeac760e11b80885287612cf88560049d8e8401611b5c565b038860018060a01b0393848c169260209b8c9181865afa909181612fc2575b50612d3f578d8d610ac5612d29610fe0565b9251631ee0c01d60e31b81529283928301610a09565b92888410612f9557858e8b8f8b90612d636000945195869384938b85528401611b5c565b0381875afa909181612f76575b50612d82578e8e610ac5612d29610fe0565b9416803b1561011c576000878f928f838f91612dee8f8f988e9051998a988997889663eb46c45b60e01b885287019391909260e0959360018060a01b03928380921687521660208601521660408401526060830152608082015260c060a0820152600060c08201520190565b03925af19081612f63575b50612e0b578c8c610ac5612d29610fe0565b8c518281528d908d9060008c8280612e268c8e838901611b5c565b0381885afa909181612f44575b50612e445750610ac5612d29610fe0565b87938c928b9296612e62600096519788958694859485528401611b5c565b03915afa909181612f25575b50612e80578c8c610ac5612d29610fe0565b90612e928880939e9b9d9c9e946114be565b1492831593612f10575b505050612ead575050505050505050565b8551638791019960e01b958101959095526001600160a01b039788166024860152604485015286166064840152909416608482015260a4810193909352610ac590612efb8460c48101612c4d565b51631ee0c01d60e31b81529283928301610a09565b612f1b929350610955565b1415388581612e9c565b612f3d9192508a3d8c11611a3957611a2a8183610538565b9038612e6e565b612f5c9192508d803d10611a3957611a2a8183610538565b9038612e33565b806106b0612f70926104b9565b38612df9565b612f8e9192508c8d3d10611a3957611a2a8183610538565b9038612d70565b50858c610ac58f612efb8d8f898f8d612c4d9387519a8b96636906ef1760e11b9088015260248701611b77565b612fda9192508b3d8d11611a3957611a2a8183610538565b9038612d17565b602090818184031261011c578051906001600160401b03821161011c57019180601f8401121561011c5782516130168161079e565b936130246040519586610538565b818552838086019260051b82010192831161011c578301905b82821061304b575050505090565b8151815290830190830161303d565b90815180825260208080930193019160005b82811061307a575050505090565b83518552938101939281019260010161306c565b9092916040820191604081528451809352606081019260208096019060005b8181106130c75750505061096c939481840391015261305a565b82516001600160a01b0316865294870194918701916001016130ad565b6001600160a01b03909116815260606020820181905261096c93919261310c9184019061305a565b91604081840391015261305a565b82516001600160a01b0382169593949392906131369082613311565b604080516313849cfd60e21b80825291986004989392916000818061315e88888f840161308e565b0381855afa600091816132f6575b50613194578a8a610ac561317e610fe0565b9251631ee0c01d60e31b81529283928301610a21565b92813b1561011c578a51630d4498e760e21b81528b92908b90600081806131bf8f8c8e8489016130e4565b038183875af190816132e3575b506131de578390610ac561317e610fe0565b86946131f760009551968795869485948552840161308e565b03915afa600091816132c0575b50613216578888610ac561317e610fe0565b979496959760005b83518110156132b457613231818361096f565b516132528b61324b84613244818961096f565b519261096f565b5190610955565b0361325f5760010161321e565b8988610ac58961329f8a612c4d8b6132828961327b818f61096f565b519961096f565b51908551988994631b3c965960e21b6020870152602486016114cb565b51631ee0c01d60e31b81529283928301610a21565b50505050505050509050565b6132dc91923d8091833e6132d48183610538565b810190612fe1565b9038613204565b806106b06132f0926104b9565b386131cc565b61330a91923d8091833e6132d48183610538565b903861316c565b919061331c8161079e565b9261332a6040519485610538565b818452601f196133398361079e565b013660208601378360005b8381106133515750505050565b8061335e6001928461096f565b828060a01b038516905201613344565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146133a057565b60405163197ba25b60e01b8152600490fd5b9492939591956133c581610b5984611476565b956001600160e01b03191694634ed1072f60e11b8087146136d8575063915b8f1d60e01b8681146136a35750600162bed83560e01b0319868114613685575063e2cf60cb60e01b868114613651575063c6b949a960e01b8681146136325750636d03a2e560e01b8681146135bc575063ae3586c560e01b9186831461354d5750635bdd08f560e01b9250505083811461351c575063456afd0b60e01b90508281146134f35750631d6bbb8d60e11b8281146134c45750632e834cbf60e11b91821490506134975750505061096c610fcd565b610a9e6134b0600161096c94015460018060a01b031690565b604051948593602085015260248401611b42565b6002939093015460405160208101949094526024840191909152604483015250905061096c8160648101610a9e565b93505050600361096c91015491610a9e6040519384926020840152602483019190602083019252565b9250935050610a9e600461096c93015460405194859360208501526024840160209093929193604081019481520152565b9297509250935061096c9450610a9e925061356b81610b5988611392565b549161357e8161162284610b598b611404565b5491604051978896602088015260248701919594939060809360a084019760018060a01b038093168552602085015216604083015260608201520152565b9550929091965061096c9550610a9e93506135da82610b5989611359565b54926135ed8161162285610b598c6113cb565b5492604051988997602089015260248801929060a09491979695929760c0850198600180881b0380931686526020860152166040840152606083015260808201520152565b9750505050505050506040519060208201526004815261096c8161051d565b60405160208101919091526001600160a01b039091166024820152965061096c955086945050604484019250610a9e915050565b9550505094505050610a9e6134b061096c935460018060a01b031690565b60405160208101919091526001600160a01b0390931660248401525090955061096c945085935050604483019150610a9e9050565b9550509150945061096c9350610a9e9150604051948593602085015260248401611b5c565b9492916137118161162287610b598661143d565b956001600160e01b0319169463c6b949a960e01b8087146136325750630bac95f560e21b8681146138325750635493bdef60e11b918683146138095750632e834cbf60e11b925050508381146137eb5750631d6bbb8d60e11b90508281146137bc57506364b7fccd60e11b91821490506137905750505061096c610fcd565b610a9e600261096c93015460405194859360208501526024840160209093929193604081019481520152565b6001939093015460405160208101949094526024840191909152604483015250905061096c8160648101610a9e565b935490945061096c939250610a9e91506001600160a01b03166134b0565b92975092509350610a9e9250600361096c950154916040519687956020870152602486016114cb565b60405160208101919091526001600160a01b039384166024820152604481019190915291166064820152945061096c935084925050608482019050610a9e565b90604051916138808361051d565b600183526020830160203682378351156109275752565b60048151106138a7576020015190565b50600090565b604051906138ba826104cc565b606060c083600081526000602082015260006040820152600083820152600060808201528260a08201520152565b9060405191828154918282526020928383019160005283600020936000905b82821061391d5750505061032492500383610538565b85546001600160a01b031684526001958601958895509381019390910190613907565b9060408051809380549261396761395b858560209181520190565b92600052602060002090565b9360005b81601f820110613d8357610324955492828210613d6d575b828210613d53575b828210613d39575b828210613d1f575b828210613d05575b828210613ceb575b828210613cd1575b828210613cb7575b828210613ca0575b50818110613c88575b818110613c70575b818110613c58575b818110613c40575b818110613c28575b818110613c10575b818110613bf8575b818110613be0575b818110613bc8575b818110613bb0575b818110613b98575b818110613b80575b818110613b68575b818110613b50575b818110613b38575b818110613b20575b818110613b08575b818110613af0575b818110613ad8575b818110613ac0575b818110613aa8575b818110613a90575b10613a82575b500383610538565b60f81c815260200138613a7a565b60f083901c60ff168452926001906020019301613a74565b60e883901c60ff168452926001906020019301613a6c565b60e083901c60ff168452926001906020019301613a64565b60d883901c60ff168452926001906020019301613a5c565b60d083901c60ff168452926001906020019301613a54565b60c883901c60ff168452926001906020019301613a4c565b60c083901c60ff168452926001906020019301613a44565b60b883901c60ff168452926001906020019301613a3c565b60b083901c60ff168452926001906020019301613a34565b60a883901c60ff168452926001906020019301613a2c565b60a083901c60ff168452926001906020019301613a24565b609883901c60ff168452926001906020019301613a1c565b609083901c60ff168452926001906020019301613a14565b608883901c60ff168452926001906020019301613a0c565b608083901c60ff168452926001906020019301613a04565b607883901c60ff1684529260019060200193016139fc565b607083901c60ff1684529260019060200193016139f4565b606883901c60ff1684529260019060200193016139ec565b606083901c60ff1684529260019060200193016139e4565b605883901c60ff1684529260019060200193016139dc565b605083901c60ff1684529260019060200193016139d4565b604883901c60ff1684529260019060200193016139cc565b83901c60ff168452926001906020019301386139c3565b603884901c60ff16855290936001906020019401906139bb565b603084901c60ff16855290936001906020019401906139b3565b602884901c60ff16855290936001906020019401906139ab565b602084811c60ff16865291949091600191019401906139a3565b601884901c60ff168552909360019060200194019061399b565b601084901c60ff1685529093600190602001940190613993565b600884901c60ff168552909360019060200194019061398b565b60ff841685529093600190602001940190613983565b919350916001610400602092614021885461401660ff613da78582851660ff169052565b613fef613e54613f9f8d613f4f89613eff8e613dcc8184018a8d60081c1660ff169052565b613ddf8584018a8d60101c1660ff169052565b888b610200606095613dfa878201858560181c1660ff169052565b613e0f6080958585888501921c1660ff169052565b613eb560a097613e28898401878760281c1660ff169052565b613e6560c09b613e418d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b613e7a6101208401878760481c1660ff169052565b613e8f6101408401878760501c1660ff169052565b613ea46101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b613eca6101a08201858560681c1660ff169052565b613edf6101c08201858560701c1660ff169052565b613ef46101e08201858560781c1660ff169052565b01921c1660ff169052565b613f146102208c01888b60881c1660ff169052565b613f296102408c01888b60901c1660ff169052565b613f3e6102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b613f646102a08a01868960a81c1660ff169052565b613f796102c08a01868960b01c1660ff169052565b613f8e6102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b613fb46103208801848760c81c1660ff169052565b613fc96103408801848760d01c1660ff169052565b613fde6103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b6140046103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b019501910191869391949261396b565b9060405161403e816104cc565b60c06140946006839560018060a01b038082541686526001820154166020860152600281015460408601526003810154606086015260048101546080860152614089600582016138e8565b60a086015201613940565b910152565b9690929695919493956140aa6138ad565b976140c06140bb82610b5985611476565b614031565b818a5280516001600160a01b031660808b01529660808801805160608c015288516001600160a01b0396919591908716801561430f57614100908661432b565b90156142f357156142d55761411b916118c5918486886143b0565b6142bc5786156142a35761413282610b5985611359565b546141448261162285610b59886113cb565b549088811515928361428f575b5050506142765761162282610b5961416f61417695610b5988611392565b5495611404565b54908015159182614263575b505061424d57518015159081614243575b5061422e5760608401514210614219576040840151850361420457602084015191811691166001600160a01b0316036141f15760c0926141d2916114f6565b602084015260a081015160a0840152015160c082015260019160009190565b50600093632e834cbf60e11b9392509050565b50600095631d6bbb8d60e11b95945092505050565b5060009563456afd0b60e01b95945092505050565b50600095635bdd08f560e01b95945092505050565b9050831138614193565b5060009663ae3586c560e01b9695509350505050565b61426e919250610942565b113880614182565b50600099636d03a2e560e01b9998509650505050505050565b61429a929350610955565b11388881614151565b5060009963c6b949a960e01b9998509650505050505050565b5060009963e2cf60cb60e01b9998509650505050505050565b5060009b600162bed83560e01b03199b9a5098505050505050505050565b5060009c63915b8f1d60e01b9c9b509950505050505050505050565b5060009c634ed1072f60e11b9c9b509950505050505050505050565b604051638da5cb5b60e01b60208201908152600482529293929061434e8161051d565b6000928392839251915afa90614362610fe0565b911580156143a5575b61439e576020828051810103126100e957506020015161438a81610308565b6001926001600160a01b0391821691161490565b9250508190565b50602082511061436b565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e602052604090209193929190600052602052604060002060405190604082018281106001600160401b038211176104b457604052600181549182845201549081602084015215908115614476575b5061446d5760405160609490941b6bffffffffffffffffffffffff19166020850190815261096c946144628160348101610a9e565b5190209051906145ee565b50505050600190565b90504210153861442d565b9493929061448d611aed565b958287528515614596576144a792610b596116229261143d565b9060028201549081156145815760038301548015159081614576575b506145615782546001600160a01b0391821691160361454d5782600183015403614539578311614526576144fc600592614518946114f6565b602085015261450d600482016138e8565b606085015201613940565b608082015260019160009190565b506000936364b7fccd60e11b9392509050565b50600094631d6bbb8d60e11b949350915050565b50600094632e834cbf60e11b949350915050565b50600095635493bdef60e11b95945092505050565b9050421015386144c3565b50600095630bac95f560e21b95945092505050565b5060009663c6b949a960e01b9695509350505050565b80156145dc57603281116145bd5750565b6044906040519063f80a484560e01b8252600482015260326024820152fd5b60405163c2e5347d60e01b8152600490fd5b9291909291600080925b82841061460757505050501490565b909192938460051b820135808211156000146146555760408051602081019384529081019190915261463c8160608101610a9e565b5190205b936000198114610950576001019291906145f8565b604080516020810192835290810192909252906146758160608101610a9e565b51902061464056fe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d500a2646970667358221220309a5b7adb8d8964d646932d2dbffb726a5120d87e0e4de7d494ce98ceeb54a064736f6c63430008120033","sourceMap":"1199:32380:167:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;1199:32380:167;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;1873:34;1199:32380;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1873:34;:::i;:::-;1199:32380;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;:::o;:::-;;;;;;:::i;:::-;:::o;:::-;;;-1:-1:-1;;1199:32380:167;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4022:23;1199:32380;;;;;;:::i;:::-;;;;;;;;;;;;4022:23;;:::i;:::-;1199:32380;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1199:32380:167;;;;;;;1084:2:171;1199:32380:167;;;;;;;;;-1:-1:-1;;1199:32380:167;;;;;;;1032:2:171;1199:32380:167;;;;;;-1:-1:-1;;1199:32380:167;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1038:1:168;1199:32380:167;;;;;;:::i;:::-;971:75:168;;;;;:::i;:::-;1199:32380:167;;;;;1038:1:168;;:::i;:::-;1199:32380:167;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;:::o;:::-;;:::i;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;:::o;:::-;;;;;;;:::i;971:75:168:-;;;;:::i;:::-;1945:13:167;;;:::i;:::-;1988:39;;;:::i;:::-;1970:15;:57;;;2179:52;;;:::i;:::-;2241:40;-1:-1:-1;2314:9:167;;2338:13;;2353:17;;;;;;3258;;;;;;;:29;1199:32380;3258:17;:29;1199:32380;3316:17;3312:116;;2333:915;3498:17;1199:32380;3498:17;3443:221;1199:32380;;3541:30;1970:15;3541:30;;1199:32380;3443:221;3258:29;3585:26;;;1199:32380;3625:29;;1199:32380;3585:26;1199:32380;3474:10;;;;3443:221;;1199:32380;;;;;;;;;;;;;;;;;;;;;;;3443:221;;;;1199:32380;971:75:168;:::o;3312:116:167:-;3349:21;:68;;;;;1199:32380;;-1:-1:-1;;;3349:68:167;;-1:-1:-1;;;;;;;;;;;3349:68:167;;;1199:32380;-1:-1:-1;1199:32380:167;;;;;;3391:10;1199:32380;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;3349:68;;;;;;;3312:116;3349:68;;;;;;:::i;:::-;;;:::i;:::-;;3312:116;;3349:68;;:::i;2338:13::-;2462:137;2503:9;;;;;;;;;;;;;:::i;:::-;2462:137;:::i;:::-;2613:475;;;;;;2643:30;;3170:6;2742:96;1199:32380;2643:30;2828:9;;;;;;:::i;:::-;2742:96;;;:::i;:::-;1199:32380;;2856:17;;:34;1199:32380;;2856:34;:::i;:::-;1199:32380;;;;;;;2912:25;;:9;;;;;:::i;:::-;:25;;:::i;:::-;1199:32380;2912:39;2908:91;;2613:475;;;3102:27;:15;;;:27;;;;;:::i;:::-;;;:::i;:::-;;3170:6;:::i;:::-;1199:32380;2338:13;;;;;2908:91;2953:46;:26;2983:16;;;1199:32380;2953:17;;:26;1199:32380;;;2953:46;:::i;:::-;1199:32380;;2908:91;;;2613:475;3038:17;;1199:32380;3038:17;;;3170:6;3038:17;1970:15;1199:32380;3038:17;:30;:35;1199:32380;;3038:35;:::i;:::-;1199:32380;;2613:475;;1199:32380;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1199:32380:167;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;3072:1;1199:32380;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;971:75:168;;1038:1;971:75;;;;;;;;;;:::i;:::-;1038:1;:::i;:::-;;;971:75::o;1199:32380:167:-;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;4344:28;1199:32380;;;;;;;;;;:::i;:::-;;;;;9301:39;1199:32380;;;;;;;;;;:::i;:::-;;;;;19377:27;1199:32380;;;;;;;;;;:::i;:::-;;;;;29358:36;1199:32380;;;;;;;;;;:::i;:::-;;;;;32143:25;1199:32380;;;;;;;;;;:::i;3677:1076::-;;;;;;;;;;1199:32380;;;;;;:::i;:::-;;4061:58;4057:250;;4344:28;1199:32380;4320:14;;;:::i;:::-;1199:32380;4320:53;4316:241;;4574:172;4660:76;;4721:14;;;:::i;:::-;1199:32380;;-1:-1:-1;;;4660:76:167;;;;1199:32380;;;;4660:76;;;1199:32380;;;;;;;;;4660:76;;1199:32380;;4660:76;;;;;;:::i;:::-;1199:32380;;-1:-1:-1;;;4574:172:167;;1199:32380;;;4660:76;4574:172;;;:::i;:::-;;;;4316:241;4396:150;;;;:::i;4057:250::-;4142:154;;;;;;;;8912:31;9028:30;;;;;:::i;:::-;9158:21;;;;;9114:92;9158:21;;;;;:::i;:::-;9114:92;:::i;:::-;1199:32380;;9216:156;;9423:21;;9842;9423;;;;;;;;9406:39;9423:21;;;:::i;:::-;9406:39;:::i;:::-;9446:13;9406:54;9446:13;;;1199:32380;9406:54;;1199:32380;;;;;;;;;;9406:54;1199:32380;9406:58;;9511:21;;9496:52;9511:21;9496:37;9511:21;;;:::i;:::-;9496:37;:::i;:::-;1199:32380;;;;;;;;;;9496:52;1199:32380;9496:56;;9562:137;;;4057:250;9708:120;;;;4057:250;-1:-1:-1;;;;;1199:32380:167;;;;9842:21;:::i;:::-;1199:32380;;;9911:25;;;;;;;;:::i;:::-;9838:211;10397:219;9838:211;1199:32380;9838:211;10397:219;9838:211;10177:32;9838:211;10560:21;9838:211;10177:32;10425:21;9838:211;;10144:31;10109:21;;;:::i;:::-;10144:31;;:::i;:::-;10194:14;;;1199:32380;10177:32;;;:::i;:::-;10132:10;;10177:32;;:::i;:::-;10234:17;;10230:152;;9838:211;10425:21;;;;;;;;;:::i;:::-;10560;;:::i;:::-;1199:32380;;;10132:10;;;;1199:32380;;10595:11;;1199:32380;10397:219;;;:::i;:::-;;;;4135:161;;:::o;10230:152::-;10358:12;;;:::i;:::-;10230:152;;;;;;;;;;9838:211;10005:21;10425;10005;;;;;10397:219;10005:21;;;;;;;10560;10005;10177:32;1199:32380;10005:21;;9967:71;10397:219;10005:21;;;10177:32;10005:21;;:::i;:::-;9967:71;:::i;:::-;9838:211;;9708:120;9742:70;:58;9763:21;9742:43;9763:21;;;:::i;:::-;9742:43;:::i;:58::-;9801:10;1199:32380;;;;;;;;;;;;;;9742:70;:75;1199:32380;;9742:75;:::i;:::-;1199:32380;;9708:120;;9562:137;9674:14;9598:72;:60;:90;9621:21;9598:45;9621:21;;;:::i;:::-;9598:45;:::i;:72::-;9674:14;;1199:32380;;;9598:90;:::i;:::-;1199:32380;;9562:137;;;;9216:156;1199:32380;;-1:-1:-1;;;9273:88:167;;1199:32380;;;9273:88;;;;;;:::i;1199:32380::-;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;4759:1328::-;;;;;;;;;;1199:32380;5123:14;;;:::i;:::-;1199:32380;5123:58;5119:430;;5586:28;1199:32380;5562:14;;;:::i;:::-;1199:32380;5562:53;5558:462;;6037:43;6065:14;;;:::i;:::-;1199:32380;;-1:-1:-1;;;6037:43:167;;1199:32380;;;;6037:43;;;1199:32380;;;;;;;;;5558:462;5631:47;;;;;;;;;5700:21;;;;;;:::i;:::-;5778;;;;;;:::i;:::-;5631:358;;;;;;5123:14;1199:32380;5743:13;1199:32380;5631:358;1199:32380;;;;;;;;;;;;;5631:358;;5743:13;1199:32380;5631:358;;;;;:::i;:::-;;;;;;;;;;;6003:7;:::o;5631:358::-;;;;;;:::i;5119:430::-;5197:45;;;;;;;;;;;5264:21;5307;;5264;;;;;:::i;:::-;5307;;;:::i;:::-;5197:321;;;;;;5123:14;1199:32380;5197:321;1199:32380;;;;;;;;;;;;;5197:321;;;;;;:::i;1199:32380::-;;;;;;;:::i;:::-;13347:14;1199:32380;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;-1:-1:-1;;1199:32380:167;;;;;:::i;:::-;;;;-1:-1:-1;1199:32380:167;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::o;6093:1902::-;;;6495:42;6093:1902;;;;;1199:32380;;:::i;:::-;;6495:42;:::i;:::-;6547:31;;6666;;;;:::i;:::-;1199:32380;;;;;;-1:-1:-1;;;;;1199:32380:167;;6707:64;;6093:1902;6785:6;;6781:167;;7116:16;;6994:148;7116:16;;;;1199:32380;6994:148;;;:::i;:::-;1199:32380;;7152:202;;-1:-1:-1;7412:25:167;1199:32380;6711:14;;;;1199:32380;7451:52;;-1:-1:-1;;;;;1199:32380:167;7451:52;;:::i;:::-;7412:92;;;;;;;;;;;:::i;:::-;7518:8;;7514:263;;7835:36;1199:32380;;;7412:92;1199:32380;;;7835:36;;;;;;:::i;:::-;7897:4;7881:13;;;1199:32380;7881:13;;7911:16;;;1199:32380;7949:39;1199:32380;7949:39;6093:1902;:::o;7514:263::-;7608:31;7692:20;7608:31;;:::i;:::-;7692:20;;;:::i;:::-;7727:39;6711:14;7727:39;;:::o;7152:202::-;7269:20;;;;;;;;:::i;6781:167::-;6872:11;;;;;;;;;;;:::i;6707:64::-;-1:-1:-1;;;;;1199:32380:167;6741:13;;;1199:32380;6707:64;;;1199:32380;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;8001:539;1199:32380;;8394:20;;;;1199:32380;8428:23;;;;1199:32380;8465:24;;;;1199:32380;8503:20;;;;1199:32380;;-1:-1:-1;;;8205:328:167;;;;1199:32380;8205:328;;;1199:32380;;8465:24;1199:32380;;8503:20;;-1:-1:-1;;;;;1199:32380:167;8001:539;;1199:32380;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;8205:328;;1199:32380;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;9406:16;1199:32380;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;9496:14;1199:32380;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;9598:22;1199:32380;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;9742:20;1199:32380;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;11712:12;1199:32380;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;1535:19:168;1199:32380:167;;;;;;:::o;:::-;-1:-1:-1;;1199:32380:167;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;11221:14;1199:32380;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;10629:1823;;;;;;;;;;;10991:31;11107:30;;;;;:::i;:::-;11237:21;11193:92;11237:21;;;;;;;:::i;11193:92::-;1199:32380;;;11295:156;;1199:32380;;-1:-1:-1;1199:32380:167;;-1:-1:-1;;;;;11465:21:167;11237;;;11465;:::i;:::-;1199:32380;;;11534:25;12207:12;11534:25;;;;;;;;:::i;:::-;11461:211;;11781:18;11712:59;11725:21;11712:50;11725:21;11748:13;11712:35;11725:21;;;;;:::i;:::-;11712:35;:::i;:::-;11748:13;;1199:32380;;;;;;;;;;11712:50;1199:32380;;;;;;;;;;;;;;;;11712:59;11781:18;:36;11803:14;;;1199:32380;;;11781:36;:::i;:::-;1199:32380;;;11831:23;11827:120;;11461:211;11996:24;1199:32380;12081:14;;1199:32380;;-1:-1:-1;;;;;1199:32380:167;12022:21;11725;;;12022;:::i;:::-;11803:14;;11748:13;11803:14;;;1199:32380;11748:13;;1199:32380;12054:10;;12081:14;;:::i;:::-;12207:12;;;:::i;:::-;12299:21;11725;;;12299;:::i;:::-;11237;12236:209;;12361:21;11237;;;12361;:::i;:::-;1199:32380;;;11748:13;;;;1199:32380;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;12396:11;;1199:32380;;;;;;;;11803:14;;;;1199:32380;;;;;;;;;12054:10;;1199:32380;;;;;;;;;;;12236:209;;;;10629:1823::o;11827:120::-;11870:66;11877:59;11748:13;11877:50;11748:13;11877:35;11890:21;11725;11748:13;;;1199:32380;11725:21;;11890;:::i;11877:59::-;11870:66;:::i;:::-;11827:120;;11461:211;11237:21;;;;;;11590:71;11237:21;11628;11237;12207:12;11237:21;;;11628;:::i;11590:71::-;11461:211;;11295:156;1199:32380;;-1:-1:-1;;;11352:88:167;;1199:32380;11352:88;1199:32380;11352:88;;;;:::i;1199:32380::-;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;-1:-1:-1;1199:32380:167;;-1:-1:-1;1199:32380:167;;;;-1:-1:-1;1199:32380:167;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;:::o;12458:617::-;;1199:32380;;:::i;:::-;;;;;;;:::i;:::-;;;;12687:58;;;12683:137;;1199:32380;;;:::i;:::-;12857:28;12833:53;;12829:128;;1199:32380;;;;:::i;:::-;;;4683:36;;;;12982:76;;;;;;;1199:32380;12982:76;;;;;;:::i;:::-;12687:14;12967:101;;12458:617;:::o;12829:128::-;12909:37;;;;;;;;:::i;:::-;12902:44;;;;;:::o;12683:137::-;12768:41;;;;;;;;:::i;1199:32380::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;13081:1946::-;1199:32380;;:::i;:::-;13363:21;;;;13320:65;13321:64;13363:21;;;:::i;:::-;13321:64;:::i;:::-;13320:65;;1199:32380;13320:65;13316:196;;13556:21;;;;;;13525:53;13526:52;13556:21;;;:::i;:::-;13526:52;:::i;13525:53::-;13521:187;;13854:21;14028:11;13854:21;;;;:::i;:::-;13889;13798:292;13889:21;;;:::i;:::-;13948:13;;;;1199:32380;13975:11;;;;1199:32380;14000:14;;;;;;1199:32380;14028:11;;;;;;;;:::i;:::-;13924:10;;;;13798:292;;:::i;:::-;13948:13;14117:20;;1199:32380;-1:-1:-1;;;;;1199:32380:167;;;14117:20;;;14151:13;14147:438;;14617:25;;;;;;;;;1199:32380;14595:19;;;;1199:32380;14656:24;14652:159;;13081:1946;14846:29;13363:21;14846:29;;13975:11;14846:29;;;13948:13;14820:23;;:55;14000:14;14907:25;;;13975:11;14885:19;;:47;14961:22;1199:32380;13363:21;14942:16;;1199:32380;15002:4;1199:32380;;;:::i;:::-;14994:26;13081:1946;:::o;14652:159::-;14721:34;1199:32380;14721:79;;1199:32380;;14721:58;;-1:-1:-1;;;;;1199:32380:167;;-1:-1:-1;;;;;1199:32380:167;;;14721:58;1199:32380;;;;;;;;;;14721:79;;;;;1199:32380;;;;;;;;14721:79;;;;;;;;;;13363:21;14721:79;-1:-1:-1;14721:79:167;;;14652:159;14696:22;;1199:32380;14696:22;;1199:32380;14652:159;;;14721:79;;;;;;-1:-1:-1;14721:79:167;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;14147:438;14228:307;14317:21;;;;;;;;;;;:::i;:::-;14360;13924:10;14360:21;;:::i;:::-;14228:307;;:::i;:::-;14180:394;13347:14;14180:394;;;:::o;13521:187::-;13665:21;;;13609:78;13665:21;;;;;:::i;:::-;1199:32380;;-1:-1:-1;;;13609:78:167;;;;;;;-1:-1:-1;;;;;1199:32380:167;13609:78;;;1199:32380;;;;;13609:78;;1199:32380;;13609:78;;;;;;:::i;13316:196::-;13416:75;13469:21;;;;13416:75;13469:21;;:::i;:::-;1199:32380;;-1:-1:-1;;;13416:75:167;;;;-1:-1:-1;;;;;1199:32380:167;;;13416:75;;;1199:32380;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;-1:-1:-1;1199:32380:167;;-1:-1:-1;1199:32380:167;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15033:3521::-;;1199:32380;;:::i;:::-;15281:12;;;;;;15264:29;15281:12;;;:::i;:::-;-1:-1:-1;;;;;1199:32380:167;;;;15264:29;15307:26;15321:12;;;:::i;15307:26::-;:10;:26;15303:152;;15511:21;;;;15468:65;15469:64;15511:21;;;:::i;15468:65::-;15464:196;;15704:21;;;;;;15673:53;15674:52;15704:21;;;:::i;15673:53::-;15669:187;;1199:32380;;:::i;:::-;;16017:21;;;:::i;:::-;16040:12;16105:14;15975:154;16040:12;;;:::i;:::-;16054:21;;;;:::i;:::-;16077:13;;;;1199:32380;16092:11;;;;;1199:32380;16105:14;;;;1199:32380;15975:154;;;;:::i;:::-;16143:6;;;;16139:438;;16615:21;;;16651:24;16606:31;16615:21;;;:::i;16651:24::-;:73;16676:12;;;;:::i;:::-;16698:24;1199:32380;16690:33;;-1:-1:-1;;;;;1199:32380:167;;;16690:33;1199:32380;;-1:-1:-1;;;16651:73:167;;1199:32380;;;;;;16651:73;;;;:::i;:::-;;;;;;15264:14;;16651:73;;;15033:3521;-1:-1:-1;16647:584:167;;17145:12;;;;;17089:92;17145:12;17159:21;17145:12;17089:92;17145:12;;:::i;:::-;17159:21;;:::i;:::-;1199:32380;;16879:31;;;;;;17089:92;;;;;;;;:::i;16647:584::-;16769:11;;;;;;;16765:245;;16647:584;;17245:46;16647:584;17263:12;;;:::i;:::-;1199:32380;;;;;;;;;;;17245:46;;16651:73;17245:46;;;:::i;:::-;;;;;15264:14;;17245:46;;;16647:584;-1:-1:-1;17241:970:167;;17994:12;;;17895:266;17994:12;;;18028:21;17994:12;17895:266;17994:12;;:::i;18028:21::-;1199:32380;;17496:33;;;;;;17895:266;;;;;;;1199:32380;;15264:14;1199:32380;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17241:970;17342:30;;;;;;;;;;;;17338:478;;-1:-1:-1;;;;18243:25:167;;;1199:32380;;18221:19;;;1199:32380;18303:34;1199:32380;18303:85;;17241:970;-1:-1:-1;18243:25:167;;;18303:58;;-1:-1:-1;;;;;1199:32380:167;;;18303:58;1199:32380;;;;;;;;;;;;;18303:85;;16651:73;18303:85;;1199:32380;;;;;;;;18303:85;;;;;;;;;;16077:13;18303:85;15264:14;18303:85;;;17241:970;18278:22;;;;1199:32380;15511:21;18424:29;;;18398:23;;;:55;18485:25;;16092:11;18463:19;;:47;18303:34;1199:32380;;;:::i;18303:85::-;;;;;;;-1:-1:-1;18303:85:167;;;;;;:::i;:::-;;;;;;17338:478;17448:306;17555:12;;;17593:21;17555:12;17448:306;17555:12;;;;;:::i;:::-;17593:21;;:::i;:::-;1199:32380;;17496:33;;;;;;17448:306;;;;;;;;:::i;17245:46::-;;;;;;;;;;;;;;;:::i;:::-;;;;;16765:245;16912:12;;16856:92;16912:12;;;16856:92;16912:12;;;16926:21;16912:12;;:::i;16651:73::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;16139:438;16307:21;;;;;;;;;16384;16350:12;16307:21;16213:314;16307:21;;;:::i;:::-;16350:12;;:::i;16384:21::-;16213:314;;:::i;15669:187::-;15813:21;;;15757:78;15813:21;;;15757:78;15813:21;;:::i;:::-;1199:32380;;-1:-1:-1;;;15757:78:167;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;15757:78;;;1199:32380;;;;;;;;;15464:196;15617:21;15564:75;15617:21;;15564:75;15617:21;;;;;:::i;:::-;1199:32380;;-1:-1:-1;;;15564:75:167;;;;-1:-1:-1;;;;;1199:32380:167;;;15564:75;;;1199:32380;;;;;;;;;15303:152;15364:70;15421:12;;;15364:70;15421:12;;:::i;:::-;1199:32380;;-1:-1:-1;;;15364:70:167;;;;-1:-1:-1;;;;;1199:32380:167;;;15364:70;;;1199:32380;;;;;;;;;18560:858;;;;;;;;;;;1199:32380;;;;;;;18908:25;1199:32380;;;;;18977:327;;;;1199:32380;18977:327;;;19021:66;;;;18977:327;;1199:32380;18977:327;;;1199:32380;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;18977:327;1199:32380;;;;;;;;;;;;;;;:::i;18977:327::-;18908:410;;;;;;:::i;:::-;19332:8;;19328:83;;18560:858;:::o;19328:83::-;1199:32380;;-1:-1:-1;;;19349:62:167;;1199:32380;;;19349:62;;18977:327;19349:62;;;:::i;1199:32380::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;19688:14;1199:32380;;;19688:14;1199:32380;;;:::o;19424:716::-;;1199:32380;;:::i;:::-;;19932:14;19688;;;:::i;:::-;19733:21;19610:523;19733:21;;;;;:::i;:::-;19610:523;19812:12;;;;;:::i;:::-;19610:523;19855:21;;;;;:::i;:::-;20084:12;19610:523;20084:12;;:::i;:::-;1199:32380;;;:::i;:::-;;;;;;19733:21;19610:523;;1199:32380;;19610:523;-1:-1:-1;;;;;1199:32380:167;19812:12;19610:523;;1199:32380;;19610:523;19777:13;;;;1199:32380;19855:21;19610:523;;1199:32380;-1:-1:-1;;;;;1199:32380:167;;;19610:523;;;1199:32380;;19610:523;-1:-1:-1;;;;;1199:32380:167;19897:11;19610:523;;1199:32380;;19610:523;19897:11;;;1199:32380;19610:523;;;1199:32380;19932:14;1199:32380;;19610:523;;1199:32380;19688:14;19610:523;;;1199:32380;19688:14;19610:523;;;1199:32380;19688:14;19610:523;;;1199:32380;19610:523;;;1199:32380;19688:14;19610:523;;;1199:32380;19424:716;:::o;20146:314::-;6839:31;20324:20;;;1199:32380;20419:19;;-1:-1:-1;;;;;;20380:29:167;;;:::i;:::-;1199:32380;20363:14;;;1199:32380;20419:19;:34;20146:314::o;:::-;1199:32380;;;;;;20419:19;20324:20;;;;1199:32380;;;;20380:29;;;:::i;1199:32380::-;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1199:32380:167;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;20466:536::-;1199:32380;;20627:16;;;;1199:32380;;;;;;;;20657:23;;;1199:32380;20657:23;;;-1:-1:-1;;;;;1199:32380:167;20694:15;;;1199:32380;20723:14;;;1199:32380;;;20694:15;;-1:-1:-1;;;;;1199:32380:167;20751:23;;;1199:32380;20751:23;;;-1:-1:-1;;;;;1199:32380:167;20788:13;;;;1199:32380;20815:16;;;;1199:32380;20845:14;;;1199:32380;;;;;;;;20873:20;;;1199:32380;;;;;:::i;:::-;20907:14;;;1199:32380;-1:-1:-1;;;;;;1199:32380:167;20935:19;;;;;20968:17;;;1199:32380;;20657:23;1199:32380;;;;;;;;;;;;;;20561:434;;;;;:::i;:::-;;;;;20466:536::o;21008:450::-;;21281:47;;;:::i;:::-;21338:54;;;21402:49;;21410:27;21402:49;21008:450;:::o;21338:54::-;21351:41;-1:-1:-1;21351:41:167;:::o;21464:1238::-;-1:-1:-1;;;;;;;;;21800:28:167;;;:::i;:::-;1199:32380;21800:68;;;:96;;;21464:1238;21796:172;;22076:197;;;;;;;;;;;;;;;22286:56;22313:27;22286:56;;:83;;;;;21464:1238;22282:159;;;22475:24;1199:32380;;22475:24;:::i;:::-;-1:-1:-1;22451:95:167;;1199:32380;;;:::i;:::-;22643:4;22635:60;;21464:1238;:::o;22451:95::-;-1:-1:-1;;;;;;1199:32380:167;;:::i;22282:159::-;22385:45;;;;;-1:-1:-1;22385:45:167;-1:-1:-1;1199:32380:167;;;:::i;22286:83::-;22367:2;22346:23;;;;22286:83;;;21796:172;21912:45;21920:5;21912:45;21920:5;1199:32380;;;:::i;21800:96::-;1199:32380;21893:3;1199:32380;;21872:24;21800:96;;22708:805;;1199:32380;;;;;;:::i;:::-;;23005:58;;;:76;;;22708:805;23001:91;;23128:158;23341:14;23240:21;23324:31;23240:21;;;;;;:::i;:::-;23263:13;;;;1199:32380;23128:158;;:::i;:::-;23341:14;;1199:32380;23324:31;;:::i;:::-;23369:30;;;;23365:45;;1199:32380;;-1:-1:-1;;;23240:21:167;23428:78;;;;;;1199:32380;;;;;;;;;;;23428:78;1199:32380;;;;23428:78;1199:32380;23365:45;1199:32380;;;;:::i;23001:91::-;1199:32380;;;;;;;;;:::i;:::-;-1:-1:-1;1199:32380:167;;23083:9;:::o;23005:76::-;23067:14;;;23005:76;;23519:695;;;;;23817:1;23820:33;;;;;;24199:8;;;;;23817:1;23519:695;:::o;23805:13::-;-1:-1:-1;;;;;1199:32380:167;23891:28;;;;:::i;:::-;;1199:32380;;;;;23891:64;:136;;;23805:13;23870:249;;1199:32380;;23805:13;;23870:249;24067:28;;;:37;:28;;;;;:::i;:::-;;:37;1199:32380;24060:44;:::o;23891:136::-;23979:28;;:36;:28;;;;:::i;:::-;;:36;1199:32380;23979:48;23891:136;;24220:1117;;1199:32380;24471:14;;;:::i;:::-;1199:32380;24467:125;;24471:14;24622:33;;;;;;25198:21;;25297:33;25198:21;;25255:14;25198:21;24741;25076:204;25198:21;;;:::i;:::-;1199:32380;25135:145;1199:32380;;:::i;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;25135:145;25230:13;;;1199:32380;24741:21;25135:145;;1199:32380;25255:14;1199:32380;25135:145;;;1199:32380;25076:204;;;;:::i;:::-;;25297:33;:::i;24607:13::-;24693:44;:28;;;;:::i;:::-;;1199:32380;-1:-1:-1;;;;;1199:32380:167;;;24693:44;24741:21;;24693:69;24741:21;;;;;:::i;24693:69::-;-1:-1:-1;;;;;1199:32380:167;;;24693:69;;;:146;;24607:13;24672:324;;;1199:32380;;24607:13;;24672:324;24872:37;:28;24913:14;24872:28;:55;:28;;;;:::i;:::-;;:37;24913:14;;1199:32380;;;24872:55;:::i;:::-;1199:32380;;24945:36;:::o;24693:146::-;24786:28;;;;;;:::i;:::-;;:36;1199:32380;24826:13;;;1199:32380;24786:53;24693:146;;;24467:125;24545:36;;;;:::o;25343:407::-;-1:-1:-1;;;;;1199:32380:167;;;;25514:30;;25510:47;;25572:63;1199:32380;25572:29;1199:32380;;;;;;;;;;;;;25572:63;;;;;1199:32380;25572:63;;-1:-1:-1;;25572:63:167;;;25343:407;-1:-1:-1;25568:176:167;;25721:12;-1:-1:-1;25721:12:167;:::o;25572:63::-;;;;;;;;;;;;;;;:::i;:::-;;;;;25510:47;25546:11;;1199:32380;25546:11;:::o;25756:244::-;25867:28;;:33;;:126;;;;25860:133;25756:244;:::o;25867:126::-;1199:32380;;;;4592:71:119;;;;;1017:25;-1:-1:-1;1017:25:119;;;4592:71;;;;;;;;1199:32380:167;4592:71:119;;;;;;:::i;:::-;4784:212;;;;;;;;-1:-1:-1;4784:212:119;5013:29;;;;25867:126:167;5013:48:119;;;;25867:126:167;975:149:119;;;;25867:126:167;1543:81:119;;;;;;25867:126:167;25756:244;:::o;1543:81:119:-;1570:54;;;;:::i;975:149::-;1199:32380:167;;;;-1:-1:-1;1199:32380:167;;;;;4592:71:119;;;;;;1199:32380:167;;;4592:71:119;;;1199:32380:167;4592:71:119;;;;;;:::i;:::-;4784:212;;;-1:-1:-1;4784:212:119;;;;;5013:29;;975:149;5013:48;;;;;975:149;1059:65;;975:149;;;;;;5013:48;5046:15;;;;5013:48;;;:29;5024:18;;;-1:-1:-1;5013:29:119;;;;:48;5046:15;;;-1:-1:-1;5013:48:119;;;:29;5024:18;-1:-1:-1;5024:18:119;;-1:-1:-1;5013:29:119;;;4421:647;-1:-1:-1;4592:71:119;4421:647;1199:32380:167;;4592:71:119;;;1017:25;;;;4592:71;;25966:26:167;;;4592:71:119;;;1199:32380:167;4592:71:119;;;;;;:::i;:::-;4784:212;;;;-1:-1:-1;4784:212:119;;5013:29;;;4421:647;5013:48;;;;5006:55;4421:647;:::o;5013:48::-;5046:15;;;;4421:647;:::o;5013:29::-;4592:71;-1:-1:-1;5024:18:119;;-1:-1:-1;5013:29:119;;;26006:1485:167;;26249:12;;26245:27;;-1:-1:-1;;;;;1199:32380:167;;;26286:30;;26282:201;;-1:-1:-1;1199:32380:167;;;-1:-1:-1;;;26546:27:167;;26562:10;26546:27;;;1199:32380;26546:27;;;;1199:32380;;;26546:27;;;26260:1;;26546:27;;;26006:1485;-1:-1:-1;26542:446:167;;-1:-1:-1;;1199:32380:167;-1:-1:-1;;;26882:95:167;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;26882:95;;;1199:32380;;;;;26260:1;1199:32380;;;;26882:95;1199:32380;;;;26882:95;1199:32380;26542:446;26618:17;;;26614:230;;-1:-1:-1;27038:28:167;1199:32380;27002:66;;26542:446;;27030:37;;-1:-1:-1;;;;;1199:32380:167;;;27030:37;1199:32380;;;;;;;;;;;27002:66;;26562:10;26546:27;27002:66;;;:::i;:::-;;;;;26260:1;;27002:66;;;26542:446;-1:-1:-1;26998:467:167;;-1:-1:-1;1199:32380:167;-1:-1:-1;;;27357:97:167;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;27357:97;;;1199:32380;;;;;26260:1;1199:32380;;;;27357:97;1199:32380;;;;27357:97;1199:32380;26998:467;27115:19;;;27111:208;;26998:467;;;;;1199:32380;;:::i;27111:208::-;1199:32380;;-1:-1:-1;;;27161:143:167;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;27161:143;;;1199:32380;;;;;;;;;;;;;;;27161:143;1199:32380;;;;27161:143;1199:32380;27002:66;;;;;;;;;;;;;;;:::i;:::-;;;;;26614:230;1199:32380;;-1:-1:-1;;;26682:147:167;;;;;;;-1:-1:-1;;;;;;1199:32380:167;;;26682:147;;;1199:32380;;;;;;;;;;;;;;;26682:147;1199:32380;;;;26682:147;1199:32380;26546:27;;;;;;;;;;;;;;;:::i;:::-;;;;;26282:201;26336:24;-1:-1:-1;;26336:24:167;;;;26332:39;;1199:32380;;-1:-1:-1;;;26392:80:167;;;;;;;1199:32380;;;;;;;;;;;26392:80;1199:32380;;;;26392:80;1199:32380;26245:27;1199:32380;;;;;:::i;27497:1508::-;;;27645:12;;27641:25;;1199:32380;;;-1:-1:-1;;;27760:30:167;;;27784:4;27760:30;;;;1199:32380;;;;;;27760:30;;;;;1199:32380;;;-1:-1:-1;;;;;1199:32380:167;;;-1:-1:-1;27760:30:167;1199:32380;;;;27760:30;;;;;;;27497:1508;-1:-1:-1;27756:254:167;;27866:144;;27919:80;27866:144;;:::i;:::-;1199:32380;;-1:-1:-1;;;27919:80:167;;1199:32380;;;27919:80;;;:::i;27756:254::-;28024:28;1199:32380;27756:254;;;28024:41;;-1:-1:-1;;;;;1199:32380:167;;;28024:41;:95;;;;;1199:32380;;-1:-1:-1;;;28024:95:167;;-1:-1:-1;;;;;1199:32380:167;;28024:95;;;1199:32380;;;28084:10;1199:32380;;;;27784:4;1199:32380;;;;;;;;;;;;27656:1;;1199:32380;;;;;27656:1;;1199:32380;;;;28024:95;;;;;;;;27756:254;-1:-1:-1;28020:255:167;;28131:144;;28184:80;28131:144;;:::i;28020:255::-;1199:32380;;28319:30;;;27784:4;28319:30;;;1199:32380;;;;;27656:1;;28285:20;;1199:32380;;;;;;;;28319:30;;;;;;;;;28020:255;-1:-1:-1;28315:253:167;;28424:144;;28477:80;28424:144;;:::i;28315:253::-;28390:22;;;;;27656:1;;28315:253;28603:29;;;;;28635:28;;;;:::i;:::-;28603:64;;28681:25;;;28677:322;;27497:1508;;;;;;:::o;28677:322::-;1199:32380;;-1:-1:-1;;;28831:143:167;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;28831:143;;;1199:32380;;;;;;;;;;;;;;;28729:259;;28831:143;1199:32380;;;;28831:143;;1199:32380;;28831:143;;;;;;:::i;:::-;1199:32380;-1:-1:-1;;;28729:259:167;;1199:32380;;;28729:259;;;:::i;28603:64::-;;;;;;28319:30;;;;;;;;;;;;;;;:::i;:::-;;;;;28024:95;;;;;;:::i;:::-;;;;27760:30;;;;;;;;;;;;;;;:::i;:::-;;;;;27641:25;27659:7;;;:::o;29011:2511::-;;;;;;;29317:27;-1:-1:-1;1199:32380:167;;;;;;;;;29358:36;;;;;;;;;;;;:::i;:::-;;1199:32380;;;;;;;;;;29358:36;;;;;;;;;;;;;;29011:2511;-1:-1:-1;29354:256:167;;29476:134;;29529:70;29476:134;;:::i;:::-;1199:32380;;-1:-1:-1;;;29529:70:167;;1199:32380;;;29529:70;;;:::i;29354:256::-;;29623:29;;;29619:335;;29964:26;;;;;;30004:35;-1:-1:-1;1199:32380:167;;30004:35;;;;;;;;;;;:::i;:::-;;;;;;;;;;;29354:256;-1:-1:-1;30000:254:167;;30120:134;;30173:70;30120:134;;:::i;30000:254::-;;1199:32380;30268:98;;;;;-1:-1:-1;1199:32380:167;;;;;;;30268:98;1199:32380;;;;;;;;;;;;;;;;30268:98;;;;1199:32380;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30268:98;;;;;;;;;30000:254;-1:-1:-1;30264:248:167;;30378:134;;30431:70;30378:134;;:::i;30264:248::-;1199:32380;;30562:36;;;30522:26;;;;-1:-1:-1;1199:32380:167;;;30562:36;1199:32380;;30562:36;;;;:::i;:::-;;;;;;;;;;;30264:248;-1:-1:-1;30558:255:167;;30679:134;30732:70;30679:134;;:::i;30558:255::-;30639:28;;;;;;30558:255;30862:35;-1:-1:-1;1199:32380:167;;30862:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;;30558:255;-1:-1:-1;30858:253:167;;30977:134;;31030:70;30977:134;;:::i;30858:253::-;30938:27;31147:29;30938:27;;;;;;;;30858:253;31147:29;:::i;:::-;31125:51;;;;:104;;;30858:253;31121:395;;;;;29011:2511;;;;;;;;:::o;31121:395::-;1199:32380;;-1:-1:-1;;;31344:147:167;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;31344:147;;;1199:32380;;;;;;;;;;;;;;;;;;;;;;;;;31252:253;;31344:147;1199:32380;;;;31344:147;1199:32380;31344:147;1199:32380;-1:-1:-1;;;31252:253:167;;1199:32380;;;31252:253;;;:::i;31125:104::-;31201:28;;;;;:::i;:::-;31180:49;;31125:104;;;;;30862:35;;;;;;;;;;;;;;;:::i;:::-;;;;;30562:36;;;;;;;;-1:-1:-1;30562:36:167;;;;;;:::i;:::-;;;;;30268:98;;;;;;:::i;:::-;;;;30004:35;;;;;;;;-1:-1:-1;30004:35:167;;;;;;:::i;:::-;;;;;29619:335;1199:32380;;;29675:268;1199:32380;29767:162;1199:32380;;;;;29767:162;1199:32380;;;17496:33;;;;;;29767:162;;;;;;;;:::i;29358:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;1199:32380;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;31528:1732::-;1199:32380;;-1:-1:-1;;;;;1199:32380:167;;;31528:1732;;;;;31818:42;;31528:1732;31818:42;:::i;:::-;1199:32380;;;-1:-1:-1;;;31920:50:167;;;1199:32380;;31920:50;;31870:35;;1199:32380;-1:-1:-1;1199:32380:167;;31920:50;31870:35;;31920:50;;;;:::i;:::-;;;;;;-1:-1:-1;;31920:50:167;;;31528:1732;-1:-1:-1;31916:276:167;;32062:130;;32115:66;32062:130;;:::i;:::-;1199:32380;;-1:-1:-1;;;32115:66:167;;1199:32380;;;32115:66;;;:::i;31916:276::-;;32206:71;;;;;1199:32380;;-1:-1:-1;;;32206:71:167;;1199:32380;;;;;-1:-1:-1;1199:32380:167;;32206:71;1199:32380;;;32206:71;;;;:::i;:::-;;;;;;;;;;;31916:276;-1:-1:-1;32202:217:167;;32289:130;;32342:66;32289:130;;:::i;32202:217::-;;;32477:50;-1:-1:-1;32202:217:167;1199:32380;32477:50;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;32477:50:167;;;32202:217;-1:-1:-1;32473:275:167;;32618:130;;32671:66;32618:130;;:::i;32473:275::-;32578:28;;;;;-1:-1:-1;32763:13:167;1199:32380;;32778:20;;;;;32819;;;;:::i;:::-;1199:32380;32843:35;:21;32867:11;32843:21;;;;;:::i;:::-;1199:32380;32867:11;;:::i;:::-;1199:32380;32843:35;;:::i;:::-;32819:59;32815:369;;1199:32380;;32763:13;;32815:369;33096:12;;32905:264;33096:12;33001:150;33096:12;33001:150;33096:12;33118:11;33096:12;;;;;:::i;:::-;1199:32380;33118:11;;:::i;:::-;1199:32380;;;;33049:27;;;;;;33001:150;;;;;;;;:::i;:::-;1199:32380;-1:-1:-1;;;32905:264:167;;1199:32380;;;32905:264;;;:::i;32778:20::-;;;;;;;;;;;31528:1732::o;32477:50::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;32206:71;;;;;;:::i;:::-;;;;31920:50;;;;;;;;;;;;;:::i;:::-;;;;;33266:311;;;1199:32380;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1199:32380:167;;;:::i;:::-;;;;;;;33387:33;-1:-1:-1;33450:11:167;;;;;;33266:311;;;;:::o;33435:13::-;33478:22;;1199:32380;33478:22;;;:::i;:::-;1199:32380;;;;;;;;;;33435:13;;1052:123:168;1117:4;1126;-1:-1:-1;;;;;1199:32380:167;1109:21:168;1105:63;;1052:123::o;1105:63::-;1199:32380:167;;-1:-1:-1;;;1139:29:168;;;;;1181:2673;;;;;;;1535:47;:37;;;;:::i;:47::-;1199:32380:167;-1:-1:-1;;;;;;1199:32380:167;;-1:-1:-1;;;1597:43:168;;;1593:165;;-1:-1:-1;;;;1771:38:168;;;1767:145;;-1:-1:-1;;;;;;;1925:36:168;;;1921:166;;-1:-1:-1;;;;2100:41:168;;;2096:141;;-1:-1:-1;;;;2250:40:168;;;2246:106;;-1:-1:-1;;;;2366:37:168;;;2362:400;;-1:-1:-1;;;;2786:33:168;2775:44;;;2771:391;;-1:-1:-1;;;;23451:24:167;-1:-1:-1;;;3175:35:168;;;3171:159;;-1:-1:-1;;;;3354:23:168;-1:-1:-1;3343:34:168;;;3339:147;;-1:-1:-1;;;;3499:33:168;;;3495:149;;-1:-1:-1;;;;3668:25:168;3657:36;;;-1:-1:-1;3653:175:168;;1199:32380:167;;;;;:::i;3653:175:168:-;3716:101;1199:32380:167;3784:32:168;3716:101;3784:32;;1199:32380:167;;;;;;;;;;;;3716:101:168;;;;;;;;;;;:::i;3495:149::-;3610:22;;;;;1199:32380:167;;;3555:78:168;;;;;;;;;;1199:32380:167;;;;;;;;-1:-1:-1;1199:32380:167;-1:-1:-1;3555:78:168;1199:32380:167;;;;3555:78:168;1199:32380:167;3339:147:168;3448:26;;;;;3400:75;3448:26;;1199:32380:167;;3400:75:168;1199:32380:167;;3400:75:168;;;;;;;;;;1199:32380:167;;;;;;;;3171:159:168;3293:25;;;;;3233:86;3293:25;3233:86;3293:25;;1199:32380:167;;;3233:86:168;;;;;;;;;;1199:32380:167;;;;;;;;;;;;;;;2771:391:168;2853:32;;;;;;;3007:144;2853:32;;3007:144;2853:32;;:42;:32;;;;:::i;:42::-;1199:32380:167;2930:38:168;:56;:38;:48;:38;;;;:::i;:56::-;1199:32380:167;;;;3007:144:168;;;;;;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2362:400:168;2439:34;;;;;;;2599:152;2439:34;;2599:152;2439:34;;:44;:34;;;;:::i;:44::-;1199:32380:167;2520:40:168;:58;:40;:50;:40;;;;:::i;:58::-;1199:32380:167;;;;2599:152:168;;;;;;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2246:106:168;1199:32380:167;;;;;;;;;;;2299:53:168;;;;;;;;;;;:::i;2096:141::-;1199:32380:167;;2164:62:168;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;2164:62:168;;;1199:32380:167;;-1:-1:-1;2164:62:168;;-1:-1:-1;1199:32380:167;;-1:-1:-1;;1199:32380:167;;;;-1:-1:-1;2164:62:168;;-1:-1:-1;;1199:32380:167;1921:166:168;1199:32380:167;;;;;;;;1984:92:168;1199:32380:167;1984:92:168;1199:32380:167;;;;;;;;;;1767:145:168;1199:32380:167;;1832:69:168;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;1832:69:168;;;1199:32380:167;-1:-1:-1;1199:32380:167;;-1:-1:-1;1832:69:168;;-1:-1:-1;1199:32380:167;;-1:-1:-1;;1199:32380:167;;;;-1:-1:-1;1832:69:168;;-1:-1:-1;1199:32380:167;1593:165:168;1199:32380:167;;;;;;;1663:84:168;1199:32380:167;;1663:84:168;1199:32380:167;;;;1663:84:168;;;;;;;;;;;:::i;3860:1466::-;;;;4206:49;:30;:40;:30;;;;:::i;:49::-;1199:32380:167;-1:-1:-1;;;;;;1199:32380:167;;-1:-1:-1;;;4270:40:168;;;4266:106;;-1:-1:-1;;;;4386:41:168;;;4382:170;;-1:-1:-1;;;;4576:25:168;4565:36;;;4561:216;;-1:-1:-1;;;;3668:25:168;-1:-1:-1;;;4790:36:168;;;4786:168;;-1:-1:-1;;;;3510:22:168;-1:-1:-1;4967:33:168;;;4963:142;;-1:-1:-1;;;;5129:41:168;5118:52;;;-1:-1:-1;5114:186:168;;1199:32380:167;;;;;:::i;5114:186:168:-;5193:96;5270:18;5193:96;5270:18;;1199:32380:167;;;5193:96:168;;;;;;;;;;1199:32380:167;;;;;;;;;;;;;;;4963:142:168;5078:15;;;;;1199:32380:167;;;5023:71:168;;;;;;;;;;1199:32380:167;;;;;;;;-1:-1:-1;1199:32380:167;-1:-1:-1;5023:71:168;1199:32380:167;;;;5023:71:168;1199:32380:167;4786:168:168;1199:32380:167;;;;-1:-1:-1;4849:94:168;;1199:32380:167;-1:-1:-1;4849:94:168;;-1:-1:-1;;;;;;1199:32380:167;;;4561:216:168;4728:24;;;;;;;4624:142;4728:24;;;4624:142;4728:24;;1199:32380:167;;;;4624:142:168;;;;;;;;;;;:::i;4382:170::-;1199:32380:167;;4450:91:168;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;4450:91:168;;;1199:32380:167;;;;;;;;;;;;;;;-1:-1:-1;4450:91:168;;-1:-1:-1;1199:32380:167;;-1:-1:-1;;1199:32380:167;;;;-1:-1:-1;4450:91:168;1199:32380:167;6283:160:168;;1199:32380:167;;;;;;:::i;:::-;6406:1:168;1199:32380:167;;;;;;;;;6383:25:168;1199:32380:167;;;;;6283:160:168:o;6449:234::-;6575:1;1199:32380:167;;6554:22:168;6550:44;;6605:72;;;6449:234;:::o;6550:44::-;6578:16;6592:1;6578:16;:::o;1199:32380:167:-;;;;;;;:::i;:::-;;;;-1:-1:-1;1199:32380:167;;-1:-1:-1;1199:32380:167;;;;-1:-1:-1;1199:32380:167;;;;-1:-1:-1;1199:32380:167;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;-1:-1:-1;1199:32380:167;;-1:-1:-1;1199:32380:167;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;8365:2733:168:-;;;;;;;;;;1199:32380:167;;:::i;:::-;8838:37:168;1199:32380:167;8838:47:168;:37;;;;:::i;:47::-;1199:32380:167;:::i;:::-;;;;;;-1:-1:-1;;;;;1199:32380:167;8937:20:168;;;1199:32380:167;;8937:20:168;9018:25;;1199:32380:167;;8993:22:168;;;1199:32380:167;;;-1:-1:-1;;;;;1199:32380:167;9018:25:168;;;1199:32380:167;;;9058:37:168;;9054:106;;9208:62;;;;:::i;:::-;9284:14;;9280:76;;9370:8;9366:70;;9450:68;9451:67;;;;;;;:::i;9450:68::-;9446:160;;9619:14;;9615:80;;9726:44;:34;;;;:::i;:44::-;1199:32380:167;9803:58:168;:40;:50;:40;;;;:::i;:58::-;1199:32380:167;9875:14:168;;;;;:54;;;;8365:2733;9871:142;;;;;10114:48;10041:32;10114:38;10041:42;10114:56;10041:32;;;;:::i;:42::-;1199:32380:167;10114:38:168;;:::i;:56::-;1199:32380:167;10184:12:168;;;;:40;;;;8365:2733;10180:135;;;;1199:32380:167;10329:30:168;;;:71;;;;8365:2733;10325:157;;;8993:22;10495:26;;1199:32380:167;10524:15:168;-1:-1:-1;10491:104:168;;10619:22;;;1199:32380:167;10609:32:168;;10605:91;;10710:32;;;1199:32380:167;;;;;;-1:-1:-1;;;;;1199:32380:167;10710:52:168;10706:139;;11013:28;10883:18;;;;:::i;:::-;10710:32;10855:25;;1199:32380:167;;10943:32:168;;;1199:32380:167;10911:29:168;;:64;11013:28;;;10985:25;;:56;1199:32380:167;11052:39:168;-1:-1:-1;11052:39:168;8365:2733;:::o;10706:139::-;-1:-1:-1;;;;;;3668:25:168;10778:56;-1:-1:-1;3668:25:168;-1:-1:-1;10778:56:168:o;10605:91::-;-1:-1:-1;;;;;;3510:22:168;10643:53;-1:-1:-1;3510:22:168;-1:-1:-1;;;10643:53:168:o;10491:104::-;-1:-1:-1;;;;;;3354:23:168;10541:54;-1:-1:-1;3354:23:168;-1:-1:-1;;;10541:54:168:o;10325:157::-;-1:-1:-1;;;;;;23451:24:167;10416:55:168;-1:-1:-1;23451:24:167;-1:-1:-1;;;10416:55:168:o;10329:71::-;10363:37;;;;10329:71;;;10180:135;-1:-1:-1;;;;;;2786:33:168;10240:64;-1:-1:-1;2786:33:168;-1:-1:-1;;;;10240:64:168:o;10184:40::-;10200:14;;;;;:::i;:::-;:24;10184:40;;;;9871:142;-1:-1:-1;;;;;;2377:26:168;9945:57;-1:-1:-1;2377:26:168;-1:-1:-1;;;;;;;9945:57:168:o;9875:54::-;9893:24;;;;;:::i;:::-;:36;9875:54;;;;;9615:80;-1:-1:-1;;;;;;2261:29:168;9635:60;-1:-1:-1;2261:29:168;-1:-1:-1;;;;;;;9635:60:168:o;9446:160::-;-1:-1:-1;;;;;;2111:30:168;9534:61;-1:-1:-1;2111:30:168;-1:-1:-1;;;;;;;9534:61:168:o;9366:70::-;-1:-1:-1;;;;;;;;;1936:25:168;9380:56;-1:-1:-1;1936:25:168;-1:-1:-1;;;;;;;;;9380:56:168:o;9280:76::-;-1:-1:-1;;;;;;1782:27:168;9300:56;-1:-1:-1;1782:27:168;-1:-1:-1;;;;;;;;;;9300:56:168:o;9054:106::-;-1:-1:-1;;;;;;1608:32:168;9097:63;-1:-1:-1;1608:32:168;-1:-1:-1;;;;;;;;;;9097:63:168:o;5332:398::-;1199:32380:167;;-1:-1:-1;;;5559:34:168;;;;;;;;;5332:398;;;5559:34;;1199:32380:167;5559:34:168;:::i;:::-;;5531:63;;;;;;;;;;;;:::i;:::-;5608:8;;1199:32380:167;;5608:28:168;;5332:398;5604:55;;5559:34;1199:32380:167;;;5683:27:168;;1199:32380:167;;;;5683:27:168;5559:34;5683:27;1199:32380:167;;;;:::i;:::-;;;-1:-1:-1;;;;;1199:32380:167;;;;;5683:39:168;;5332:398::o;5604:55::-;5638:21;;;;;:::o;5608:28::-;1199:32380:167;5559:34:168;1199:32380:167;;5620:16:168;5608:28;;5736:541;-1:-1:-1;;;;;1199:32380:167;;;;;6011:21:168;1199:32380:167;;;;;5736:541:168;;;;1199:32380:167;-1:-1:-1;1199:32380:167;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;6074:34:168;:85;;;;;5736:541;6070:102;;;1199:32380:167;;;;;;;-1:-1:-1;;1199:32380:167;;6212:26:168;;1199:32380:167;;;6189:81:168;;6212:26;1199:32380:167;;;;6212:26:168;1199:32380:167;6212:26:168;1199:32380:167;6202:37:168;;1199:32380:167;;6189:81:168;;:::i;6070:102::-;6161:11;;;;1199:32380:167;6161:11:168;:::o;6074:85::-;6112:15;;;:47;;6074:85;;;11104:1431;;;;;1199:32380:167;;:::i;:::-;;;;;11504:14:168;;11500:80;;11621:49;:30;;:40;:30;;:::i;:49::-;11684:18;;;;1199:32380:167;11684:23:168;;;11680:90;;11784:24;;;1199:32380:167;11784:29:168;;;:76;;;;11104:1431;11780:163;;;1199:32380:167;;-1:-1:-1;;;;;1199:32380:167;;;;;11956:45:168;11952:107;;12073:15;1199:32380:167;12073:15:168;;1199:32380:167;12073:25:168;12069:84;;12167:30;-1:-1:-1;12163:133:168;;12334:18;12457:21;12334:18;1199:32380:167;12334:18:168;;:::i;:::-;12306:25;;;1199:32380:167;;12394:25:168;;;1199:32380:167;:::i;:::-;12362:29:168;;;:57;12457:21;1199:32380:167;:::i;:::-;12429:25:168;;;:49;1199:32380:167;12489:39:168;11458:21;12489:39;11104:1431;:::o;12163:133::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;5129:41:168;12213:72;-1:-1:-1;5129:41:168;-1:-1:-1;12213:72:168:o;12069:84::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;3510:22:168;12100:53;-1:-1:-1;3510:22:168;-1:-1:-1;;12100:53:168:o;11952:107::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;3668:25:168;12003:56;-1:-1:-1;3668:25:168;-1:-1:-1;;12003:56:168:o;11780:163::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;4576:25:168;11876:56;-1:-1:-1;4576:25:168;-1:-1:-1;;;11876:56:168:o;11784:76::-;11845:15;;;-1:-1:-1;11817:43:168;11784:76;;;11680:90;-1:-1:-1;11458:21:168;;-1:-1:-1;;;4397:30:168;11709:61;-1:-1:-1;4397:30:168;-1:-1:-1;;;11709:61:168:o;11500:80::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;2261:29:168;11520:60;-1:-1:-1;2261:29:168;-1:-1:-1;;;;11520:60:168:o;6891:211:171:-;6967:12;;6963:37;;1084:2;7014:27;;7010:85;;6891:211;:::o;7010:85::-;1199:32380:167;;;;7050:45:171;;;;;;;;;1199:32380:167;1084:2:171;1199:32380:167;;;;7050:45:171;6963:37;1199:32380:167;;-1:-1:-1;;;6988:12:171;;;;;7368:318;;;;;7529:13;7541:1;7529:13;7524:118;7544:17;;;;;;7659:20;;;;;7368:318;:::o;7563:3::-;1199:32380:167;;;;;;;;;;7784:6:171;;;;:78;:6;;;1199:32380:167;;;7803:22:171;;;1199:32380:167;;;;;;;;;;7803:22:171;1199:32380:167;;;;7803:22:171;1199:32380:167;7803:22:171;1199:32380:167;7793:33:171;;7784:78;7563:3;-1:-1:-1;;1199:32380:167;;;;;;7529:13:171;;;;;7784:78;1199:32380:167;;;7839:22:171;;;1199:32380:167;;;;;;;;;;7839:22:171;;1199:32380:167;;;;7839:22:171;1199:32380:167;7839:22:171;1199:32380:167;7829:33:171;;7784:78;","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":1595,"length":20},{"start":3820,"length":20},{"start":3957,"length":20}]}},"immutableReferences":{"67918":[{"start":13169,"length":32}]}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","MAX_CHECKOUT_SIZE()":"a3eaf4d9","checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":"2c0c49ee","executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":"59a8a40a","executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":"d65852a6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CHECKOUT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem[]\",\"name\":\"_items\",\"type\":\"tuple[]\"}],\"name\":\"checkout\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutSummary\",\"name\":\"summary\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]\",\"name\":\"items\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutExecution\",\"name\":\"execution\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem\",\"name\":\"_item\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_remainingEth\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_grossAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"executeCheckoutItem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newRemainingEth\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem\",\"name\":\"_item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_grossAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"executeCheckoutPayout\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Direct calls revert because this contract has no standalone marketplace state or escrow. It must run through `RareERC1155Marketplace` so `address(this)`, `msg.sender`, `msg.value`, and storage all resolve to the marketplace proxy.\",\"kind\":\"dev\",\"methods\":{\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert.\"},\"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Module-only entrypoint; the marketplace proxy does not expose this selector.\"},\"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])\":{\"details\":\"Module-only entrypoint; the marketplace proxy does not expose this selector.\"}},\"title\":\"RareERC1155CheckoutExecutionModule\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases.\"},\"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Executes one already validated checkout item through a nested delegatecall rollback boundary.\"},\"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Executes payout for a checkout item through a nested rollback boundary.\"}},\"notice\":\"Delegatecall-only multi-item checkout execution module for the ERC1155 marketplace.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155CheckoutExecutionModule.sol\":\"RareERC1155CheckoutExecutionModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4\",\"dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155CheckoutExecutionModule.sol\":{\"keccak256\":\"0x5e21c4d426f55a9c348d866505dcd62395f6c96c971c523c4ea9d1507aa49564\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36f027c0fb078527e853940bacded87cbbbd57d3d85c54a34ebcef3fd585d24a\",\"dweb:/ipfs/QmeK38XavEKAmqGVd2tiXnc95qAZnVUM2wMEkXoQ5AtoAV\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9\",\"dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155CheckoutExecutionModule.sol\":{\"keccak256\":\"0xe223548b0a458c57b134511ec1d89fd8ff246e4e95d00c88f539307a759d27ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0af693fe86b9cdea8dbce052db16e88466d346a29370a01646e013b3075cfd55\",\"dweb:/ipfs/QmcZRuWwPP1cpPo1dzeGdT21ERH4YzgxTN1tY3UoTNHRkQ\"]},\"src/marketplace/RareERC1155ExecutionModuleBase.sol\":{\"keccak256\":\"0x7ef2133c307dde9b4de4470cc9f410496fec223376d9b3ebf44d61b1d51d7862\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d30a82a811e717056e78d14a85eb242353bfac401046d76c41b090cebb28a3d1\",\"dweb:/ipfs/QmZMSNTSh62mDm8Q7AYyRYhJiiPFpmjftktyVSzXnjrKgp\"]},\"src/marketplace/RareERC1155MarketplacePayments.sol\":{\"keccak256\":\"0x063bfec0e8cf831a2abf94595c25714fb5daddc26263960f38d9e4951772332c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1580164159928504b7b8ef73fab3a4d70d6771f8ed85ebdd41d5a9c602104099\",\"dweb:/ipfs/QmQRVWPsWmDAkNRrECPNrGkejwZJ1QspPcfXbJ673bcyhG\"]},\"src/marketplace/RareERC1155MarketplaceStorage.sol\":{\"keccak256\":\"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a\",\"dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89\",\"dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CHECKOUT_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","name":"_items","type":"tuple[]","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"checkout","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","name":"execution","type":"tuple","components":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","name":"summary","type":"tuple","components":[{"internalType":"uint256","name":"filledCount","type":"uint256"},{"internalType":"uint256","name":"skippedCount","type":"uint256"},{"internalType":"uint256","name":"ethSpent","type":"uint256"},{"internalType":"uint256","name":"ethRefunded","type":"uint256"}]},{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","name":"items","type":"tuple[]","components":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bool","name":"filled","type":"bool"},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8"},{"internalType":"bytes4","name":"reason","type":"bytes4"},{"internalType":"bytes","name":"failureData","type":"bytes"},{"internalType":"uint256","name":"totalPaid","type":"uint256"}]}]}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","name":"_item","type":"tuple","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]},{"internalType":"uint256","name":"_remainingEth","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_grossAmount","type":"uint256"},{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"payable","type":"function","name":"executeCheckoutItem","outputs":[{"internalType":"uint256","name":"totalPaid","type":"uint256"},{"internalType":"uint256","name":"newRemainingEth","type":"uint256"}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","name":"_item","type":"tuple","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_grossAmount","type":"uint256"},{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"payable","type":"function","name":"executeCheckoutPayout"}],"devdoc":{"kind":"dev","methods":{"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert."},"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":{"details":"Module-only entrypoint; the marketplace proxy does not expose this selector."},"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":{"details":"Module-only entrypoint; the marketplace proxy does not expose this selector."}},"version":1},"userdoc":{"kind":"user","methods":{"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"notice":"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases."},"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":{"notice":"Executes one already validated checkout item through a nested delegatecall rollback boundary."},"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":{"notice":"Executes payout for a checkout item through a nested rollback boundary."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155CheckoutExecutionModule.sol":"RareERC1155CheckoutExecutionModule"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858","urls":["bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4","dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155CheckoutExecutionModule.sol":{"keccak256":"0x5e21c4d426f55a9c348d866505dcd62395f6c96c971c523c4ea9d1507aa49564","urls":["bzz-raw://36f027c0fb078527e853940bacded87cbbbd57d3d85c54a34ebcef3fd585d24a","dweb:/ipfs/QmeK38XavEKAmqGVd2tiXnc95qAZnVUM2wMEkXoQ5AtoAV"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9","urls":["bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9","dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155CheckoutExecutionModule.sol":{"keccak256":"0xe223548b0a458c57b134511ec1d89fd8ff246e4e95d00c88f539307a759d27ee","urls":["bzz-raw://0af693fe86b9cdea8dbce052db16e88466d346a29370a01646e013b3075cfd55","dweb:/ipfs/QmcZRuWwPP1cpPo1dzeGdT21ERH4YzgxTN1tY3UoTNHRkQ"],"license":"MIT"},"src/marketplace/RareERC1155ExecutionModuleBase.sol":{"keccak256":"0x7ef2133c307dde9b4de4470cc9f410496fec223376d9b3ebf44d61b1d51d7862","urls":["bzz-raw://d30a82a811e717056e78d14a85eb242353bfac401046d76c41b090cebb28a3d1","dweb:/ipfs/QmZMSNTSh62mDm8Q7AYyRYhJiiPFpmjftktyVSzXnjrKgp"],"license":"MIT"},"src/marketplace/RareERC1155MarketplacePayments.sol":{"keccak256":"0x063bfec0e8cf831a2abf94595c25714fb5daddc26263960f38d9e4951772332c","urls":["bzz-raw://1580164159928504b7b8ef73fab3a4d70d6771f8ed85ebdd41d5a9c602104099","dweb:/ipfs/QmQRVWPsWmDAkNRrECPNrGkejwZJ1QspPcfXbJ673bcyhG"],"license":"MIT"},"src/marketplace/RareERC1155MarketplaceStorage.sol":{"keccak256":"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1","urls":["bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a","dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd","urls":["bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89","dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":167} \ No newline at end of file diff --git a/abis/RareERC1155ContractFactory.json b/abis/RareERC1155ContractFactory.json index 33b2485..c21c5eb 100644 --- a/abis/RareERC1155ContractFactory.json +++ b/abis/RareERC1155ContractFactory.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createRareERC1155Contract","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"defaultMinter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"rareERC1155","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultMinter","inputs":[{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRareERC1155","inputs":[{"name":"_rareERC1155","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefaultMinterUpdated","inputs":[{"name":"defaultMinter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155ContractCreated","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155Updated","inputs":[{"name":"rareERC1155","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x608080604052346100b95760008054336001600160a01b031980831682178455936001600160a01b03939290919084167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08480a3613519818101906001600160401b038211838310176100a5579082916106a08339039082f09081156100995750169060015416176001556040516105e190816100bf8239f35b604051903d90823e3d90fd5b634e487b7160e01b84526041600452602484fd5b600080fdfe608060408181526004908136101561001657600080fd5b600092833560e01c908163014812a2146104da5750806318cf6f4214610473578063389dee181461044a578063715018a6146103ed5780638667f619146101f85780638da5cb5b146101cc578063e2be1a081461014a5763f2fde38b1461007c57600080fd5b34610146576020366003190112610146576001600160a01b03823581811693919290849003610142576100ad610532565b83156100f05750506000548260018060a01b0319821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8480fd5b8280fd5b5090346101465760203660031901126101465780356001600160a01b03811692908390036101c85761017a610532565b82156101bb575050600180546001600160a01b031916821790557fe329ca164c11428fa5ee865054c08ccee6f2d38eda61e9e6a35b3081a472daed8280a280f35b51637827912560e01b8152fd5b8380fd5b8382346101f457816003193601126101f457905490516001600160a01b039091168152602090f35b5080fd5b508290346101f457600319906060368301126101465767ffffffffffffffff84358181116101425761022d90369087016104ff565b91906024358281116103e95761024690369089016104ff565b95906044358481116103e55761025f9036908b016104ff565b600154608881901c62ffffff16763d602d80600a3d3981f3363d3d373d3d3d363d73000000178b5260781b6001600160781b0319166e5af43d82803e903d91602b57fd5bf3176020526001600160a01b039890929089603760098df016998a156103a95760025416958a3b156103a557938b9693610313610322948f979461030360a09a968f519e8f9c8d9c8d6329fab88760e21b90528d015260a48c019161058a565b91868a84030160248b015261058a565b9286840301604487015261058a565b903360648401526084830152038183885af1801561039b57610371575b5050602093505191817f0c069e30a19668076937a9266318f1876e9c7dabdae788aaad8f5c73599aea89339280a38152f35b81949294116103885760209450835291848061033f565b634e487b7160e01b825260418552602482fd5b83513d87823e3d90fd5b8b80fd5b895162461bcd60e51b81526020818f01526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606490fd5b8880fd5b8680fd5b8334610447578060031936011261044757610406610532565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b8382346101f457816003193601126101f45760025490516001600160a01b039091168152602090f35b5050346101f45760203660031901126101f457356001600160a01b038116908190036101f4576104a1610532565b600280546001600160a01b031916821790557feedfae894237292077aa1e4fcca7f9a0a2aabeda165c2ff69a08cfd365d7c9eb8280a280f35b8490346101f457816003193601126101f4576001546001600160a01b03168152602090f35b9181601f8401121561052d5782359167ffffffffffffffff831161052d576020838186019501011161052d57565b600080fd5b6000546001600160a01b0316330361054657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b908060209392818452848401376000828201840152601f01601f191601019056fea26469706673582212202c39113f71e37d7694680563bbcddaf4b40177f6c8604ca920efaf328fb3058c64736f6c6343000812003360808060405234620000c6576000549060ff8260081c1662000074575060ff8082160362000038575b60405161344d9081620000cc8239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e146124a657806301ffc9a7146123ec57806306fdde031461235a5780630de54ba0146122d65780630e89341c146121545780631542bb9514611ec957806318e97fd114611d465780632a55205a14611c985780632baf2acb14611c275780632eb2c2d61461185f5780633512639c146117df5780633a3d146f1461179f5780633ebc82c51461176657806340c1a064146117315780634e1273f4146115935780634f558e79146115655780636b20c4541461131d578063715018a6146112c0578063894ba833146112715780638da5cb5b1461124857806395d89b4114611175578063a22cb4651461109e578063a7eae21c146109f3578063bd85b039146109c7578063c33ae88f1461099a578063cfdbf2541461097e578063e2200a0b146108ad578063e27a41bf1461085d578063e985e9c514610807578063ee070805146107e3578063f242432a1461044d578063f2fde38b146103c0578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101636020526020604060002054604051908152f35b600080fd5b346101be576101d136612626565b6001600160a01b0390921691903383148015610397575b6101f190612904565b8215926101fe8415612c1e565b61020782612bf9565b9161021184612bf9565b9460006040516102208161254e565b52610343575b60005b83518110156102c45761023c81856128f0565b5161024782886128f0565b51908060005260fb602081815260406000205492848410610280579061027b959493929160005252036040600020556128be565b610229565b60405162461bcd60e51b815260048101839052602860248201526000805160206133f8833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612c76565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a461034160405161254e565b005b929060005b835181101561038f578061035f61038a92886128f0565b5161036a82876128f0565b5160005260fb6020526103836040600020918254612a20565b90556128be565b610348565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103d96124cd565b6103e1612798565b6001600160a01b038116156103f957610341906127f0565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be576104666124cd565b61046e6124e3565b90608480356001600160401b0381116101be5761048f903690600401612719565b6001600160a01b039190838316331480156107b8575b6104ae90612904565b828516156104bc8115612967565b6104c7604435612bf9565b6104d2606435612bf9565b9185871615610778575b6106ca575b505060443560005260209460978652604060002084861660005286526040600020546105116064358210156129c1565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061055c6064358254612a20565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b6105a357005b60a060006105ed958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a483019061258a565b0393165af16000918161069b575b5061067157505060019061060d612b18565b6308c379a01461063c575b5061061f57005b60405162461bcd60e51b81528061063860048201612ba4565b0390fd5b610644612b36565b90816106505750610618565b61063860405192839262461bcd60e51b84526004840152602483019061258a565b6001600160e01b0319161490506103415760405162461bcd60e51b81528061063860048201612acf565b6106bc919250843d86116106c3575b6106b48183612569565b810190612aaf565b90846105fb565b503d6106aa565b92959194909360005b8451811015610769576106e681866128f0565b51906106f281886128f0565b518260005260fb602052604060002054818110610726576107219360005260fb602052036040600020556128be565b6106d3565b60405162461bcd60e51b815260206004820152602860248201526000805160206133f8833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104e1565b959260009794919592975b86518110156107aa578061079a6107a5928b6128f0565b5161036a828a6128f0565b610783565b5092959691949093966104dc565b5082841660005260986020526040600020336000526020526104ae60ff6040600020541690506104a5565b346101be5760003660031901126101be57602060ff61016154166040519015158152f35b346101be5760403660031901126101be576108206124cd565b6108286124e3565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be57610876612798565b60ff610161541661089b576101675461034190600435906001600160a01b03166132ed565b604051637abbf1c960e01b8152600490fd5b346101be5760403660031901126101be576004356108c96124e3565b906108d2612798565b60ff610161541661089b578060005261016360205260ff6002604060002001541615610966576001600160a01b0382161561095457806000526101696020526040600020549160648302928084046064149015171561093e576001600160601b03610341931691613240565b634e487b7160e01b600052601160045260246000fd5b604051637827912560e01b8152600490fd5b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760003660031901126101be57602060405160648152f35b346101be5760203660031901126101be576004356000526101666020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be57610a239036906004016125f9565b906024356001600160401b0381116101be57610a439036906004016125f9565b6044356001600160401b0381116101be57610a629036906004016125f9565b90929091906064356001600160a01b03811690036101be57608435956001600160a01b03871687036101be576000549560ff8760081c161596878098611091575b801561107a575b1561101e5760ff1981166001176000558761100c575b506064356001600160a01b031615610954576001600160401b038211610e14578190610aee61015f546124f9565b601f8111610f9e575b50600090601f8311600114610f1557600092610f0a575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610e1457610b3f610160546124f9565b601f8111610ea8575b50600090601f8311600114610e3557610bb39493929160009183610e2a575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ba360ff60005460081c16610b9e81612d22565b612d22565b610bac336127f0565b36916126d3565b91610bc960ff60005460081c16610b9e81612d22565b82516001600160401b038111610e1457610be46099546124f9565b601f8111610daf575b506020601f8211600114610d485781929394600092610d3d575b50508160011b916000199060031b1c1916176099555b610c3b60ff60005460081c16610c3281612d22565b610b9e81612d22565b61016780546001600160a01b0319166064356001600160a01b0316179055600a610168556040516103e890602090610c7281612533565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610ce5575b50610ca76064356127f0565b610cad57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101656020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610c9b565b015190508480610c07565b601f198216906099600052806000209160005b818110610d9757509583600195969710610d7e575b505050811b01609955610c1d565b015160001960f88460031b161c19169055848080610d70565b9192602060018192868b015181550194019201610d5b565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610e0a575b601f0160051c01905b818110610dfe5750610bed565b60008155600101610df1565b9091508190610de8565b634e487b7160e01b600052604160045260246000fd5b013590508780610b67565b61016060005260206000209160005b601f1985168110610e905750918391600193610bb3979695601f19811610610e76575b505050811b0161016055610b7e565b0135600019600384901b60f8161c19169055878080610e67565b90926020600181928686013581550194019101610e44565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610f03575b601f830160051c82018110610ef7575050610b48565b60008155600101610ee1565b5080610ee1565b013590508880610b0e565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610f86576001945083601f19811610610f6c575b505050811b0161015f55610b25565b0135600019600384901b60f8161c19169055888080610f5d565b81810135835560209485019460019093019201610f42565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510611005575b90849392915b601f830160051c82018110610ff6575050610af7565b60008155859450600101610fe0565b5080610fda565b61ffff19166101011760005588610ac0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610aaa5750600160ff821614610aaa565b50600160ff821610610aa3565b346101be576110ac366125ca565b6001600160a01b039091169033821461111e573360005260986020526040600020826000526020526110ee8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be5760405160009061016080549061119b826124f9565b90818452600192838116908160001461122057506001146111df575b6111db846111c781880382612569565b60405191829160208352602083019061258a565b0390f35b90935060005260209283600020916000925b82841061120d57505050816111db936111c792820101936111b7565b80548585018701529285019281016111f1565b6111db96506111c79450602092508593915060ff191682840152151560051b820101936111b7565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be5761128a612798565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760003660031901126101be576112d9612798565b603380546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101be5760603660031901126101be576113366124cd565b6024906001600160401b039082358281116101be576113599036906004016126b5565b9160449081359081116101be576113749036906004016126b5565b6001600160a01b0390921692338414801561153c575b61139390612904565b831561139f8115612c1e565b6113ac8251855114612a2d565b60006040516113ba8161254e565b52611504575b60005b815181101561145c576113d681836128f0565b516113e182866128f0565b51908060005260fb60208181526040600020549284841061141a5790611415959493929160005252036040600020556128be565b6113c3565b60405162461bcd60e51b8152600481018390526028818d01526000805160206133f8833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b82518110156114d157806114796114cc92856128f0565b5161148482876128f0565b51908060005260976020908082526040600020876000528252604060002054926114b085851015612c76565b60005281526040600020908660005252036040600020556128be565b611462565b50906000805160206133b88339815191526114f6600094604051918291339583612a8a565b0390a461034160405161254e565b9260009491945b8451811015611532578061152261152d92866128f0565b5161036a82886128f0565b61150b565b50929390936113c0565b5083600052609860205260406000203360005260205261139360ff60406000205416905061138a565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be578160040135906115d082612650565b926115de6040519485612569565b82845260209260248486019160051b830101913683116101be57602401905b828210611712575050506024359081116101be5761161f9036906004016126b5565b82518151036116bb5782519261163484612650565b936116426040519586612569565b808552611651601f1991612650565b01368486013760005b81518110156116a45761169f9061168f6001600160a01b0361167c83866128f0565b511661168883876128f0565b5190612839565b61169982886128f0565b526128be565b61165a565b5050506111db604051928284938452830190612764565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115fd565b346101be5760203660031901126101be57600435600052610164602052602060018060a01b0360406000205416604051908152f35b346101be5760203660031901126101be5761177f6124cd565b611787612798565b60ff610161541661089b5761016854610341916132ed565b346101be5760203660031901126101be576001600160a01b036117c06124cd565b16600052610165602052602060ff604060002054166040519015158152f35b346101be5760603660031901126101be576117f86124cd565b6001600160401b03906024358281116101be57611819903690600401612734565b926044359081116101be57611832903690600401612734565b919060ff610161541661089b5761185161185992610341963691612667565b923691612667565b91612d82565b346101be5760031960a0368201126101be576118796124cd565b906118826124e3565b6044908135926001600160401b03938481116101be576118a69036906004016126b5565b606480358681116101be576118bf9036906004016126b5565b9460849687359081116101be576118da903690600401612719565b6001600160a01b039489861633148015611bfc575b6118f890612904565b6119058551895114612a2d565b858716156119138115612967565b868b1615611bb9575b611b04575b60005b85518110156119b9578061193b6119b492886128f0565b518c611947838d6128f0565b519180600052609790838c6020948486526040600020828216600052865260406000205491611978848410156129c1565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c16600052526103836040600020918254612a20565b611924565b50888a989796949789604051886000805160206133b883398151915289808d16941692806119e987339583612a8a565b0390a4873b6119f457005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a48701611a2891612764565b90848783030190870152611a3b91612764565b918483030190840152611a4d9161258a565b03921691815a602094600091f160009181611ae4575b50611abc5750506001611a74612b18565b6308c379a014611a85575b61061f57005b611a8d612b36565b80611a985750611a7f565b60405162461bcd60e51b81526020600482015290819061063890602483019061258a565b6001600160e01b031916146103415760405162461bcd60e51b81528061063860048201612acf565b611afd91925060203d81116106c3576106b48183612569565b9083611a63565b9796949060009993999692965b8551811015611ba957611b2481876128f0565b51611b2f82896128f0565b519080600052602060fb815260406000205491838310611b6857611b639493929160fb9160005252036040600020556128be565b611b11565b508b9067616c537570706c7960c01b8f6000805160206133f88339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b5090949697989298959195611921565b99969498959392919060005b8a51811015611bed57808b61036a82611be1611be8958f6128f0565b51926128f0565b611bc5565b5090919293959894969961191c565b50858a1660005260986020526040600020336000526020526118f860ff6040600020541690506118ef565b346101be57611c3536612626565b9160ff610161541661089b57602092611c909160405190611c5582612533565b6001825285368184013760405192611c6c84612533565b6001845286368186013785611c80846128cd565b52611c8a846128cd565b52612d82565b604051908152f35b346101be5760403660031901126101be5760243560043560005261012e60205260406000209060405191611ccb83612533565b546001600160a01b0380821680855260a09290921c6020850152929015611d23575b6001600160601b036020820151169182810292818404149015171561093e57604092612710915116918351928352046020820152f35b50604051611d3081612533565b61012d54838116825260a01c6020820152611ced565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611d7a9036906004016125f9565b9190611d84612798565b60ff610161541661089b57836000526101639160209280845260ff6002604060002001541615611eb057856000528352600180604060002001918511610e1457611dd885611dd284546124f9565b84612cce565b6000601f8611600114611e39579185806000805160206133d883398151915297969593611e2995600093611e2e575b501b906000198760031b1c19161790555b6040519383859485528401916131c0565b0390a2005b85013592508a611e07565b601f1986169083600052856000209160005b818110611e9b57509187969593916000805160206133d883398151915298611e29969410611e81575b505085811b019055611e18565b840135600019600389901b60f8161c191690558880611e74565b86830135845592840192918701918701611e4b565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576001600160401b036004358181116101be57611efa9036906004016125f9565b6044356001600160a01b0381169190602435908381036101be57611f1c612798565b60ff610161541661089b5781156121425783156109545761016294611f4186546128be565b809655604051966060880188811082821117610e1457604052838852611f683686846126d3565b9760209889820190815260408201906001938483528a6000526101638c526040600020935184558484019151948551918211610e1457611fb282611fac85546124f9565b85612cce565b8c8d601f84116001146120d05750918080926002969594611ffd996000946120c5575b50501b916000199060031b1c19161790555b51151591019060ff801983541691151516179055565b60008681526101648852604080822080546001600160a01b03191633179055610168546101698a529120819055606480820294918015908604909114171561093e576120767fc07473765c308da8ff95c4974c60af7332d93777f002550fa063b77064a6f7b2936001600160601b038996169086613240565b836000805160206133d88339815191526040518a81528061209a8c82018a886131c0565b0390a26120ba604051928392835260408a840152339660408401916131c0565b0390a4604051908152f35b015192503880611fd5565b9193949596601f1984168660005283600020936000905b82821061212b57505091611ffd989795939185600298969410612112575b505050811b019055611fe7565b015160001960f88460031b161c191690558e8080612105565b8088869782949787015181550196019401906120e7565b604051631dd0e19360e01b8152600490fd5b346101be576020806003193601126101be57600435600052610163815260018060406000200190826040518093600090805490612190826124f9565b808552918681169081156122b55750600114612274575b50506121b592500383612569565b8151156121d35750905b6111db60405192828493845283019061258a565b90506040519060009083609954916121ea836124f9565b9283865285828216918260001461225457505060011461221a575b50505081612214910382612569565b906121bf565b91909250609960005282600020916000925b82841061224157505050820101818385612205565b805486850186015292840192810161222c565b60ff19168482015293151560051b84019092019350859150869050612205565b9091506000528260002090846000925b82841061229e57505050916121b5928201018592876121a7565b805488850187015287945092850192869101612284565b9150506121b594925060ff191682840152151560051b8201018592876121a7565b346101be576122e4366125ca565b906122ed612798565b60ff610161541661089b576001600160a01b03169081156109545760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b59183600052610165825261234f8160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be5760405160009061015f805490612380826124f9565b90818452600192838116908160001461122057506001146123ab576111db846111c781880382612569565b90935060005260209283600020916000925b8284106123d957505050816111db936111c792820101936111b7565b80548585018701529285019281016123bd565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be57602090635a08b45360e11b8114908115612495575b8115612438575b506040519015158152f35b63152a902d60e11b811491508115612452575b508261242d565b636cdb3d1360e11b811491508115612484575b8115612473575b508261244b565b6301ffc9a760e01b1490508261246c565b6303a24d0760e21b81149150612465565b631030681960e21b81149150612426565b346101be5760403660031901126101be576020611c906124c46124cd565b60243590612839565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c92168015612529575b602083101461251357565b634e487b7160e01b600052602260045260246000fd5b91607f1691612508565b604081019081106001600160401b03821117610e1457604052565b602081019081106001600160401b03821117610e1457604052565b90601f801991011681019081106001600160401b03821117610e1457604052565b919082519283825260005b8481106125b6575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612595565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610e145760051b60200190565b929161267282612650565b916126806040519384612569565b829481845260208094019160051b81019283116101be57905b8282106126a65750505050565b81358152908301908301612699565b9080601f830112156101be578160206126d093359101612667565b90565b9291926001600160401b038211610e1457604051916126fc601f8201601f191660200184612569565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be578160206126d0933591016126d3565b9181601f840112156101be578235916001600160401b0383116101be576020808501948460051b0101116101be57565b90815180825260208080930193019160005b828110612784575050505090565b835185529381019392810192600101612776565b6033546001600160a01b031633036127ac57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561286657600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b600019811461093e5760010190565b8051156128da5760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156128da5760209160051b010190565b1561290b57565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561296e57565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b156129c857565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9190820180921161093e57565b15612a3457565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612aa16126d093604084526040840190612764565b916020818403910152612764565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612b2557565b905060046000803e60005160e01c90565b600060443d106126d057604051600319913d83016004833e81516001600160401b03918282113d602484011117612b9357818401948551938411612b9b573d85010160208487010111612b9357506126d092910160200190612569565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612c0682612533565b6001825260203681840137612c1a826128cd565b5290565b15612c2557565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612c7d57565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612cdc57505050565b600091825260208220906020601f850160051c83019410612d18575b601f0160051c01915b828110612d0d57505050565b818155600101612d01565b9092508290612cf8565b15612d2957565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b0380831692919083156109545760335416331415806131a6575b61318e5783511561317c57835181510361316a5783519260649384811161314c575060015b8551811015612e3a57612ddd81876128f0565b516000198201828111612e2557612df490886128f0565b511015612e0357600101612dca565b612e0f602491876128f0565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612f2457612e5886846128f0565b519586600052610163602081815260409060ff60028360002001541615612f0c57612e8384896128f0565b5115612efb578960005261016690818152612ead8360002054612ea6878c6128f0565b5190612a20565b938b60005281528260002054808511612ed9575060009a8b525290972096909655600190950194612e45565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612f3a8761254e565b60008752612f4b8651855114612a2d565b60005b8651811015612f8d5780612f65612f8892876128f0565b51612f70828a6128f0565b5160005260fb60205261038388600020918254612a20565b612f4e565b5090919560005b8651811015612fde5780612fab612fd992876128f0565b51612fb6828a6128f0565b5160005260206097815288600020908c6000525261038388600020918254612a20565b612f94565b50919690939581600088516000805160206133b88339815191523391806130068a8d83612a8a565b0390a43b613017575b505050505050565b61306a600060209461307989519788968795869461305763bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a4880190612764565b9060031994858884030190880152612764565b9184830301608485015261258a565b03925af16000918161312c575b506131005750506001613097612b18565b6308c379a0146130ca575b6130b357505b38808080808061300f565b5162461bcd60e51b81528061063860048201612ba4565b6130d2612b36565b806130dd57506130a2565b825162461bcd60e51b81526020600482015290819061063890602483019061258a565b6001600160e01b0319160361311557506130a8565b5162461bcd60e51b81528061063860048201612acf565b61314591925060203d81116106c3576106b48183612569565b9038613086565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016560205260ff6040600020541615612da5565b908060209392818452848401376000828201840152601f01601f1916010190565b156131e857565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b916001600160601b0316906132596127108311156131e1565b6001600160a01b039081169283156132a8576040519361327885612533565b84526020808501938452600091825261012e9052604090209251915160a01b6001600160a01b0319169116179055565b60405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b6001600160a01b039081169190821561095457606482116133975760018060a01b0319926101678185825416179055826101685560648302928084046064149015171561093e57613385906001600160601b0384166133506127108211156131e1565b602060405161335e81612533565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a264697066735822122026b8813d0baac9420a99d9afd9e56ef504790238a57fbfb1fe400c37ea7dfbfc64736f6c63430008120033","sourceMap":"542:1772:222:-:0;;;;;;;2518:6:88;542:1772:222;;719:10:113;-1:-1:-1;;;;;;542:1772:222;;;;;;;;-1:-1:-1;;;;;542:1772:222;2518:6:88;542:1772:222;;719:10:113;542:1772:222;;2566:40:88;2518:6;;2566:40;929:17:222;;;;;-1:-1:-1;;;;;929:17:222;;;;;;;;;;;;;;;;;;;;;;;542:1772;;;;;;;;;;;;;;;;;;929:17;542:1772;;;;;;;;;;929:17;-1:-1:-1;;;542:1772:222;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060408181526004908136101561001657600080fd5b600092833560e01c908163014812a2146104da5750806318cf6f4214610473578063389dee181461044a578063715018a6146103ed5780638667f619146101f85780638da5cb5b146101cc578063e2be1a081461014a5763f2fde38b1461007c57600080fd5b34610146576020366003190112610146576001600160a01b03823581811693919290849003610142576100ad610532565b83156100f05750506000548260018060a01b0319821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8480fd5b8280fd5b5090346101465760203660031901126101465780356001600160a01b03811692908390036101c85761017a610532565b82156101bb575050600180546001600160a01b031916821790557fe329ca164c11428fa5ee865054c08ccee6f2d38eda61e9e6a35b3081a472daed8280a280f35b51637827912560e01b8152fd5b8380fd5b8382346101f457816003193601126101f457905490516001600160a01b039091168152602090f35b5080fd5b508290346101f457600319906060368301126101465767ffffffffffffffff84358181116101425761022d90369087016104ff565b91906024358281116103e95761024690369089016104ff565b95906044358481116103e55761025f9036908b016104ff565b600154608881901c62ffffff16763d602d80600a3d3981f3363d3d373d3d3d363d73000000178b5260781b6001600160781b0319166e5af43d82803e903d91602b57fd5bf3176020526001600160a01b039890929089603760098df016998a156103a95760025416958a3b156103a557938b9693610313610322948f979461030360a09a968f519e8f9c8d9c8d6329fab88760e21b90528d015260a48c019161058a565b91868a84030160248b015261058a565b9286840301604487015261058a565b903360648401526084830152038183885af1801561039b57610371575b5050602093505191817f0c069e30a19668076937a9266318f1876e9c7dabdae788aaad8f5c73599aea89339280a38152f35b81949294116103885760209450835291848061033f565b634e487b7160e01b825260418552602482fd5b83513d87823e3d90fd5b8b80fd5b895162461bcd60e51b81526020818f01526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606490fd5b8880fd5b8680fd5b8334610447578060031936011261044757610406610532565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b8382346101f457816003193601126101f45760025490516001600160a01b039091168152602090f35b5050346101f45760203660031901126101f457356001600160a01b038116908190036101f4576104a1610532565b600280546001600160a01b031916821790557feedfae894237292077aa1e4fcca7f9a0a2aabeda165c2ff69a08cfd365d7c9eb8280a280f35b8490346101f457816003193601126101f4576001546001600160a01b03168152602090f35b9181601f8401121561052d5782359167ffffffffffffffff831161052d576020838186019501011161052d57565b600080fd5b6000546001600160a01b0316330361054657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b908060209392818452848401376000828201840152601f01601f191601019056fea26469706673582212202c39113f71e37d7694680563bbcddaf4b40177f6c8604ca920efaf328fb3058c64736f6c63430008120033","sourceMap":"542:1772:222:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:222;;;;-1:-1:-1;;;;;542:1772:222;;;;;;;;;;;;;;1063:62:88;;:::i;:::-;2162:22;;542:1772:222;;;;;;;;;;;;;;;;;;;2566:40:88;542:1772:222;2566:40:88;;542:1772:222;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;542:1772:222;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:222;;;;;;-1:-1:-1;;;;;542:1772:222;;;;;;;;;1063:62:88;;:::i;:::-;1161:26:222;;1157:63;;-1:-1:-1;;542:1772:222;;;-1:-1:-1;;;;;;542:1772:222;;;;;1338:32;;;;542:1772;;1157:63;542:1772;-1:-1:-1;;;1196:24:222;;;542:1772;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:1772:222;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;2034:11;542:1772;1101:558:92;;;;;;;;;;;;-1:-1:-1;;;;;;1101:558:92;;;542:1772:222;1101:558:92;-1:-1:-1;;;;;542:1772:222;;;;;1101:558:92;;;;542:1772:222;1676:22:92;;;542:1772:222;;2207:13;542:1772;;2145:76;;;;;;542:1772;;;;;;;;;;;;;;;;;;;;;;;;;2145:76;;;;542:1772;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;2195:10;;542:1772;;;;;;;;2145:76;;;;;;;;;;;;542:1772;;;;;;;2195:10;;2237:45;2195:10;2237:45;;;542:1772;;;2145:76;542:1772;;;;;;;;;;;;2145:76;;;;;542:1772;-1:-1:-1;;;542:1772:222;;;;;;;;2145:76;542:1772;;;;;;;;;2145:76;542:1772;;;;;;-1:-1:-1;;;542:1772:222;;;;;;;;;;;;-1:-1:-1;;;542:1772:222;;;;;;;;;;;;;;;;;;;;;;;;;;;;1063:62:88;;:::i;:::-;542:1772:222;;-1:-1:-1;;;;;;542:1772:222;;;;;;-1:-1:-1;;;;;542:1772:222;2566:40:88;542:1772:222;;2566:40:88;542:1772:222;;;;;;;;;;;;;;;;;;;665:37;542:1772;;;-1:-1:-1;;;;;542:1772:222;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:222;;;;;-1:-1:-1;;;;;542:1772:222;;;;;;;;1063:62:88;;:::i;:::-;1600:30:222;542:1772;;-1:-1:-1;;;;;;542:1772:222;;;;;1645:36;;;;542:1772;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:1772:222;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;1359:130:88;1273:6;542:1772:222;-1:-1:-1;;;;;542:1772:222;719:10:113;1422:23:88;542:1772:222;;1359:130:88:o;542:1772:222:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;542:1772:222;;;;;;;;-1:-1:-1;;542:1772:222;;;;:::o","linkReferences":{}},"methodIdentifiers":{"createRareERC1155Contract(string,string,string)":"8667f619","defaultMinter()":"389dee18","owner()":"8da5cb5b","rareERC1155()":"014812a2","renounceOwnership()":"715018a6","setDefaultMinter(address)":"18cf6f42","setRareERC1155(address)":"e2be1a08","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"defaultMinter\",\"type\":\"address\"}],\"name\":\"DefaultMinterUpdated\",\"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\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"RareERC1155ContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rareERC1155\",\"type\":\"address\"}],\"name\":\"RareERC1155Updated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createRareERC1155Contract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultMinter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rareERC1155\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"setDefaultMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rareERC1155\",\"type\":\"address\"}],\"name\":\"setRareERC1155\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Deploys EIP-1167 minimal proxies initialized with the caller as collection owner.\",\"events\":{\"DefaultMinterUpdated(address)\":{\"params\":{\"defaultMinter\":\"New default minter address. Zero address disables default minter approval.\"}},\"RareERC1155ContractCreated(address,address)\":{\"params\":{\"contractAddress\":\"Address of the newly created ERC1155 clone.\",\"owner\":\"Initial owner of the clone.\"}},\"RareERC1155Updated(address)\":{\"params\":{\"rareERC1155\":\"New ERC1155 implementation address.\"}}},\"kind\":\"dev\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"params\":{\"_baseURI\":\"Base URI used by the collection when a token id has no token-specific URI.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"},\"returns\":{\"_0\":\"Address of the newly created ERC1155 clone.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDefaultMinter(address)\":{\"params\":{\"_defaultMinter\":\"Address approved to mint on newly created clones, or zero address for none.\"}},\"setRareERC1155(address)\":{\"params\":{\"_rareERC1155\":\"Address of the replacement implementation.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"defaultMinter\":{\"return\":\"Default minter address. Zero address means no default minter.\",\"returns\":{\"_0\":\"Default minter address. Zero address means no default minter.\"}},\"rareERC1155\":{\"return\":\"ERC1155 implementation address.\",\"returns\":{\"_0\":\"ERC1155 implementation address.\"}}},\"title\":\"RareERC1155ContractFactory\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an implementation address is the zero address.\"}]},\"events\":{\"DefaultMinterUpdated(address)\":{\"notice\":\"Emitted when the owner changes the default minter for new clones.\"},\"RareERC1155ContractCreated(address,address)\":{\"notice\":\"Emitted when the factory creates and initializes a collection clone.\"},\"RareERC1155Updated(address)\":{\"notice\":\"Emitted when the owner changes the implementation cloned by the factory.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Deploys the initial ERC1155 implementation used for clones.\"},\"createRareERC1155Contract(string,string,string)\":{\"notice\":\"Creates a new initialized ERC1155 collection clone.\"},\"defaultMinter()\":{\"notice\":\"Returns the optional minter approved on each newly created collection.\"},\"rareERC1155()\":{\"notice\":\"Returns the ERC1155 implementation address cloned by the factory.\"},\"setDefaultMinter(address)\":{\"notice\":\"Updates the optional minter approved during clone initialization.\"},\"setRareERC1155(address)\":{\"notice\":\"Updates the ERC1155 implementation address cloned by future factory calls.\"}},\"notice\":\"Clone factory for RARE Protocol ERC1155 collections.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/RareERC1155ContractFactory.sol\":\"RareERC1155ContractFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7\",\"dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol\":{\"keccak256\":\"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98\",\"dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8\",\"dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol\":{\"keccak256\":\"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9\",\"dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0x923b9774b81c1abfb992262ae7763b6e6de77b077a7180d53c6ebb7b1c8bd648\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53445dc0431f9b45c06f567c6091da961d4087bec0010cca5bd62100fa624a38\",\"dweb:/ipfs/QmNvBYpBv183czrAqNXr76E8M3LF93ouAJFeAcHfb59Rcx\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0x0e1fe02da411a6293004e5ee85bdd1facef5f1b6ef2aab8d36c73f0d77b448db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5bfd474499866fe24ac6b88eb92969395baf1e644a0f0b0054e66f9ae90c00e\",\"dweb:/ipfs/QmS5j268UauZARToNJazEBJDWvWM35j8kHx779PF3c5rib\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e\",\"dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC\"]},\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":{\"keccak256\":\"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179\",\"dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb\"]},\"src/token/ERC1155/RareERC1155.sol\":{\"keccak256\":\"0x998a8406854565bcdf650cf62d5f6aac5b0b7a52d1f3204b58e304c7d1f73f00\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48980945ff2d2aba042abd5d0eabee6c80026ad2361aaab7bb35e7c4154a427a\",\"dweb:/ipfs/QmXdQTaFPa7WZPc1JnrRuwNwQ7U49raHUqSSdduzpPbLdt\"]},\"src/token/ERC1155/RareERC1155ContractFactory.sol\":{\"keccak256\":\"0x1d75d40825831b017450e31e6b118bd27746a014099c3a3900b33f7e6c035036\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9584f968656c2d2c73993d8f3f4b2ae82dfb5788329544d1c620826d2d10b951\",\"dweb:/ipfs/QmT3VCoEuHKcBaVU3P6bRU9aroGmEQgjXB3QB6Liejdrjt\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"defaultMinter","type":"address","indexed":true}],"type":"event","name":"DefaultMinterUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"RareERC1155ContractCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"rareERC1155","type":"address","indexed":true}],"type":"event","name":"RareERC1155Updated","anonymous":false},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createRareERC1155Contract","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultMinter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rareERC1155","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultMinter"},{"inputs":[{"internalType":"address","name":"_rareERC1155","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRareERC1155"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"createRareERC1155Contract(string,string,string)":{"params":{"_baseURI":"Base URI used by the collection when a token id has no token-specific URI.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."},"returns":{"_0":"Address of the newly created ERC1155 clone."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setDefaultMinter(address)":{"params":{"_defaultMinter":"Address approved to mint on newly created clones, or zero address for none."}},"setRareERC1155(address)":{"params":{"_rareERC1155":"Address of the replacement implementation."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Deploys the initial ERC1155 implementation used for clones."},"createRareERC1155Contract(string,string,string)":{"notice":"Creates a new initialized ERC1155 collection clone."},"defaultMinter()":{"notice":"Returns the optional minter approved on each newly created collection."},"rareERC1155()":{"notice":"Returns the ERC1155 implementation address cloned by the factory."},"setDefaultMinter(address)":{"notice":"Updates the optional minter approved during clone initialization."},"setRareERC1155(address)":{"notice":"Updates the ERC1155 implementation address cloned by future factory calls."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/RareERC1155ContractFactory.sol":"RareERC1155ContractFactory"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol":{"keccak256":"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856","urls":["bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7","dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"keccak256":"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b","urls":["bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce","dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol":{"keccak256":"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8","urls":["bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83","dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol":{"keccak256":"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7","urls":["bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98","dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"keccak256":"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e","urls":["bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8","dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"keccak256":"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448","urls":["bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9","dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol":{"keccak256":"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f","urls":["bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9","dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a","urls":["bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7","dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0x923b9774b81c1abfb992262ae7763b6e6de77b077a7180d53c6ebb7b1c8bd648","urls":["bzz-raw://53445dc0431f9b45c06f567c6091da961d4087bec0010cca5bd62100fa624a38","dweb:/ipfs/QmNvBYpBv183czrAqNXr76E8M3LF93ouAJFeAcHfb59Rcx"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0x0e1fe02da411a6293004e5ee85bdd1facef5f1b6ef2aab8d36c73f0d77b448db","urls":["bzz-raw://c5bfd474499866fe24ac6b88eb92969395baf1e644a0f0b0054e66f9ae90c00e","dweb:/ipfs/QmS5j268UauZARToNJazEBJDWvWM35j8kHx779PF3c5rib"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052","urls":["bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e","dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC"],"license":"MIT"},"src/token/ERC1155/IRareERC1155ContractFactory.sol":{"keccak256":"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63","urls":["bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179","dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb"],"license":"MIT"},"src/token/ERC1155/RareERC1155.sol":{"keccak256":"0x998a8406854565bcdf650cf62d5f6aac5b0b7a52d1f3204b58e304c7d1f73f00","urls":["bzz-raw://48980945ff2d2aba042abd5d0eabee6c80026ad2361aaab7bb35e7c4154a427a","dweb:/ipfs/QmXdQTaFPa7WZPc1JnrRuwNwQ7U49raHUqSSdduzpPbLdt"],"license":"MIT"},"src/token/ERC1155/RareERC1155ContractFactory.sol":{"keccak256":"0x1d75d40825831b017450e31e6b118bd27746a014099c3a3900b33f7e6c035036","urls":["bzz-raw://9584f968656c2d2c73993d8f3f4b2ae82dfb5788329544d1c620826d2d10b951","dweb:/ipfs/QmT3VCoEuHKcBaVU3P6bRU9aroGmEQgjXB3QB6Liejdrjt"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":222} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createRareERC1155Contract","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"defaultMinter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"rareERC1155","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultMinter","inputs":[{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRareERC1155","inputs":[{"name":"_rareERC1155","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefaultMinterUpdated","inputs":[{"name":"defaultMinter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155ContractCreated","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155Updated","inputs":[{"name":"rareERC1155","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x608080604052346100b95760008054336001600160a01b031980831682178455936001600160a01b03939290919084167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08480a36134b4818101906001600160401b038211838310176100a5579082916106a08339039082f09081156100995750169060015416176001556040516105e190816100bf8239f35b604051903d90823e3d90fd5b634e487b7160e01b84526041600452602484fd5b600080fdfe608060408181526004908136101561001657600080fd5b600092833560e01c908163014812a2146104da5750806318cf6f4214610473578063389dee181461044a578063715018a6146103ed5780638667f619146101f85780638da5cb5b146101cc578063e2be1a081461014a5763f2fde38b1461007c57600080fd5b34610146576020366003190112610146576001600160a01b03823581811693919290849003610142576100ad610532565b83156100f05750506000548260018060a01b0319821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8480fd5b8280fd5b5090346101465760203660031901126101465780356001600160a01b03811692908390036101c85761017a610532565b82156101bb575050600180546001600160a01b031916821790557fe329ca164c11428fa5ee865054c08ccee6f2d38eda61e9e6a35b3081a472daed8280a280f35b51637827912560e01b8152fd5b8380fd5b8382346101f457816003193601126101f457905490516001600160a01b039091168152602090f35b5080fd5b508290346101f457600319906060368301126101465767ffffffffffffffff84358181116101425761022d90369087016104ff565b91906024358281116103e95761024690369089016104ff565b95906044358481116103e55761025f9036908b016104ff565b600154608881901c62ffffff16763d602d80600a3d3981f3363d3d373d3d3d363d73000000178b5260781b6001600160781b0319166e5af43d82803e903d91602b57fd5bf3176020526001600160a01b039890929089603760098df016998a156103a95760025416958a3b156103a557938b9693610313610322948f979461030360a09a968f519e8f9c8d9c8d6329fab88760e21b90528d015260a48c019161058a565b91868a84030160248b015261058a565b9286840301604487015261058a565b903360648401526084830152038183885af1801561039b57610371575b5050602093505191817f0c069e30a19668076937a9266318f1876e9c7dabdae788aaad8f5c73599aea89339280a38152f35b81949294116103885760209450835291848061033f565b634e487b7160e01b825260418552602482fd5b83513d87823e3d90fd5b8b80fd5b895162461bcd60e51b81526020818f01526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606490fd5b8880fd5b8680fd5b8334610447578060031936011261044757610406610532565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b8382346101f457816003193601126101f45760025490516001600160a01b039091168152602090f35b5050346101f45760203660031901126101f457356001600160a01b038116908190036101f4576104a1610532565b600280546001600160a01b031916821790557feedfae894237292077aa1e4fcca7f9a0a2aabeda165c2ff69a08cfd365d7c9eb8280a280f35b8490346101f457816003193601126101f4576001546001600160a01b03168152602090f35b9181601f8401121561052d5782359167ffffffffffffffff831161052d576020838186019501011161052d57565b600080fd5b6000546001600160a01b0316330361054657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b908060209392818452848401376000828201840152601f01601f191601019056fea2646970667358221220ff62dca80cdce8473d494dba0fd3a6a7ffc989199cf8279631d73e5afb606f9b64736f6c6343000812003360808060405234620000c6576000549060ff8260081c1662000074575060ff8082160362000038575b6040516133e89081620000cc8239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461244157806301ffc9a71461238757806306fdde03146122f55780630de54ba0146122715780630e89341c146120ef5780631542bb9514611e7957806318e97fd114611cf65780632a55205a14611c485780632baf2acb14611bd75780632eb2c2d61461180f5780633512639c1461178f5780633a3d146f1461174f5780633ebc82c51461171657806340c1a064146116ed5780634e1273f41461154f5780634f558e79146115215780636b20c454146112d9578063715018a6146112c0578063894ba833146112715780638da5cb5b1461124857806395d89b4114611175578063a22cb4651461109e578063a7eae21c146109f3578063bd85b039146109c7578063c33ae88f1461099a578063cfdbf2541461097e578063e2200a0b146108ad578063e27a41bf1461085d578063e985e9c514610807578063ee070805146107e3578063f242432a1461044d578063f2fde38b146103c0578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101636020526020604060002054604051908152f35b600080fd5b346101be576101d1366125c1565b6001600160a01b0390921691903383148015610397575b6101f19061289f565b8215926101fe8415612bb9565b61020782612b94565b9161021184612b94565b946000604051610220816124e9565b52610343575b60005b83518110156102c45761023c818561288b565b51610247828861288b565b51908060005260fb602081815260406000205492848410610280579061027b95949392916000525203604060002055612859565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612c11565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a46103416040516124e9565b005b929060005b835181101561038f578061035f61038a928861288b565b5161036a828761288b565b5160005260fb60205261038360406000209182546129bb565b9055612859565b610348565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103d9612468565b6103e1612733565b6001600160a01b038116156103f9576103419061278b565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be57610466612468565b61046e61247e565b90608480356001600160401b0381116101be5761048f9036906004016126b4565b6001600160a01b039190838316331480156107b8575b6104ae9061289f565b828516156104bc8115612902565b6104c7604435612b94565b6104d2606435612b94565b9185871615610778575b6106ca575b5050604435600052602094609786526040600020848616600052865260406000205461051160643582101561295c565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061055c60643582546129bb565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b6105a357005b60a060006105ed958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a4830190612525565b0393165af16000918161069b575b5061067157505060019061060d612ab3565b6308c379a01461063c575b5061061f57005b60405162461bcd60e51b81528061063860048201612b3f565b0390fd5b610644612ad1565b90816106505750610618565b61063860405192839262461bcd60e51b845260048401526024830190612525565b6001600160e01b0319161490506103415760405162461bcd60e51b81528061063860048201612a6a565b6106bc919250843d86116106c3575b6106b48183612504565b810190612a4a565b90846105fb565b503d6106aa565b92959194909360005b8451811015610769576106e6818661288b565b51906106f2818861288b565b518260005260fb602052604060002054818110610726576107219360005260fb60205203604060002055612859565b6106d3565b60405162461bcd60e51b81526020600482015260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104e1565b959260009794919592975b86518110156107aa578061079a6107a5928b61288b565b5161036a828a61288b565b610783565b5092959691949093966104dc565b5082841660005260986020526040600020336000526020526104ae60ff6040600020541690506104a5565b346101be5760003660031901126101be57602060ff61016154166040519015158152f35b346101be5760403660031901126101be57610820612468565b61082861247e565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be57610876612733565b60ff610161541661089b576101665461034190600435906001600160a01b0316613288565b604051637abbf1c960e01b8152600490fd5b346101be5760403660031901126101be576004356108c961247e565b906108d2612733565b60ff610161541661089b578060005261016360205260ff6002604060002001541615610966576001600160a01b0382161561095457806000526101686020526040600020549160648302928084046064149015171561093e576001600160601b036103419316916131db565b634e487b7160e01b600052601160045260246000fd5b604051637827912560e01b8152600490fd5b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760003660031901126101be57602060405160648152f35b346101be5760203660031901126101be576004356000526101656020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be57610a23903690600401612594565b906024356001600160401b0381116101be57610a43903690600401612594565b6044356001600160401b0381116101be57610a62903690600401612594565b90929091906064356001600160a01b03811690036101be57608435956001600160a01b03871687036101be576000549560ff8760081c161596878098611091575b801561107a575b1561101e5760ff1981166001176000558761100c575b506064356001600160a01b031615610954576001600160401b038211610e14578190610aee61015f54612494565b601f8111610f9e575b50600090601f8311600114610f1557600092610f0a575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610e1457610b3f61016054612494565b601f8111610ea8575b50600090601f8311600114610e3557610bb39493929160009183610e2a575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ba360ff60005460081c16610b9e81612cbd565b612cbd565b610bac3361278b565b369161266e565b91610bc960ff60005460081c16610b9e81612cbd565b82516001600160401b038111610e1457610be4609954612494565b601f8111610daf575b506020601f8211600114610d485781929394600092610d3d575b50508160011b916000199060031b1c1916176099555b610c3b60ff60005460081c16610c3281612cbd565b610b9e81612cbd565b61016680546001600160a01b0319166064356001600160a01b0316179055600a610167556040516103e890602090610c72816124ce565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610ce5575b50610ca760643561278b565b610cad57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101646020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610c9b565b015190508480610c07565b601f198216906099600052806000209160005b818110610d9757509583600195969710610d7e575b505050811b01609955610c1d565b015160001960f88460031b161c19169055848080610d70565b9192602060018192868b015181550194019201610d5b565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610e0a575b601f0160051c01905b818110610dfe5750610bed565b60008155600101610df1565b9091508190610de8565b634e487b7160e01b600052604160045260246000fd5b013590508780610b67565b61016060005260206000209160005b601f1985168110610e905750918391600193610bb3979695601f19811610610e76575b505050811b0161016055610b7e565b0135600019600384901b60f8161c19169055878080610e67565b90926020600181928686013581550194019101610e44565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610f03575b601f830160051c82018110610ef7575050610b48565b60008155600101610ee1565b5080610ee1565b013590508880610b0e565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610f86576001945083601f19811610610f6c575b505050811b0161015f55610b25565b0135600019600384901b60f8161c19169055888080610f5d565b81810135835560209485019460019093019201610f42565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510611005575b90849392915b601f830160051c82018110610ff6575050610af7565b60008155859450600101610fe0565b5080610fda565b61ffff19166101011760005588610ac0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610aaa5750600160ff821614610aaa565b50600160ff821610610aa3565b346101be576110ac36612565565b6001600160a01b039091169033821461111e573360005260986020526040600020826000526020526110ee8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be5760405160009061016080549061119b82612494565b90818452600192838116908160001461122057506001146111df575b6111db846111c781880382612504565b604051918291602083526020830190612525565b0390f35b90935060005260209283600020916000925b82841061120d57505050816111db936111c792820101936111b7565b80548585018701529285019281016111f1565b6111db96506111c79450602092508593915060ff191682840152151560051b820101936111b7565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be5761128a612733565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760003660031901126101be57610954612733565b346101be5760603660031901126101be576112f2612468565b6024906001600160401b039082358281116101be57611315903690600401612650565b9160449081359081116101be57611330903690600401612650565b6001600160a01b039092169233841480156114f8575b61134f9061289f565b831561135b8115612bb9565b61136882518551146129c8565b6000604051611376816124e9565b526114c0575b60005b815181101561141857611392818361288b565b5161139d828661288b565b51908060005260fb6020818152604060002054928484106113d657906113d195949392916000525203604060002055612859565b61137f565b60405162461bcd60e51b8152600481018390526028818d0152600080516020613393833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b825181101561148d5780611435611488928561288b565b51611440828761288b565b519080600052609760209080825260406000208760005282526040600020549261146c85851015612c11565b6000528152604060002090866000525203604060002055612859565b61141e565b50906000805160206133538339815191526114b2600094604051918291339583612a25565b0390a46103416040516124e9565b9260009491945b84518110156114ee57806114de6114e9928661288b565b5161036a828861288b565b6114c7565b509293909361137c565b5083600052609860205260406000203360005260205261134f60ff604060002054169050611346565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be5781600401359061158c826125eb565b9261159a6040519485612504565b82845260209260248486019160051b830101913683116101be57602401905b8282106116ce575050506024359081116101be576115db903690600401612650565b8251815103611677578251926115f0846125eb565b936115fe6040519586612504565b80855261160d601f19916125eb565b01368486013760005b81518110156116605761165b9061164b6001600160a01b03611638838661288b565b5116611644838761288b565b51906127d4565b611655828861288b565b52612859565b611616565b5050506111db6040519282849384528301906126ff565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115b9565b346101be5760203660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760203660031901126101be5761172f612468565b611737612733565b60ff610161541661089b576101675461034191613288565b346101be5760203660031901126101be576001600160a01b03611770612468565b16600052610164602052602060ff604060002054166040519015158152f35b346101be5760603660031901126101be576117a8612468565b6001600160401b03906024358281116101be576117c99036906004016126cf565b926044359081116101be576117e29036906004016126cf565b919060ff610161541661089b5761180161180992610341963691612602565b923691612602565b91612d1d565b346101be5760031960a0368201126101be57611829612468565b9061183261247e565b6044908135926001600160401b03938481116101be57611856903690600401612650565b606480358681116101be5761186f903690600401612650565b9460849687359081116101be5761188a9036906004016126b4565b6001600160a01b039489861633148015611bac575b6118a89061289f565b6118b585518951146129c8565b858716156118c38115612902565b868b1615611b69575b611ab4575b60005b855181101561196957806118eb611964928861288b565b518c6118f7838d61288b565b519180600052609790838c60209484865260406000208282166000528652604060002054916119288484101561295c565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c166000525261038360406000209182546129bb565b6118d4565b50888a9897969497896040518860008051602061335383398151915289808d169416928061199987339583612a25565b0390a4873b6119a457005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a487016119d8916126ff565b908487830301908701526119eb916126ff565b9184830301908401526119fd91612525565b03921691815a602094600091f160009181611a94575b50611a6c5750506001611a24612ab3565b6308c379a014611a35575b61061f57005b611a3d612ad1565b80611a485750611a2f565b60405162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916146103415760405162461bcd60e51b81528061063860048201612a6a565b611aad91925060203d81116106c3576106b48183612504565b9083611a13565b9796949060009993999692965b8551811015611b5957611ad4818761288b565b51611adf828961288b565b519080600052602060fb815260406000205491838310611b1857611b139493929160fb916000525203604060002055612859565b611ac1565b508b9067616c537570706c7960c01b8f6000805160206133938339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b50909496979892989591956118d1565b99969498959392919060005b8a51811015611b9d57808b61036a82611b91611b98958f61288b565b519261288b565b611b75565b509091929395989496996118cc565b50858a1660005260986020526040600020336000526020526118a860ff60406000205416905061189f565b346101be57611be5366125c1565b9160ff610161541661089b57602092611c409160405190611c05826124ce565b6001825285368184013760405192611c1c846124ce565b6001845286368186013785611c3084612868565b52611c3a84612868565b52612d1d565b604051908152f35b346101be5760403660031901126101be5760243560043560005261012e60205260406000209060405191611c7b836124ce565b546001600160a01b0380821680855260a09290921c6020850152929015611cd3575b6001600160601b036020820151169182810292818404149015171561093e57604092612710915116918351928352046020820152f35b50604051611ce0816124ce565b61012d54838116825260a01c6020820152611c9d565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611d2a903690600401612594565b9190611d34612733565b60ff610161541661089b57836000526101639160209280845260ff6002604060002001541615611e6057856000528352600180604060002001918511610e1457611d8885611d828454612494565b84612c69565b6000601f8611600114611de95791858060008051602061337383398151915297969593611dd995600093611dde575b501b906000198760031b1c19161790555b60405193838594855284019161315b565b0390a2005b85013592508a611db7565b601f1986169083600052856000209160005b818110611e4b575091879695939160008051602061337383398151915298611dd9969410611e31575b505085811b019055611dc8565b840135600019600389901b60f8161c191690558880611e24565b86830135845592840192918701918701611dfb565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576001600160401b036004358181116101be57611eaa903690600401612594565b602435916001600160a01b03604435818116938482036101be57611ecc612733565b60ff610161541661089b5785156120dd5784156109545761016295611ef18754612859565b809755604051606081018181108a821117610e1457604052818152611f1736848861266e565b986020998a83019081526040830191600183528a6000526101638c526040600020935184556001840191518051918211610e1457611f5f82611f598554612494565b85612c69565b8c908d601f841160011461206c5750918060029492611fad979694600092612061575b50508160011b916000199060031b1c19161790555b51151591019060ff801983541691151516179055565b61016754928760005261016889528360406000205560648402938085046064149015171561093e578794612010612056926001600160601b037fc07473765c308da8ff95c4974c60af7332d93777f002550fa063b77064a6f7b2971690886131db565b856000805160206133738339815191526120368c6040519181839283528201898d61315b565b0390a26033541695604051938493845260408b850152604084019161315b565b0390a4604051908152f35b015190508f80611f82565b9190601f1984168560005283600020936000905b8282106120c5575050926001928592611fad99989660029896106120ac575b505050811b019055611f97565b015160001960f88460031b161c191690558f808061209f565b80600186978294978701518155019601940190612080565b604051631dd0e19360e01b8152600490fd5b346101be576020806003193601126101be5760043560005261016381526001806040600020019082604051809360009080549061212b82612494565b80855291868116908115612250575060011461220f575b505061215092500383612504565b81511561216e5750905b6111db604051928284938452830190612525565b905060405190600090836099549161218583612494565b928386528582821691826000146121ef5750506001146121b5575b505050816121af910382612504565b9061215a565b91909250609960005282600020916000925b8284106121dc575050508201018183856121a0565b80548685018601529284019281016121c7565b60ff19168482015293151560051b840190920193508591508690506121a0565b9091506000528260002090846000925b828410612239575050509161215092820101859287612142565b80548885018701528794509285019286910161221f565b91505061215094925060ff191682840152151560051b820101859287612142565b346101be5761227f36612565565b90612288612733565b60ff610161541661089b576001600160a01b03169081156109545760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261016482526122ea8160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be5760405160009061015f80549061231b82612494565b9081845260019283811690816000146112205750600114612346576111db846111c781880382612504565b90935060005260209283600020916000925b82841061237457505050816111db936111c792820101936111b7565b8054858501870152928501928101612358565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be57602090635a08b45360e11b8114908115612430575b81156123d3575b506040519015158152f35b63152a902d60e11b8114915081156123ed575b50826123c8565b636cdb3d1360e11b81149150811561241f575b811561240e575b50826123e6565b6301ffc9a760e01b14905082612407565b6303a24d0760e21b81149150612400565b631030681960e21b811491506123c1565b346101be5760403660031901126101be576020611c4061245f612468565b602435906127d4565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c921680156124c4575b60208310146124ae57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124a3565b604081019081106001600160401b03821117610e1457604052565b602081019081106001600160401b03821117610e1457604052565b90601f801991011681019081106001600160401b03821117610e1457604052565b919082519283825260005b848110612551575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612530565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610e145760051b60200190565b929161260d826125eb565b9161261b6040519384612504565b829481845260208094019160051b81019283116101be57905b8282106126415750505050565b81358152908301908301612634565b9080601f830112156101be5781602061266b93359101612602565b90565b9291926001600160401b038211610e145760405191612697601f8201601f191660200184612504565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be5781602061266b9335910161266e565b9181601f840112156101be578235916001600160401b0383116101be576020808501948460051b0101116101be57565b90815180825260208080930193019160005b82811061271f575050505090565b835185529381019392810192600101612711565b6033546001600160a01b0316330361274757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561280157600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b600019811461093e5760010190565b8051156128755760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156128755760209160051b010190565b156128a657565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561290957565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561296357565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9190820180921161093e57565b156129cf57565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612a3c61266b936040845260408401906126ff565b9160208184039101526126ff565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612ac057565b905060046000803e60005160e01c90565b600060443d1061266b57604051600319913d83016004833e81516001600160401b03918282113d602484011117612b2e57818401948551938411612b36573d85010160208487010111612b2e575061266b92910160200190612504565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612ba1826124ce565b6001825260203681840137612bb582612868565b5290565b15612bc057565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612c1857565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c7757505050565b600091825260208220906020601f850160051c83019410612cb3575b601f0160051c01915b828110612ca857505050565b818155600101612c9c565b9092508290612c93565b15612cc457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b038083169291908315610954576033541633141580613141575b61312957835115613117578351815103613105578351926064938481116130e7575060015b8551811015612dd557612d78818761288b565b516000198201828111612dc057612d8f908861288b565b511015612d9e57600101612d65565b612daa6024918761288b565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612ebf57612df3868461288b565b519586600052610163602081815260409060ff60028360002001541615612ea757612e1e848961288b565b5115612e96578960005261016590818152612e488360002054612e41878c61288b565b51906129bb565b938b60005281528260002054808511612e74575060009a8b525290972096909655600190950194612de0565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612ed5876124e9565b60008752612ee686518551146129c8565b60005b8651811015612f285780612f00612f23928761288b565b51612f0b828a61288b565b5160005260fb602052610383886000209182546129bb565b612ee9565b5090919560005b8651811015612f795780612f46612f74928761288b565b51612f51828a61288b565b5160005260206097815288600020908c60005252610383886000209182546129bb565b612f2f565b5091969093958160008851600080516020613353833981519152339180612fa18a8d83612a25565b0390a43b612fb2575b505050505050565b6130056000602094613014895197889687958694612ff263bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a48801906126ff565b90600319948588840301908801526126ff565b91848303016084850152612525565b03925af1600091816130c7575b5061309b5750506001613032612ab3565b6308c379a014613065575b61304e57505b388080808080612faa565b5162461bcd60e51b81528061063860048201612b3f565b61306d612ad1565b80613078575061303d565b825162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916036130b05750613043565b5162461bcd60e51b81528061063860048201612a6a565b6130e091925060203d81116106c3576106b48183612504565b9038613021565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016460205260ff6040600020541615612d40565b908060209392818452848401376000828201840152601f01601f1916010190565b1561318357565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b916001600160601b0316906131f461271083111561317c565b6001600160a01b039081169283156132435760405193613213856124ce565b84526020808501938452600091825261012e9052604090209251915160a01b6001600160a01b0319169116179055565b60405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b6001600160a01b039081169190821561095457606482116133325760018060a01b0319926101668185825416179055826101675560648302928084046064149015171561093e57613320906001600160601b0384166132eb61271082111561317c565b60206040516132f9816124ce565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a2646970667358221220b7720fa90ac9df32d7bfb6ee34e640368972d81f7eb46827b58be3edc6478e5764736f6c63430008120033","sourceMap":"542:1772:83:-:0;;;;;;;2518:6:35;542:1772:83;;719:10:49;-1:-1:-1;;;;;;542:1772:83;;;;;;;;-1:-1:-1;;;;;542:1772:83;2518:6:35;542:1772:83;;719:10:49;542:1772:83;;2566:40:35;2518:6;;2566:40;929:17:83;;;;;-1:-1:-1;;;;;929:17:83;;;;;;;;;;;;;;;;;;;;;;;542:1772;;;;;;;;;;;;;;;;;;929:17;542:1772;;;;;;;;;;929:17;-1:-1:-1;;;542:1772:83;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060408181526004908136101561001657600080fd5b600092833560e01c908163014812a2146104da5750806318cf6f4214610473578063389dee181461044a578063715018a6146103ed5780638667f619146101f85780638da5cb5b146101cc578063e2be1a081461014a5763f2fde38b1461007c57600080fd5b34610146576020366003190112610146576001600160a01b03823581811693919290849003610142576100ad610532565b83156100f05750506000548260018060a01b0319821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8480fd5b8280fd5b5090346101465760203660031901126101465780356001600160a01b03811692908390036101c85761017a610532565b82156101bb575050600180546001600160a01b031916821790557fe329ca164c11428fa5ee865054c08ccee6f2d38eda61e9e6a35b3081a472daed8280a280f35b51637827912560e01b8152fd5b8380fd5b8382346101f457816003193601126101f457905490516001600160a01b039091168152602090f35b5080fd5b508290346101f457600319906060368301126101465767ffffffffffffffff84358181116101425761022d90369087016104ff565b91906024358281116103e95761024690369089016104ff565b95906044358481116103e55761025f9036908b016104ff565b600154608881901c62ffffff16763d602d80600a3d3981f3363d3d373d3d3d363d73000000178b5260781b6001600160781b0319166e5af43d82803e903d91602b57fd5bf3176020526001600160a01b039890929089603760098df016998a156103a95760025416958a3b156103a557938b9693610313610322948f979461030360a09a968f519e8f9c8d9c8d6329fab88760e21b90528d015260a48c019161058a565b91868a84030160248b015261058a565b9286840301604487015261058a565b903360648401526084830152038183885af1801561039b57610371575b5050602093505191817f0c069e30a19668076937a9266318f1876e9c7dabdae788aaad8f5c73599aea89339280a38152f35b81949294116103885760209450835291848061033f565b634e487b7160e01b825260418552602482fd5b83513d87823e3d90fd5b8b80fd5b895162461bcd60e51b81526020818f01526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606490fd5b8880fd5b8680fd5b8334610447578060031936011261044757610406610532565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b8382346101f457816003193601126101f45760025490516001600160a01b039091168152602090f35b5050346101f45760203660031901126101f457356001600160a01b038116908190036101f4576104a1610532565b600280546001600160a01b031916821790557feedfae894237292077aa1e4fcca7f9a0a2aabeda165c2ff69a08cfd365d7c9eb8280a280f35b8490346101f457816003193601126101f4576001546001600160a01b03168152602090f35b9181601f8401121561052d5782359167ffffffffffffffff831161052d576020838186019501011161052d57565b600080fd5b6000546001600160a01b0316330361054657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b908060209392818452848401376000828201840152601f01601f191601019056fea2646970667358221220ff62dca80cdce8473d494dba0fd3a6a7ffc989199cf8279631d73e5afb606f9b64736f6c63430008120033","sourceMap":"542:1772:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:83;;;;-1:-1:-1;;;;;542:1772:83;;;;;;;;;;;;;;1063:62:35;;:::i;:::-;2162:22;;542:1772:83;;;;;;;;;;;;;;;;;;;2566:40:35;542:1772:83;2566:40:35;;542:1772:83;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;542:1772:83;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:83;;;;;;-1:-1:-1;;;;;542:1772:83;;;;;;;;;1063:62:35;;:::i;:::-;1161:26:83;;1157:63;;-1:-1:-1;;542:1772:83;;;-1:-1:-1;;;;;;542:1772:83;;;;;1338:32;;;;542:1772;;1157:63;542:1772;-1:-1:-1;;;1196:24:83;;;542:1772;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:1772:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;2034:11;542:1772;1101:558:38;;;;;;;;;;;;-1:-1:-1;;;;;;1101:558:38;;;542:1772:83;1101:558:38;-1:-1:-1;;;;;542:1772:83;;;;;1101:558:38;;;;542:1772:83;1676:22:38;;;542:1772:83;;2207:13;542:1772;;2145:76;;;;;;542:1772;;;;;;;;;;;;;;;;;;;;;;;;;2145:76;;;;542:1772;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;2195:10;;542:1772;;;;;;;;2145:76;;;;;;;;;;;;542:1772;;;;;;;2195:10;;2237:45;2195:10;2237:45;;;542:1772;;;2145:76;542:1772;;;;;;;;;;;;2145:76;;;;;542:1772;-1:-1:-1;;;542:1772:83;;;;;;;;2145:76;542:1772;;;;;;;;;2145:76;542:1772;;;;;;-1:-1:-1;;;542:1772:83;;;;;;;;;;;;-1:-1:-1;;;542:1772:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;1063:62:35;;:::i;:::-;542:1772:83;;-1:-1:-1;;;;;;542:1772:83;;;;;;-1:-1:-1;;;;;542:1772:83;2566:40:35;542:1772:83;;2566:40:35;542:1772:83;;;;;;;;;;;;;;;;;;;665:37;542:1772;;;-1:-1:-1;;;;;542:1772:83;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:83;;;;;-1:-1:-1;;;;;542:1772:83;;;;;;;;1063:62:35;;:::i;:::-;1600:30:83;542:1772;;-1:-1:-1;;;;;;542:1772:83;;;;;1645:36;;;;542:1772;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:1772:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;1359:130:35;1273:6;542:1772:83;-1:-1:-1;;;;;542:1772:83;719:10:49;1422:23:35;542:1772:83;;1359:130:35:o;542:1772:83:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;542:1772:83;;;;;;;;-1:-1:-1;;542:1772:83;;;;:::o","linkReferences":{}},"methodIdentifiers":{"createRareERC1155Contract(string,string,string)":"8667f619","defaultMinter()":"389dee18","owner()":"8da5cb5b","rareERC1155()":"014812a2","renounceOwnership()":"715018a6","setDefaultMinter(address)":"18cf6f42","setRareERC1155(address)":"e2be1a08","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"defaultMinter\",\"type\":\"address\"}],\"name\":\"DefaultMinterUpdated\",\"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\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"RareERC1155ContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rareERC1155\",\"type\":\"address\"}],\"name\":\"RareERC1155Updated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createRareERC1155Contract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultMinter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rareERC1155\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"setDefaultMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rareERC1155\",\"type\":\"address\"}],\"name\":\"setRareERC1155\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Deploys EIP-1167 minimal proxies initialized with the caller as collection owner.\",\"events\":{\"DefaultMinterUpdated(address)\":{\"params\":{\"defaultMinter\":\"New default minter address. Zero address disables default minter approval.\"}},\"RareERC1155ContractCreated(address,address)\":{\"params\":{\"contractAddress\":\"Address of the newly created ERC1155 clone.\",\"owner\":\"Initial owner of the clone.\"}},\"RareERC1155Updated(address)\":{\"params\":{\"rareERC1155\":\"New ERC1155 implementation address.\"}}},\"kind\":\"dev\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"params\":{\"_baseURI\":\"Base URI used by the collection when a token id has no token-specific URI.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"},\"returns\":{\"_0\":\"Address of the newly created ERC1155 clone.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDefaultMinter(address)\":{\"params\":{\"_defaultMinter\":\"Address approved to mint on newly created clones, or zero address for none.\"}},\"setRareERC1155(address)\":{\"params\":{\"_rareERC1155\":\"Address of the replacement implementation.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"defaultMinter\":{\"return\":\"Default minter address. Zero address means no default minter.\",\"returns\":{\"_0\":\"Default minter address. Zero address means no default minter.\"}},\"rareERC1155\":{\"return\":\"ERC1155 implementation address.\",\"returns\":{\"_0\":\"ERC1155 implementation address.\"}}},\"title\":\"RareERC1155ContractFactory\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an implementation address is the zero address.\"}]},\"events\":{\"DefaultMinterUpdated(address)\":{\"notice\":\"Emitted when the owner changes the default minter for new clones.\"},\"RareERC1155ContractCreated(address,address)\":{\"notice\":\"Emitted when the factory creates and initializes a collection clone.\"},\"RareERC1155Updated(address)\":{\"notice\":\"Emitted when the owner changes the implementation cloned by the factory.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Deploys the initial ERC1155 implementation used for clones.\"},\"createRareERC1155Contract(string,string,string)\":{\"notice\":\"Creates a new initialized ERC1155 collection clone.\"},\"defaultMinter()\":{\"notice\":\"Returns the optional minter approved on each newly created collection.\"},\"rareERC1155()\":{\"notice\":\"Returns the ERC1155 implementation address cloned by the factory.\"},\"setDefaultMinter(address)\":{\"notice\":\"Updates the optional minter approved during clone initialization.\"},\"setRareERC1155(address)\":{\"notice\":\"Updates the ERC1155 implementation address cloned by future factory calls.\"}},\"notice\":\"Clone factory for RARE Protocol ERC1155 collections.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/RareERC1155ContractFactory.sol\":\"RareERC1155ContractFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7\",\"dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol\":{\"keccak256\":\"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98\",\"dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8\",\"dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol\":{\"keccak256\":\"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9\",\"dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0x923b9774b81c1abfb992262ae7763b6e6de77b077a7180d53c6ebb7b1c8bd648\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53445dc0431f9b45c06f567c6091da961d4087bec0010cca5bd62100fa624a38\",\"dweb:/ipfs/QmNvBYpBv183czrAqNXr76E8M3LF93ouAJFeAcHfb59Rcx\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0x0e1fe02da411a6293004e5ee85bdd1facef5f1b6ef2aab8d36c73f0d77b448db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5bfd474499866fe24ac6b88eb92969395baf1e644a0f0b0054e66f9ae90c00e\",\"dweb:/ipfs/QmS5j268UauZARToNJazEBJDWvWM35j8kHx779PF3c5rib\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":{\"keccak256\":\"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179\",\"dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb\"]},\"src/token/ERC1155/RareERC1155.sol\":{\"keccak256\":\"0x580c03eaabe68708b30d0627a8ea44ebb7de24150a0ad6047266ef44cf2731a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7320879b3bb31bc0226013499865f7cc605f2845b4fb6700daa94cf5e928622a\",\"dweb:/ipfs/QmesNVNev1i2iR57BFFAKa64xeBLqTTUqVBECDgYd46MT4\"]},\"src/token/ERC1155/RareERC1155ContractFactory.sol\":{\"keccak256\":\"0x1d75d40825831b017450e31e6b118bd27746a014099c3a3900b33f7e6c035036\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9584f968656c2d2c73993d8f3f4b2ae82dfb5788329544d1c620826d2d10b951\",\"dweb:/ipfs/QmT3VCoEuHKcBaVU3P6bRU9aroGmEQgjXB3QB6Liejdrjt\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"defaultMinter","type":"address","indexed":true}],"type":"event","name":"DefaultMinterUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"RareERC1155ContractCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"rareERC1155","type":"address","indexed":true}],"type":"event","name":"RareERC1155Updated","anonymous":false},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createRareERC1155Contract","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultMinter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rareERC1155","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultMinter"},{"inputs":[{"internalType":"address","name":"_rareERC1155","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRareERC1155"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"createRareERC1155Contract(string,string,string)":{"params":{"_baseURI":"Base URI used by the collection when a token id has no token-specific URI.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."},"returns":{"_0":"Address of the newly created ERC1155 clone."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setDefaultMinter(address)":{"params":{"_defaultMinter":"Address approved to mint on newly created clones, or zero address for none."}},"setRareERC1155(address)":{"params":{"_rareERC1155":"Address of the replacement implementation."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Deploys the initial ERC1155 implementation used for clones."},"createRareERC1155Contract(string,string,string)":{"notice":"Creates a new initialized ERC1155 collection clone."},"defaultMinter()":{"notice":"Returns the optional minter approved on each newly created collection."},"rareERC1155()":{"notice":"Returns the ERC1155 implementation address cloned by the factory."},"setDefaultMinter(address)":{"notice":"Updates the optional minter approved during clone initialization."},"setRareERC1155(address)":{"notice":"Updates the ERC1155 implementation address cloned by future factory calls."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/RareERC1155ContractFactory.sol":"RareERC1155ContractFactory"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol":{"keccak256":"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856","urls":["bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7","dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"keccak256":"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b","urls":["bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce","dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol":{"keccak256":"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8","urls":["bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83","dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol":{"keccak256":"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7","urls":["bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98","dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"keccak256":"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e","urls":["bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8","dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"keccak256":"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448","urls":["bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9","dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol":{"keccak256":"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f","urls":["bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9","dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a","urls":["bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7","dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0x923b9774b81c1abfb992262ae7763b6e6de77b077a7180d53c6ebb7b1c8bd648","urls":["bzz-raw://53445dc0431f9b45c06f567c6091da961d4087bec0010cca5bd62100fa624a38","dweb:/ipfs/QmNvBYpBv183czrAqNXr76E8M3LF93ouAJFeAcHfb59Rcx"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0x0e1fe02da411a6293004e5ee85bdd1facef5f1b6ef2aab8d36c73f0d77b448db","urls":["bzz-raw://c5bfd474499866fe24ac6b88eb92969395baf1e644a0f0b0054e66f9ae90c00e","dweb:/ipfs/QmS5j268UauZARToNJazEBJDWvWM35j8kHx779PF3c5rib"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/ERC1155/IRareERC1155ContractFactory.sol":{"keccak256":"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63","urls":["bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179","dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb"],"license":"MIT"},"src/token/ERC1155/RareERC1155.sol":{"keccak256":"0x580c03eaabe68708b30d0627a8ea44ebb7de24150a0ad6047266ef44cf2731a3","urls":["bzz-raw://7320879b3bb31bc0226013499865f7cc605f2845b4fb6700daa94cf5e928622a","dweb:/ipfs/QmesNVNev1i2iR57BFFAKa64xeBLqTTUqVBECDgYd46MT4"],"license":"MIT"},"src/token/ERC1155/RareERC1155ContractFactory.sol":{"keccak256":"0x1d75d40825831b017450e31e6b118bd27746a014099c3a3900b33f7e6c035036","urls":["bzz-raw://9584f968656c2d2c73993d8f3f4b2ae82dfb5788329544d1c620826d2d10b951","dweb:/ipfs/QmT3VCoEuHKcBaVU3P6bRU9aroGmEQgjXB3QB6Liejdrjt"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":83} \ No newline at end of file diff --git a/abis/RareERC1155ExecutionModuleBase.json b/abis/RareERC1155ExecutionModuleBase.json new file mode 100644 index 0000000..cb5a7da --- /dev/null +++ b/abis/RareERC1155ExecutionModuleBase.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_CHECKOUT_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","MAX_CHECKOUT_SIZE()":"a3eaf4d9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CHECKOUT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"RareERC1155ExecutionModuleBase\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Shared validation helpers for delegatecall-only ERC1155 marketplace execution modules.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155ExecutionModuleBase.sol\":\"RareERC1155ExecutionModuleBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4\",\"dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9\",\"dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155ExecutionModuleBase.sol\":{\"keccak256\":\"0x7ef2133c307dde9b4de4470cc9f410496fec223376d9b3ebf44d61b1d51d7862\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d30a82a811e717056e78d14a85eb242353bfac401046d76c41b090cebb28a3d1\",\"dweb:/ipfs/QmZMSNTSh62mDm8Q7AYyRYhJiiPFpmjftktyVSzXnjrKgp\"]},\"src/marketplace/RareERC1155MarketplaceStorage.sol\":{\"keccak256\":\"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a\",\"dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89\",\"dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CHECKOUT_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155ExecutionModuleBase.sol":"RareERC1155ExecutionModuleBase"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858","urls":["bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4","dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9","urls":["bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9","dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155ExecutionModuleBase.sol":{"keccak256":"0x7ef2133c307dde9b4de4470cc9f410496fec223376d9b3ebf44d61b1d51d7862","urls":["bzz-raw://d30a82a811e717056e78d14a85eb242353bfac401046d76c41b090cebb28a3d1","dweb:/ipfs/QmZMSNTSh62mDm8Q7AYyRYhJiiPFpmjftktyVSzXnjrKgp"],"license":"MIT"},"src/marketplace/RareERC1155MarketplaceStorage.sol":{"keccak256":"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1","urls":["bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a","dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd","urls":["bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89","dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":168} \ No newline at end of file diff --git a/abis/RareERC1155Marketplace.json b/abis/RareERC1155Marketplace.json index 8a333e6..e4b2c25 100644 --- a/abis/RareERC1155Marketplace.json +++ b/abis/RareERC1155Marketplace.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_CHECKOUT_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"acceptOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"cancelOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkout","inputs":[{"name":"_items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","components":[{"name":"summary","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","components":[{"name":"filledCount","type":"uint256","internalType":"uint256"},{"name":"skippedCount","type":"uint256","internalType":"uint256"},{"name":"ethSpent","type":"uint256","internalType":"uint256"},{"name":"ethRefunded","type":"uint256","internalType":"uint256"}]},{"name":"items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","components":[{"name":"itemIndex","type":"uint256","internalType":"uint256"},{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"filled","type":"bool","internalType":"bool"},{"name":"failureStage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","internalType":"bytes4"},{"name":"failureData","type":"bytes","internalType":"bytes"},{"name":"totalPaid","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"payable"},{"type":"function","name":"getDirectSaleConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleConfig","components":[{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getERC1155ApprovalManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getMarketConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct MarketConfigV2.Config","components":[{"name":"networkBeneficiary","type":"address","internalType":"address"},{"name":"marketplaceSettings","type":"address","internalType":"contract IMarketplaceSettings"},{"name":"spaceOperatorRegistry","type":"address","internalType":"contract ISpaceOperatorRegistry"},{"name":"royaltyEngine","type":"address","internalType":"contract IRoyaltyEngineV1"},{"name":"payments","type":"address","internalType":"contract IPayments"},{"name":"approvedTokenRegistry","type":"address","internalType":"contract IApprovedTokenRegistry"},{"name":"stakingSettings","type":"address","internalType":"contract IStakingSettings"},{"name":"stakingRegistry","type":"address","internalType":"contract IRareStakingRegistry"},{"name":"erc20ApprovalManager","type":"address","internalType":"contract IERC20ApprovalManager"},{"name":"erc721ApprovalManager","type":"address","internalType":"contract IERC721ApprovalManager"}]}],"stateMutability":"view"},{"type":"function","name":"getOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.Offer","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.SalePrice","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getSettlement","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getTokenAllowListConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfig","components":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenMintsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"},{"name":"_marketplaceSettings","type":"address","internalType":"address"},{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"},{"name":"_royaltyEngine","type":"address","internalType":"address"},{"name":"_payments","type":"address","internalType":"address"},{"name":"_approvedTokenRegistry","type":"address","internalType":"address"},{"name":"_stakingSettings","type":"address","internalType":"address"},{"name":"_stakingRegistry","type":"address","internalType":"address"},{"name":"_erc20ApprovalManager","type":"address","internalType":"address"},{"name":"_erc721ApprovalManager","type":"address","internalType":"address"},{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"},{"name":"_settlement","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"makeOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"prepareMintDirectSales","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovedTokenRegistry","inputs":[{"name":"_approvedTokenRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setContractPaused","inputs":[{"name":"_isPaused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC1155ApprovalManager","inputs":[{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20ApprovalManager","inputs":[{"name":"_erc20ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC721ApprovalManager","inputs":[{"name":"_erc721ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketplaceSettings","inputs":[{"name":"_marketplaceSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkBeneficiary","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPayments","inputs":[{"name":"_payments","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyEngine","inputs":[{"name":"_royaltyEngine","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSettlement","inputs":[{"name":"_settlement","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpaceOperatorRegistry","inputs":[{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingRegistry","inputs":[{"name":"_stakingRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingSettings","inputs":[{"name":"_stakingSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenAllowListConfigs","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenMintLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenTxLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeTo","inputs":[{"name":"newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"DirectSettlementCallUnsupported","inputs":[]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SettlementCannotBeZero","inputs":[]},{"type":"error","name":"SettlementDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x60a08060405234620000e157306080526000549060ff8260081c166200008f575060ff8082160362000053575b604051615bd69081620000e78239608051818181610ebd0152818161153b01526137970152f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a1386200002c565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80630a6ce313146102f75780630b800f48146102f2578063176ab440146102ed57806321ede032146102e857806328fbba03146102e35780632c0c49ee146102de5780632c740844146102d95780632f79f335146102d45780633492e5a8146102cf5780633659cfe6146102ca578063369679a4146102c5578063373a9412146102c05780634f1ef286146102bb57806352d1902d146102b6578063552f791d146102b15780635a501f8f146102ac578063614bd944146102a75780636442950e146102a25780636e2f4d8b1461029d578063715018a6146102985780637777e6d7146102935780637f3582301461028e5780638760251a14610289578063882796f1146102845780638da5cb5b1461027f5780638f4e6f371461027a578063a3eaf4d914610275578063af231a5814610270578063b187bd261461026b578063b38df71f14610266578063b8e6b50f14610261578063be5421411461025c578063bf3d90f814610257578063c7c83d1714610252578063c7ec1b981461024d578063cfdbf25414610248578063d7a9fb7c14610243578063d80b23e31461023e578063defad60c14610239578063e3409ce314610234578063e4e87e3b1461022f578063e92f94d11461022a578063f103574414610225578063f2fde38b14610220578063ff3a52d41461021b5763ff5c83a41461021657600080fd5b6132f6565b612f10565b612e7f565b612dac565b612d86565b612cac565b612b98565b612b62565b612a88565b6129af565b612993565b6128bc565b612886565b612816565b6125bc565b612498565b6120e9565b6120b9565b611fee565b611fd2565b611f6f565b611f46565b611ed7565b611ea8565b611dce565b611c96565b611c38565b611b57565b6119ef565b61174f565b611626565b6115e8565b611528565b6114a2565b611189565b6110b8565b610e96565b610dc0565b610c1a565b610b47565b61096c565b610700565b610603565b610521565b610477565b61036b565b6001600160a01b0381160361030d57565b600080fd5b6101443590610320826102fc565b565b6101643590610320826102fc565b3590610320826102fc565b9181601f8401121561030d578235916001600160401b03831161030d576020808501946060850201011161030d57565b608036600319011261030d57600435610383816102fc565b60243561038f816102fc565b60443561039b816102fc565b6064356001600160401b03811161030d57836103bc8492369060040161033b565b90936103c661461d565b6103ce6154a6565b60408051630a6ce31360e01b6020808301919091526001600160a01b03958616602483015295851660448201529390911660648401526080608484015260a4830182905260c48301949293600091905b83831061044e576104418661043c818a03601f198101835282611405565b615439565b5061044c6001606555565b005b84358752848101358782015284820135878301526060968701969094019360019092019161041e565b3461030d5761018036600319011261030d5761044c600435610498816102fc565b6024356104a4816102fc565b6044356104b0816102fc565b6064356104bc816102fc565b6084356104c8816102fc565b60a4356104d4816102fc565b60c435906104e1826102fc565b60e435926104ee846102fc565b61010435946104fc866102fc565b610124359661050a886102fc565b610512610312565b9861051b610322565b9a613961565b3461030d57602036600319011261030d5760043561053e816102fc565b610546613367565b61054f816155b3565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d5760405163ed56be5b60e01b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe576105e5575b50734d41524b4554504c4143455f53455454494e475360601b600080516020615b21833981519152600080a3005b806105f26105f892611314565b8061151d565b386105b7565b613535565b3461030d57602036600319011261030d57600435610620816102fc565b610628613367565b610631816155f2565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d5760405163143df10960e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe576106c1575b506d524f59414c54595f454e47494e4560901b600080516020615b21833981519152600080a3005b806105f26106ce92611314565b38610699565b606090600319011261030d576004356106ec816102fc565b90602435906044356106fd816102fc565b90565b3461030d576020610762610713366106d4565b6001600160a01b0392831660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f86526040808220938252928652828120919093168352602052902090565b54604051908152f35b9181601f8401121561030d578235916001600160401b03831161030d576020808501948460051b01011161030d57565b9060068210156107a85752565b634e487b7160e01b600052602160045260246000fd5b60005b8381106107d15750506000910152565b81810151838201526020016107c1565b906020916107fa815180928185528580860191016107be565b601f01601f1916010190565b9060209182815260c09283820191835193845183830152828501516040908184015283818701516060978891828701520151926080938486015201519660a0908180860152885180975260e0918286019487848a60051b8901019b01996000975b8a891061087d5750505050505050505050505090565b909192939495969798999a9b8a806001928f60df19868303018d525190815181526108b0838301518483019060ff169052565b818c01516001600160a01b0316818d01528187015181880152878201516001600160a01b031688820152818901516001600160a01b0316818a0152818a0151818b01528a8201518b8201526101008083015115159082015261091b610120808401519083019061079b565b610140828101516001600160e01b0319169082015261094b61016080840151906101a080918501528301906107e1565b91610180809101519101529e0199019901979a999896959493929190610867565b60208060031936011261030d576004356001600160401b03811161030d5761099890369060040161076b565b90916040918251936109a98561132c565b8351906109b582611347565b600091828152828582015282868201528460609782858a80950152815201526109dc61461d565b6109e46154a6565b84519263160624f760e11b85850152806044850186602487015252606484019260648260051b8601019783825b848410610a5e57610a5a8a610a458b610a388f61043c8e809203601f198101835282611405565b8051810182019101614c63565b90610a506001606555565b5191829182610806565b0390f35b90919293949599606319888203018b52863560fe1984360301811215610b435789610b316001938d610ad5888596019160ff8335610a9b81613fcb565b168452610abb610aac878501610330565b6001600160a01b031685880152565b610ac6818401610330565b6001600160a01b031690840152565b610af2610ae38a8301610330565b6001600160a01b0316838b0152565b6080808201359083015260a0808201359083015260c08082013590830152610b1f60e09182810190614997565b919092610100809282015201916149cb565b9c919091019701959401929190610a11565b8280fd5b3461030d57602036600319011261030d57600435610b64816102fc565b610b6c613367565b610b758161562b565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d5760405163632c2a3160e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57610c07575b506f5354414b494e475f524547495354525960801b600080516020615b21833981519152600080a3005b806105f2610c1492611314565b38610bdd565b3461030d5760408060031936011261030d576004908135610c3a816102fc565b6024356001600160401b03811161030d57610c58903690850161076b565b929093610c6361461d565b610c6c84615a45565b60015b848110610d37575050506001600160a01b03811660005b838110610c975761044c6001606555565b80610ca6610d2c92868861475c565b356002610ce033610cc984610cba8a614182565b90600052602052604060002090565b9060018060a01b0316600052602052604060002090565b015415610d3157610d00610cfb33610cc984610cba8a614182565b61476c565b83337f46227bd805037a939224e05cd991a64cb464f4b5c5317858af210838e59ce390600080a4614081565b610c86565b50614081565b610d4281868861475c565b60001982019035828211610dbb57610d5b82888a61475c565b351015610d715750610d6c90614081565b610c6f565b9286610d8e8388610d87610db79698828661475c565b359361475c565b915163f48f718f60e01b8152938401948552602085015235604084015290918291606090910190565b0390fd5b61406b565b3461030d57602036600319011261030d57600435610ddd816102fc565b610de5613367565b610dee81615666565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d5760405163148282a760e21b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57610e83575b50724e4554574f524b5f42454e454649434941525960681b600080516020615b21833981519152600080a3005b806105f2610e9092611314565b38610e56565b3461030d57602036600319011261030d57600435610eb3816102fc565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169190610eec30841415613464565b610f09600080516020615b018339815191529382855416146134c5565b610f11613367565b60405190610f1e826113cf565b600082527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610f5857505061044c91506135ee565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181610faf575b50610f9c5760405162461bcd60e51b815280610db76004820161359f565b61044c93610faa9114613541565b61367e565b610fd191925060203d8111610fd8575b610fc98183611405565b810190613526565b9038610f7e565b503d610fbf565b90815180825260208080930193019160005b828110610fff575050505090565b83516001600160a01b031685529381019392810192600101610ff1565b90815180825260208080930193019160005b82811061103c575050505090565b835160ff168552938101939281019260010161102e565b906106fd916020815260018060a01b03825116602082015260208201516040820152604082015160608201526060820151608082015260a06110a3608084015160c08385015260e0840190610fdf565b9201519060c0601f198285030191015261101c565b3461030d57610a5a6111276110cc366106d4565b906040939284916111098351926110e284611362565b606060a0600095868152866020820152868882015286838201528260808201520152614182565b908252602052209060018060a01b0316600052602052604060002090565b9061117a600582519361113985611362565b80546001600160a01b03168552600181015460208601526002810154848601526003810154606086015261116f60048201614cf0565b608086015201614d48565b60a08301525191829182611053565b3461030d5760408060031936011261030d576004356111a7816102fc565b6024356001600160401b03811161030d576111c690369060040161033b565b9190926111d161461d565b6111d96154a6565b6111ea6111e633846159ae565b1590565b6112dd57916111f98185615525565b6001600160a01b0382169060005b8181106112185761044c6001606555565b806112276112d8928489614673565b356112328187615923565b847fa3f36b03a37e1948b5a4d52ddc1d9f62ab7d4e887e3a0a03e0c68d40f6075f3f89896112be86898c6112ab8661129a8b610cba6020958a6112848a8a8a61127c83838c614673565b013598614673565b013561128e611426565b958652878601526141bb565b906020600191805184550151910155565b6112b6838388614673565b013594614673565b8b519283520135602082015280604081015b0390a3614081565b611207565b51600162bed83560e01b0319815291508190610db790339060048401613f8a565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161132757604052565b6112fe565b604081019081106001600160401b0382111761132757604052565b608081019081106001600160401b0382111761132757604052565b60c081019081106001600160401b0382111761132757604052565b61014081019081106001600160401b0382111761132757604052565b60e081019081106001600160401b0382111761132757604052565b60a081019081106001600160401b0382111761132757604052565b602081019081106001600160401b0382111761132757604052565b606081019081106001600160401b0382111761132757604052565b90601f801991011681019081106001600160401b0382111761132757604052565b604051906103208261132c565b604051906103208261137d565b60405190610320826113b4565b6040519061032082611399565b6040519061032082611362565b604051906101a082018281106001600160401b0382111761132757604052565b6001600160401b03811161132757601f01601f191660200190565b604036600319011261030d576004356114ba816102fc565b602435906001600160401b03821161030d573660238301121561030d578160040135906114e682611487565b916114f46040519384611405565b808352366024828601011161030d57602081600092602461044c9701838701378401015261378d565b600091031261030d57565b3461030d57600036600319011261030d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361158257604051600080516020615b018339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b3461030d57604036600319011261030d5761160d600435611608816102fc565b6141f4565b6024356000526020526020604060002054604051908152f35b3461030d576020610762611639366106d4565b6001600160a01b0392831660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d51186526040808220938252928652828120919093168352602052902090565b81516001600160a01b031681526101408101929161032091906020818101516001600160a01b0316908301526040818101516001600160a01b0316908301526060818101516001600160a01b0316908301526080818101516001600160a01b03169083015260a0818101516001600160a01b03169083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120908101516001600160a01b0316910152565b3461030d5760008060031936011261199457610a5a906119886040516117748161137d565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152610100928084830152610120809201526119576117bc611433565b600080516020615ac1833981519152546001600160a01b0316815293600080516020615ae183398151915254611806906001600160a01b03165b6001600160a01b03166020870152565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d502546001600160a01b031660408601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d503546001600160a01b031660608601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d504546001600160a01b031660808601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d505546001600160a01b031660a08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d506546001600160a01b031660c08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d507546001600160a01b031660e08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d508546001600160a01b031690850152565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d509546001600160a01b031690830152565b60405191829182611688565b80fd5b604060031982011261030d576004356119af816102fc565b916024356001600160401b039283821161030d578060238301121561030d57816004013593841161030d5760248460061b8301011161030d576024019190565b3461030d576119fd36611997565b611a0892919261461d565b611a106154a6565b611a1d6111e633846159ae565b611ac657611a2b818461556c565b60005b818110611a3f5761044c6001606555565b80611a4e611ac1928487614683565b35611a598186615923565b602080611a6784878a614683565b0135611a7683610cba896141f4565b55611a82838689614683565b60405191013581526001600160a01b038616907f2f2a73977f9734e3b74f4efe888b44cdcca6903d8ab2b5be49c3969cc6cb1b629080602081016112d0565b611a2e565b604051600162bed83560e01b0319815280610db7338560048401613f8a565b906106fd916020815260018060a01b0380835116602083015260208301511660408201526040820151606082015260608201516080820152608082015160a082015260c0611b4260a084015160e083850152610100840190610fdf565b9201519060e0601f198285030191015261101c565b3461030d5760408060031936011261030d5780610a5a91600435611b7a816102fc565b611bb6825191611b8983611399565b606060c0600094858152856020820152858782015285838201528560808201528260a0820152015261422d565b60243582526020522090611c296006825193611bd185611399565b80546001600160a01b031685526001810154611bf5906001600160a01b03166117f6565b6002810154848601526003810154606086015260048101546080860152611c1e60058201614cf0565b60a086015201614d48565b60c08301525191829182611ae5565b3461030d5760008060031936011261199457611c52613367565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b60608060031936011261030d5760043590611cb0826102fc565b60243590611cbd826102fc565b6044356001600160401b03811161030d57611cdc90369060040161076b565b611ce792919261461d565b611cef6154a6565b60408051637777e6d760e01b6020808301919091526001600160a01b0397881660248301529690951660448601526064850183905260848501829052600582901b850160a490810196916000918701865b858410611d5e576104418961043c818d03601f198101835282611405565b909192939495969860a3198982030183528935607e198336030181121561030d5786611dbc6001938b611dab878596018035845285810135868501528a8101358b85015282810190614997565b9190926080809282015201916149cb565b9b019301940192919695949390611d40565b3461030d57602036600319011261030d57600435611deb816102fc565b611df3613367565b611dfc816156a4565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d576040516362cd1f1560e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57611e95575b507653504143455f4f50455241544f525f524547495354525960481b600080516020615b21833981519152600080a3005b806105f2611ea292611314565b38611e64565b3461030d57604036600319011261030d5761160d600435611ec8816102fc565b614266565b8015150361030d57565b3461030d57602036600319011261030d577fae6fb668d2dacbb6cc6e620b898a7166d67d7838c94ddeff2dbdf55995e9b1926020600435611f1781611ecd565b611f1f613367565b1515600080516020615b6183398151915260ff1981541660ff8316179055604051908152a1005b3461030d57600036600319011261030d576033546040516001600160a01b039091168152602090f35b3461030d57602036600319011261030d57600435611f8c816102fc565b611f94613367565b611f9d816157b8565b611fa6816133bf565b6001600160a01b03166914d1551513115351539560b21b600080516020615b21833981519152600080a3005b3461030d57600036600319011261030d57602060405160328152f35b3461030d57602036600319011261030d5760043561200b816102fc565b612013613367565b61201c816156e6565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d57604051631d1d389760e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe576120a6575b50675041594d454e545360c01b600080516020615b21833981519152600080a3005b806105f26120b392611314565b38612084565b3461030d57600036600319011261030d57602060ff600080516020615b6183398151915254166040519015158152f35b60c036600319011261030d576004803590612103826102fc565b6024359160443591612114836102fc565b606435936084359160a4359461212861461d565b6121306154a6565b612139856157da565b73__$11854c5905aa23948096e0e4d7059bb9de$__92833b1561030d57604094855198635e157ccf60e11b8a526000998a8180612178888a8301613fa4565b03818a5af480156105fe57612485575b508015612475578115612465578815158061245b575b61243a576121ac82826142d8565b600080516020615ae1833981519152549098906121d9906001600160a01b03165b6001600160a01b031690565b9860208951809b6361fe24a960e11b825281806121fd868d83019190602083019252565b03915afa998a156105fe578c9a612416575b508961221a916147dc565b988b883b156119945789516338fa83e760e01b8152600080516020615ac18339815191528982019081526001600160a01b0389166020820152604081019c909c529a8b90819060600103818b5af49182156105fe578c9a7ec827db726736dd1c3f5c4643456d97cc22d1613afeae6f8576124e65e8e1bc93612403575b506123976122ca6122c589610cc96122b28b610cba8861429f565b3360009081526020919091526040902090565b6147e9565b9c6123598c886122d8611440565b6001600160a01b038d168152918960208401528201528560608201528260808201526123108b610cc98c610cc93391610cba8b61429f565b815181546001600160a01b0319166001600160a01b0391909116178155906004906080906020810151600185015560408101516002850155606081015160038501550151910155565b8b516001600160a01b038a811682526020820197909752604081019790975260608701939093526080860192909252909216923392819060a0820190565b0390a4602086015193606081880151970151843b156123ff576123cf915197889687958695634c4c261960e01b87523391870161482e565b03915af480156105fe576123ec575b506123e96001606555565b80f35b806105f26123f992611314565b386123de565b8680fd5b806105f261241092611314565b38612297565b61221a919a506124339060203d8111610fd857610fc98183611405565b999061220f565b8651633312a4fd60e21b81528086018a815242602082015281906040010390fd5b504289111561219e565b865163c6b949a960e01b81528590fd5b865163473ae14d60e01b81528590fd5b806105f261249292611314565b38612188565b3461030d5761010036600319011261030d576004356124b6816102fc565b604435906124c3826102fc565b6064356124cf816102fc565b6001600160401b039260c43584811161030d576124f090369060040161076b565b9160e43595861161030d5761250c61044c96369060040161076b565b95909460a4359260843592602435906149ef565b9060a060031983011261030d57600435612539816102fc565b91602435612546816102fc565b91604435916001600160401b039081841161030d578060238501121561030d5783600401359382851161030d578160248660071b8301011161030d57602401939260643583811161030d578261259e9160040161076b565b9390939260843591821161030d576125b89160040161076b565b9091565b3461030d576125ca36612520565b969492939091956125d961461d565b6125e16154a6565b6125ee6111e633886159ae565b6127f7576125fc82856154d1565b73__$11854c5905aa23948096e0e4d7059bb9de$__97883b1561030d57604093845199635e157ccf60e11b8b5260009a8b818061263c8860048301613fa4565b0381855af480156105fe576127e4575b508a813b15611994578284928c8b6126798b51968795869485946376fb859760e01b865260048601613fd6565b03915af480156105fe576127d1575b50895b84811061269d578a6123e96001606555565b8888888888888f888a916126b28a86896140a6565b35976126be898b615923565b8a602087898b84846126d18286856140a6565b0135936126dd926140a6565b0135898c60609586926126ef926140a6565b0135906126fa61144d565b338152926001600160a01b038b1684860152838d01528483015260808201526127243686866140d2565b60a08201528b8d612736368a8a61412a565b60c08401526127449061422d565b6000918252602052604090209061275a9161447b565b6127658d898c6140a6565b0135988c89612775828b856140a6565b013598612781926140a6565b01359651968796339b600160a01b60019003169961279f97896145d7565b037f4c048dfd080dcfa2cccc41ef603e5f0ed6602ca215a41581d653aadf841a560b91a46127cc90614081565b61268b565b806105f26127de92611314565b38612688565b806105f26127f192611314565b3861264c565b604051600162bed83560e01b0319815280610db7338960048401613f8a565b3461030d5760408060031936011261030d57612850600435612837816102fc565b6000602084516128468161132c565b82815201526141bb565b6024356000526020528060002081516128688161132c565b60206001835493848452015491019081528251918252516020820152f35b3461030d57600036600319011261030d57600080516020615b81833981519152546040516001600160a01b039091168152602090f35b3461030d576128ca36611997565b6128d592919261461d565b6128dd6154a6565b6128ea6111e633846159ae565b611ac6576128f8818461556c565b60005b81811061290c5761044c6001606555565b8061291b61298e928487614683565b356129268186615923565b60208061293484878a614683565b013561294383610cba89614266565b5561294f838689614683565b60405191013581526001600160a01b038616907feead0384c6f48c02c0099b2433359d43617492f06d8e3a59cbe786b9970f7e619080602081016112d0565b6128fb565b3461030d57600036600319011261030d576020604051604b8152f35b3461030d57602036600319011261030d576004356129cc816102fc565b6129d4613367565b6129dd81615796565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d576040516328b80cf560e21b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57612a75575b507522a92199182fa0a8282927ab20a62fa6a0a720a3a2a960511b600080516020615b21833981519152600080a3005b806105f2612a8292611314565b38612a45565b3461030d57602036600319011261030d57600435612aa5816102fc565b612aad613367565b612ab681615796565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d57604051631f1afd0d60e01b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57612b4f575b507622a9219b9918afa0a8282927ab20a62fa6a0a720a3a2a960491b600080516020615b21833981519152600080a3005b806105f2612b5c92611314565b38612b1e565b3461030d57600036600319011261030d57600080516020615b41833981519152546040516001600160a01b039091168152602090f35b3461030d57608036600319011261030d57610a5a612c0c612c2c600435612bbe816102fc565b610cc9604435612bcd816102fc565b60643592612bda846102fc565b608060409687928351612bec816113b4565b60009381858093528260208201528287820152826060820152015261429f565b6024358252602052209060018060a01b0316600052602052604060002090565b906004815192612c3b846113b4565b60018060a01b038154168452600181015460208501526002810154838501526003810154606085015201546080830152519182918291909160808060a083019460018060a01b0381511684526020810151602085015260408101516040850152606081015160608501520151910152565b3461030d57602036600319011261030d57600435612cc9816102fc565b612cd1613367565b612cda81615719565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d57604051632867932b60e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57612d73575b5076415050524f5645445f544f4b454e5f524547495354525960481b600080516020615b21833981519152600080a3005b806105f2612d8092611314565b38612d42565b3461030d57612da5612d97366106d4565b91612da061461d565b614874565b6001606555005b3461030d57602036600319011261030d57600435612dc9816102fc565b612dd1613367565b612dda8161575b565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d57604051632d8b49e160e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57612e6c575b506f5354414b494e475f53455454494e475360801b600080516020615b21833981519152600080a3005b806105f2612e7992611314565b38612e42565b3461030d57602036600319011261030d57600435612e9c816102fc565b612ea4613367565b6001600160a01b03811615612ebc5761044c9061341b565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461030d57612f1e36612520565b90612f2e9792969395949761461d565b612f366154a6565b612f4088866154d1565b73__$11854c5905aa23948096e0e4d7059bb9de$__3b1561030d57604051635e157ccf60e11b815260008180612f798860048301613fa4565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af480156105fe576132e3575b5073__$11854c5905aa23948096e0e4d7059bb9de$__3b1561030d576040516376fb859760e01b815260008180612fda86868d8d60048601613fd6565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af480156105fe576132d0575b50613008836157da565b600080516020615b818339815191525461304c90602090613031906001600160a01b03166121cd565b6040518093819263e985e9c560e01b83523360048401613f8a565b03816001600160a01b0388165afa9081156105fe576000916132a1575b50156132855760005b8881106130835761044c6001606555565b61308e818a886140a6565b35868a60606130bc8560406130b3828660206130ab83838c6140a6565b0135986140a6565b0135938c6140a6565b013582156132735781156132615780151580613257575b61323757604051627eeac760e11b8152336004820152602481018590526020816044816001600160a01b038d165afa9081156105fe57600091613218575b508281106131db57507fe4cf997ce4def583f8220b51e6c89b5dbf6eeded5de4d1d78884a25d2bf46d5d8392896131ce8f8f8c918f97918d926131b78a6131d69f9e9d8e6131b29161317361316461145a565b6001600160a01b039095168552565b60208401528b604084015284606084015261318f3688886140d2565b608084015261319f368a8a61412a565b60a0840152610cc93391610cba8d614182565b6146b3565b60405197889760018060a01b03169b339b896145d7565b0390a4614081565b613072565b604051636906ef1760e11b81523360048201526001600160a01b038a1660248201526044810186905260648101849052608481019190915260a490fd5b613231915060203d602011610fd857610fc98183611405565b38613111565b6040516346a836ff60e11b81526004810191909152426024820152604490fd5b50428111156130d3565b60405163c6b949a960e01b8152600490fd5b6040516331cc996d60e11b8152600490fd5b60405163d65b0d6960e01b815280610db7853360048401613f8a565b6132c3915060203d6020116132c9575b6132bb8183611405565b81019061469e565b38613069565b503d6132b1565b806105f26132dd92611314565b38612ffe565b806105f26132f092611314565b38612f9d565b3461030d57602036600319011261030d57600435613313816102fc565b61331b613367565b61332481615796565b6001600160a01b0316613336816133ed565b7722a92198989a9aafa0a8282927ab20a62fa6a0a720a3a2a960411b600080516020615b21833981519152600080a3005b6033546001600160a01b0316330361337b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600080516020615b4183398151915280546001600160a01b0319166001600160a01b03909216919091179055565b600080516020615b8183398151915280546001600160a01b0319166001600160a01b03909216919091179055565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b1561346b57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b156134cc57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b9081602091031261030d575190565b6040513d6000823e3d90fd5b1561354857565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b60809060208152602e60208201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960408201526d6f6e206973206e6f74205555505360901b60608201520190565b803b1561362357600080516020615b0183398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b90613688826135ee565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613732575b6136ca575050565b61372f91600080604051936136de856113ea565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020860152660819985a5b195960ca1b6040860152602081519101845af4613729613898565b916138c8565b50565b5060006136c2565b90613744826135ee565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613785576136ca575050565b5060016136c2565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692906137c630851415613464565b6137e3600080516020615b018339815191529482865416146134c5565b6137eb613367565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561382157505061032091506135ee565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181613878575b506138655760405162461bcd60e51b815280610db76004820161359f565b610320936138739114613541565b61373a565b61389191925060203d8111610fd857610fc98183611405565b9038613847565b3d156138c3573d906138a982611487565b916138b76040519384611405565b82523d6000602084013e565b606090565b9192901561392a57508151156138dc575090565b3b156138e55790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b82519091501561393d5750805190602001fd5b60405162461bcd60e51b815260206004820152908190610db79060248301906107e1565b99979593919a98969492909a6000549b60ff8d60081c1615809d819e613a89575b8115613a69575b5015613a0d576139af9b8d6139a6600160ff196000541617600055565b6139f457613d5f565b6139b557565b6139c561ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b613a0861010061ff00196000541617600055565b613d5f565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b15915081613a7b575b5038613989565b6001915060ff161438613a74565b600160ff8216109150613982565b5190610320826102fc565b908161014091031261030d57613ab6611433565b90613ac081613a97565b8252613ace60208201613a97565b6020830152613adf60408201613a97565b6040830152613af060608201613a97565b6060830152613b0160808201613a97565b6080830152613b1260a08201613a97565b60a0830152613b2360c08201613a97565b60c0830152613b3460e08201613a97565b60e0830152610100613b47818301613a97565b90830152613b59610120809201613a97565b9082015290565b8051600080516020615ac183398151915280546001600160a01b03199081166001600160a01b03938416179091556020830151600080516020615ae18339815191528054831691841691909117905560408301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5028054831691841691909117905560608301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5038054831691841691909117905560808301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5048054831691841691909117905560a08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5058054831691841691909117905560c08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5068054831691841691909117905560e08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d507805483169184169190911790556101008301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50880549092169083161790556101209091015161032091167f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50980546001600160a01b0319166001600160a01b03909216919091179055565b93959a9997919a98929498969096613d7685615666565b613d7f886155b3565b613d888c6156a4565b613d91866155f2565b613d9a876156e6565b613da38a615719565b613dac8161575b565b613db58261562b565b613dbe83615796565b613dc784615796565b613dd089615796565b613dd98b6157b8565b60405163ef8c824960e01b81526001600160a01b03958616600482015297851660248901529a841660448801529383166064870152938216608486015295811660a485015296871660c4840152861660e48301528516610104820152919093166101248201526101409283826101448173__$c98ca6a62396e5a7a1471db151198a1f31$__5af49384156105fe57613e9594613e9093613e8292600092613ead575b5050613b60565b6001600160a01b03166133ed565b6133bf565b613e9d613f3a565b613ea5613f6e565b610320613f5d565b613ecc9250803d10613ed3575b613ec48183611405565b810190613aa2565b3880613e7b565b503d613eba565b15613ee157565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b613f5460ff60005460081c16613f4f81613eda565b613eda565b6103203361341b565b61032060ff60005460081c16613eda565b613f8360ff60005460081c16613f4f81613eda565b6001606555565b6001600160a01b0391821681529116602082015260400190565b600080516020615ac183398151915281526001600160a01b03909116602082015260400190565b60ff81160361030d57565b909293918060408301604084525260608201939060005b81811061403e57505050808303602091820152818352918201929160005b828110614019575050505090565b90919293828060019260ff883561402f81613fcb565b1681520195019392910161400b565b909193946001908535614050816102fc565b60a083901b8390031681526020908101969501929101613fed565b634e487b7160e01b600052601160045260246000fd5b6000198114610dbb5760010190565b634e487b7160e01b600052603260045260246000fd5b91908110156140b65760071b0190565b614090565b6001600160401b0381116113275760051b60200190565b92916140dd826140bb565b916140eb6040519384611405565b829481845260208094019160051b810192831161030d57905b8282106141115750505050565b838091833561411f816102fc565b815201910190614104565b9291614135826140bb565b916141436040519384611405565b829481845260208094019160051b810192831161030d57905b8282106141695750505050565b838091833561417781613fcb565b81520191019061415c565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5126020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5106020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5136020526040902090565b81810292918115918404141715610dbb57565b8181106142f6575050565b600081556001016142eb565b90600160401b81116113275781549080835581811061432057505050565b61032092600052602060002091820191016142eb565b90600160401b811161132757815481835580821061435357505050565b61032092600052601f6020600020918180850160051c840194168061437f575b500160051c01906142eb565b600019908186019182549160200360031b1c16905538614373565b9080516001600160401b038111611327576143b58184614336565b6143c9602080930193600052602060002090565b908060051c9260005b8481106144455750601f19821690910390816143f0575b5050505050565b9390600094855b82811061440e5750505050015538808080806143e9565b909192958261443a600192846144258b5160ff1690565b919060ff809160031b9316831b921b19161790565b9701939291016143f7565b6000805b83811061445d5750848201556001016143d2565b9690836144726001928a614425865160ff1690565b92019701614449565b815181546001600160a01b0319166001600160a01b03918216178255909190602082810151600185810180549285166001600160a01b03166001600160a01b03199093169290921790915591604084015160028601556060840151600386015560808401516004860155600585019060a0850151928351936001600160401b03851161132757819061450d8686614302565b0192600052806000209160005b85811061453a575050505050505090600660c0610320930151910161439a565b845182168482015593820193860161451a565b91908082526020809201929160005b82811061456a575050505090565b909192938280600192873561457e816102fc565b848060a01b0316815201950191019291909261455c565b91908082526020809201929160005b8281106145b2575050505090565b90919293828060019260ff88356145c881613fcb565b168152019501939291016145a4565b9694926106fd98969261460f959260018060a01b0316895260208901526040880152606087015260c0608087015260c086019161454d565b9260a0818503910152614595565b60026065541461462e576002606555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b91908110156140b6576060020190565b91908110156140b65760061b0190565b519061032082611ecd565b9081602091031261030d57516106fd81611ecd565b815181546001600160a01b0319166001600160a01b039182161782559091906020808301519160019283860155604084015160028601556060840151600386015560048501906080850151928351936001600160401b03851161132757819061471c8686614302565b0192600052806000209160005b858110614749575050505050505090600560a0610320930151910161439a565b8451821684820155938201938601614729565b91908110156140b65760051b0190565b6005600091828155826001820155826002820155826003820155600481018054848255806147c2575b50500190815490808355816147a957505050565b60208161032094601f935220910160051c8101906142eb565b6147d591855260208520908101906142eb565b3880614795565b91908201809211610dbb57565b906040516147f6816113b4565b82546001600160a01b031681526001830154602082015260028301546040820152600383015460608201526004909201546080830152565b600080516020615ac183398151915281526001600160a01b039182166020820152911660408201526060810191909152608081019190915260a081019190915260c00190565b91909161488e6122c583610cc96122b287610cba8761429f565b60408101938451156143e9576148d06148b285610cc933610cc986610cba8a61429f565b60046000918281558260018201558260028201558260038201550155565b60208281018051875160609586018051604080516001600160a01b038c8116825297810195909552840192909252958201529394909391169033907fb00a321de530b83262da5c2b572508a21b98c8d189dba9939e0359e8c9fbfeac90608090a473__$11854c5905aa23948096e0e4d7059bb9de$__90519351915193813b1561030d5760009361497960405196879586948594634c4c261960e01b865233906004870161482e565b03915af480156105fe5761498a5750565b806105f261032092611314565b9035601e198236030181121561030d5701602081359101916001600160401b03821161030d578160051b3603831361030d57565b81835290916001600160fb1b03831161030d5760209260051b809284830137010190565b979396614a7b9561043c98614a68949893614a899c96614a0d61461d565b614a156154a6565b6040519c8d9b8c9363b8e6b50f60e01b6020860152604460018060a01b039586809516602482015201521660648c01521660848a015260a489015260c488015261010060e488015261012487019161454d565b8481036023190161010486015291614595565b03601f198101835282611405565b506103206001606555565b519061032082613fcb565b5190600682101561030d57565b51906001600160e01b03198216820361030d57565b81601f8201121561030d578051614ad781611487565b92614ae56040519485611405565b8184526020828401011161030d576106fd91602080850191016107be565b81601f8201121561030d57805190614b1a826140bb565b92604092614b2a84519586611405565b808552602093848087019260051b8501019383851161030d57858101925b858410614b59575050505050505090565b83516001600160401b039081811161030d578301916101a09283601f19828a03011261030d57614b87611467565b908a8101518252614b99878201614a94565b8b830152606094614bab868301613a97565b88840152608095868301519084015260a095614bc8878401613a97565b9084015260c095614bda878401613a97565b9084015260e095868301519084015261010095868301519084015261012095614c04878401614693565b9084015261014095614c17878401614a9f565b9084015261016095614c2a878401614aac565b90840152610180918281015195861161030d578c96614c4e8c898099850101614ac1565b90850152015190820152815201930192614b48565b9060208282031261030d5781516001600160401b039283821161030d5701908181039260a0841261030d57608060405194614c9d8661132c565b1261030d57604051614cae81611347565b835181526020840151602082015260408401516040820152606084015160608201528452608083015190811161030d57614ce89201614b03565b602082015290565b9060405191828154918282526020928383019160005283600020936000905b828210614d255750505061032092500383611405565b85546001600160a01b031684526001958601958895509381019390910190614d0f565b90604080518093805492614d6f614d63858560209181520190565b92600052602060002090565b9360005b81601f82011061518b57610320955492828210615175575b82821061515b575b828210615141575b828210615127575b82821061510d575b8282106150f3575b8282106150d9575b8282106150bf575b8282106150a8575b50818110615090575b818110615078575b818110615060575b818110615048575b818110615030575b818110615018575b818110615000575b818110614fe8575b818110614fd0575b818110614fb8575b818110614fa0575b818110614f88575b818110614f70575b818110614f58575b818110614f40575b818110614f28575b818110614f10575b818110614ef8575b818110614ee0575b818110614ec8575b818110614eb0575b818110614e98575b10614e8a575b500383611405565b60f81c815260200138614e82565b60f083901c60ff168452926001906020019301614e7c565b60e883901c60ff168452926001906020019301614e74565b60e083901c60ff168452926001906020019301614e6c565b60d883901c60ff168452926001906020019301614e64565b60d083901c60ff168452926001906020019301614e5c565b60c883901c60ff168452926001906020019301614e54565b60c083901c60ff168452926001906020019301614e4c565b60b883901c60ff168452926001906020019301614e44565b60b083901c60ff168452926001906020019301614e3c565b60a883901c60ff168452926001906020019301614e34565b60a083901c60ff168452926001906020019301614e2c565b609883901c60ff168452926001906020019301614e24565b609083901c60ff168452926001906020019301614e1c565b608883901c60ff168452926001906020019301614e14565b608083901c60ff168452926001906020019301614e0c565b607883901c60ff168452926001906020019301614e04565b607083901c60ff168452926001906020019301614dfc565b606883901c60ff168452926001906020019301614df4565b606083901c60ff168452926001906020019301614dec565b605883901c60ff168452926001906020019301614de4565b605083901c60ff168452926001906020019301614ddc565b604883901c60ff168452926001906020019301614dd4565b83901c60ff16845292600190602001930138614dcb565b603884901c60ff1685529093600190602001940190614dc3565b603084901c60ff1685529093600190602001940190614dbb565b602884901c60ff1685529093600190602001940190614db3565b602084811c60ff1686529194909160019101940190614dab565b601884901c60ff1685529093600190602001940190614da3565b601084901c60ff1685529093600190602001940190614d9b565b600884901c60ff1685529093600190602001940190614d93565b60ff841685529093600190602001940190614d8b565b919350916001610400602092615429885461541e60ff6151af8582851660ff169052565b6153f761525c6153a78d615357896153078e6151d48184018a8d60081c1660ff169052565b6151e78584018a8d60101c1660ff169052565b888b610200606095615202878201858560181c1660ff169052565b6152176080958585888501921c1660ff169052565b6152bd60a097615230898401878760281c1660ff169052565b61526d60c09b6152498d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b6152826101208401878760481c1660ff169052565b6152976101408401878760501c1660ff169052565b6152ac6101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b6152d26101a08201858560681c1660ff169052565b6152e76101c08201858560701c1660ff169052565b6152fc6101e08201858560781c1660ff169052565b01921c1660ff169052565b61531c6102208c01888b60881c1660ff169052565b6153316102408c01888b60901c1660ff169052565b6153466102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b61536c6102a08a01868960a81c1660ff169052565b6153816102c08a01868960b01c1660ff169052565b6153966102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b6153bc6103208801848760c81c1660ff169052565b6153d16103408801848760d01c1660ff169052565b6153e66103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b61540c6103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b0195019101918693919492614d73565b600080516020615b4183398151915254815160009283926020909101906001600160a01b03165af4615469613898565b90156154725790565b80511561548157602081519101fd5b604051637dd68d8560e01b815260206004820152908190610db79060248301906107e1565b60ff600080516020615b6183398151915254166154bf57565b60405163ab35696f60e01b8152600490fd5b6154da82615a45565b60015b8281106154e957505050565b600019810190808211610dbb5761551b6155076155209386866140a6565b356155138387876140a6565b359083615a87565b614081565b6154dd565b61552e82615a45565b60015b82811061553d57505050565b600019810190808211610dbb5761551b61555b615567938686614673565b35615513838787614673565b615531565b61557582615a45565b60015b82811061558457505050565b600019810190808211610dbb5761551b6155a26155ae938686614683565b35615513838787614683565b615578565b6001600160a01b0316156155c357565b60405163602d6df560e01b8152734d41524b4554504c4143455f53455454494e475360601b6004820152602490fd5b6001600160a01b03161561560257565b60405163602d6df560e01b81526d524f59414c54595f454e47494e4560901b6004820152602490fd5b6001600160a01b03161561563b57565b60405163602d6df560e01b81526f5354414b494e475f524547495354525960801b6004820152602490fd5b6001600160a01b03161561567657565b60405163602d6df560e01b8152724e4554574f524b5f42454e454649434941525960681b6004820152602490fd5b6001600160a01b0316156156b457565b60405163602d6df560e01b81527653504143455f4f50455241544f525f524547495354525960481b6004820152602490fd5b6001600160a01b0316156156f657565b60405163602d6df560e01b8152675041594d454e545360c01b6004820152602490fd5b6001600160a01b03161561572957565b60405163602d6df560e01b815276415050524f5645445f544f4b454e5f524547495354525960481b6004820152602490fd5b6001600160a01b03161561576b57565b60405163602d6df560e01b81526f5354414b494e475f53455454494e475360801b6004820152602490fd5b6001600160a01b0316156157a657565b60405163c49074af60e01b8152600490fd5b6001600160a01b0316156157c857565b604051634e04f1e560e01b8152600490fd5b803b15801561580d575b6157eb5750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b808352602482015260248152615836816113ea565b519084617530fa6000513d8261588a575b5081615880575b5080615870575b80615861575b156157e4565b5061586b816158f3565b61585b565b5061587a81615896565b15615855565b905015153861584e565b60201115915038615847565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b6024820152602481526158c6816113ea565b5191617530fa6000513d826158e7575b50816158e0575090565b9050151590565b602011159150386158d6565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b6024820152602481526158c6816113ea565b6040516001620b695760e21b03198152600481018390526020816024816001600160a01b0386165afa9081156105fe57600091615990575b5015615965575050565b604051632be7c7f360e01b81526001600160a01b039190911660048201526024810191909152604490fd5b6159a8915060203d8111610fd857610fc98183611405565b3861595b565b6000806040516020810190638da5cb5b60e01b8252600481526159d08161132c565b5190845afa906159de613898565b91158015615a3a575b615a18575060208180518101031261030d576020015190615a07826102fc565b6001600160a01b0391821691161490565b60405163915b8f1d60e01b81526001600160a01b039091166004820152602490fd5b5060208251106159e7565b8015615a7557604b8111615a565750565b6044906040519063f80a484560e01b82526004820152604b6024820152fd5b60405163c2e5347d60e01b8152600490fd5b909182811115615a9657505050565b60405163f48f718f60e01b8152600481019290925260248201929092526044810191909152606490fdfe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5005e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d501360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc376c367a1420063e9671cc85404673694901b9db2c20dc84b5acbf060f7ee37a5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50b5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5145e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50aa264697066735822122006d47f961c8a43f2754a8dddf33fb039c6a2b29a982ed3666039c0b0fe71cd0c64736f6c63430008120033","sourceMap":"1305:22469:72:-:0;;;;;;;1332:4:24;1324:13;;6007::23;1305:22469:72;;;;;;;;;;;;;;6078:31:23;6074:139;;-1:-1:-1;1305:22469:72;;;;;;;;1324:13:24;1305:22469:72;;;;;;;;;;;;;;;;6074:139:23;1305:22469:72;;;;;;6007:13:23;1305:22469:72;6174:28:23;1305:22469:72;;;;;;6174:28:23;6074:139;;;1305:22469:72;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":8738,"length":20},{"start":9957,"length":20},{"start":12329,"length":20},{"start":12388,"length":20},{"start":12423,"length":20},{"start":12485,"length":20},{"start":18970,"length":20}]},"src/v2/utils/MarketConfigV2.sol":{"MarketConfigV2":[{"start":1592,"length":20},{"start":1818,"length":20},{"start":3166,"length":20},{"start":3799,"length":20},{"start":7909,"length":20},{"start":8453,"length":20},{"start":10950,"length":20},{"start":11167,"length":20},{"start":11715,"length":20},{"start":11971,"length":20},{"start":16178,"length":20}]}}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c80630a6ce313146102f75780630b800f48146102f2578063176ab440146102ed57806321ede032146102e857806328fbba03146102e35780632c0c49ee146102de5780632c740844146102d95780632f79f335146102d45780633492e5a8146102cf5780633659cfe6146102ca578063369679a4146102c5578063373a9412146102c05780634f1ef286146102bb57806352d1902d146102b6578063552f791d146102b15780635a501f8f146102ac578063614bd944146102a75780636442950e146102a25780636e2f4d8b1461029d578063715018a6146102985780637777e6d7146102935780637f3582301461028e5780638760251a14610289578063882796f1146102845780638da5cb5b1461027f5780638f4e6f371461027a578063a3eaf4d914610275578063af231a5814610270578063b187bd261461026b578063b38df71f14610266578063b8e6b50f14610261578063be5421411461025c578063bf3d90f814610257578063c7c83d1714610252578063c7ec1b981461024d578063cfdbf25414610248578063d7a9fb7c14610243578063d80b23e31461023e578063defad60c14610239578063e3409ce314610234578063e4e87e3b1461022f578063e92f94d11461022a578063f103574414610225578063f2fde38b14610220578063ff3a52d41461021b5763ff5c83a41461021657600080fd5b6132f6565b612f10565b612e7f565b612dac565b612d86565b612cac565b612b98565b612b62565b612a88565b6129af565b612993565b6128bc565b612886565b612816565b6125bc565b612498565b6120e9565b6120b9565b611fee565b611fd2565b611f6f565b611f46565b611ed7565b611ea8565b611dce565b611c96565b611c38565b611b57565b6119ef565b61174f565b611626565b6115e8565b611528565b6114a2565b611189565b6110b8565b610e96565b610dc0565b610c1a565b610b47565b61096c565b610700565b610603565b610521565b610477565b61036b565b6001600160a01b0381160361030d57565b600080fd5b6101443590610320826102fc565b565b6101643590610320826102fc565b3590610320826102fc565b9181601f8401121561030d578235916001600160401b03831161030d576020808501946060850201011161030d57565b608036600319011261030d57600435610383816102fc565b60243561038f816102fc565b60443561039b816102fc565b6064356001600160401b03811161030d57836103bc8492369060040161033b565b90936103c661461d565b6103ce6154a6565b60408051630a6ce31360e01b6020808301919091526001600160a01b03958616602483015295851660448201529390911660648401526080608484015260a4830182905260c48301949293600091905b83831061044e576104418661043c818a03601f198101835282611405565b615439565b5061044c6001606555565b005b84358752848101358782015284820135878301526060968701969094019360019092019161041e565b3461030d5761018036600319011261030d5761044c600435610498816102fc565b6024356104a4816102fc565b6044356104b0816102fc565b6064356104bc816102fc565b6084356104c8816102fc565b60a4356104d4816102fc565b60c435906104e1826102fc565b60e435926104ee846102fc565b61010435946104fc866102fc565b610124359661050a886102fc565b610512610312565b9861051b610322565b9a613961565b3461030d57602036600319011261030d5760043561053e816102fc565b610546613367565b61054f816155b3565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d5760405163ed56be5b60e01b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe576105e5575b50734d41524b4554504c4143455f53455454494e475360601b600080516020615b21833981519152600080a3005b806105f26105f892611314565b8061151d565b386105b7565b613535565b3461030d57602036600319011261030d57600435610620816102fc565b610628613367565b610631816155f2565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d5760405163143df10960e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe576106c1575b506d524f59414c54595f454e47494e4560901b600080516020615b21833981519152600080a3005b806105f26106ce92611314565b38610699565b606090600319011261030d576004356106ec816102fc565b90602435906044356106fd816102fc565b90565b3461030d576020610762610713366106d4565b6001600160a01b0392831660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f86526040808220938252928652828120919093168352602052902090565b54604051908152f35b9181601f8401121561030d578235916001600160401b03831161030d576020808501948460051b01011161030d57565b9060068210156107a85752565b634e487b7160e01b600052602160045260246000fd5b60005b8381106107d15750506000910152565b81810151838201526020016107c1565b906020916107fa815180928185528580860191016107be565b601f01601f1916010190565b9060209182815260c09283820191835193845183830152828501516040908184015283818701516060978891828701520151926080938486015201519660a0908180860152885180975260e0918286019487848a60051b8901019b01996000975b8a891061087d5750505050505050505050505090565b909192939495969798999a9b8a806001928f60df19868303018d525190815181526108b0838301518483019060ff169052565b818c01516001600160a01b0316818d01528187015181880152878201516001600160a01b031688820152818901516001600160a01b0316818a0152818a0151818b01528a8201518b8201526101008083015115159082015261091b610120808401519083019061079b565b610140828101516001600160e01b0319169082015261094b61016080840151906101a080918501528301906107e1565b91610180809101519101529e0199019901979a999896959493929190610867565b60208060031936011261030d576004356001600160401b03811161030d5761099890369060040161076b565b90916040918251936109a98561132c565b8351906109b582611347565b600091828152828582015282868201528460609782858a80950152815201526109dc61461d565b6109e46154a6565b84519263160624f760e11b85850152806044850186602487015252606484019260648260051b8601019783825b848410610a5e57610a5a8a610a458b610a388f61043c8e809203601f198101835282611405565b8051810182019101614c63565b90610a506001606555565b5191829182610806565b0390f35b90919293949599606319888203018b52863560fe1984360301811215610b435789610b316001938d610ad5888596019160ff8335610a9b81613fcb565b168452610abb610aac878501610330565b6001600160a01b031685880152565b610ac6818401610330565b6001600160a01b031690840152565b610af2610ae38a8301610330565b6001600160a01b0316838b0152565b6080808201359083015260a0808201359083015260c08082013590830152610b1f60e09182810190614997565b919092610100809282015201916149cb565b9c919091019701959401929190610a11565b8280fd5b3461030d57602036600319011261030d57600435610b64816102fc565b610b6c613367565b610b758161562b565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d5760405163632c2a3160e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57610c07575b506f5354414b494e475f524547495354525960801b600080516020615b21833981519152600080a3005b806105f2610c1492611314565b38610bdd565b3461030d5760408060031936011261030d576004908135610c3a816102fc565b6024356001600160401b03811161030d57610c58903690850161076b565b929093610c6361461d565b610c6c84615a45565b60015b848110610d37575050506001600160a01b03811660005b838110610c975761044c6001606555565b80610ca6610d2c92868861475c565b356002610ce033610cc984610cba8a614182565b90600052602052604060002090565b9060018060a01b0316600052602052604060002090565b015415610d3157610d00610cfb33610cc984610cba8a614182565b61476c565b83337f46227bd805037a939224e05cd991a64cb464f4b5c5317858af210838e59ce390600080a4614081565b610c86565b50614081565b610d4281868861475c565b60001982019035828211610dbb57610d5b82888a61475c565b351015610d715750610d6c90614081565b610c6f565b9286610d8e8388610d87610db79698828661475c565b359361475c565b915163f48f718f60e01b8152938401948552602085015235604084015290918291606090910190565b0390fd5b61406b565b3461030d57602036600319011261030d57600435610ddd816102fc565b610de5613367565b610dee81615666565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d5760405163148282a760e21b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57610e83575b50724e4554574f524b5f42454e454649434941525960681b600080516020615b21833981519152600080a3005b806105f2610e9092611314565b38610e56565b3461030d57602036600319011261030d57600435610eb3816102fc565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169190610eec30841415613464565b610f09600080516020615b018339815191529382855416146134c5565b610f11613367565b60405190610f1e826113cf565b600082527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610f5857505061044c91506135ee565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181610faf575b50610f9c5760405162461bcd60e51b815280610db76004820161359f565b61044c93610faa9114613541565b61367e565b610fd191925060203d8111610fd8575b610fc98183611405565b810190613526565b9038610f7e565b503d610fbf565b90815180825260208080930193019160005b828110610fff575050505090565b83516001600160a01b031685529381019392810192600101610ff1565b90815180825260208080930193019160005b82811061103c575050505090565b835160ff168552938101939281019260010161102e565b906106fd916020815260018060a01b03825116602082015260208201516040820152604082015160608201526060820151608082015260a06110a3608084015160c08385015260e0840190610fdf565b9201519060c0601f198285030191015261101c565b3461030d57610a5a6111276110cc366106d4565b906040939284916111098351926110e284611362565b606060a0600095868152866020820152868882015286838201528260808201520152614182565b908252602052209060018060a01b0316600052602052604060002090565b9061117a600582519361113985611362565b80546001600160a01b03168552600181015460208601526002810154848601526003810154606086015261116f60048201614cf0565b608086015201614d48565b60a08301525191829182611053565b3461030d5760408060031936011261030d576004356111a7816102fc565b6024356001600160401b03811161030d576111c690369060040161033b565b9190926111d161461d565b6111d96154a6565b6111ea6111e633846159ae565b1590565b6112dd57916111f98185615525565b6001600160a01b0382169060005b8181106112185761044c6001606555565b806112276112d8928489614673565b356112328187615923565b847fa3f36b03a37e1948b5a4d52ddc1d9f62ab7d4e887e3a0a03e0c68d40f6075f3f89896112be86898c6112ab8661129a8b610cba6020958a6112848a8a8a61127c83838c614673565b013598614673565b013561128e611426565b958652878601526141bb565b906020600191805184550151910155565b6112b6838388614673565b013594614673565b8b519283520135602082015280604081015b0390a3614081565b611207565b51600162bed83560e01b0319815291508190610db790339060048401613f8a565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161132757604052565b6112fe565b604081019081106001600160401b0382111761132757604052565b608081019081106001600160401b0382111761132757604052565b60c081019081106001600160401b0382111761132757604052565b61014081019081106001600160401b0382111761132757604052565b60e081019081106001600160401b0382111761132757604052565b60a081019081106001600160401b0382111761132757604052565b602081019081106001600160401b0382111761132757604052565b606081019081106001600160401b0382111761132757604052565b90601f801991011681019081106001600160401b0382111761132757604052565b604051906103208261132c565b604051906103208261137d565b60405190610320826113b4565b6040519061032082611399565b6040519061032082611362565b604051906101a082018281106001600160401b0382111761132757604052565b6001600160401b03811161132757601f01601f191660200190565b604036600319011261030d576004356114ba816102fc565b602435906001600160401b03821161030d573660238301121561030d578160040135906114e682611487565b916114f46040519384611405565b808352366024828601011161030d57602081600092602461044c9701838701378401015261378d565b600091031261030d57565b3461030d57600036600319011261030d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361158257604051600080516020615b018339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b3461030d57604036600319011261030d5761160d600435611608816102fc565b6141f4565b6024356000526020526020604060002054604051908152f35b3461030d576020610762611639366106d4565b6001600160a01b0392831660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d51186526040808220938252928652828120919093168352602052902090565b81516001600160a01b031681526101408101929161032091906020818101516001600160a01b0316908301526040818101516001600160a01b0316908301526060818101516001600160a01b0316908301526080818101516001600160a01b03169083015260a0818101516001600160a01b03169083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120908101516001600160a01b0316910152565b3461030d5760008060031936011261199457610a5a906119886040516117748161137d565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152610100928084830152610120809201526119576117bc611433565b600080516020615ac1833981519152546001600160a01b0316815293600080516020615ae183398151915254611806906001600160a01b03165b6001600160a01b03166020870152565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d502546001600160a01b031660408601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d503546001600160a01b031660608601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d504546001600160a01b031660808601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d505546001600160a01b031660a08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d506546001600160a01b031660c08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d507546001600160a01b031660e08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d508546001600160a01b031690850152565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d509546001600160a01b031690830152565b60405191829182611688565b80fd5b604060031982011261030d576004356119af816102fc565b916024356001600160401b039283821161030d578060238301121561030d57816004013593841161030d5760248460061b8301011161030d576024019190565b3461030d576119fd36611997565b611a0892919261461d565b611a106154a6565b611a1d6111e633846159ae565b611ac657611a2b818461556c565b60005b818110611a3f5761044c6001606555565b80611a4e611ac1928487614683565b35611a598186615923565b602080611a6784878a614683565b0135611a7683610cba896141f4565b55611a82838689614683565b60405191013581526001600160a01b038616907f2f2a73977f9734e3b74f4efe888b44cdcca6903d8ab2b5be49c3969cc6cb1b629080602081016112d0565b611a2e565b604051600162bed83560e01b0319815280610db7338560048401613f8a565b906106fd916020815260018060a01b0380835116602083015260208301511660408201526040820151606082015260608201516080820152608082015160a082015260c0611b4260a084015160e083850152610100840190610fdf565b9201519060e0601f198285030191015261101c565b3461030d5760408060031936011261030d5780610a5a91600435611b7a816102fc565b611bb6825191611b8983611399565b606060c0600094858152856020820152858782015285838201528560808201528260a0820152015261422d565b60243582526020522090611c296006825193611bd185611399565b80546001600160a01b031685526001810154611bf5906001600160a01b03166117f6565b6002810154848601526003810154606086015260048101546080860152611c1e60058201614cf0565b60a086015201614d48565b60c08301525191829182611ae5565b3461030d5760008060031936011261199457611c52613367565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b60608060031936011261030d5760043590611cb0826102fc565b60243590611cbd826102fc565b6044356001600160401b03811161030d57611cdc90369060040161076b565b611ce792919261461d565b611cef6154a6565b60408051637777e6d760e01b6020808301919091526001600160a01b0397881660248301529690951660448601526064850183905260848501829052600582901b850160a490810196916000918701865b858410611d5e576104418961043c818d03601f198101835282611405565b909192939495969860a3198982030183528935607e198336030181121561030d5786611dbc6001938b611dab878596018035845285810135868501528a8101358b85015282810190614997565b9190926080809282015201916149cb565b9b019301940192919695949390611d40565b3461030d57602036600319011261030d57600435611deb816102fc565b611df3613367565b611dfc816156a4565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d576040516362cd1f1560e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57611e95575b507653504143455f4f50455241544f525f524547495354525960481b600080516020615b21833981519152600080a3005b806105f2611ea292611314565b38611e64565b3461030d57604036600319011261030d5761160d600435611ec8816102fc565b614266565b8015150361030d57565b3461030d57602036600319011261030d577fae6fb668d2dacbb6cc6e620b898a7166d67d7838c94ddeff2dbdf55995e9b1926020600435611f1781611ecd565b611f1f613367565b1515600080516020615b6183398151915260ff1981541660ff8316179055604051908152a1005b3461030d57600036600319011261030d576033546040516001600160a01b039091168152602090f35b3461030d57602036600319011261030d57600435611f8c816102fc565b611f94613367565b611f9d816157b8565b611fa6816133bf565b6001600160a01b03166914d1551513115351539560b21b600080516020615b21833981519152600080a3005b3461030d57600036600319011261030d57602060405160328152f35b3461030d57602036600319011261030d5760043561200b816102fc565b612013613367565b61201c816156e6565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d57604051631d1d389760e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe576120a6575b50675041594d454e545360c01b600080516020615b21833981519152600080a3005b806105f26120b392611314565b38612084565b3461030d57600036600319011261030d57602060ff600080516020615b6183398151915254166040519015158152f35b60c036600319011261030d576004803590612103826102fc565b6024359160443591612114836102fc565b606435936084359160a4359461212861461d565b6121306154a6565b612139856157da565b73__$11854c5905aa23948096e0e4d7059bb9de$__92833b1561030d57604094855198635e157ccf60e11b8a526000998a8180612178888a8301613fa4565b03818a5af480156105fe57612485575b508015612475578115612465578815158061245b575b61243a576121ac82826142d8565b600080516020615ae1833981519152549098906121d9906001600160a01b03165b6001600160a01b031690565b9860208951809b6361fe24a960e11b825281806121fd868d83019190602083019252565b03915afa998a156105fe578c9a612416575b508961221a916147dc565b988b883b156119945789516338fa83e760e01b8152600080516020615ac18339815191528982019081526001600160a01b0389166020820152604081019c909c529a8b90819060600103818b5af49182156105fe578c9a7ec827db726736dd1c3f5c4643456d97cc22d1613afeae6f8576124e65e8e1bc93612403575b506123976122ca6122c589610cc96122b28b610cba8861429f565b3360009081526020919091526040902090565b6147e9565b9c6123598c886122d8611440565b6001600160a01b038d168152918960208401528201528560608201528260808201526123108b610cc98c610cc93391610cba8b61429f565b815181546001600160a01b0319166001600160a01b0391909116178155906004906080906020810151600185015560408101516002850155606081015160038501550151910155565b8b516001600160a01b038a811682526020820197909752604081019790975260608701939093526080860192909252909216923392819060a0820190565b0390a4602086015193606081880151970151843b156123ff576123cf915197889687958695634c4c261960e01b87523391870161482e565b03915af480156105fe576123ec575b506123e96001606555565b80f35b806105f26123f992611314565b386123de565b8680fd5b806105f261241092611314565b38612297565b61221a919a506124339060203d8111610fd857610fc98183611405565b999061220f565b8651633312a4fd60e21b81528086018a815242602082015281906040010390fd5b504289111561219e565b865163c6b949a960e01b81528590fd5b865163473ae14d60e01b81528590fd5b806105f261249292611314565b38612188565b3461030d5761010036600319011261030d576004356124b6816102fc565b604435906124c3826102fc565b6064356124cf816102fc565b6001600160401b039260c43584811161030d576124f090369060040161076b565b9160e43595861161030d5761250c61044c96369060040161076b565b95909460a4359260843592602435906149ef565b9060a060031983011261030d57600435612539816102fc565b91602435612546816102fc565b91604435916001600160401b039081841161030d578060238501121561030d5783600401359382851161030d578160248660071b8301011161030d57602401939260643583811161030d578261259e9160040161076b565b9390939260843591821161030d576125b89160040161076b565b9091565b3461030d576125ca36612520565b969492939091956125d961461d565b6125e16154a6565b6125ee6111e633886159ae565b6127f7576125fc82856154d1565b73__$11854c5905aa23948096e0e4d7059bb9de$__97883b1561030d57604093845199635e157ccf60e11b8b5260009a8b818061263c8860048301613fa4565b0381855af480156105fe576127e4575b508a813b15611994578284928c8b6126798b51968795869485946376fb859760e01b865260048601613fd6565b03915af480156105fe576127d1575b50895b84811061269d578a6123e96001606555565b8888888888888f888a916126b28a86896140a6565b35976126be898b615923565b8a602087898b84846126d18286856140a6565b0135936126dd926140a6565b0135898c60609586926126ef926140a6565b0135906126fa61144d565b338152926001600160a01b038b1684860152838d01528483015260808201526127243686866140d2565b60a08201528b8d612736368a8a61412a565b60c08401526127449061422d565b6000918252602052604090209061275a9161447b565b6127658d898c6140a6565b0135988c89612775828b856140a6565b013598612781926140a6565b01359651968796339b600160a01b60019003169961279f97896145d7565b037f4c048dfd080dcfa2cccc41ef603e5f0ed6602ca215a41581d653aadf841a560b91a46127cc90614081565b61268b565b806105f26127de92611314565b38612688565b806105f26127f192611314565b3861264c565b604051600162bed83560e01b0319815280610db7338960048401613f8a565b3461030d5760408060031936011261030d57612850600435612837816102fc565b6000602084516128468161132c565b82815201526141bb565b6024356000526020528060002081516128688161132c565b60206001835493848452015491019081528251918252516020820152f35b3461030d57600036600319011261030d57600080516020615b81833981519152546040516001600160a01b039091168152602090f35b3461030d576128ca36611997565b6128d592919261461d565b6128dd6154a6565b6128ea6111e633846159ae565b611ac6576128f8818461556c565b60005b81811061290c5761044c6001606555565b8061291b61298e928487614683565b356129268186615923565b60208061293484878a614683565b013561294383610cba89614266565b5561294f838689614683565b60405191013581526001600160a01b038616907feead0384c6f48c02c0099b2433359d43617492f06d8e3a59cbe786b9970f7e619080602081016112d0565b6128fb565b3461030d57600036600319011261030d576020604051604b8152f35b3461030d57602036600319011261030d576004356129cc816102fc565b6129d4613367565b6129dd81615796565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d576040516328b80cf560e21b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57612a75575b507522a92199182fa0a8282927ab20a62fa6a0a720a3a2a960511b600080516020615b21833981519152600080a3005b806105f2612a8292611314565b38612a45565b3461030d57602036600319011261030d57600435612aa5816102fc565b612aad613367565b612ab681615796565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d57604051631f1afd0d60e01b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57612b4f575b507622a9219b9918afa0a8282927ab20a62fa6a0a720a3a2a960491b600080516020615b21833981519152600080a3005b806105f2612b5c92611314565b38612b1e565b3461030d57600036600319011261030d57600080516020615b41833981519152546040516001600160a01b039091168152602090f35b3461030d57608036600319011261030d57610a5a612c0c612c2c600435612bbe816102fc565b610cc9604435612bcd816102fc565b60643592612bda846102fc565b608060409687928351612bec816113b4565b60009381858093528260208201528287820152826060820152015261429f565b6024358252602052209060018060a01b0316600052602052604060002090565b906004815192612c3b846113b4565b60018060a01b038154168452600181015460208501526002810154838501526003810154606085015201546080830152519182918291909160808060a083019460018060a01b0381511684526020810151602085015260408101516040850152606081015160608501520151910152565b3461030d57602036600319011261030d57600435612cc9816102fc565b612cd1613367565b612cda81615719565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d57604051632867932b60e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57612d73575b5076415050524f5645445f544f4b454e5f524547495354525960481b600080516020615b21833981519152600080a3005b806105f2612d8092611314565b38612d42565b3461030d57612da5612d97366106d4565b91612da061461d565b614874565b6001606555005b3461030d57602036600319011261030d57600435612dc9816102fc565b612dd1613367565b612dda8161575b565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561030d57604051632d8b49e160e11b8152600080516020615ac183398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105fe57612e6c575b506f5354414b494e475f53455454494e475360801b600080516020615b21833981519152600080a3005b806105f2612e7992611314565b38612e42565b3461030d57602036600319011261030d57600435612e9c816102fc565b612ea4613367565b6001600160a01b03811615612ebc5761044c9061341b565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461030d57612f1e36612520565b90612f2e9792969395949761461d565b612f366154a6565b612f4088866154d1565b73__$11854c5905aa23948096e0e4d7059bb9de$__3b1561030d57604051635e157ccf60e11b815260008180612f798860048301613fa4565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af480156105fe576132e3575b5073__$11854c5905aa23948096e0e4d7059bb9de$__3b1561030d576040516376fb859760e01b815260008180612fda86868d8d60048601613fd6565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af480156105fe576132d0575b50613008836157da565b600080516020615b818339815191525461304c90602090613031906001600160a01b03166121cd565b6040518093819263e985e9c560e01b83523360048401613f8a565b03816001600160a01b0388165afa9081156105fe576000916132a1575b50156132855760005b8881106130835761044c6001606555565b61308e818a886140a6565b35868a60606130bc8560406130b3828660206130ab83838c6140a6565b0135986140a6565b0135938c6140a6565b013582156132735781156132615780151580613257575b61323757604051627eeac760e11b8152336004820152602481018590526020816044816001600160a01b038d165afa9081156105fe57600091613218575b508281106131db57507fe4cf997ce4def583f8220b51e6c89b5dbf6eeded5de4d1d78884a25d2bf46d5d8392896131ce8f8f8c918f97918d926131b78a6131d69f9e9d8e6131b29161317361316461145a565b6001600160a01b039095168552565b60208401528b604084015284606084015261318f3688886140d2565b608084015261319f368a8a61412a565b60a0840152610cc93391610cba8d614182565b6146b3565b60405197889760018060a01b03169b339b896145d7565b0390a4614081565b613072565b604051636906ef1760e11b81523360048201526001600160a01b038a1660248201526044810186905260648101849052608481019190915260a490fd5b613231915060203d602011610fd857610fc98183611405565b38613111565b6040516346a836ff60e11b81526004810191909152426024820152604490fd5b50428111156130d3565b60405163c6b949a960e01b8152600490fd5b6040516331cc996d60e11b8152600490fd5b60405163d65b0d6960e01b815280610db7853360048401613f8a565b6132c3915060203d6020116132c9575b6132bb8183611405565b81019061469e565b38613069565b503d6132b1565b806105f26132dd92611314565b38612ffe565b806105f26132f092611314565b38612f9d565b3461030d57602036600319011261030d57600435613313816102fc565b61331b613367565b61332481615796565b6001600160a01b0316613336816133ed565b7722a92198989a9aafa0a8282927ab20a62fa6a0a720a3a2a960411b600080516020615b21833981519152600080a3005b6033546001600160a01b0316330361337b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600080516020615b4183398151915280546001600160a01b0319166001600160a01b03909216919091179055565b600080516020615b8183398151915280546001600160a01b0319166001600160a01b03909216919091179055565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b1561346b57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b156134cc57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b9081602091031261030d575190565b6040513d6000823e3d90fd5b1561354857565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b60809060208152602e60208201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960408201526d6f6e206973206e6f74205555505360901b60608201520190565b803b1561362357600080516020615b0183398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b90613688826135ee565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613732575b6136ca575050565b61372f91600080604051936136de856113ea565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020860152660819985a5b195960ca1b6040860152602081519101845af4613729613898565b916138c8565b50565b5060006136c2565b90613744826135ee565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613785576136ca575050565b5060016136c2565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692906137c630851415613464565b6137e3600080516020615b018339815191529482865416146134c5565b6137eb613367565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561382157505061032091506135ee565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181613878575b506138655760405162461bcd60e51b815280610db76004820161359f565b610320936138739114613541565b61373a565b61389191925060203d8111610fd857610fc98183611405565b9038613847565b3d156138c3573d906138a982611487565b916138b76040519384611405565b82523d6000602084013e565b606090565b9192901561392a57508151156138dc575090565b3b156138e55790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b82519091501561393d5750805190602001fd5b60405162461bcd60e51b815260206004820152908190610db79060248301906107e1565b99979593919a98969492909a6000549b60ff8d60081c1615809d819e613a89575b8115613a69575b5015613a0d576139af9b8d6139a6600160ff196000541617600055565b6139f457613d5f565b6139b557565b6139c561ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b613a0861010061ff00196000541617600055565b613d5f565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b15915081613a7b575b5038613989565b6001915060ff161438613a74565b600160ff8216109150613982565b5190610320826102fc565b908161014091031261030d57613ab6611433565b90613ac081613a97565b8252613ace60208201613a97565b6020830152613adf60408201613a97565b6040830152613af060608201613a97565b6060830152613b0160808201613a97565b6080830152613b1260a08201613a97565b60a0830152613b2360c08201613a97565b60c0830152613b3460e08201613a97565b60e0830152610100613b47818301613a97565b90830152613b59610120809201613a97565b9082015290565b8051600080516020615ac183398151915280546001600160a01b03199081166001600160a01b03938416179091556020830151600080516020615ae18339815191528054831691841691909117905560408301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5028054831691841691909117905560608301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5038054831691841691909117905560808301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5048054831691841691909117905560a08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5058054831691841691909117905560c08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5068054831691841691909117905560e08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d507805483169184169190911790556101008301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50880549092169083161790556101209091015161032091167f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50980546001600160a01b0319166001600160a01b03909216919091179055565b93959a9997919a98929498969096613d7685615666565b613d7f886155b3565b613d888c6156a4565b613d91866155f2565b613d9a876156e6565b613da38a615719565b613dac8161575b565b613db58261562b565b613dbe83615796565b613dc784615796565b613dd089615796565b613dd98b6157b8565b60405163ef8c824960e01b81526001600160a01b03958616600482015297851660248901529a841660448801529383166064870152938216608486015295811660a485015296871660c4840152861660e48301528516610104820152919093166101248201526101409283826101448173__$c98ca6a62396e5a7a1471db151198a1f31$__5af49384156105fe57613e9594613e9093613e8292600092613ead575b5050613b60565b6001600160a01b03166133ed565b6133bf565b613e9d613f3a565b613ea5613f6e565b610320613f5d565b613ecc9250803d10613ed3575b613ec48183611405565b810190613aa2565b3880613e7b565b503d613eba565b15613ee157565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b613f5460ff60005460081c16613f4f81613eda565b613eda565b6103203361341b565b61032060ff60005460081c16613eda565b613f8360ff60005460081c16613f4f81613eda565b6001606555565b6001600160a01b0391821681529116602082015260400190565b600080516020615ac183398151915281526001600160a01b03909116602082015260400190565b60ff81160361030d57565b909293918060408301604084525260608201939060005b81811061403e57505050808303602091820152818352918201929160005b828110614019575050505090565b90919293828060019260ff883561402f81613fcb565b1681520195019392910161400b565b909193946001908535614050816102fc565b60a083901b8390031681526020908101969501929101613fed565b634e487b7160e01b600052601160045260246000fd5b6000198114610dbb5760010190565b634e487b7160e01b600052603260045260246000fd5b91908110156140b65760071b0190565b614090565b6001600160401b0381116113275760051b60200190565b92916140dd826140bb565b916140eb6040519384611405565b829481845260208094019160051b810192831161030d57905b8282106141115750505050565b838091833561411f816102fc565b815201910190614104565b9291614135826140bb565b916141436040519384611405565b829481845260208094019160051b810192831161030d57905b8282106141695750505050565b838091833561417781613fcb565b81520191019061415c565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5126020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5106020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5136020526040902090565b81810292918115918404141715610dbb57565b8181106142f6575050565b600081556001016142eb565b90600160401b81116113275781549080835581811061432057505050565b61032092600052602060002091820191016142eb565b90600160401b811161132757815481835580821061435357505050565b61032092600052601f6020600020918180850160051c840194168061437f575b500160051c01906142eb565b600019908186019182549160200360031b1c16905538614373565b9080516001600160401b038111611327576143b58184614336565b6143c9602080930193600052602060002090565b908060051c9260005b8481106144455750601f19821690910390816143f0575b5050505050565b9390600094855b82811061440e5750505050015538808080806143e9565b909192958261443a600192846144258b5160ff1690565b919060ff809160031b9316831b921b19161790565b9701939291016143f7565b6000805b83811061445d5750848201556001016143d2565b9690836144726001928a614425865160ff1690565b92019701614449565b815181546001600160a01b0319166001600160a01b03918216178255909190602082810151600185810180549285166001600160a01b03166001600160a01b03199093169290921790915591604084015160028601556060840151600386015560808401516004860155600585019060a0850151928351936001600160401b03851161132757819061450d8686614302565b0192600052806000209160005b85811061453a575050505050505090600660c0610320930151910161439a565b845182168482015593820193860161451a565b91908082526020809201929160005b82811061456a575050505090565b909192938280600192873561457e816102fc565b848060a01b0316815201950191019291909261455c565b91908082526020809201929160005b8281106145b2575050505090565b90919293828060019260ff88356145c881613fcb565b168152019501939291016145a4565b9694926106fd98969261460f959260018060a01b0316895260208901526040880152606087015260c0608087015260c086019161454d565b9260a0818503910152614595565b60026065541461462e576002606555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b91908110156140b6576060020190565b91908110156140b65760061b0190565b519061032082611ecd565b9081602091031261030d57516106fd81611ecd565b815181546001600160a01b0319166001600160a01b039182161782559091906020808301519160019283860155604084015160028601556060840151600386015560048501906080850151928351936001600160401b03851161132757819061471c8686614302565b0192600052806000209160005b858110614749575050505050505090600560a0610320930151910161439a565b8451821684820155938201938601614729565b91908110156140b65760051b0190565b6005600091828155826001820155826002820155826003820155600481018054848255806147c2575b50500190815490808355816147a957505050565b60208161032094601f935220910160051c8101906142eb565b6147d591855260208520908101906142eb565b3880614795565b91908201809211610dbb57565b906040516147f6816113b4565b82546001600160a01b031681526001830154602082015260028301546040820152600383015460608201526004909201546080830152565b600080516020615ac183398151915281526001600160a01b039182166020820152911660408201526060810191909152608081019190915260a081019190915260c00190565b91909161488e6122c583610cc96122b287610cba8761429f565b60408101938451156143e9576148d06148b285610cc933610cc986610cba8a61429f565b60046000918281558260018201558260028201558260038201550155565b60208281018051875160609586018051604080516001600160a01b038c8116825297810195909552840192909252958201529394909391169033907fb00a321de530b83262da5c2b572508a21b98c8d189dba9939e0359e8c9fbfeac90608090a473__$11854c5905aa23948096e0e4d7059bb9de$__90519351915193813b1561030d5760009361497960405196879586948594634c4c261960e01b865233906004870161482e565b03915af480156105fe5761498a5750565b806105f261032092611314565b9035601e198236030181121561030d5701602081359101916001600160401b03821161030d578160051b3603831361030d57565b81835290916001600160fb1b03831161030d5760209260051b809284830137010190565b979396614a7b9561043c98614a68949893614a899c96614a0d61461d565b614a156154a6565b6040519c8d9b8c9363b8e6b50f60e01b6020860152604460018060a01b039586809516602482015201521660648c01521660848a015260a489015260c488015261010060e488015261012487019161454d565b8481036023190161010486015291614595565b03601f198101835282611405565b506103206001606555565b519061032082613fcb565b5190600682101561030d57565b51906001600160e01b03198216820361030d57565b81601f8201121561030d578051614ad781611487565b92614ae56040519485611405565b8184526020828401011161030d576106fd91602080850191016107be565b81601f8201121561030d57805190614b1a826140bb565b92604092614b2a84519586611405565b808552602093848087019260051b8501019383851161030d57858101925b858410614b59575050505050505090565b83516001600160401b039081811161030d578301916101a09283601f19828a03011261030d57614b87611467565b908a8101518252614b99878201614a94565b8b830152606094614bab868301613a97565b88840152608095868301519084015260a095614bc8878401613a97565b9084015260c095614bda878401613a97565b9084015260e095868301519084015261010095868301519084015261012095614c04878401614693565b9084015261014095614c17878401614a9f565b9084015261016095614c2a878401614aac565b90840152610180918281015195861161030d578c96614c4e8c898099850101614ac1565b90850152015190820152815201930192614b48565b9060208282031261030d5781516001600160401b039283821161030d5701908181039260a0841261030d57608060405194614c9d8661132c565b1261030d57604051614cae81611347565b835181526020840151602082015260408401516040820152606084015160608201528452608083015190811161030d57614ce89201614b03565b602082015290565b9060405191828154918282526020928383019160005283600020936000905b828210614d255750505061032092500383611405565b85546001600160a01b031684526001958601958895509381019390910190614d0f565b90604080518093805492614d6f614d63858560209181520190565b92600052602060002090565b9360005b81601f82011061518b57610320955492828210615175575b82821061515b575b828210615141575b828210615127575b82821061510d575b8282106150f3575b8282106150d9575b8282106150bf575b8282106150a8575b50818110615090575b818110615078575b818110615060575b818110615048575b818110615030575b818110615018575b818110615000575b818110614fe8575b818110614fd0575b818110614fb8575b818110614fa0575b818110614f88575b818110614f70575b818110614f58575b818110614f40575b818110614f28575b818110614f10575b818110614ef8575b818110614ee0575b818110614ec8575b818110614eb0575b818110614e98575b10614e8a575b500383611405565b60f81c815260200138614e82565b60f083901c60ff168452926001906020019301614e7c565b60e883901c60ff168452926001906020019301614e74565b60e083901c60ff168452926001906020019301614e6c565b60d883901c60ff168452926001906020019301614e64565b60d083901c60ff168452926001906020019301614e5c565b60c883901c60ff168452926001906020019301614e54565b60c083901c60ff168452926001906020019301614e4c565b60b883901c60ff168452926001906020019301614e44565b60b083901c60ff168452926001906020019301614e3c565b60a883901c60ff168452926001906020019301614e34565b60a083901c60ff168452926001906020019301614e2c565b609883901c60ff168452926001906020019301614e24565b609083901c60ff168452926001906020019301614e1c565b608883901c60ff168452926001906020019301614e14565b608083901c60ff168452926001906020019301614e0c565b607883901c60ff168452926001906020019301614e04565b607083901c60ff168452926001906020019301614dfc565b606883901c60ff168452926001906020019301614df4565b606083901c60ff168452926001906020019301614dec565b605883901c60ff168452926001906020019301614de4565b605083901c60ff168452926001906020019301614ddc565b604883901c60ff168452926001906020019301614dd4565b83901c60ff16845292600190602001930138614dcb565b603884901c60ff1685529093600190602001940190614dc3565b603084901c60ff1685529093600190602001940190614dbb565b602884901c60ff1685529093600190602001940190614db3565b602084811c60ff1686529194909160019101940190614dab565b601884901c60ff1685529093600190602001940190614da3565b601084901c60ff1685529093600190602001940190614d9b565b600884901c60ff1685529093600190602001940190614d93565b60ff841685529093600190602001940190614d8b565b919350916001610400602092615429885461541e60ff6151af8582851660ff169052565b6153f761525c6153a78d615357896153078e6151d48184018a8d60081c1660ff169052565b6151e78584018a8d60101c1660ff169052565b888b610200606095615202878201858560181c1660ff169052565b6152176080958585888501921c1660ff169052565b6152bd60a097615230898401878760281c1660ff169052565b61526d60c09b6152498d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b6152826101208401878760481c1660ff169052565b6152976101408401878760501c1660ff169052565b6152ac6101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b6152d26101a08201858560681c1660ff169052565b6152e76101c08201858560701c1660ff169052565b6152fc6101e08201858560781c1660ff169052565b01921c1660ff169052565b61531c6102208c01888b60881c1660ff169052565b6153316102408c01888b60901c1660ff169052565b6153466102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b61536c6102a08a01868960a81c1660ff169052565b6153816102c08a01868960b01c1660ff169052565b6153966102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b6153bc6103208801848760c81c1660ff169052565b6153d16103408801848760d01c1660ff169052565b6153e66103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b61540c6103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b0195019101918693919492614d73565b600080516020615b4183398151915254815160009283926020909101906001600160a01b03165af4615469613898565b90156154725790565b80511561548157602081519101fd5b604051637dd68d8560e01b815260206004820152908190610db79060248301906107e1565b60ff600080516020615b6183398151915254166154bf57565b60405163ab35696f60e01b8152600490fd5b6154da82615a45565b60015b8281106154e957505050565b600019810190808211610dbb5761551b6155076155209386866140a6565b356155138387876140a6565b359083615a87565b614081565b6154dd565b61552e82615a45565b60015b82811061553d57505050565b600019810190808211610dbb5761551b61555b615567938686614673565b35615513838787614673565b615531565b61557582615a45565b60015b82811061558457505050565b600019810190808211610dbb5761551b6155a26155ae938686614683565b35615513838787614683565b615578565b6001600160a01b0316156155c357565b60405163602d6df560e01b8152734d41524b4554504c4143455f53455454494e475360601b6004820152602490fd5b6001600160a01b03161561560257565b60405163602d6df560e01b81526d524f59414c54595f454e47494e4560901b6004820152602490fd5b6001600160a01b03161561563b57565b60405163602d6df560e01b81526f5354414b494e475f524547495354525960801b6004820152602490fd5b6001600160a01b03161561567657565b60405163602d6df560e01b8152724e4554574f524b5f42454e454649434941525960681b6004820152602490fd5b6001600160a01b0316156156b457565b60405163602d6df560e01b81527653504143455f4f50455241544f525f524547495354525960481b6004820152602490fd5b6001600160a01b0316156156f657565b60405163602d6df560e01b8152675041594d454e545360c01b6004820152602490fd5b6001600160a01b03161561572957565b60405163602d6df560e01b815276415050524f5645445f544f4b454e5f524547495354525960481b6004820152602490fd5b6001600160a01b03161561576b57565b60405163602d6df560e01b81526f5354414b494e475f53455454494e475360801b6004820152602490fd5b6001600160a01b0316156157a657565b60405163c49074af60e01b8152600490fd5b6001600160a01b0316156157c857565b604051634e04f1e560e01b8152600490fd5b803b15801561580d575b6157eb5750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b808352602482015260248152615836816113ea565b519084617530fa6000513d8261588a575b5081615880575b5080615870575b80615861575b156157e4565b5061586b816158f3565b61585b565b5061587a81615896565b15615855565b905015153861584e565b60201115915038615847565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b6024820152602481526158c6816113ea565b5191617530fa6000513d826158e7575b50816158e0575090565b9050151590565b602011159150386158d6565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b6024820152602481526158c6816113ea565b6040516001620b695760e21b03198152600481018390526020816024816001600160a01b0386165afa9081156105fe57600091615990575b5015615965575050565b604051632be7c7f360e01b81526001600160a01b039190911660048201526024810191909152604490fd5b6159a8915060203d8111610fd857610fc98183611405565b3861595b565b6000806040516020810190638da5cb5b60e01b8252600481526159d08161132c565b5190845afa906159de613898565b91158015615a3a575b615a18575060208180518101031261030d576020015190615a07826102fc565b6001600160a01b0391821691161490565b60405163915b8f1d60e01b81526001600160a01b039091166004820152602490fd5b5060208251106159e7565b8015615a7557604b8111615a565750565b6044906040519063f80a484560e01b82526004820152604b6024820152fd5b60405163c2e5347d60e01b8152600490fd5b909182811115615a9657505050565b60405163f48f718f60e01b8152600481019290925260248201929092526044810191909152606490fdfe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5005e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d501360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc376c367a1420063e9671cc85404673694901b9db2c20dc84b5acbf060f7ee37a5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50b5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5145e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50aa264697066735822122006d47f961c8a43f2754a8dddf33fb039c6a2b29a982ed3666039c0b0fe71cd0c64736f6c63430008120033","sourceMap":"1305:22469:72:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;:::i;:::-;2471:103:25;;;;:::i;:::-;1607:61:72;;:::i;:::-;1305:22469;;;-1:-1:-1;;;1305:22469:72;14051:150;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;14051:150;;1305:22469;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;14016:195;14051:150;;;;;;;;;;;;;:::i;:::-;14016:195;:::i;:::-;;2536:1:25;1787;2065:22;1787:1;1985:109;2536:1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;1786:2034;1305:22469;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;1786:2034;;:::i;1305:22469::-;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;18271:26:72;;;:::i;:::-;18308:60;:82;;;;;;1305:22469;;-1:-1:-1;;;18308:82:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;18308:82;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;18308:82;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;18405:78:72;1305:22469;18308:82;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;1305:22469::-;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;19005:20:72;;;:::i;:::-;19036:54;:70;;;;;;1305:22469;;-1:-1:-1;;;19036:70:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;19036:70;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;19036:70;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;19121:66:72;1305:22469;19036:70;;;;;;:::i;:::-;;;;1305:22469;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;16169:80;1305:22469;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;-1:-1:-1;1305:22469:72;;;16169:42;1305:22469;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;16169:80;1305:22469;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;-1:-1:-1;1305:22469:72;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14051:150;1305:22469;-1:-1:-1;;1305:22469:72;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:103:25;;:::i;:::-;1607:61:72;;:::i;:::-;1305:22469;;15197:40;;;;15174:72;;;;1305:22469;;;;15174:72;;;;1305:22469;;;;;;;;;;;;;;;;;;;;;;;15174:72;15128:162;15174:72;15152:95;15174:72;;;;;;14051:150;;15174:72;;;;;;:::i;15152:95::-;1305:22469;;15128:162;;;;;;;:::i;:::-;2536:1:25;;1787;2065:22;1787:1;1985:109;2536:1;1305:22469:72;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;20327:22:72;;;:::i;:::-;20360:56;:74;;;;;;1305:22469;;-1:-1:-1;;;20360:74:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;20360:74;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;20360:74;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;20449:70:72;1305:22469;20360:74;;;;;;:::i;:::-;;;;1305:22469;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;6154:16:74;;;:::i;:::-;6198:1;6201:20;;;;;;-1:-1:-1;;;;;;;;1305:22469:72;;;10359:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;10381:3:72;10418:12;;10381:3;10418:12;;;;:::i;:::-;1305:22469;10448:80;:71;10508:10;10448:59;:50;;;;:::i;:::-;1305:22469;;;;;;;;;;10448:59;1305:22469;;;;;;;;;;;;;;;;10448:71;:80;1305:22469;10448:85;10444:132;;10590:78;10597:71;10508:10;10597:59;:50;;;;:::i;:71::-;10590:78;:::i;:::-;10508:10;;10687:57;1305:22469;10687:57;;10381:3;:::i;:::-;10344:13;;10444:132;10553:8;10381:3;:::i;6223::74:-;6246:12;;;;;:::i;:::-;-1:-1:-1;;1305:22469:72;;;;;;;;;6262:16:74;;;;;:::i;:::-;1305:22469:72;-1:-1:-1;6246:32:74;6242:141;;6223:3;;;;:::i;:::-;6186:13;;6242:141;6337:16;;6355:12;6337:16;;;6305:63;6337:16;;;;;:::i;:::-;1305:22469:72;6355:12:74;;:::i;:::-;1305:22469:72;;-1:-1:-1;;;6305:63:74;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;6305:63:74;;;;1305:22469:72;;:::i;:::-;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;17909:25:72;;;:::i;:::-;17945:59;:80;;;;;;1305:22469;;-1:-1:-1;;;17945:80:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;17945:80;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;17945:80;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;18040:76:72;1305:22469;17945:80;;;;;;:::i;:::-;;;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1898:6:24;1305:22469:72;;;;1873:80:24;1889:4;1881:23;;;1873:80;:::i;:::-;1963:87;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;;;1971:30:24;1963:87;:::i;:::-;1303:62:17;;:::i;:::-;1305:22469:72;;;;;;:::i;:::-;-1:-1:-1;1305:22469:72;;971:66:21;;1305:22469:72;;971:66:21;;;3330:17;;;;;;:::i;3232:526::-;1305:22469:72;;;;;;;;971:66:21;;;;;;;3383:63;;1305:22469:72;;3383:63:21;;-1:-1:-1;;3383:63:21;;;3232:526;-1:-1:-1;3379:302:21;;1305:22469:72;;-1:-1:-1;;;3610:56:21;;1305:22469:72;3610:56:21;1305:22469:72;3610:56:21;;;:::i;3379:302::-;3737:9;3496:28;3488:82;3496:28;;3488:82;:::i;:::-;3737:9;:::i;3383:63::-;;;;;1305:22469:72;3383:63:21;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1305:22469:72;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14051:150;1305:22469;14051:150;;1305:22469;;;;;;;;:::i;:::-;;;;;16885:69;1305:22469;;;:::i;:::-;;;;;;;16885:50;1305:22469;;;;;;:::i;:::-;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;16885:50;:::i;:::-;1305:22469;;;;;;;;;;;;;;;;;;;;;;16885:69;1305:22469;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;1607:61:72;;:::i;:::-;5763:47;5764:46;5799:10;5764:46;;:::i;:::-;5763:47;;1305:22469;5763:47;5759:131;;5932:9;;;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;-1:-1:-1;5973:20:72;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;5995:3:72;6032:12;;5995:3;6032:12;;;;:::i;:::-;1305:22469;6107:7;;;;:::i;:::-;1305:22469;6318:96;1305:22469;;6388:12;1305:22469;;;;;6129:68;1305:22469;6129:59;1305:22469;6239:12;;6272;6239;;;;;;;;:::i;:::-;:17;1305:22469;6272:12;;:::i;:::-;:25;1305:22469;;;:::i;:::-;;;;6216:83;;;1305:22469;6129:59;:::i;:68::-;1305:22469;;;;;;1787:1:25;;1305:22469:72;;;;1787:1:25;1305:22469:72;;6369:12;;;;;:::i;:::-;:17;1305:22469;6388:12;;:::i;:::-;1305:22469;;;;;6388:25;1305:22469;;;;;;;;;6318:96;;;;5995:3;:::i;:::-;5958:13;;5759:131;1305:22469;-1:-1:-1;;;;;;5833:46:72;;1305:22469;-1:-1:-1;1305:22469:72;;5833:46;;5799:10;;1305:22469;5833:46;;;:::i;1305:22469::-;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;14051:150;;;1305:22469;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;:::o;:::-;-1:-1:-1;;;;;1305:22469:72;;;;14051:150;1305:22469;-1:-1:-1;;1305:22469:72;;;;:::o;:::-;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;3901:220:24;1305:22469:72;;;;;;;;;;3901:220:24;:::i;1305:22469:72:-;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1305:22469:72;;;;2333:6:24;-1:-1:-1;;;;;1305:22469:72;2324:4:24;2316:23;1305:22469:72;;;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;16380:52;1305:22469;;;;;:::i;:::-;16380:52;:::i;:::-;1305:22469;;-1:-1:-1;1305:22469:72;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;16625:78;1305:22469;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;-1:-1:-1;1305:22469:72;;;16625:40;1305:22469;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;;;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;-1:-1:-1;;;;;1305:22469:72;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;1607:61:72;;:::i;:::-;7322:47;7323:46;7358:10;7323:46;;:::i;7322:47::-;7318:131;;7486:9;;;;:::i;:::-;7524:1;7527:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;7549:3:72;7586:12;;7549:3;7586:12;;;;:::i;:::-;1305:22469;7661:7;;;;:::i;:::-;7747:18;:12;;;;;;:::i;:::-;:18;1305:22469;7683:61;:52;;;;:::i;:61::-;1787:1:25;7827:12:72;;;;;:::i;:::-;1305:22469;;7827:18;;1305:22469;;;-1:-1:-1;;;;;1305:22469:72;;;7784:62;;1305:22469;;;;7784:62;1305:22469;7549:3;7512:13;;7318:131;1305:22469;;-1:-1:-1;;;;;;7392:46:72;;1305:22469;7392:46;7358:10;1305:22469;;7392:46;;;:::i;1305:22469::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14051:150;1305:22469;14051:150;;1305:22469;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15469:57;1305:22469;;;;;;:::i;:::-;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15469:57;:::i;:::-;1305:22469;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1303:62:17;;:::i;:::-;2758:6;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;;;;;;;-1:-1:-1;;;;;1305:22469:72;2806:40:17;1305:22469:72;;2806:40:17;1305:22469:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;1607:61:72;;:::i;:::-;1305:22469;;;-1:-1:-1;;;1305:22469:72;13633:152;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;13633:152;;1305:22469;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;13598:197;13633:152;;;;;14051:150;;13633:152;;;;;;:::i;1305:22469::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;18644:29:72;;;:::i;:::-;18684:62;:86;;;;;;1305:22469;;-1:-1:-1;;;18684:86:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;18684:86;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;18684:86;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;18785:83:72;1305:22469;18684:86;;;;;;:::i;:::-;;;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;15920:54;1305:22469;;;;;:::i;:::-;15920:54;:::i;1305:22469::-;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1305:22469:72;;;;21964:32;1305:22469;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;1305:22469:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;;;;;;;;;;;;;;21964:32;1305:22469;;;;;;;-1:-1:-1;;1305:22469:72;;;;1513:6:17;1305:22469:72;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;21682:11:72;;;:::i;:::-;21704:46;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;-1:-1:-1;;;;;;;;;;;;;;;;21765:59:72;1305:22469;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;1091:2:74;1305:22469:72;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;19309:14:72;;;:::i;:::-;19334:49;:60;;;;;;1305:22469;;-1:-1:-1;;;19334:60:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;19334:60;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;19334:60;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;19409:55:72;1305:22469;19334:60;;;;;;:::i;:::-;;;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;;;-1:-1:-1;;;;;;;;;;;971:66:21;1305:22469:72;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;2471:103:25;;;:::i;:::-;1607:61:72;;:::i;:::-;11045:16;;;:::i;:::-;11134:40;:58;;;;;;1305:22469;;;;971:66:21;;;;11134:58:72;;-1:-1:-1;11134:58:72;;;;;;;;;;:::i;:::-;;;;;;;;;;;;1305:22469;11206:11;;;11202:48;;11264:14;;11260:49;;11323:20;;;:58;;;1305:22469;11319:152;;11503:18;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;;11556:58;;-1:-1:-1;;;;;1305:22469:72;;-1:-1:-1;;;;;1305:22469:72;;;11556:58;1305:22469;;;;971:66:21;;;;;11556:71:72;;;;;;;;;1305:22469;;;;;;;;11556:71;;;;;;;;;;;;;;1305:22469;11693:28;;;;;:::i;:::-;11637:85;;;;;;;1305:22469;;-1:-1:-1;;;11637:85:72;;-1:-1:-1;;;;;;;;;;;11637:85:72;;;1305:22469;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;11637:85;;;;;;;;;;;;12145:141;11637:85;;;1305:22469;11762:26;12145:141;1305:22469;11762:66;:26;:48;:36;:26;;;;:::i;:36::-;11799:10;1305:22469;;;;;;;;;;;;;;11762:66;1305:22469;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;11907:222;;1305:22469;11907:222;;1305:22469;11907:222;;1305:22469;11907:222;1305:22469;11907:222;;1305:22469;11907:222;1305:22469;11907:222;;1305:22469;11838:66;11799:10;11838:48;11799:10;11838:36;11799:10;11838:26;;;;:::i;:66::-;1698:18:74;;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;1787:1:25;1305:22469:72;;;;;;;1787:1:25;1305:22469:72;;;;;;;1787:1:25;1305:22469:72;;;;1787:1:25;1305:22469:72;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11799:10;;1305:22469;;;;;;;12145:141;;;;1305:22469;12425:19;;1305:22469;12462:22;1305:22469;12462:22;;;1305:22469;12502:37;;1305:22469;12297:256;;;;;;1305:22469;;971:66:21;;;;;;;;;;12297:256:72;;11799:10;12297:256;;;;:::i;:::-;;;;;;;;;;;1305:22469;2536:1:25;;1787;2065:22;1787:1;1985:109;2536:1;1305:22469:72;;12297:256;;;;;;:::i;:::-;;;;;1305:22469;;;11637:85;;;;;;:::i;:::-;;;;11556:71;11693:28;11556:71;;;;;1305:22469;11556:71;;;;;;;;;:::i;:::-;;;;;11319:152;1305:22469;;-1:-1:-1;;;11404:56:72;;;;;1305:22469;;;11444:15;1305:22469;;;;;;;;6305:63:74;;;11323:58:72;11366:15;;11347:34;;;11323:58;;11260:49;1305:22469;;-1:-1:-1;;;11287:22:72;;1305:22469;;11287:22;11202:48;1305:22469;;-1:-1:-1;;;11226:24:72;;1305:22469;;11226:24;11134:58;;;;;;:::i;:::-;;;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;14224:712;1305:22469;;;;;;:::i;:::-;;;;;;;;;;;;14224:712;;:::i;1305:22469::-;;;-1:-1:-1;;1305:22469:72;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;2471:103:25;;;;;;;;;:::i;:::-;1607:61:72;;:::i;:::-;4247:47;4248:46;4283:10;4248:46;;:::i;4247:47::-;4243:131;;4411:9;;;;:::i;:::-;4431:60;:78;;;;;;1305:22469;;;;971:66:21;;;;4431:78:72;;:34;:78;;;;;;1305:22469;4431:78;;;:::i;:::-;;;;;;;;;;;;1305:22469;4519:74;;;;;;;1305:22469;;;;;4519:74;1305:22469;;971:66:21;;;;;;;;;;4519:74:72;;1305:22469;4519:74;;;:::i;:::-;;;;;;;;;;;1305:22469;4609:13;;4624:20;;;;;;2536:1:25;;1787;2065:22;1787:1;1985:109;4646:3:72;4683:12;;;;;;;;;;;;;;;:::i;:::-;1305:22469;4758:7;;;;;:::i;:::-;4979:18;;:12;;;;;;;;;;:::i;:::-;:18;1305:22469;5026:12;;;;:::i;:::-;:22;1305:22469;5076:21;;;:12;;;;;;:::i;:::-;:21;1305:22469;;;;:::i;:::-;4283:10;1305:22469;;4283:10;-1:-1:-1;;;;;1305:22469:72;;4850:356;;;1305:22469;4850:356;;;1305:22469;4850:356;;;1305:22469;4850:356;;;1305:22469;;;;;;:::i;:::-;4850:356;;;1305:22469;;;;;;;;:::i;:::-;4850:356;;;1305:22469;4781:57;;;:::i;:::-;1305:22469;;;;;;;;;;;;;:::i;:::-;5386:12;;;;;:::i;:::-;:18;1305:22469;5422:12;;;;;;;;:::i;:::-;:22;1305:22469;5462:12;;;;:::i;:::-;:21;1305:22469;;;4283:10;;;;1305:22469;;;;;;;;5226:335;;;;;:::i;:::-;;;;;4646:3;;;:::i;:::-;4609:13;;4519:74;;;;;;:::i;:::-;;;;4431:78;;;;;;:::i;:::-;;;;4243:131;1305:22469;;-1:-1:-1;;;;;;4317:46:72;;1305:22469;4317:46;4283:10;1305:22469;;4317:46;;;:::i;1305:22469::-;;;;;;;;;;;;;15718:59;1305:22469;;;;;:::i;:::-;-1:-1:-1;1305:22469:72;;;;;;:::i;:::-;;;;;;15718:59;:::i;:::-;1305:22469;;-1:-1:-1;1305:22469:72;;;;-1:-1:-1;1305:22469:72;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;1607:61:72;;:::i;:::-;6605:47;6606:46;6641:10;6606:46;;:::i;6605:47::-;6601:131;;6769:9;;;;:::i;:::-;6807:1;6810:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;6832:3:72;6869:12;;6832:3;6869:12;;;;:::i;:::-;1305:22469;6944:7;;;;:::i;:::-;7032:18;:12;;;;;;:::i;:::-;:18;1305:22469;6966:63;:54;;;;:::i;:63::-;1787:1:25;7114:12:72;;;;;:::i;:::-;1305:22469;;7114:18;;1305:22469;;;-1:-1:-1;;;;;1305:22469:72;;;7069:64;;1305:22469;;;;7069:64;1305:22469;6832:3;6795:13;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;1039:2:74;1305:22469:72;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;20650:21:72;;;:::i;:::-;20682:61;:84;;;;;;1305:22469;;-1:-1:-1;;;20682:84:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;20682:84;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;20682:84;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;20781:81:72;1305:22469;20682:84;;;;;;:::i;:::-;;;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;20995:22:72;;;:::i;:::-;21028:62;:86;;;;;;1305:22469;;-1:-1:-1;;;21028:86:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;21028:86;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;21028:86;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;21129:83:72;1305:22469;21028:86;;;;;;:::i;:::-;;;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;17153:46;:82;1305:22469;;;;;:::i;:::-;17153:64;1305:22469;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;17153:46;:::i;:::-;1305:22469;;;;;;;;;;;;;;;;;;;;;;;17153:82;1305:22469;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;19625:29:72;;;:::i;:::-;19665:62;:86;;;;;;1305:22469;;-1:-1:-1;;;19665:86:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;19665:86;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;19665:86;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;19766:83:72;1305:22469;19665:86;;;;;;:::i;:::-;;;;1305:22469;;;;2536:1:25;1305:22469:72;;;:::i;:::-;2471:103:25;;;:::i;:::-;2536:1;:::i;:::-;1787;2065:22;1787:1;1305:22469:72;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;19992:22:72;;;:::i;:::-;20025:56;:74;;;;;;1305:22469;;-1:-1:-1;;;20025:74:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;20025:74;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;20025:74;;;;;;;;1305:22469;-1:-1:-1;;;;;;;;;;;;;;;;;20114:70:72;1305:22469;20025:74;;;;;;:::i;:::-;;;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;2402:22:17;1305:22469:72;;2496:8:17;;;:::i;1305:22469:72:-;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;;;;;;:::i;:::-;1607:61:72;;:::i;:::-;8174:9;;;;:::i;:::-;8194:60;:78;;;;1305:22469;;-1:-1:-1;;;8194:78:72;;:34;1305:22469;;8194:78;;1305:22469;8194:78;;;:::i;:::-;;:60;;:78;;;;;;;;1305:22469;8194:60;;8282:74;;;;1305:22469;;-1:-1:-1;;;8282:74:72;;8194:34;1305:22469;;8282:74;;;;;1305:22469;8282:74;;;:::i;:::-;;8194:60;;8282:74;;;;;;;;1305:22469;8391:16;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1305:22469:72;8479:91;;;;8516:53;;-1:-1:-1;;;;;1305:22469:72;;;8516:53;1305:22469;;971:66:21;;;;;;;8479:91:72;;8504:10;1305:22469;8479:91;;;:::i;:::-;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;8479:91;;;;;;;8194:34;8479:91;;;1305:22469;8478:92;;8474:182;;8194:34;8686:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;8708:3:72;8745:12;;;;;:::i;:::-;1305:22469;8795:12;;8906:27;:12;8795;1305:22469;8846:12;8795;;8479:91;8795:12;;;;;:::i;:::-;:18;1305:22469;8846:12;;:::i;:::-;:21;1305:22469;8906:12;;;:::i;:::-;:27;1305:22469;8952:10;;8948:46;;9012:13;;9008:48;;9074:19;;;:56;;;8708:3;9070:161;;1305:22469;;-1:-1:-1;;;9269:38:72;;8504:10;1305:22469;9269:38;;1305:22469;;;;;;;8479:91;1305:22469;;;-1:-1:-1;;;;;1305:22469:72;;9269:38;;;;;;;8194:34;9269:38;;;8708:3;9325:24;;;;9321:158;;1305:22469;9871:292;1305:22469;;;9871:292;1305:22469;;;;;;;;;;;8708:3;1305:22469;;;;9493:71;1305:22469;9567:284;1305:22469;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;;9567:284;8479:91;9567:284;;1305:22469;9567:284;1305:22469;9567:284;;1305:22469;9567:284;8906:27;9567:284;;1305:22469;;;;;;:::i;:::-;9567:284;;;1305:22469;;;;;;:::i;:::-;;9567:284;;1305:22469;9493:59;8504:10;9493:50;;;;:::i;:71::-;1305:22469;:::i;:::-;;;;;;;;;;;;8504:10;;9871:292;;;:::i;:::-;;;;8708:3;:::i;:::-;8671:13;;9321:158;1305:22469;;-1:-1:-1;;;9376:88:72;;8504:10;1305:22469;9376:88;;1305:22469;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;6305:63:74;9269:38:72;;;;8479:91;9269:38;8479:91;9269:38;;;;;;;:::i;:::-;;;;9070:161;1305:22469;;-1:-1:-1;;;9157:59:72;;1305:22469;9157:59;;1305:22469;;;;9200:15;1305:22469;;;;;;6305:63:74;9074:56:72;9115:15;;9097:33;;;9074:56;;9008:48;1305:22469;;-1:-1:-1;;;9034:22:72;;1305:22469;;9034:22;8948:46;1305:22469;;-1:-1:-1;;;8971:23:72;;1305:22469;;8971:23;8474:182;1305:22469;;-1:-1:-1;;;8593:52:72;;1305:22469;8593:52;1305:22469;8504:10;1305:22469;8593:52;;;:::i;8479:91::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;8282:74;;;;;;:::i;:::-;;;;8194:78;;;;;;:::i;:::-;;;;1305:22469;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;21347:23:72;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;21381:95;1305:22469;21381:95;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;21491:85:72;1305:22469;1599:130:17;1513:6;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;929:10:34;1662:23:17;1305:22469:72;;1599:130:17:o;1305:22469:72:-;;;;3610:56:21;;;1305:22469:72;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;:::o;2666:187:17:-;2758:6;1305:22469:72;;-1:-1:-1;;;;;1305:22469:72;;;-1:-1:-1;;;;;;1305:22469:72;;;;;;;;;;2806:40:17;-1:-1:-1;;2806:40:17;2666:187::o;1305:22469:72:-;;;;:::o;:::-;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;971:66:21;;;;;;;;;;;:::o;:::-;1305:22469:72;;971:66:21;;;;;;;;;;;:::o;:::-;1305:22469:72;;-1:-1:-1;;;971:66:21;;;;;;;;;;;1305:22469:72;971:66:21;1305:22469:72;;;971:66:21;-1:-1:-1;;;971:66:21;;;;;;;;;;;;;;;;;1305:22469:72;971:66:21;1305:22469:72;;;971:66:21;-1:-1:-1;;;971:66:21;;;;;;:::o;1699:281::-;1713:19:33;;:23;1305:22469:72;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;1699:281:21:o;1305:22469:72:-;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;2372:276:21;;2171:17;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;2204:27:21;-1:-1:-1;;2204:27:21;1305:22469:72;;2523:15:21;;;:28;;;2372:276;2519:123;;2372:276;;:::o;2519:123::-;7318:69:33;1305:22469:72;-1:-1:-1;1305:22469:72;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;7276:25:33;;;;;;;;;:::i;:::-;7318:69;;:::i;:::-;;2372:276:21:o;2523:28::-;;-1:-1:-1;2523:28:21;;2372:276;;2171:17;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;2204:27:21;;;;1305:22469:72;;2523:15:21;;;:28;;;2519:123;;2372:276;;:::o;2523:28::-;;1305:22469:72;2523:28:21;;1842:226:24;-1:-1:-1;;;;;1898:6:24;1305:22469:72;;;;1873:80:24;1889:4;1881:23;;;1873:80;:::i;:::-;1963:87;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;;;1971:30:24;1963:87;:::i;:::-;1303:62:17;;:::i;:::-;971:66:21;;1305:22469:72;;971:66:21;;;3330:17;;;;;;:::i;3232:526::-;3383:63;;1305:22469:72;;;;;;971:66:21;;;;;;;3383:63;;1305:22469:72;;3383:63:21;;;;;;;3232:526;-1:-1:-1;3379:302:21;;1305:22469:72;;-1:-1:-1;;;3610:56:21;;1305:22469:72;3610:56:21;3383:63;3610:56;;;:::i;3379:302::-;3737:9;3496:28;3488:82;3496:28;;3488:82;:::i;:::-;3737:9;:::i;3383:63::-;;;;;;;;;;;;;;;:::i;:::-;;;;;1305:22469:72;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1305:22469:72;;;;:::o;:::-;;;:::o;7682:628:33:-;;;;7886:418;;;1305:22469:72;;;7917:22:33;7913:286;;8212:17;;:::o;7913:286::-;1713:19;:23;1305:22469:72;;8212:17:33;:::o;1305:22469:72:-;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;7886:418:33;1305:22469:72;;;;-1:-1:-1;8991:21:33;:17;;9163:142;;;;;;;8987:379;1305:22469:72;;-1:-1:-1;;;9335:20:33;;1305:22469:72;9335:20:33;;;1305:22469:72;;;;;;;;;;;:::i;3246:506:23:-;;;;;;;;;;;;;3302:13;1305:22469:72;;;;;;;3301:14:23;3347:34;;;;;;3246:506;3346:108;;;;3246:506;1305:22469:72;;;;3636:1:23;3536:16;;;1305:22469:72;;;3302:13:23;1305:22469:72;;;3302:13:23;1305:22469:72;;3536:16:23;3562:65;;3636:1;:::i;:::-;3647:99;;3246:506::o;3647:99::-;3681:21;1305:22469:72;;3302:13:23;1305:22469:72;;3302:13:23;1305:22469:72;;3681:21:23;1305:22469:72;;3551:1:23;1305:22469:72;;3721:14:23;;1305:22469:72;;3721:14:23;3246:506::o;3562:65::-;3596:20;1305:22469:72;;;3302:13:23;1305:22469:72;;;3302:13:23;1305:22469:72;;3596:20:23;3636:1;:::i;1305:22469:72:-;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;3346:108:23;3426:4;1713:19:33;:23;;-1:-1:-1;1713:23:33;3387:66:23;;3346:108;;;;;3387:66;3452:1;1305:22469:72;;;;3436:17:23;3387:66;;;3347:34;3380:1;1305:22469:72;;;3365:16:23;;-1:-1:-1;3347:34:23;;1698:18:74;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;1698:18:74;;;;-1:-1:-1;;;;;;;;;;;1305:22469:72;;;;;;;;;;;;;1698:18:74;;;;;1305:22469:72;;;;;;;;;;;;;1698:18:74;;;;;1305:22469:72;;;;;;;;;;;;;1698:18:74;;;;;1305:22469:72;;;;;;;;;;;;;1698:18:74;;;;;1305:22469:72;;;;;;;;;;;;;1698:18:74;;;;;1305:22469:72;;;;;;;;;;;;;1698:18:74;;;;;1305:22469:72;;;;;;;;;;;;;1698:18:74;;;;;1305:22469:72;;;;;;;;;;;1698:18:74;;;;;;;1305:22469:72;1698:18:74;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;1786:2034;;;;;;;;;;;;;;;2324:25;;;:::i;:::-;2411:26;;;:::i;:::-;2501:29;;;:::i;:::-;2586:20;;;:::i;:::-;2657:14;;;:::i;:::-;2735:29;;;:::i;:::-;2822:22;;;:::i;:::-;2902;;;:::i;:::-;2960:21;;;:::i;:::-;3017:22;;;:::i;:::-;3075:23;;;:::i;:::-;3129:11;;;:::i;:::-;1305:22469;;-1:-1:-1;;;3231:366:72;;-1:-1:-1;;;;;1305:22469:72;;;3231:366;;;1305:22469;;;;1698:18:74;;;1305:22469:72;;;;1698:18:74;;;1305:22469:72;;;;1698:18:74;;;1305:22469:72;;;;1698:18:74;;;1305:22469:72;;;;1698:18:74;;;1305:22469:72;;;;1698:18:74;;;1305:22469:72;;;1698:18:74;;;1305:22469:72;;;1698:18:74;;;1305:22469:72;;;;;1698:18:74;;;1305:22469:72;3231:366;;;1305:22469;1698:18:74;1305:22469:72;3231:14;:366;;;;;;;3692:26;3231:366;3607:75;3231:366;1698:18:74;3231:366:72;-1:-1:-1;3231:366:72;;;1786:2034;1698:18:74;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;3607:75;:::i;:::-;3692:26;:::i;:::-;1003:95:17;;:::i;:::-;1868:111:25;;:::i;:::-;1042:67:24;;:::i;3231:366:72:-;;;;;;-1:-1:-1;3231:366:72;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1305:22469;;;;:::o;:::-;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;5328:125:23;5366:69;1305:22469:72;5374:13:23;1305:22469:72;;;;5366:69:23;;;:::i;:::-;;:::i;:::-;1195:12:17;929:10:34;1195:12:17;:::i;5328:125:23:-;5366:69;1305:22469:72;5374:13:23;1305:22469:72;;;;5366:69:23;:::i;5328:125::-;5366:69;1305:22469:72;5374:13:23;1305:22469:72;;;;5366:69:23;;;:::i;:::-;1787:1:25;2065:22;1787:1;5328:125:23:o;1305:22469:72:-;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1305:22469:72;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1305:22469:72;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;10448:32;1305:22469;;;;;;:::o;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;6129:41;1305:22469;;;;;;:::o;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;16380:34;1305:22469;;;;;;:::o;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;15469:39;1305:22469;;;;;;:::o;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;15920:36;1305:22469;;;;;;:::o;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;11762:8;1305:22469;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1305:22469:72;;-1:-1:-1;1305:22469:72;;;;;;;:::i;:::-;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1305:22469:72;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1305:22469:72;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1698:18:74;;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;1698:18:74;1305:22469:72;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;-1:-1:-1;;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;1787:1:25;1305:22469:72;;;;;;;1787:1:25;1305:22469:72;;;;;;;1787:1:25;1305:22469:72;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1305:22469:72;;-1:-1:-1;1305:22469:72;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;2580:287:25:-;1830:1;2712:7;1305:22469:72;2712:19:25;1830:1;;;2712:7;1787:1;2580:287::o;1830:1::-;1305:22469:72;;-1:-1:-1;;;1830:1:25;;;;;;;;;;;1305:22469:72;1830:1:25;1305:22469:72;;;1830:1:25;;;;1305:22469:72;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;1698:18:74;;1305:22469:72;;-1:-1:-1;;;;;;1305:22469:72;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;1787:1:25;1305:22469:72;;;;;;;1787:1:25;1305:22469:72;;;;;;;1787:1:25;1305:22469:72;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1305:22469:72;;-1:-1:-1;1305:22469:72;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;10356:1;1305:22469;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1305:22469:72;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12566:825::-;;;;1305:22469;12772:66;:26;:48;:36;:26;;;;:::i;1305:22469::-;12852:14;;;1305:22469;;;12852:19;12848:32;;12890:73;12897:66;12809:10;12897:48;12809:10;12897:36;:26;;;;:::i;:66::-;1305:22469;12870:1;1305:22469;;;;;;;;;;;;;;;;;;;;;;12890:73;13113:11;;;;1305:22469;;;;13166:29;;;;1305:22469;;12852:14;1305:22469;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;13166:29;;13113:11;;1305:22469;;;12809:10;;12979:226;;1305:22469;;12979:226;13216:48;1305:22469;;;;;;13216:168;;;;;;-1:-1:-1;1305:22469:72;13216:168;12852:14;1305:22469;971:66:21;;;;;;;;;;13216:168:72;;12809:10;13216:168;;;;;:::i;:::-;;;;;;;;;;;12566:825;:::o;13216:168::-;;;;;;:::i;1305:22469::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;:::o;2471:103:25:-;;;;1305:22469:72;2471:103:25;14589:330:72;2471:103:25;1305:22469:72;2471:103:25;;;14554:375:72;2471:103:25;;;;:::i;:::-;1607:61:72;;:::i;:::-;1305:22469;;14629:43;;;;;;;;14589:330;;;;1305:22469;;;;;;;;;;;14589:330;;;1305:22469;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1305:22469:72;;;;;;;:::i;:::-;14589:330;14051:150;;14589:330;;;;;;:::i;14554:375::-;;2536:1:25;1787;2065:22;1787:1;1985:109;1305:22469:72;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;;1305:22469:72;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;14051:150;;;;1305:22469;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;1698:18:74;1305:22469:72;;;1698:18:74;:::i;:::-;1305:22469:72;;;;;;;;;;;;;;;;1698:18:74;1305:22469:72;;;1698:18:74;:::i;:::-;1305:22469:72;;;;;;1698:18:74;1305:22469:72;;;1698:18:74;:::i;:::-;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;-1:-1:-1;1305:22469:72;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1305:22469:72;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1305:22469:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22009:415;-1:-1:-1;;;;;;;;;;;1305:22469:72;22141:56;;-1:-1:-1;;;;22141:56:72;;;;;-1:-1:-1;;;;;1305:22469:72;22141:56;;;;:::i;:::-;22211:8;;22207:190;;22009:415;:::o;22207:190::-;1305:22469;;22239:16;22235:63;;22141:56;22312:75;;;;;22235:63;1305:22469;;-1:-1:-1;;;22264:34:72;;22141:56;22264:34;;;1305:22469;;;;;;;;;;;:::i;22430:110::-;1305:22469;-1:-1:-1;;;;;;;;;;;971:66:21;1305:22469:72;22476:57;;22430:110::o;22476:57::-;1305:22469;;-1:-1:-1;;;22517:16:72;;;;;22546:300;22666:16;;;:::i;:::-;22710:1;22713:20;;;;;;22546:300;;;:::o;22735:3::-;-1:-1:-1;;1305:22469:72;;;;;;;;22808:20;22782:16;22735:3;22782:16;;;;:::i;:::-;1305:22469;22808:12;;;;;:::i;:::-;1305:22469;22808:20;;;:::i;:::-;22735:3;:::i;:::-;22698:13;;22852:310;22982:16;;;:::i;:::-;23026:1;23029:20;;;;;;22852:310;;;:::o;23051:3::-;-1:-1:-1;;1305:22469:72;;;;;;;;23124:20;23098:16;23051:3;23098:16;;;;:::i;:::-;1305:22469;23124:12;;;;;:::i;23051:3::-;23014:13;;23168:300;23288:16;;;:::i;:::-;23332:1;23335:20;;;;;;23168:300;;;:::o;23357:3::-;-1:-1:-1;;1305:22469:72;;;;;;;;23430:20;23404:16;23357:3;23404:16;;;;:::i;:::-;1305:22469;23430:12;;;;;:::i;23357:3::-;23320:13;;4608:177:74;-1:-1:-1;;;;;1305:22469:72;4708:22:74;4704:74;;4608:177::o;4704:74::-;1305:22469:72;;-1:-1:-1;;;4739:39:74;;-1:-1:-1;;;4739:39:74;;;1305:22469:72;;;4739:39:74;4608:177;-1:-1:-1;;;;;1305:22469:72;4708:22:74;4704:74;;4608:177::o;4704:74::-;1305:22469:72;;-1:-1:-1;;;4739:39:74;;-1:-1:-1;;;4739:39:74;;;1305:22469:72;;;4739:39:74;4608:177;-1:-1:-1;;;;;1305:22469:72;4708:22:74;4704:74;;4608:177::o;4704:74::-;1305:22469:72;;-1:-1:-1;;;4739:39:74;;-1:-1:-1;;;4739:39:74;;;1305:22469:72;;;4739:39:74;4608:177;-1:-1:-1;;;;;1305:22469:72;4708:22:74;4704:74;;4608:177::o;4704:74::-;1305:22469:72;;-1:-1:-1;;;4739:39:74;;-1:-1:-1;;;4739:39:74;;;1305:22469:72;;;4739:39:74;4608:177;-1:-1:-1;;;;;1305:22469:72;4708:22:74;4704:74;;4608:177::o;4704:74::-;1305:22469:72;;-1:-1:-1;;;4739:39:74;;-1:-1:-1;;;4739:39:74;;;1305:22469:72;;;4739:39:74;4608:177;-1:-1:-1;;;;;1305:22469:72;4708:22:74;4704:74;;4608:177::o;4704:74::-;1305:22469:72;;-1:-1:-1;;;4739:39:74;;-1:-1:-1;;;4739:39:74;;;1305:22469:72;;;4739:39:74;4608:177;-1:-1:-1;;;;;1305:22469:72;4708:22:74;4704:74;;4608:177::o;4704:74::-;1305:22469:72;;-1:-1:-1;;;4739:39:74;;-1:-1:-1;;;4739:39:74;;;1305:22469:72;;;4739:39:74;4608:177;-1:-1:-1;;;;;1305:22469:72;4708:22:74;4704:74;;4608:177::o;4704:74::-;1305:22469:72;;-1:-1:-1;;;4739:39:74;;-1:-1:-1;;;4739:39:74;;;1305:22469:72;;;4739:39:74;4791:163;-1:-1:-1;;;;;1305:22469:72;4879:30:74;4875:72;;4791:163::o;4875:72::-;1305:22469:72;;-1:-1:-1;;;4918:29:74;;;;;4960:143;-1:-1:-1;;;;;1305:22469:72;5038:25:74;5034:62;;4960:143::o;5034:62::-;1305:22469:72;;-1:-1:-1;;;5072:24:74;;;;;5109:321;5210:28;;:33;:131;;;;5109:321;5193:231;;5109:321;:::o;5193:231::-;1305:22469:72;;-1:-1:-1;;;5373:40:74;;-1:-1:-1;;;;;1305:22469:72;;;5373:40:74;;;1305:22469:72;;;5373:40:74;5210:131;1305:22469:72;4592:71:62;-1:-1:-1;1305:22469:72;;4592:71:62;;;1017:25;;;;4592:71;;;;;;1305:22469:72;4592:71:62;;;;;;:::i;:::-;4784:212;;;;;-1:-1:-1;4784:212:62;;5013:29;;;5210:131:74;5013:48:62;;;;5210:131:74;975:149:62;;;;5210:131:74;1543:81:62;;;5210:131:74;5263:78;5210:131;;1543:81:62;1570:54;;;;:::i;:::-;1543:81;;975:149;1060:64;;;;:::i;:::-;1059:65;975:149;;5013:48;5046:15;;;;5013:48;;;:29;4592:71;-1:-1:-1;5024:18:62;;-1:-1:-1;5013:29:62;;;4421:647;-1:-1:-1;4592:71:62;4421:647;1305:22469:72;;4592:71:62;;;1017:25;;;;4592:71;;1305:22469:72;;;4592:71:62;;;1305:22469:72;4592:71:62;;;;;;:::i;:::-;4784:212;;;;-1:-1:-1;4784:212:62;;5013:29;;;4421:647;5013:48;;;;5006:55;4421:647;:::o;5013:48::-;5046:15;;;;4421:647;:::o;5013:29::-;4592:71;-1:-1:-1;5024:18:62;;-1:-1:-1;5013:29:62;;;4421:647;-1:-1:-1;4592:71:62;4421:647;1305:22469:72;;4592:71:62;;;1017:25;;;;4592:71;;5314:26:74;;;4592:71:62;;;1305:22469:72;4592:71:62;;;;;;:::i;5436:248:74:-;1305:22469:72;;-1:-1:-1;;;;;;5540:58:74;;;;;1305:22469:72;;;5540:58:74;1305:22469:72;;;-1:-1:-1;;;;;1305:22469:72;;5540:58:74;;;;;;;-1:-1:-1;5540:58:74;;;5436:248;5540:63;;5536:142;;5436:248;;:::o;5536:142::-;1305:22469:72;;-1:-1:-1;;;5626:41:74;;-1:-1:-1;;;;;1305:22469:72;;;;5540:58:74;5626:41;;1305:22469:72;;;;;;;;;;6305:63:74;5540:58;;;;;;;;;;;;;;:::i;:::-;;;;5690:358;5863:34;1305:22469:72;;;5863:34:74;;;;;;;;;;;;;;;:::i;:::-;5835:63;;;;;;;;:::i;:::-;5912:8;;1305:22469:72;;5912:28:74;;5690:358;5908:77;;1305:22469:72;5863:34:74;1305:22469:72;;;6002:27:74;;1305:22469:72;;;;5863:34:74;6002:27;1305:22469:72;;;;;:::i;:::-;-1:-1:-1;;;;;1305:22469:72;;;;;6002:39:74;;5690:358::o;5908:77::-;1305:22469:72;;-1:-1:-1;;;5949:36:74;;-1:-1:-1;;;;;1305:22469:72;;;5863:34:74;5949:36;;1305:22469:72;5863:34:74;;5949:36;5912:28;1305:22469:72;5863:34:74;1305:22469:72;;5924:16:74;5912:28;;6405:202;6478:12;;6474:37;;1039:2;6525:24;;6521:79;;6405:202;:::o;6521:79::-;1305:22469:72;;;;6558:42:74;;;;;;;;;1305:22469:72;1039:2:74;1305:22469:72;;;;6558:42:74;6474:37;1305:22469:72;;-1:-1:-1;;;6499:12:74;;;;;6830:254;;;6952:28;;;;6948:130;;6830:254;;;:::o;6948:130::-;1305:22469:72;;-1:-1:-1;;;7003:64:74;;;;;1305:22469:72;;;;;;;;;;;;;;;;;;;;6305:63:74","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":8507,"length":20},{"start":9726,"length":20},{"start":12098,"length":20},{"start":12157,"length":20},{"start":12192,"length":20},{"start":12254,"length":20},{"start":18739,"length":20}]},"src/v2/utils/MarketConfigV2.sol":{"MarketConfigV2":[{"start":1361,"length":20},{"start":1587,"length":20},{"start":2935,"length":20},{"start":3568,"length":20},{"start":7678,"length":20},{"start":8222,"length":20},{"start":10719,"length":20},{"start":10936,"length":20},{"start":11484,"length":20},{"start":11740,"length":20},{"start":15947,"length":20}]}},"immutableReferences":{"30045":[{"start":3773,"length":32},{"start":5435,"length":32},{"start":14231,"length":32}]}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","MAX_CHECKOUT_SIZE()":"a3eaf4d9","acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":"b8e6b50f","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","cancelOffer(address,uint256,address)":"e92f94d1","cancelSalePrices(address,uint256[])":"2f79f335","checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":"2c0c49ee","getDirectSaleConfig(address,uint256)":"6e2f4d8b","getERC1155ApprovalManager()":"c7c83d17","getMarketConfig()":"614bd944","getOffer(address,uint256,address,address)":"e3409ce3","getSalePrice(address,uint256,address)":"369679a4","getSettlement()":"defad60c","getTokenAllowListConfig(address,uint256)":"bf3d90f8","getTokenMintLimit(address,uint256)":"8760251a","getTokenMintsPerAddress(address,uint256,address)":"28fbba03","getTokenTxLimit(address,uint256)":"552f791d","getTokenTxsPerAddress(address,uint256,address)":"5a501f8f","initialize(address,address,address,address,address,address,address,address,address,address,address,address)":"0b800f48","isPaused()":"b187bd26","makeOffer(address,uint256,address,uint256,uint256,uint256)":"b38df71f","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7","owner()":"8da5cb5b","prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"be542141","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","setApprovedTokenRegistry(address)":"e4e87e3b","setContractPaused(bool)":"882796f1","setERC1155ApprovalManager(address)":"ff5c83a4","setERC20ApprovalManager(address)":"d7a9fb7c","setERC721ApprovalManager(address)":"d80b23e3","setMarketplaceSettings(address)":"176ab440","setNetworkBeneficiary(address)":"3492e5a8","setPayments(address)":"af231a58","setRoyaltyEngine(address)":"21ede032","setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"ff3a52d4","setSettlement(address)":"8f4e6f37","setSpaceOperatorRegistry(address)":"7f358230","setStakingRegistry(address)":"2c740844","setStakingSettings(address)":"f1035744","setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":"373a9412","setTokenMintLimits(address,(uint256,uint256)[])":"c7ec1b98","setTokenTxLimits(address,(uint256,uint256)[])":"6442950e","transferOwnership(address)":"f2fde38b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectSettlementCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SettlementCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"SettlementDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"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\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"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\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CHECKOUT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"acceptOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"cancelOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"cancelSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem[]\",\"name\":\"_items\",\"type\":\"tuple[]\"}],\"name\":\"checkout\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutSummary\",\"name\":\"summary\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]\",\"name\":\"items\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutExecution\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDirectSaleConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.DirectSaleConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC1155ApprovalManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"contract IPayments\",\"name\":\"payments\",\"type\":\"address\"},{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IStakingSettings\",\"name\":\"stakingSettings\",\"type\":\"address\"},{\"internalType\":\"contract IRareStakingRegistry\",\"name\":\"stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IERC20ApprovalManager\",\"name\":\"erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC721ApprovalManager\",\"name\":\"erc721ApprovalManager\",\"type\":\"address\"}],\"internalType\":\"struct MarketConfigV2.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"getOffer\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.Offer\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"getSalePrice\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.SalePrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSettlement\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenAllowListConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.AllowListConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenMintLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTokenMintsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenTxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTokenTxsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_settlement\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"makeOffer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"prepareMintDirectSales\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"}],\"name\":\"setApprovedTokenRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isPaused\",\"type\":\"bool\"}],\"name\":\"setContractPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC1155ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC20ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC721ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"}],\"name\":\"setMarketplaceSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"}],\"name\":\"setNetworkBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"}],\"name\":\"setPayments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"}],\"name\":\"setRoyaltyEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"setSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_settlement\",\"type\":\"address\"}],\"name\":\"setSettlement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"}],\"name\":\"setSpaceOperatorRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"}],\"name\":\"setStakingRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"}],\"name\":\"setStakingSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenAllowListConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenMintLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenTxLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"The marketplace is the UUPS proxy-facing contract and owns all marketplace storage. Settlement execution is routed through delegatecall so settlement reads and writes the marketplace proxy's ERC-7201 storage namespace.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"cancelSalePrices(address,uint256[])\":{\"details\":\"Token ids must be strictly ascending.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Best-effort execution returns one result per item. All-skipped checkouts complete successfully.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"RareERC1155Marketplace\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Accepts all or part of an ERC1155 token offer through the settlement module.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings through the settlement module.\"},\"cancelOffer(address,uint256,address)\":{\"notice\":\"Cancels the caller's offer for one token id and currency.\"},\"cancelSalePrices(address,uint256[])\":{\"notice\":\"Cancels the caller's secondary listings for token ids.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases.\"},\"initialize(address,address,address,address,address,address,address,address,address,address,address,address)\":{\"notice\":\"Initializes the UUPS marketplace proxy.\"},\"makeOffer(address,uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Creates or replaces a token-level ERC1155 offer.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales through the settlement module.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Configures or replaces primary mint sales for token ids.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Creates or replaces secondary fixed-price listings.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"notice\":\"Sets token id allowlist configurations.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets max quantity each address may mint for token ids while a limit is enabled.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets max mint transactions each address may submit for token ids while a limit is enabled.\"}},\"notice\":\"ERC1155 marketplace state, escrow, configuration, and settlement entrypoint.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155Marketplace.sol\":\"RareERC1155Marketplace\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol\":{\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0\",\"dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x584ebdf9c1118a7c773f98788e3f3ede01982bdf8932aa06f5acc7d54876e161\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9826c7edf276ff48b99ee217358393097c30448a71d345d287c2f6961bb1f159\",\"dweb:/ipfs/QmYXBTY9wDvffGU47yMRFJ1NFyKwpbj94VHzRzhsm6R7Gz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xb607cb94c27e89750f5ae2ccebcb94e654e926f6125f4fd4c6262c89875118ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33e8f8d863c6943ea046fcf4972b4e815c04ab06bad195dba1d93f8ebeb8420d\",\"dweb:/ipfs/QmTQzxQTuuzPDk3eqVmYy7hv2RCXM1yt1NtubXpRbzYjaj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025\",\"dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685\",\"dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155Marketplace.sol\":{\"keccak256\":\"0x32be29c47c7b138de86eb1886c38763ebecda9949379e10720285f1a15cca6a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fea0ed0ae4cade3cd51f53d72024391341260201f1d8d32dd281eeeb26b9585\",\"dweb:/ipfs/QmVmFghURASWCVn6PKZhCR4XxLVVAjx8nKmZ4q2guETeCv\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350\",\"dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K\"]},\"src/marketplace/IRareERC1155Settlement.sol\":{\"keccak256\":\"0x7ba101acc638ecd2eb5c780e625d6d82d6d00e36aa392f7a60a131cbf25d9d1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33355c9a7d70f3e97c076c71344a088a8a00cf79f5b52f017508cc442903b06c\",\"dweb:/ipfs/QmYowpKw4Y9LJUCeQhSRaLf6LkCTKbwJcTX3pU8hjbaaqA\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155Marketplace.sol\":{\"keccak256\":\"0x9c18d33a545e584efe051d701e58df686f532d57eb51b133454e9dea23f20cd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82c9f919f87fe1958f1e1a28c03742727212fcbf4c45f8c7fbcffc248d3e3823\",\"dweb:/ipfs/QmQvubhoqgiMkjuvuAXHTi2UcASoz9BrTeX1ccEXbC4RVP\"]},\"src/marketplace/RareERC1155MarketplacePayments.sol\":{\"keccak256\":\"0x53d345e5b50ecbede9f57d71ea952279c61a3a68dbdc3e5437311d26af6385c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6456557338e5ad27b23a06dd75c8e91b024caf7002d57873c12b0419466feae\",\"dweb:/ipfs/QmYTenZhNjk4dMHbU25pphtUueaWQBvdVHU37pPFdj2h5v\"]},\"src/marketplace/RareERC1155MarketplaceStorage.sol\":{\"keccak256\":\"0xe7b315f4c7e8da495637acec91648113ad26cf6cf37a783632baaf81998e012e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f83d84dfbe0c43d476c137eb6c4b63ca88dff555c37123a8fc0e17884885cd5\",\"dweb:/ipfs/QmNT27NUUzmawaa8kpGXFepvBTiRiZtwdt3ozRFCbiEuPp\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e\",\"dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[],"type":"error","name":"DirectSettlementCallUnsupported"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[],"type":"error","name":"SettlementCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"SettlementDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CHECKOUT_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"acceptOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"cancelOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"cancelSalePrices"},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","name":"_items","type":"tuple[]","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"checkout","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","name":"","type":"tuple","components":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","name":"summary","type":"tuple","components":[{"internalType":"uint256","name":"filledCount","type":"uint256"},{"internalType":"uint256","name":"skippedCount","type":"uint256"},{"internalType":"uint256","name":"ethSpent","type":"uint256"},{"internalType":"uint256","name":"ethRefunded","type":"uint256"}]},{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","name":"items","type":"tuple[]","components":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bool","name":"filled","type":"bool"},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8"},{"internalType":"bytes4","name":"reason","type":"bytes4"},{"internalType":"bytes","name":"failureData","type":"bytes"},{"internalType":"uint256","name":"totalPaid","type":"uint256"}]}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDirectSaleConfig","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleConfig","name":"","type":"tuple","components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getERC1155ApprovalManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMarketConfig","outputs":[{"internalType":"struct MarketConfigV2.Config","name":"","type":"tuple","components":[{"internalType":"address","name":"networkBeneficiary","type":"address"},{"internalType":"contract IMarketplaceSettings","name":"marketplaceSettings","type":"address"},{"internalType":"contract ISpaceOperatorRegistry","name":"spaceOperatorRegistry","type":"address"},{"internalType":"contract IRoyaltyEngineV1","name":"royaltyEngine","type":"address"},{"internalType":"contract IPayments","name":"payments","type":"address"},{"internalType":"contract IApprovedTokenRegistry","name":"approvedTokenRegistry","type":"address"},{"internalType":"contract IStakingSettings","name":"stakingSettings","type":"address"},{"internalType":"contract IRareStakingRegistry","name":"stakingRegistry","type":"address"},{"internalType":"contract IERC20ApprovalManager","name":"erc20ApprovalManager","type":"address"},{"internalType":"contract IERC721ApprovalManager","name":"erc721ApprovalManager","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"stateMutability":"view","type":"function","name":"getOffer","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.Offer","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"stateMutability":"view","type":"function","name":"getSalePrice","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.SalePrice","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSettlement","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenAllowListConfig","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfig","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenTxsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"},{"internalType":"address","name":"_marketplaceSettings","type":"address"},{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"},{"internalType":"address","name":"_royaltyEngine","type":"address"},{"internalType":"address","name":"_payments","type":"address"},{"internalType":"address","name":"_approvedTokenRegistry","type":"address"},{"internalType":"address","name":"_stakingSettings","type":"address"},{"internalType":"address","name":"_stakingRegistry","type":"address"},{"internalType":"address","name":"_erc20ApprovalManager","type":"address"},{"internalType":"address","name":"_erc721ApprovalManager","type":"address"},{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"},{"internalType":"address","name":"_settlement","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"stateMutability":"payable","type":"function","name":"makeOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"prepareMintDirectSales"},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"_approvedTokenRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setApprovedTokenRegistry"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setContractPaused"},{"inputs":[{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC1155ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc20ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC20ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc721ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC721ApprovalManager"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketplaceSettings"},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkBeneficiary"},{"inputs":[{"internalType":"address","name":"_payments","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPayments"},{"inputs":[{"internalType":"address","name":"_royaltyEngine","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyEngine"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"setSalePrices"},{"inputs":[{"internalType":"address","name":"_settlement","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSettlement"},{"inputs":[{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSpaceOperatorRegistry"},{"inputs":[{"internalType":"address","name":"_stakingRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingRegistry"},{"inputs":[{"internalType":"address","name":"_stakingSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingSettings"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenAllowListConfigs"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenMintLimits"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenTxLimits"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgradeTo"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"}],"devdoc":{"kind":"dev","methods":{"cancelSalePrices(address,uint256[])":{"details":"Token ids must be strictly ascending."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"details":"Best-effort execution returns one result per item. All-skipped checkouts complete successfully."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"owner()":{"details":"Returns the address of the current owner."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"details":"Request token ids must be strictly ascending."},"setTokenMintLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending."},"setTokenTxLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"notice":"Accepts all or part of an ERC1155 token offer through the settlement module."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings through the settlement module."},"cancelOffer(address,uint256,address)":{"notice":"Cancels the caller's offer for one token id and currency."},"cancelSalePrices(address,uint256[])":{"notice":"Cancels the caller's secondary listings for token ids."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"notice":"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases."},"initialize(address,address,address,address,address,address,address,address,address,address,address,address)":{"notice":"Initializes the UUPS marketplace proxy."},"makeOffer(address,uint256,address,uint256,uint256,uint256)":{"notice":"Creates or replaces a token-level ERC1155 offer."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales through the settlement module."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Configures or replaces primary mint sales for token ids."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Creates or replaces secondary fixed-price listings."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"notice":"Sets token id allowlist configurations."},"setTokenMintLimits(address,(uint256,uint256)[])":{"notice":"Sets max quantity each address may mint for token ids while a limit is enabled."},"setTokenTxLimits(address,(uint256,uint256)[])":{"notice":"Sets max mint transactions each address may submit for token ids while a limit is enabled."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155Marketplace.sol":"RareERC1155Marketplace"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol":{"keccak256":"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b","urls":["bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0","dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol":{"keccak256":"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f","urls":["bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053","dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"keccak256":"0x584ebdf9c1118a7c773f98788e3f3ede01982bdf8932aa06f5acc7d54876e161","urls":["bzz-raw://9826c7edf276ff48b99ee217358393097c30448a71d345d287c2f6961bb1f159","dweb:/ipfs/QmYXBTY9wDvffGU47yMRFJ1NFyKwpbj94VHzRzhsm6R7Gz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol":{"keccak256":"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908","urls":["bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1","dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xb607cb94c27e89750f5ae2ccebcb94e654e926f6125f4fd4c6262c89875118ad","urls":["bzz-raw://33e8f8d863c6943ea046fcf4972b4e815c04ab06bad195dba1d93f8ebeb8420d","dweb:/ipfs/QmTQzxQTuuzPDk3eqVmYy7hv2RCXM1yt1NtubXpRbzYjaj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0","urls":["bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025","dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol":{"keccak256":"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908","urls":["bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685","dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155Marketplace.sol":{"keccak256":"0x32be29c47c7b138de86eb1886c38763ebecda9949379e10720285f1a15cca6a8","urls":["bzz-raw://1fea0ed0ae4cade3cd51f53d72024391341260201f1d8d32dd281eeeb26b9585","dweb:/ipfs/QmVmFghURASWCVn6PKZhCR4XxLVVAjx8nKmZ4q2guETeCv"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9","urls":["bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350","dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K"],"license":"MIT"},"src/marketplace/IRareERC1155Settlement.sol":{"keccak256":"0x7ba101acc638ecd2eb5c780e625d6d82d6d00e36aa392f7a60a131cbf25d9d1b","urls":["bzz-raw://33355c9a7d70f3e97c076c71344a088a8a00cf79f5b52f017508cc442903b06c","dweb:/ipfs/QmYowpKw4Y9LJUCeQhSRaLf6LkCTKbwJcTX3pU8hjbaaqA"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155Marketplace.sol":{"keccak256":"0x9c18d33a545e584efe051d701e58df686f532d57eb51b133454e9dea23f20cd0","urls":["bzz-raw://82c9f919f87fe1958f1e1a28c03742727212fcbf4c45f8c7fbcffc248d3e3823","dweb:/ipfs/QmQvubhoqgiMkjuvuAXHTi2UcASoz9BrTeX1ccEXbC4RVP"],"license":"MIT"},"src/marketplace/RareERC1155MarketplacePayments.sol":{"keccak256":"0x53d345e5b50ecbede9f57d71ea952279c61a3a68dbdc3e5437311d26af6385c8","urls":["bzz-raw://c6456557338e5ad27b23a06dd75c8e91b024caf7002d57873c12b0419466feae","dweb:/ipfs/QmYTenZhNjk4dMHbU25pphtUueaWQBvdVHU37pPFdj2h5v"],"license":"MIT"},"src/marketplace/RareERC1155MarketplaceStorage.sol":{"keccak256":"0xe7b315f4c7e8da495637acec91648113ad26cf6cf37a783632baaf81998e012e","urls":["bzz-raw://4f83d84dfbe0c43d476c137eb6c4b63ca88dff555c37123a8fc0e17884885cd5","dweb:/ipfs/QmNT27NUUzmawaa8kpGXFepvBTiRiZtwdt3ozRFCbiEuPp"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052","urls":["bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e","dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":72} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_CHECKOUT_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"acceptOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"cancelMintDirectSales","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkout","inputs":[{"name":"_items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","components":[{"name":"summary","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","components":[{"name":"filledCount","type":"uint256","internalType":"uint256"},{"name":"skippedCount","type":"uint256","internalType":"uint256"},{"name":"ethSpent","type":"uint256","internalType":"uint256"},{"name":"ethRefunded","type":"uint256","internalType":"uint256"}]},{"name":"items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","components":[{"name":"itemIndex","type":"uint256","internalType":"uint256"},{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"filled","type":"bool","internalType":"bool"},{"name":"failureStage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","internalType":"bytes4"},{"name":"failureData","type":"bytes","internalType":"bytes"},{"name":"totalPaid","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"payable"},{"type":"function","name":"getCheckoutExecutionModule","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getDirectSaleConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleConfig","components":[{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getERC1155ApprovalManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getMarketConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct MarketConfigV2.Config","components":[{"name":"networkBeneficiary","type":"address","internalType":"address"},{"name":"marketplaceSettings","type":"address","internalType":"contract IMarketplaceSettings"},{"name":"spaceOperatorRegistry","type":"address","internalType":"contract ISpaceOperatorRegistry"},{"name":"royaltyEngine","type":"address","internalType":"contract IRoyaltyEngineV1"},{"name":"payments","type":"address","internalType":"contract IPayments"},{"name":"approvedTokenRegistry","type":"address","internalType":"contract IApprovedTokenRegistry"},{"name":"stakingSettings","type":"address","internalType":"contract IStakingSettings"},{"name":"stakingRegistry","type":"address","internalType":"contract IRareStakingRegistry"},{"name":"erc20ApprovalManager","type":"address","internalType":"contract IERC20ApprovalManager"},{"name":"erc721ApprovalManager","type":"address","internalType":"contract IERC721ApprovalManager"}]}],"stateMutability":"view"},{"type":"function","name":"getOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.Offer","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"initialQuantity","type":"uint256","internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","internalType":"uint256"},{"name":"marketplaceFeeTotal","type":"uint256","internalType":"uint256"},{"name":"stakingFeeRemaining","type":"uint256","internalType":"uint256"},{"name":"stakingFeeTotal","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.SalePrice","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenAllowListConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfig","components":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenMintsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTradeExecutionModule","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"},{"name":"_marketplaceSettings","type":"address","internalType":"address"},{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"},{"name":"_royaltyEngine","type":"address","internalType":"address"},{"name":"_payments","type":"address","internalType":"address"},{"name":"_approvedTokenRegistry","type":"address","internalType":"address"},{"name":"_stakingSettings","type":"address","internalType":"address"},{"name":"_stakingRegistry","type":"address","internalType":"address"},{"name":"_erc20ApprovalManager","type":"address","internalType":"address"},{"name":"_erc721ApprovalManager","type":"address","internalType":"address"},{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"},{"name":"_tradeExecutionModule","type":"address","internalType":"address"},{"name":"_checkoutExecutionModule","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"makeOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"prepareMintDirectSales","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovedTokenRegistry","inputs":[{"name":"_approvedTokenRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setCheckoutExecutionModule","inputs":[{"name":"_checkoutExecutionModule","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setContractPaused","inputs":[{"name":"_isPaused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC1155ApprovalManager","inputs":[{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20ApprovalManager","inputs":[{"name":"_erc20ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC721ApprovalManager","inputs":[{"name":"_erc721ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketplaceSettings","inputs":[{"name":"_marketplaceSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkBeneficiary","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPayments","inputs":[{"name":"_payments","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyEngine","inputs":[{"name":"_royaltyEngine","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpaceOperatorRegistry","inputs":[{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingRegistry","inputs":[{"name":"_stakingRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingSettings","inputs":[{"name":"_stakingSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenAllowListConfigs","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenMintLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenTxLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTradeExecutionModule","inputs":[{"name":"_tradeExecutionModule","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeTo","inputs":[{"name":"newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x60a08060405234620000e157306080526000549060ff8260081c166200008f575060ff8082160362000053575b6040516160df9081620000e78239608051818181610eaf015281816115520152613af90152f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a1386200002c565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80630a6ce31314610327578063176ab4401461032257806321ede0321461031d57806328fbba03146103185780632c0c49ee146103135780632c7408441461030e5780632f79f335146103095780632fdd983d146103045780633492e5a8146102ff5780633659cfe6146102fa578063369679a4146102f5578063373a9412146102f05780634f1ef286146102eb57806352d1902d146102e6578063552f791d146102e15780635a501f8f146102dc5780635e50c42e146102d7578063614bd944146102d257806363cf9cef146102cd5780636442950e146102c85780636e2f4d8b146102c3578063715018a6146102be5780637777e6d7146102b95780637f358230146102b45780638760251a146102af578063882796f1146102aa5780638da5cb5b146102a55780639400d601146102a0578063a0f597dd1461029b578063a3eaf4d914610296578063af231a5814610291578063b187bd261461028c578063b38df71f14610287578063b8e6b50f14610282578063be5421411461027d578063bf3d90f814610278578063c7c83d1714610273578063c7ec1b981461026e578063cfdbf25414610269578063d7a9fb7c14610264578063d80b23e31461025f578063e3409ce31461025a578063e4e87e3b14610255578063e92f94d114610250578063ed5b25b51461024b578063f103574414610246578063f2fde38b14610241578063ff3a52d41461023c5763ff5c83a41461023757600080fd5b61362a565b613244565b6131b3565b6130e0565b6130aa565b613084565b612faa565b612e19565b612d3f565b612c66565b612c4a565b612b73565b612b3d565b612acd565b61286a565b61274a565b6122a8565b612278565b6121ad565b612191565b612122565b6120ec565b6120c3565b612054565b612025565b611f4b565b611e05565b611da7565b611cc6565b611b5e565b611a94565b61185e565b61169f565b61163d565b6115ff565b61153f565b6114b9565b61117f565b6110ae565b610e88565b610db2565b610d00565b610c13565b610b04565b610912565b6106a6565b6105a9565b6104c7565b6103a9565b6001600160a01b0381160361033d57565b600080fd5b61014435906103508261032c565b565b61016435906103508261032c565b61018435906103508261032c565b35906103508261032c565b9181601f8401121561033d578235916001600160401b03831161033d576020808501946060850201011161033d57565b608036600319011261033d576004356103c18161032c565b6024356103cd8161032c565b604435906103da8261032c565b6064356001600160401b03811161033d576103f9903690600401610379565b6104049291926149df565b61040c6158c2565b60008051602061602a8339815191525460408051630a6ce31360e01b6020808301919091526001600160a01b039889166024830152948816604482015295871660648701526080608487015260a4860183905295169460c485019392600091905b83831061049e57610491878961048c828a03601f19810184528361141c565b61586f565b5061049c6001606555565b005b84358652848101358682015284820135868301526060958601959094019360019092019161046d565b3461033d57602036600319011261033d576004356104e48161032c565b6104ec61369b565b6104f5816159cf565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d5760405163ed56be5b60e01b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a45761058b575b50734d41524b4554504c4143455f53455454494e475360601b60008051602061600a833981519152600080a3005b8061059861059e9261132a565b80611534565b3861055d565b613897565b3461033d57602036600319011261033d576004356105c68161032c565b6105ce61369b565b6105d781615a0e565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d5760405163143df10960e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457610667575b506d524f59414c54595f454e47494e4560901b60008051602061600a833981519152600080a3005b806105986106749261132a565b3861063f565b606090600319011261033d576004356106928161032c565b90602435906044356106a38161032c565b90565b3461033d5760206107086106b93661067a565b6001600160a01b0392831660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d51086526040808220938252928652828120919093168352602052902090565b54604051908152f35b9181601f8401121561033d578235916001600160401b03831161033d576020808501948460051b01011161033d57565b90600682101561074e5752565b634e487b7160e01b600052602160045260246000fd5b60005b8381106107775750506000910152565b8181015183820152602001610767565b906020916107a081518092818552858086019101610764565b601f01601f1916010190565b9060209182815260c09283820191835193845183830152828501516040908184015283818701516060978891828701520151926080938486015201519660a0908180860152885180975260e0918286019487848a60051b8901019b01996000975b8a89106108235750505050505050505050505090565b909192939495969798999a9b8a806001928f60df19868303018d52519081518152610856838301518483019060ff169052565b818c01516001600160a01b0316818d01528187015181880152878201516001600160a01b031688820152818901516001600160a01b0316818a0152818a0151818b01528a8201518b820152610100808301511515908201526108c16101208084015190830190610741565b610140828101516001600160e01b031916908201526108f161016080840151906101a08091850152830190610787565b91610180809101519101529e0199019901979a99989695949392919061080d565b60208060031936011261033d576004356001600160401b03811161033d5761093e903690600401610711565b9091604091825161094e81611342565b83519461095a8661135d565b600095868152868582015286868201528460609382898680950152815201526109816149df565b6109896158c2565b60018060a01b03600080516020615f8a83398151915254169585519363160624f760e11b86860152806044860187602488015252606485019160648260051b8701019484825b848410610a1e575050610a1a89610a058a6109f88b8f61048c828e03601f19810184528361141c565b8051810182019101615099565b90610a106001606555565b51918291826107ac565b0390f35b90919293949596606319898203018752873560fe1984360301811215610b00578a610af16001938e610a95888596019160ff8335610a5b8161433a565b168452610a7b610a6c87850161036e565b6001600160a01b031685880152565b610a8681840161036e565b6001600160a01b031690840152565b610ab2610aa38a830161036e565b6001600160a01b0316838b0152565b6080808201359083015260a0808201359083015260c08082013590830152610adf60e09182810190614dab565b91909261010080928201520191614ddf565b990197019594019291906109cf565b8280fd5b3461033d57602036600319011261033d57600435610b218161032c565b610b2961369b565b610b3281615a47565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d5760405163632c2a3160e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457610bc4575b506f5354414b494e475f524547495354525960801b60008051602061600a833981519152600080a3005b80610598610bd19261132a565b38610b9a565b90604060031983011261033d57600435610bf08161032c565b91602435906001600160401b03821161033d57610c0f91600401610711565b9091565b3461033d57610c2136610bd7565b9091610c2b6149df565b610c358284615e75565b60005b828110610c495761049c6001606555565b80610c58610cf5928587614a35565b35610c62846144f6565b600082815260209182526040808220338352909252206002015415610cfa57610cc0610cbb33610ca484610c95896144f6565b90600052602052604060002090565b9060018060a01b0316600052602052604060002090565b614b66565b6001600160a01b038416337f46227bd805037a939224e05cd991a64cb464f4b5c5317858af210838e59ce390600080a46143f0565b610c38565b506143f0565b3461033d576101a036600319011261033d5761049c600435610d218161032c565b602435610d2d8161032c565b604435610d398161032c565b606435610d458161032c565b608435610d518161032c565b60a435610d5d8161032c565b60c435610d698161032c565b60e43591610d768361032c565b6101043593610d848561032c565b6101243595610d928761032c565b610d9a610342565b97610da3610352565b99610dac610360565b9b613cc3565b3461033d57602036600319011261033d57600435610dcf8161032c565b610dd761369b565b610de081615a82565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d5760405163148282a760e21b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457610e75575b50724e4554574f524b5f42454e454649434941525960681b60008051602061600a833981519152600080a3005b80610598610e829261132a565b38610e48565b3461033d57602036600319011261033d57600435610ea58161032c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169190610ede308414156137c6565b610efb600080516020615fea833981519152938285541614613827565b610f0361369b565b60405190610f10826113e6565b600082527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610f4a57505061049c9150613950565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181610fa5575b50610f925760405162461bcd60e51b815280610f8e60048201613901565b0390fd5b61049c93610fa091146138a3565b6139e0565b610fc791925060203d8111610fce575b610fbf818361141c565b810190613888565b9038610f70565b503d610fb5565b90815180825260208080930193019160005b828110610ff5575050505090565b83516001600160a01b031685529381019392810192600101610fe7565b90815180825260208080930193019160005b828110611032575050505090565b835160ff1685529381019392810192600101611024565b906106a3916020815260018060a01b03825116602082015260208201516040820152604082015160608201526060820151608082015260a0611099608084015160c08385015260e0840190610fd5565b9201519060c0601f1982850301910152611012565b3461033d57610a1a61111d6110c23661067a565b906040939284916110ff8351926110d884611378565b606060a06000958681528660208201528688820152868382015282608082015201526144f6565b908252602052209060018060a01b0316600052602052604060002090565b90611170600582519361112f85611378565b80546001600160a01b03168552600181015460208601526002810154848601526003810154606086015261116560048201615126565b60808601520161517e565b60a08301525191829182611049565b3461033d5760408060031936011261033d57600490813561119f8161032c565b6024356001600160401b03811161033d576111bd9036908501610379565b906111c66149df565b6111ce6158c2565b6111df6111db3385615dde565b1590565b6112f7576111f08282959395615941565b6001600160a01b0383169160005b85811061120f5761049c6001606555565b61121a818785614a7d565b35602080611229848a88614a7d565b013584611237858b89614a7d565b013591611244848a615d53565b811515806112ed575b6112cc578288926112ac7fa3f36b03a37e1948b5a4d52ddc1d9f62ab7d4e887e3a0a03e0c68d40f6075f3f9361129b88610c958f6112c79c9b9a61128f61143d565b9588875286015261452f565b906020600191805184550151910155565b8751908152602081019190915280604081015b0390a36143f0565b6111fe565b8551639359452360e01b8152808c0184815242602082015281906040010390fd5b504283111561124d565b8351600162bed83560e01b0319815280610f8e3386838a016142f9565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161133d57604052565b611314565b604081019081106001600160401b0382111761133d57604052565b608081019081106001600160401b0382111761133d57604052565b60c081019081106001600160401b0382111761133d57604052565b61014081019081106001600160401b0382111761133d57604052565b60e081019081106001600160401b0382111761133d57604052565b61012081019081106001600160401b0382111761133d57604052565b602081019081106001600160401b0382111761133d57604052565b606081019081106001600160401b0382111761133d57604052565b90601f801991011681019081106001600160401b0382111761133d57604052565b6040519061035082611342565b6040519061035082611393565b60405190610350826113ca565b60405190610350826113af565b6040519061035082611378565b604051906101a082018281106001600160401b0382111761133d57604052565b6001600160401b03811161133d57601f01601f191660200190565b604036600319011261033d576004356114d18161032c565b602435906001600160401b03821161033d573660238301121561033d578160040135906114fd8261149e565b9161150b604051938461141c565b808352366024828601011161033d57602081600092602461049c97018387013784010152613aef565b600091031261033d57565b3461033d57600036600319011261033d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361159957604051600080516020615fea8339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b3461033d57604036600319011261033d5761162460043561161f8161032c565b614568565b6024356000526020526020604060002054604051908152f35b3461033d5760206107086116503661067a565b6001600160a01b0392831660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d51286526040808220938252928652828120919093168352602052902090565b3461033d576116ad36610bd7565b90916116b76149df565b6116c46111db3383615dde565b611775576116d28284615e75565b60005b8281106116e65761049c6001606555565b806116f5611770928587614a35565b3561172261171661170983610c95886145a1565b546001600160a01b031690565b6001600160a01b031690565b15610cfa5761173c61173782610c95876145a1565b614a45565b6001600160a01b0384167fda6836b3af7ccd9683b9c04bdbe253e29f59637fae61c508b62142e0c45b6dea600080a36143f0565b6116d5565b604051600162bed83560e01b03198152908190610f8e903390600484016142f9565b81516001600160a01b031681526101408101929161035091906020818101516001600160a01b0316908301526040818101516001600160a01b0316908301526060818101516001600160a01b0316908301526080818101516001600160a01b03169083015260a0818101516001600160a01b03169083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120908101516001600160a01b0316910152565b3461033d57600080600319360112611a9157610a1a90611a8560405161188381611393565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015261010092808483015261012080920152611a546118cb61144a565b600080516020615faa833981519152546001600160a01b0316815293600080516020615fca83398151915254611915906001600160a01b03165b6001600160a01b03166020870152565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d502546001600160a01b031660408601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d503546001600160a01b031660608601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d504546001600160a01b031660808601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d505546001600160a01b031660a086015260008051602061606a833981519152546001600160a01b031660c08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d507546001600160a01b031660e08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d508546001600160a01b031690850152565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d509546001600160a01b031690830152565b60405191829182611797565b80fd5b3461033d57602036600319011261033d57600435611ab18161032c565b611ab961369b565b611ac281615bd4565b611acb816136f3565b6001600160a01b031678434845434b4f55545f455845435554494f4e5f4d4f44554c4560381b60008051602061600a833981519152600080a3005b604060031982011261033d57600435611b1e8161032c565b916024356001600160401b039283821161033d578060238301121561033d57816004013593841161033d5760248460061b8301011161033d576024019190565b3461033d57611b6c36611b06565b611b779291926149df565b611b7f6158c2565b611b8c6111db3384615dde565b611c3557611b9a8184615988565b60005b818110611bae5761049c6001606555565b80611bbd611c30928487614a8d565b35611bc88186615d53565b602080611bd684878a614a8d565b0135611be583610c9589614568565b55611bf1838689614a8d565b60405191013581526001600160a01b038616907f2f2a73977f9734e3b74f4efe888b44cdcca6903d8ab2b5be49c3969cc6cb1b629080602081016112bf565b611b9d565b604051600162bed83560e01b0319815280610f8e3385600484016142f9565b906106a3916020815260018060a01b0380835116602083015260208301511660408201526040820151606082015260608201516080820152608082015160a082015260c0611cb160a084015160e083850152610100840190610fd5565b9201519060e0601f1982850301910152611012565b3461033d5760408060031936011261033d5780610a1a91600435611ce98161032c565b611d25825191611cf8836113af565b606060c0600094858152856020820152858782015285838201528560808201528260a082015201526145a1565b60243582526020522090611d986006825193611d40856113af565b80546001600160a01b031685526001810154611d64906001600160a01b0316611905565b6002810154848601526003810154606086015260048101546080860152611d8d60058201615126565b60a08601520161517e565b60c08301525191829182611c54565b3461033d57600080600319360112611a9157611dc161369b565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b60608060031936011261033d5760043590611e1f8261032c565b60243590611e2c8261032c565b6044356001600160401b03811161033d57611e4c84913690600401610711565b92611e556149df565b611e5d6158c2565b60018060a01b03938460008051602061602a83398151915254169581604095865197602093637777e6d760e01b858b01528160848b01931660248b01521660448901528460648901525260a486019360a48360051b8801019581956000925b858410611edb576104918a8c61048c828d03601f19810184528361141c565b909192939495969760a3198a82030183528835607e198336030181121561033d5786611f396001938b611f28878596018035845285810135868501528a8101358b85015282810190614dab565b919092608080928201520191614ddf565b9a019301940192919695949390611ebc565b3461033d57602036600319011261033d57600435611f688161032c565b611f7061369b565b611f7981615ac0565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d576040516362cd1f1560e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457612012575b507653504143455f4f50455241544f525f524547495354525960481b60008051602061600a833981519152600080a3005b8061059861201f9261132a565b38611fe1565b3461033d57604036600319011261033d576116246004356120458161032c565b6145da565b8015150361033d57565b3461033d57602036600319011261033d577fae6fb668d2dacbb6cc6e620b898a7166d67d7838c94ddeff2dbdf55995e9b19260206004356120948161204a565b61209c61369b565b151560008051602061604a83398151915260ff1981541660ff8316179055604051908152a1005b3461033d57600036600319011261033d576033546040516001600160a01b039091168152602090f35b3461033d57600036600319011261033d57600080516020615f8a833981519152546040516001600160a01b039091168152602090f35b3461033d57602036600319011261033d5760043561213f8161032c565b61214761369b565b61215081615bd4565b61215981613721565b6001600160a01b03167554524144455f455845435554494f4e5f4d4f44554c4560501b60008051602061600a833981519152600080a3005b3461033d57600036600319011261033d57602060405160328152f35b3461033d57602036600319011261033d576004356121ca8161032c565b6121d261369b565b6121db81615b02565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d57604051631d1d389760e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457612265575b50675041594d454e545360c01b60008051602061600a833981519152600080a3005b806105986122729261132a565b38612243565b3461033d57600036600319011261033d57602060ff60008051602061604a83398151915254166040519015158152f35b60c036600319011261033d57600480356122c18161032c565b602435604435926122d18461032c565b606435916084359160a435956122e56149df565b6122ed6158c2565b6122f686615c0a565b73__$11854c5905aa23948096e0e4d7059bb9de$__92833b1561033d57604094855198635e157ccf60e11b8a526000998a8180612335888a8301614313565b03818a5af480156105a457612737575b508715612727578115612717578015158061270d575b6126eb57906123b29161236e828a61464c565b9960208b612393611716600080516020615fca8339815191525460018060a01b031690565b8b516361fe24a960e11b81528a81019283529687928391829160200190565b03915afa9384156105a4578c946126ca575b5060008051602061606a83398151915254895163470d6ed960e11b81528881018d8152909c916001600160a01b0316908d90819003602001815a93602094fa9b8c156105a4578d9c6126a9575b50848c11612687578461242391614b91565b998c893b15611a91578a516338fa83e760e01b8152600080516020615faa8339815191528a82019081526001600160a01b038a166020820152604081019d909d529b8c90819060600103818c5af49a8b156105a4578d9b612674575b50868661248b84614613565b60009182526020908152604080832033845282528083206001600160a01b03949094168352929052206124bd90614b9e565b9b6124c6611457565b6001600160a01b038916815290826020830152858c8301528560608301528660808301528660a08301528060c083015260e08201528361010082015287338861250e86614613565b6000918252602090815260408083206001600160a01b03948516845282528083209490931682529290925290206125b19190815181546001600160a01b0319166001600160a01b0390911617815590600890610100906020810151600185015560408101516002850155606081015160038501556080810151600485015560a0810151600585015560c0810151600685015560e081015160078501550151910155565b89516001600160a01b03888116825260208201929092526040810194909452606084019490945260808301919091529091169033907ec827db726736dd1c3f5c4643456d97cc22d1613afeae6f8576124e65e8e1bc9060a090a4602086015193808701519660800151843b1561267057612640915197889687958695634c4c261960e01b875233918701614c10565b03915af480156105a45761265d575b5061265a6001606555565b80f35b8061059861266a9261132a565b3861264f565b8680fd5b806105986126819261132a565b3861247f565b8951639bdfbb5160e01b8152808901868152602081018e905281906040010390fd5b6126c3919c5060203d602011610fce57610fbf818361141c565b9a38612411565b6126e491945060203d602011610fce57610fbf818361141c565b92386123c4565b8651633312a4fd60e21b81528086019182524260208301529081906040010390fd5b504281111561235b565b865163c6b949a960e01b81528590fd5b865163473ae14d60e01b81528590fd5b806105986127449261132a565b38612345565b3461033d5761010036600319011261033d576004356127688161032c565b604435906127758261032c565b6064356127818161032c565b6001600160401b039260c43584811161033d576127a2903690600401610711565b9160e43595861161033d576127be61049c963690600401610711565b95909460a435926084359260243590614e03565b9060a060031983011261033d576004356127eb8161032c565b916024356127f88161032c565b91604435916001600160401b039081841161033d578060238501121561033d5783600401359382851161033d578160248660071b8301011161033d57602401939260643583811161033d578261285091600401610711565b9390939260843591821161033d57610c0f91600401610711565b3461033d57612878366127d2565b969492939091956128876149df565b61288f6158c2565b61289886615c0a565b6128a56111db3388615dde565b612aae576128b382856158ed565b73__$11854c5905aa23948096e0e4d7059bb9de$__97883b1561033d57604093845199635e157ccf60e11b8b5260009a8b81806128f38860048301614313565b0381855af480156105a457612a9b575b508a813b15611a91578284928c8b6129308b51968795869485946376fb859760e01b865260048601614345565b03915af480156105a457612a88575b50895b848110612954578a61265a6001606555565b8888888888888f888a916129698a868961441a565b3597612975898b615d53565b8a602087898b848461298882868561441a565b0135936129949261441a565b0135898c60609586926129a69261441a565b0135906129b1611464565b338152926001600160a01b038b1684860152838d01528483015260808201526129db368686614446565b60a08201528b8d6129ed368a8a61449e565b60c08401526129fb906145a1565b60009182526020526040902090612a119161483d565b612a1c8d898c61441a565b0135988c89612a2c828b8561441a565b013598612a389261441a565b01359651968796339b600160a01b600190031699612a569789614999565b037f4c048dfd080dcfa2cccc41ef603e5f0ed6602ca215a41581d653aadf841a560b91a4612a83906143f0565b612942565b80610598612a959261132a565b3861293f565b80610598612aa89261132a565b38612903565b604051600162bed83560e01b0319815280610f8e3389600484016142f9565b3461033d5760408060031936011261033d57612b07600435612aee8161032c565b600060208451612afd81611342565b828152015261452f565b602435600052602052806000208151612b1f81611342565b60206001835493848452015491019081528251918252516020820152f35b3461033d57600036600319011261033d5760008051602061608a833981519152546040516001600160a01b039091168152602090f35b3461033d57612b8136611b06565b612b8c9291926149df565b612b946158c2565b612ba16111db3384615dde565b611c3557612baf8184615988565b60005b818110612bc35761049c6001606555565b80612bd2612c45928487614a8d565b35612bdd8186615d53565b602080612beb84878a614a8d565b0135612bfa83610c95896145da565b55612c06838689614a8d565b60405191013581526001600160a01b038616907feead0384c6f48c02c0099b2433359d43617492f06d8e3a59cbe786b9970f7e619080602081016112bf565b612bb2565b3461033d57600036600319011261033d576020604051604b8152f35b3461033d57602036600319011261033d57600435612c838161032c565b612c8b61369b565b612c9481615bb2565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d576040516328b80cf560e21b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457612d2c575b507522a92199182fa0a8282927ab20a62fa6a0a720a3a2a960511b60008051602061600a833981519152600080a3005b80610598612d399261132a565b38612cfc565b3461033d57602036600319011261033d57600435612d5c8161032c565b612d6461369b565b612d6d81615bb2565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d57604051631f1afd0d60e01b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457612e06575b507622a9219b9918afa0a8282927ab20a62fa6a0a720a3a2a960491b60008051602061600a833981519152600080a3005b80610598612e139261132a565b38612dd5565b3461033d57608036600319011261033d57610a1a600435612e398161032c565b612ec5604435612e488161032c565b610ca460643591612e588361032c565b6040805195612e66876113ca565b612ea56000918289528260208a015282848a01528260608a01528260808a01528260a08a01528260c08a01528260e08a015282610100809a0152614613565b6024358252602052209060018060a01b0316600052602052604060002090565b906008612ed0611457565b8354909390612ef0906001600160a01b03165b6001600160a01b03168552565b60018101546020850152600281015460408501526003810154606085015260048101546080850152600581015460a0850152600681015460c0850152600781015460e08501520154908201526040519182918291909161012081019260018060a01b0381511682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080910151910152565b3461033d57602036600319011261033d57600435612fc78161032c565b612fcf61369b565b612fd881615b35565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d57604051632867932b60e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457613071575b5076415050524f5645445f544f4b454e5f524547495354525960481b60008051602061600a833981519152600080a3005b8061059861307e9261132a565b38613040565b3461033d576130a36130953661067a565b9161309e6149df565b614c56565b6001606555005b3461033d57600036600319011261033d5760008051602061602a833981519152546040516001600160a01b039091168152602090f35b3461033d57602036600319011261033d576004356130fd8161032c565b61310561369b565b61310e81615b77565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d57604051632d8b49e160e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a4576131a0575b506f5354414b494e475f53455454494e475360801b60008051602061600a833981519152600080a3005b806105986131ad9261132a565b38613176565b3461033d57602036600319011261033d576004356131d08161032c565b6131d861369b565b6001600160a01b038116156131f05761049c9061377d565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461033d57613252366127d2565b90613262979296939594976149df565b61326a6158c2565b61327488866158ed565b73__$11854c5905aa23948096e0e4d7059bb9de$__3b1561033d57604051635e157ccf60e11b8152600081806132ad8860048301614313565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af480156105a457613617575b5073__$11854c5905aa23948096e0e4d7059bb9de$__3b1561033d576040516376fb859760e01b81526000818061330e86868d8d60048601614345565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af480156105a457613604575b5061333c83615c0a565b60008051602061608a8339815191525461338090602090613365906001600160a01b0316611716565b6040518093819263e985e9c560e01b835233600484016142f9565b03816001600160a01b0388165afa9081156105a4576000916135d5575b50156135b95760005b8881106133b75761049c6001606555565b6133c2818a8861441a565b35868a60606133f08560406133e7828660206133df83838c61441a565b01359861441a565b0135938c61441a565b013582156135a7578115613595578015158061358b575b61356b57604051627eeac760e11b8152336004820152602481018590526020816044816001600160a01b038d165afa9081156105a45760009161354c575b5082811061350f57507fe4cf997ce4def583f8220b51e6c89b5dbf6eeded5de4d1d78884a25d2bf46d5d8392896135028f8f8c918f97918d926134eb8a61350a9f9e9d8e6134e6916134a7613498611471565b6001600160a01b039095168552565b60208401528b60408401528460608401526134c3368888614446565b60808401526134d3368a8a61449e565b60a0840152610ca43391610c958d6144f6565b614abd565b60405197889760018060a01b03169b339b89614999565b0390a46143f0565b6133a6565b604051636906ef1760e11b81523360048201526001600160a01b038a1660248201526044810186905260648101849052608481019190915260a490fd5b613565915060203d602011610fce57610fbf818361141c565b38613445565b6040516346a836ff60e11b81526004810191909152426024820152604490fd5b5042811115613407565b60405163c6b949a960e01b8152600490fd5b6040516331cc996d60e11b8152600490fd5b60405163d65b0d6960e01b815280610f8e8533600484016142f9565b6135f7915060203d6020116135fd575b6135ef818361141c565b810190614aa8565b3861339d565b503d6135e5565b806105986136119261132a565b38613332565b806105986136249261132a565b386132d1565b3461033d57602036600319011261033d576004356136478161032c565b61364f61369b565b61365881615bb2565b6001600160a01b031661366a8161374f565b7722a92198989a9aafa0a8282927ab20a62fa6a0a720a3a2a960411b60008051602061600a833981519152600080a3005b6033546001600160a01b031633036136af57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600080516020615f8a83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60008051602061602a83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60008051602061608a83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b156137cd57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561382e57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b9081602091031261033d575190565b6040513d6000823e3d90fd5b156138aa57565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b60809060208152602e60208201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960408201526d6f6e206973206e6f74205555505360901b60608201520190565b803b1561398557600080516020615fea83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b906139ea82613950565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613a94575b613a2c575050565b613a919160008060405193613a4085611401565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020860152660819985a5b195960ca1b6040860152602081519101845af4613a8b613bfa565b91613c2a565b50565b506000613a24565b90613aa682613950565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613ae757613a2c575050565b506001613a24565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169290613b28308514156137c6565b613b45600080516020615fea833981519152948286541614613827565b613b4d61369b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615613b835750506103509150613950565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181613bda575b50613bc75760405162461bcd60e51b815280610f8e60048201613901565b61035093613bd591146138a3565b613a9c565b613bf391925060203d8111610fce57610fbf818361141c565b9038613ba9565b3d15613c25573d90613c0b8261149e565b91613c19604051938461141c565b82523d6000602084013e565b606090565b91929015613c8c5750815115613c3e575090565b3b15613c475790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015613c9f5750805190602001fd5b60405162461bcd60e51b815260206004820152908190610f8e906024830190610787565b9a98969492909160ff9c9a989694926000549d8e60081c1615809e819f613dec575b8115613dcc575b5015613d7057613d129c8e613d09600160ff196000541617600055565b613d57576140b0565b613d1857565b613d2861ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b613d6b61010061ff00196000541617600055565b6140b0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b15915081613dde575b5038613cec565b6001915060ff161438613dd7565b600160ff8216109150613ce5565b51906103508261032c565b908161014091031261033d57613e1961144a565b90613e2381613dfa565b8252613e3160208201613dfa565b6020830152613e4260408201613dfa565b6040830152613e5360608201613dfa565b6060830152613e6460808201613dfa565b6080830152613e7560a08201613dfa565b60a0830152613e8660c08201613dfa565b60c0830152613e9760e08201613dfa565b60e0830152610100613eaa818301613dfa565b90830152613ebc610120809201613dfa565b9082015290565b8051600080516020615faa83398151915280546001600160a01b03199081166001600160a01b03938416179091556020830151600080516020615fca8339815191528054831691841691909117905560408301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5028054831691841691909117905560608301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5038054831691841691909117905560808301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5048054831691841691909117905560a08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5058054831691841691909117905560c083015160008051602061606a8339815191528054831691841691909117905560e08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d507805483169184169190911790556101008301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50880549092169083161790556101209091015161035091167f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50980546001600160a01b0319166001600160a01b03909216919091179055565b95909691999b9a9893946141ac9561014099946141398f8f908f8f90614134928f8f926140eb6140f0926140e661413496615a82565b6159cf565b615ac0565b6140f987615a0e565b61410288615b02565b61410b89615b35565b6141148a615b77565b61411d8b615a47565b6141268c615bb2565b61412f8d615bb2565b615bb2565b615bd4565b60405163ef8c824960e01b81526001600160a01b03998a16600482015299891660248b01529b881660448a01529a87166064890152998616608488015298851660a487015297841660c486015296831660e485015295821661010484015294166101248201529283908190610144820190565b038173__$c98ca6a62396e5a7a1471db151198a1f31$__5af480156105a457614200946141e86141f6926141fb95600091614218575b50613ec3565b6001600160a01b031661374f565b613721565b6136f3565b6142086142a9565b6142106142dd565b6103506142cc565b61423c91506101403d61014011614242575b614234818361141c565b810190613e05565b386141e2565b503d61422a565b1561425057565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b6142c360ff60005460081c166142be81614249565b614249565b6103503361377d565b61035060ff60005460081c16614249565b6142f260ff60005460081c166142be81614249565b6001606555565b6001600160a01b0391821681529116602082015260400190565b600080516020615faa83398151915281526001600160a01b03909116602082015260400190565b60ff81160361033d57565b909293918060408301604084525260608201939060005b8181106143ad57505050808303602091820152818352918201929160005b828110614388575050505090565b90919293828060019260ff883561439e8161433a565b1681520195019392910161437a565b9091939460019085356143bf8161032c565b60a083901b839003168152602090810196950192910161435c565b634e487b7160e01b600052601160045260246000fd5b60001981146143ff5760010190565b6143da565b634e487b7160e01b600052603260045260246000fd5b919081101561442a5760071b0190565b614404565b6001600160401b03811161133d5760051b60200190565b92916144518261442f565b9161445f604051938461141c565b829481845260208094019160051b810192831161033d57905b8282106144855750505050565b83809183356144938161032c565b815201910190614478565b92916144a98261442f565b916144b7604051938461141c565b829481845260208094019160051b810192831161033d57905b8282106144dd5750505050565b83809183356144eb8161433a565b8152019101906144d0565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5136020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5116020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5146020526040902090565b818102929181159184041417156143ff57565b81811061466a575050565b6000815560010161465f565b80546000825580614685575050565b6103509160005260206000209081019061465f565b90600160401b811161133d578154908083558181106146b857505050565b610350926000526020600020918201910161465f565b805460008255806146dd575050565b61035091600052601f6020600020910160051c81019061465f565b90600160401b811161133d57815481835580821061471557505050565b61035092600052601f6020600020918180850160051c8401941680614741575b500160051c019061465f565b600019908186019182549160200360031b1c16905538614735565b9080516001600160401b03811161133d5761477781846146f8565b61478b602080930193600052602060002090565b908060051c9260005b8481106148075750601f19821690910390816147b2575b5050505050565b9390600094855b8281106147d05750505050015538808080806147ab565b90919295826147fc600192846147e78b5160ff1690565b919060ff809160031b9316831b921b19161790565b9701939291016147b9565b6000805b83811061481f575084820155600101614794565b9690836148346001928a6147e7865160ff1690565b9201970161480b565b815181546001600160a01b0319166001600160a01b03918216178255909190602082810151600185810180549285166001600160a01b03166001600160a01b03199093169290921790915591604084015160028601556060840151600386015560808401516004860155600585019060a0850151928351936001600160401b03851161133d5781906148cf868661469a565b0192600052806000209160005b8581106148fc575050505050505090600660c0610350930151910161475c565b84518216848201559382019386016148dc565b91908082526020809201929160005b82811061492c575050505090565b90919293828060019287356149408161032c565b848060a01b0316815201950191019291909261491e565b91908082526020809201929160005b828110614974575050505090565b90919293828060019260ff883561498a8161433a565b16815201950193929101614966565b9694926106a39896926149d1959260018060a01b0316895260208901526040880152606087015260c0608087015260c086019161490f565b9260a0818503910152614957565b6002606554146149f0576002606555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b919081101561442a5760051b0190565b6006610350916000815560006001820155600060028201556000600382015560006004820155614a7760058201614676565b016146ce565b919081101561442a576060020190565b919081101561442a5760061b0190565b51906103508261204a565b9081602091031261033d57516106a38161204a565b815181546001600160a01b0319166001600160a01b039182161782559091906020808301519160019283860155604084015160028601556060840151600386015560048501906080850151928351936001600160401b03851161133d578190614b26868661469a565b0192600052806000209160005b858110614b53575050505050505090600560a0610350930151910161475c565b8451821684820155938201938601614b33565b60056103509160008155600060018201556000600282015560006003820155614a7760048201614676565b919082018092116143ff57565b906008614ba9611457565b8354909390614bc0906001600160a01b0316612ee3565b60018101546020850152600281015460408501526003810154606085015260048101546080850152600581015460a0850152600681015460c0850152600781015460e08501520154610100830152565b600080516020615faa83398151915281526001600160a01b039182166020820152911660408201526060810191909152608081019190915260a081019190915260c00190565b919091614c88614c8383610ca4614c7087610c9587614613565b3360009081526020919091526040902090565b614b9e565b60408101938451156147ab57614ce2614cac85610ca433610ca486610c958a614613565b60086000918281558260018201558260028201558260038201558260048201558260058201558260068201558260078201550155565b60208281018051875160809586018051604080516001600160a01b038c81168252978101959095528401929092526060830191909152959194919092169133917fb00a321de530b83262da5c2b572508a21b98c8d189dba9939e0359e8c9fbfeac91a473__$11854c5905aa23948096e0e4d7059bb9de$__90519351915193813b1561033d57600093614d8d60405196879586948594634c4c261960e01b8652339060048701614c10565b03915af480156105a457614d9e5750565b806105986103509261132a565b9035601e198236030181121561033d5701602081359101916001600160401b03821161033d578160051b3603831361033d57565b81835290916001600160fb1b03831161033d5760209260051b809284830137010190565b969297959390989491614e146149df565b614e1c6158c2565b60008051602061602a8339815191525460405163b8e6b50f60e01b60208201526001600160a01b03998a166024820152604481019b909b5290881660648b015297871660848a015260a489015260c488015261010060e48801529490931694938493614e8d9161012486019161490f565b9060231984830301610104850152614ea492614957565b03601f1981018252614eb6908261141c565b614ebf9161586f565b506103506001606555565b51906103508261433a565b5190600682101561033d57565b51906001600160e01b03198216820361033d57565b81601f8201121561033d578051614f0d8161149e565b92614f1b604051948561141c565b8184526020828401011161033d576106a39160208085019101610764565b81601f8201121561033d57805190614f508261442f565b92604092614f608451958661141c565b808552602093848087019260051b8501019383851161033d57858101925b858410614f8f575050505050505090565b83516001600160401b039081811161033d578301916101a09283601f19828a03011261033d57614fbd61147e565b908a8101518252614fcf878201614eca565b8b830152606094614fe1868301613dfa565b88840152608095868301519084015260a095614ffe878401613dfa565b9084015260c095615010878401613dfa565b9084015260e09586830151908401526101009586830151908401526101209561503a878401614a9d565b908401526101409561504d878401614ed5565b9084015261016095615060878401614ee2565b90840152610180918281015195861161033d578c966150848c898099850101614ef7565b90850152015190820152815201930192614f7e565b9060208282031261033d5781516001600160401b039283821161033d5701908181039260a0841261033d576080604051946150d386611342565b1261033d576040516150e48161135d565b835181526020840151602082015260408401516040820152606084015160608201528452608083015190811161033d5761511e9201614f39565b602082015290565b9060405191828154918282526020928383019160005283600020936000905b82821061515b575050506103509250038361141c565b85546001600160a01b031684526001958601958895509381019390910190615145565b906040805180938054926151a5615199858560209181520190565b92600052602060002090565b9360005b81601f8201106155c1576103509554928282106155ab575b828210615591575b828210615577575b82821061555d575b828210615543575b828210615529575b82821061550f575b8282106154f5575b8282106154de575b508181106154c6575b8181106154ae575b818110615496575b81811061547e575b818110615466575b81811061544e575b818110615436575b81811061541e575b818110615406575b8181106153ee575b8181106153d6575b8181106153be575b8181106153a6575b81811061538e575b818110615376575b81811061535e575b818110615346575b81811061532e575b818110615316575b8181106152fe575b8181106152e6575b8181106152ce575b106152c0575b50038361141c565b60f81c8152602001386152b8565b60f083901c60ff1684529260019060200193016152b2565b60e883901c60ff1684529260019060200193016152aa565b60e083901c60ff1684529260019060200193016152a2565b60d883901c60ff16845292600190602001930161529a565b60d083901c60ff168452926001906020019301615292565b60c883901c60ff16845292600190602001930161528a565b60c083901c60ff168452926001906020019301615282565b60b883901c60ff16845292600190602001930161527a565b60b083901c60ff168452926001906020019301615272565b60a883901c60ff16845292600190602001930161526a565b60a083901c60ff168452926001906020019301615262565b609883901c60ff16845292600190602001930161525a565b609083901c60ff168452926001906020019301615252565b608883901c60ff16845292600190602001930161524a565b608083901c60ff168452926001906020019301615242565b607883901c60ff16845292600190602001930161523a565b607083901c60ff168452926001906020019301615232565b606883901c60ff16845292600190602001930161522a565b606083901c60ff168452926001906020019301615222565b605883901c60ff16845292600190602001930161521a565b605083901c60ff168452926001906020019301615212565b604883901c60ff16845292600190602001930161520a565b83901c60ff16845292600190602001930138615201565b603884901c60ff16855290936001906020019401906151f9565b603084901c60ff16855290936001906020019401906151f1565b602884901c60ff16855290936001906020019401906151e9565b602084811c60ff16865291949091600191019401906151e1565b601884901c60ff16855290936001906020019401906151d9565b601084901c60ff16855290936001906020019401906151d1565b600884901c60ff16855290936001906020019401906151c9565b60ff8416855290936001906020019401906151c1565b91935091600161040060209261585f885461585460ff6155e58582851660ff169052565b61582d6156926157dd8d61578d8961573d8e61560a8184018a8d60081c1660ff169052565b61561d8584018a8d60101c1660ff169052565b888b610200606095615638878201858560181c1660ff169052565b61564d6080958585888501921c1660ff169052565b6156f360a097615666898401878760281c1660ff169052565b6156a360c09b61567f8d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b6156b86101208401878760481c1660ff169052565b6156cd6101408401878760501c1660ff169052565b6156e26101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b6157086101a08201858560681c1660ff169052565b61571d6101c08201858560701c1660ff169052565b6157326101e08201858560781c1660ff169052565b01921c1660ff169052565b6157526102208c01888b60881c1660ff169052565b6157676102408c01888b60901c1660ff169052565b61577c6102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b6157a26102a08a01868960a81c1660ff169052565b6157b76102c08a01868960b01c1660ff169052565b6157cc6102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b6157f26103208801848760c81c1660ff169052565b6158076103408801848760d01c1660ff169052565b61581c6103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b6158426103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b01950191019186939194926151a9565b6000918291602082519201905af4615885613bfa565b901561588e5790565b80511561589d57602081519101fd5b60405163d4c4c23d60e01b815260206004820152908190610f8e906024830190610787565b60ff60008051602061604a83398151915254166158db57565b60405163ab35696f60e01b8152600490fd5b6158f682615f0e565b60015b82811061590557505050565b6000198101908082116143ff5761593761592361593c93868661441a565b3561592f83878761441a565b359083615f50565b6143f0565b6158f9565b61594a82615f0e565b60015b82811061595957505050565b6000198101908082116143ff57615937615977615983938686614a7d565b3561592f838787614a7d565b61594d565b61599182615f0e565b60015b8281106159a057505050565b6000198101908082116143ff576159376159be6159ca938686614a8d565b3561592f838787614a8d565b615994565b6001600160a01b0316156159df57565b60405163602d6df560e01b8152734d41524b4554504c4143455f53455454494e475360601b6004820152602490fd5b6001600160a01b031615615a1e57565b60405163602d6df560e01b81526d524f59414c54595f454e47494e4560901b6004820152602490fd5b6001600160a01b031615615a5757565b60405163602d6df560e01b81526f5354414b494e475f524547495354525960801b6004820152602490fd5b6001600160a01b031615615a9257565b60405163602d6df560e01b8152724e4554574f524b5f42454e454649434941525960681b6004820152602490fd5b6001600160a01b031615615ad057565b60405163602d6df560e01b81527653504143455f4f50455241544f525f524547495354525960481b6004820152602490fd5b6001600160a01b031615615b1257565b60405163602d6df560e01b8152675041594d454e545360c01b6004820152602490fd5b6001600160a01b031615615b4557565b60405163602d6df560e01b815276415050524f5645445f544f4b454e5f524547495354525960481b6004820152602490fd5b6001600160a01b031615615b8757565b60405163602d6df560e01b81526f5354414b494e475f53455454494e475360801b6004820152602490fd5b6001600160a01b031615615bc257565b60405163c49074af60e01b8152600490fd5b6001600160a01b03811615908115615c00575b50615bee57565b60405163d94b7f7760e01b8152600490fd5b90503b1538615be7565b803b158015615c3d575b615c1b5750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b808352602482015260248152615c6681611401565b519084617530fa6000513d82615cba575b5081615cb0575b5080615ca0575b80615c91575b15615c14565b50615c9b81615d23565b615c8b565b50615caa81615cc6565b15615c85565b9050151538615c7e565b60201115915038615c77565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b602482015260248152615cf681611401565b5191617530fa6000513d82615d17575b5081615d10575090565b9050151590565b60201115915038615d06565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152615cf681611401565b6040516001620b695760e21b03198152600481018390526020816024816001600160a01b0386165afa9081156105a457600091615dc0575b5015615d95575050565b604051632be7c7f360e01b81526001600160a01b039190911660048201526024810191909152604490fd5b615dd8915060203d8111610fce57610fbf818361141c565b38615d8b565b6000806040516020810190638da5cb5b60e01b825260048152615e0081611342565b5190845afa90615e0e613bfa565b91158015615e6a575b615e48575060208180518101031261033d576020015190615e378261032c565b6001600160a01b0391821691161490565b60405163915b8f1d60e01b81526001600160a01b039091166004820152602490fd5b506020825110615e17565b90615e7f81615f0e565b60015b818110615e8e57505050565b615e99818385614a35565b600019820190358282116143ff57615eb2828587614a35565b351015615ec85750615ec3906143f0565b615e82565b8183615edc615ee393610f8e959688614a35565b3595614a35565b3560405193849363f48f718f60e01b8552600485016040919493926060820195825260208201520152565b8015615f3e57604b8111615f1f5750565b6044906040519063f80a484560e01b82526004820152604b6024820152fd5b60405163c2e5347d60e01b8152600490fd5b909182811115615f5f57505050565b60405163f48f718f60e01b8152600481019290925260248201929092526044810191909152606490fdfe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5005e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d501360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc376c367a1420063e9671cc85404673694901b9db2c20dc84b5acbf060f7ee37a5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50b5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5155e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5065e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50aa2646970667358221220a652df5bd491578dc76ab50c5f6a70f8bd2669050474e0cd6903fad7bb0f4ee064736f6c63430008120033","sourceMap":"1418:25080:75:-:0;;;;;;;1332:4:24;1324:13;;6007::23;1418:25080:75;;;;;;;;;;;;;;6078:31:23;6074:139;;-1:-1:-1;1418:25080:75;;;;;;;;1324:13:24;1418:25080:75;;;;;;;;;;;;;;;;6074:139:23;1418:25080:75;;;;;;6007:13:23;1418:25080:75;6174:28:23;1418:25080:75;;;;;;6174:28:23;6074:139;;;1418:25080:75;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":9183,"length":20},{"start":10652,"length":20},{"start":13149,"length":20},{"start":13208,"length":20},{"start":13243,"length":20},{"start":13305,"length":20},{"start":20014,"length":20}]},"src/v2/utils/MarketConfigV2.sol":{"MarketConfigV2":[{"start":1502,"length":20},{"start":1728,"length":20},{"start":3099,"length":20},{"start":3785,"length":20},{"start":8290,"length":20},{"start":8900,"length":20},{"start":11645,"length":20},{"start":11862,"length":20},{"start":12481,"length":20},{"start":12791,"length":20},{"start":17047,"length":20}]}}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c80630a6ce31314610327578063176ab4401461032257806321ede0321461031d57806328fbba03146103185780632c0c49ee146103135780632c7408441461030e5780632f79f335146103095780632fdd983d146103045780633492e5a8146102ff5780633659cfe6146102fa578063369679a4146102f5578063373a9412146102f05780634f1ef286146102eb57806352d1902d146102e6578063552f791d146102e15780635a501f8f146102dc5780635e50c42e146102d7578063614bd944146102d257806363cf9cef146102cd5780636442950e146102c85780636e2f4d8b146102c3578063715018a6146102be5780637777e6d7146102b95780637f358230146102b45780638760251a146102af578063882796f1146102aa5780638da5cb5b146102a55780639400d601146102a0578063a0f597dd1461029b578063a3eaf4d914610296578063af231a5814610291578063b187bd261461028c578063b38df71f14610287578063b8e6b50f14610282578063be5421411461027d578063bf3d90f814610278578063c7c83d1714610273578063c7ec1b981461026e578063cfdbf25414610269578063d7a9fb7c14610264578063d80b23e31461025f578063e3409ce31461025a578063e4e87e3b14610255578063e92f94d114610250578063ed5b25b51461024b578063f103574414610246578063f2fde38b14610241578063ff3a52d41461023c5763ff5c83a41461023757600080fd5b61362a565b613244565b6131b3565b6130e0565b6130aa565b613084565b612faa565b612e19565b612d3f565b612c66565b612c4a565b612b73565b612b3d565b612acd565b61286a565b61274a565b6122a8565b612278565b6121ad565b612191565b612122565b6120ec565b6120c3565b612054565b612025565b611f4b565b611e05565b611da7565b611cc6565b611b5e565b611a94565b61185e565b61169f565b61163d565b6115ff565b61153f565b6114b9565b61117f565b6110ae565b610e88565b610db2565b610d00565b610c13565b610b04565b610912565b6106a6565b6105a9565b6104c7565b6103a9565b6001600160a01b0381160361033d57565b600080fd5b61014435906103508261032c565b565b61016435906103508261032c565b61018435906103508261032c565b35906103508261032c565b9181601f8401121561033d578235916001600160401b03831161033d576020808501946060850201011161033d57565b608036600319011261033d576004356103c18161032c565b6024356103cd8161032c565b604435906103da8261032c565b6064356001600160401b03811161033d576103f9903690600401610379565b6104049291926149df565b61040c6158c2565b60008051602061602a8339815191525460408051630a6ce31360e01b6020808301919091526001600160a01b039889166024830152948816604482015295871660648701526080608487015260a4860183905295169460c485019392600091905b83831061049e57610491878961048c828a03601f19810184528361141c565b61586f565b5061049c6001606555565b005b84358652848101358682015284820135868301526060958601959094019360019092019161046d565b3461033d57602036600319011261033d576004356104e48161032c565b6104ec61369b565b6104f5816159cf565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d5760405163ed56be5b60e01b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a45761058b575b50734d41524b4554504c4143455f53455454494e475360601b60008051602061600a833981519152600080a3005b8061059861059e9261132a565b80611534565b3861055d565b613897565b3461033d57602036600319011261033d576004356105c68161032c565b6105ce61369b565b6105d781615a0e565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d5760405163143df10960e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457610667575b506d524f59414c54595f454e47494e4560901b60008051602061600a833981519152600080a3005b806105986106749261132a565b3861063f565b606090600319011261033d576004356106928161032c565b90602435906044356106a38161032c565b90565b3461033d5760206107086106b93661067a565b6001600160a01b0392831660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d51086526040808220938252928652828120919093168352602052902090565b54604051908152f35b9181601f8401121561033d578235916001600160401b03831161033d576020808501948460051b01011161033d57565b90600682101561074e5752565b634e487b7160e01b600052602160045260246000fd5b60005b8381106107775750506000910152565b8181015183820152602001610767565b906020916107a081518092818552858086019101610764565b601f01601f1916010190565b9060209182815260c09283820191835193845183830152828501516040908184015283818701516060978891828701520151926080938486015201519660a0908180860152885180975260e0918286019487848a60051b8901019b01996000975b8a89106108235750505050505050505050505090565b909192939495969798999a9b8a806001928f60df19868303018d52519081518152610856838301518483019060ff169052565b818c01516001600160a01b0316818d01528187015181880152878201516001600160a01b031688820152818901516001600160a01b0316818a0152818a0151818b01528a8201518b820152610100808301511515908201526108c16101208084015190830190610741565b610140828101516001600160e01b031916908201526108f161016080840151906101a08091850152830190610787565b91610180809101519101529e0199019901979a99989695949392919061080d565b60208060031936011261033d576004356001600160401b03811161033d5761093e903690600401610711565b9091604091825161094e81611342565b83519461095a8661135d565b600095868152868582015286868201528460609382898680950152815201526109816149df565b6109896158c2565b60018060a01b03600080516020615f8a83398151915254169585519363160624f760e11b86860152806044860187602488015252606485019160648260051b8701019484825b848410610a1e575050610a1a89610a058a6109f88b8f61048c828e03601f19810184528361141c565b8051810182019101615099565b90610a106001606555565b51918291826107ac565b0390f35b90919293949596606319898203018752873560fe1984360301811215610b00578a610af16001938e610a95888596019160ff8335610a5b8161433a565b168452610a7b610a6c87850161036e565b6001600160a01b031685880152565b610a8681840161036e565b6001600160a01b031690840152565b610ab2610aa38a830161036e565b6001600160a01b0316838b0152565b6080808201359083015260a0808201359083015260c08082013590830152610adf60e09182810190614dab565b91909261010080928201520191614ddf565b990197019594019291906109cf565b8280fd5b3461033d57602036600319011261033d57600435610b218161032c565b610b2961369b565b610b3281615a47565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d5760405163632c2a3160e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457610bc4575b506f5354414b494e475f524547495354525960801b60008051602061600a833981519152600080a3005b80610598610bd19261132a565b38610b9a565b90604060031983011261033d57600435610bf08161032c565b91602435906001600160401b03821161033d57610c0f91600401610711565b9091565b3461033d57610c2136610bd7565b9091610c2b6149df565b610c358284615e75565b60005b828110610c495761049c6001606555565b80610c58610cf5928587614a35565b35610c62846144f6565b600082815260209182526040808220338352909252206002015415610cfa57610cc0610cbb33610ca484610c95896144f6565b90600052602052604060002090565b9060018060a01b0316600052602052604060002090565b614b66565b6001600160a01b038416337f46227bd805037a939224e05cd991a64cb464f4b5c5317858af210838e59ce390600080a46143f0565b610c38565b506143f0565b3461033d576101a036600319011261033d5761049c600435610d218161032c565b602435610d2d8161032c565b604435610d398161032c565b606435610d458161032c565b608435610d518161032c565b60a435610d5d8161032c565b60c435610d698161032c565b60e43591610d768361032c565b6101043593610d848561032c565b6101243595610d928761032c565b610d9a610342565b97610da3610352565b99610dac610360565b9b613cc3565b3461033d57602036600319011261033d57600435610dcf8161032c565b610dd761369b565b610de081615a82565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d5760405163148282a760e21b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457610e75575b50724e4554574f524b5f42454e454649434941525960681b60008051602061600a833981519152600080a3005b80610598610e829261132a565b38610e48565b3461033d57602036600319011261033d57600435610ea58161032c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169190610ede308414156137c6565b610efb600080516020615fea833981519152938285541614613827565b610f0361369b565b60405190610f10826113e6565b600082527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610f4a57505061049c9150613950565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181610fa5575b50610f925760405162461bcd60e51b815280610f8e60048201613901565b0390fd5b61049c93610fa091146138a3565b6139e0565b610fc791925060203d8111610fce575b610fbf818361141c565b810190613888565b9038610f70565b503d610fb5565b90815180825260208080930193019160005b828110610ff5575050505090565b83516001600160a01b031685529381019392810192600101610fe7565b90815180825260208080930193019160005b828110611032575050505090565b835160ff1685529381019392810192600101611024565b906106a3916020815260018060a01b03825116602082015260208201516040820152604082015160608201526060820151608082015260a0611099608084015160c08385015260e0840190610fd5565b9201519060c0601f1982850301910152611012565b3461033d57610a1a61111d6110c23661067a565b906040939284916110ff8351926110d884611378565b606060a06000958681528660208201528688820152868382015282608082015201526144f6565b908252602052209060018060a01b0316600052602052604060002090565b90611170600582519361112f85611378565b80546001600160a01b03168552600181015460208601526002810154848601526003810154606086015261116560048201615126565b60808601520161517e565b60a08301525191829182611049565b3461033d5760408060031936011261033d57600490813561119f8161032c565b6024356001600160401b03811161033d576111bd9036908501610379565b906111c66149df565b6111ce6158c2565b6111df6111db3385615dde565b1590565b6112f7576111f08282959395615941565b6001600160a01b0383169160005b85811061120f5761049c6001606555565b61121a818785614a7d565b35602080611229848a88614a7d565b013584611237858b89614a7d565b013591611244848a615d53565b811515806112ed575b6112cc578288926112ac7fa3f36b03a37e1948b5a4d52ddc1d9f62ab7d4e887e3a0a03e0c68d40f6075f3f9361129b88610c958f6112c79c9b9a61128f61143d565b9588875286015261452f565b906020600191805184550151910155565b8751908152602081019190915280604081015b0390a36143f0565b6111fe565b8551639359452360e01b8152808c0184815242602082015281906040010390fd5b504283111561124d565b8351600162bed83560e01b0319815280610f8e3386838a016142f9565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161133d57604052565b611314565b604081019081106001600160401b0382111761133d57604052565b608081019081106001600160401b0382111761133d57604052565b60c081019081106001600160401b0382111761133d57604052565b61014081019081106001600160401b0382111761133d57604052565b60e081019081106001600160401b0382111761133d57604052565b61012081019081106001600160401b0382111761133d57604052565b602081019081106001600160401b0382111761133d57604052565b606081019081106001600160401b0382111761133d57604052565b90601f801991011681019081106001600160401b0382111761133d57604052565b6040519061035082611342565b6040519061035082611393565b60405190610350826113ca565b60405190610350826113af565b6040519061035082611378565b604051906101a082018281106001600160401b0382111761133d57604052565b6001600160401b03811161133d57601f01601f191660200190565b604036600319011261033d576004356114d18161032c565b602435906001600160401b03821161033d573660238301121561033d578160040135906114fd8261149e565b9161150b604051938461141c565b808352366024828601011161033d57602081600092602461049c97018387013784010152613aef565b600091031261033d57565b3461033d57600036600319011261033d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361159957604051600080516020615fea8339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b3461033d57604036600319011261033d5761162460043561161f8161032c565b614568565b6024356000526020526020604060002054604051908152f35b3461033d5760206107086116503661067a565b6001600160a01b0392831660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d51286526040808220938252928652828120919093168352602052902090565b3461033d576116ad36610bd7565b90916116b76149df565b6116c46111db3383615dde565b611775576116d28284615e75565b60005b8281106116e65761049c6001606555565b806116f5611770928587614a35565b3561172261171661170983610c95886145a1565b546001600160a01b031690565b6001600160a01b031690565b15610cfa5761173c61173782610c95876145a1565b614a45565b6001600160a01b0384167fda6836b3af7ccd9683b9c04bdbe253e29f59637fae61c508b62142e0c45b6dea600080a36143f0565b6116d5565b604051600162bed83560e01b03198152908190610f8e903390600484016142f9565b81516001600160a01b031681526101408101929161035091906020818101516001600160a01b0316908301526040818101516001600160a01b0316908301526060818101516001600160a01b0316908301526080818101516001600160a01b03169083015260a0818101516001600160a01b03169083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120908101516001600160a01b0316910152565b3461033d57600080600319360112611a9157610a1a90611a8560405161188381611393565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015261010092808483015261012080920152611a546118cb61144a565b600080516020615faa833981519152546001600160a01b0316815293600080516020615fca83398151915254611915906001600160a01b03165b6001600160a01b03166020870152565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d502546001600160a01b031660408601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d503546001600160a01b031660608601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d504546001600160a01b031660808601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d505546001600160a01b031660a086015260008051602061606a833981519152546001600160a01b031660c08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d507546001600160a01b031660e08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d508546001600160a01b031690850152565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d509546001600160a01b031690830152565b60405191829182611797565b80fd5b3461033d57602036600319011261033d57600435611ab18161032c565b611ab961369b565b611ac281615bd4565b611acb816136f3565b6001600160a01b031678434845434b4f55545f455845435554494f4e5f4d4f44554c4560381b60008051602061600a833981519152600080a3005b604060031982011261033d57600435611b1e8161032c565b916024356001600160401b039283821161033d578060238301121561033d57816004013593841161033d5760248460061b8301011161033d576024019190565b3461033d57611b6c36611b06565b611b779291926149df565b611b7f6158c2565b611b8c6111db3384615dde565b611c3557611b9a8184615988565b60005b818110611bae5761049c6001606555565b80611bbd611c30928487614a8d565b35611bc88186615d53565b602080611bd684878a614a8d565b0135611be583610c9589614568565b55611bf1838689614a8d565b60405191013581526001600160a01b038616907f2f2a73977f9734e3b74f4efe888b44cdcca6903d8ab2b5be49c3969cc6cb1b629080602081016112bf565b611b9d565b604051600162bed83560e01b0319815280610f8e3385600484016142f9565b906106a3916020815260018060a01b0380835116602083015260208301511660408201526040820151606082015260608201516080820152608082015160a082015260c0611cb160a084015160e083850152610100840190610fd5565b9201519060e0601f1982850301910152611012565b3461033d5760408060031936011261033d5780610a1a91600435611ce98161032c565b611d25825191611cf8836113af565b606060c0600094858152856020820152858782015285838201528560808201528260a082015201526145a1565b60243582526020522090611d986006825193611d40856113af565b80546001600160a01b031685526001810154611d64906001600160a01b0316611905565b6002810154848601526003810154606086015260048101546080860152611d8d60058201615126565b60a08601520161517e565b60c08301525191829182611c54565b3461033d57600080600319360112611a9157611dc161369b565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b60608060031936011261033d5760043590611e1f8261032c565b60243590611e2c8261032c565b6044356001600160401b03811161033d57611e4c84913690600401610711565b92611e556149df565b611e5d6158c2565b60018060a01b03938460008051602061602a83398151915254169581604095865197602093637777e6d760e01b858b01528160848b01931660248b01521660448901528460648901525260a486019360a48360051b8801019581956000925b858410611edb576104918a8c61048c828d03601f19810184528361141c565b909192939495969760a3198a82030183528835607e198336030181121561033d5786611f396001938b611f28878596018035845285810135868501528a8101358b85015282810190614dab565b919092608080928201520191614ddf565b9a019301940192919695949390611ebc565b3461033d57602036600319011261033d57600435611f688161032c565b611f7061369b565b611f7981615ac0565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d576040516362cd1f1560e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457612012575b507653504143455f4f50455241544f525f524547495354525960481b60008051602061600a833981519152600080a3005b8061059861201f9261132a565b38611fe1565b3461033d57604036600319011261033d576116246004356120458161032c565b6145da565b8015150361033d57565b3461033d57602036600319011261033d577fae6fb668d2dacbb6cc6e620b898a7166d67d7838c94ddeff2dbdf55995e9b19260206004356120948161204a565b61209c61369b565b151560008051602061604a83398151915260ff1981541660ff8316179055604051908152a1005b3461033d57600036600319011261033d576033546040516001600160a01b039091168152602090f35b3461033d57600036600319011261033d57600080516020615f8a833981519152546040516001600160a01b039091168152602090f35b3461033d57602036600319011261033d5760043561213f8161032c565b61214761369b565b61215081615bd4565b61215981613721565b6001600160a01b03167554524144455f455845435554494f4e5f4d4f44554c4560501b60008051602061600a833981519152600080a3005b3461033d57600036600319011261033d57602060405160328152f35b3461033d57602036600319011261033d576004356121ca8161032c565b6121d261369b565b6121db81615b02565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d57604051631d1d389760e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457612265575b50675041594d454e545360c01b60008051602061600a833981519152600080a3005b806105986122729261132a565b38612243565b3461033d57600036600319011261033d57602060ff60008051602061604a83398151915254166040519015158152f35b60c036600319011261033d57600480356122c18161032c565b602435604435926122d18461032c565b606435916084359160a435956122e56149df565b6122ed6158c2565b6122f686615c0a565b73__$11854c5905aa23948096e0e4d7059bb9de$__92833b1561033d57604094855198635e157ccf60e11b8a526000998a8180612335888a8301614313565b03818a5af480156105a457612737575b508715612727578115612717578015158061270d575b6126eb57906123b29161236e828a61464c565b9960208b612393611716600080516020615fca8339815191525460018060a01b031690565b8b516361fe24a960e11b81528a81019283529687928391829160200190565b03915afa9384156105a4578c946126ca575b5060008051602061606a83398151915254895163470d6ed960e11b81528881018d8152909c916001600160a01b0316908d90819003602001815a93602094fa9b8c156105a4578d9c6126a9575b50848c11612687578461242391614b91565b998c893b15611a91578a516338fa83e760e01b8152600080516020615faa8339815191528a82019081526001600160a01b038a166020820152604081019d909d529b8c90819060600103818c5af49a8b156105a4578d9b612674575b50868661248b84614613565b60009182526020908152604080832033845282528083206001600160a01b03949094168352929052206124bd90614b9e565b9b6124c6611457565b6001600160a01b038916815290826020830152858c8301528560608301528660808301528660a08301528060c083015260e08201528361010082015287338861250e86614613565b6000918252602090815260408083206001600160a01b03948516845282528083209490931682529290925290206125b19190815181546001600160a01b0319166001600160a01b0390911617815590600890610100906020810151600185015560408101516002850155606081015160038501556080810151600485015560a0810151600585015560c0810151600685015560e081015160078501550151910155565b89516001600160a01b03888116825260208201929092526040810194909452606084019490945260808301919091529091169033907ec827db726736dd1c3f5c4643456d97cc22d1613afeae6f8576124e65e8e1bc9060a090a4602086015193808701519660800151843b1561267057612640915197889687958695634c4c261960e01b875233918701614c10565b03915af480156105a45761265d575b5061265a6001606555565b80f35b8061059861266a9261132a565b3861264f565b8680fd5b806105986126819261132a565b3861247f565b8951639bdfbb5160e01b8152808901868152602081018e905281906040010390fd5b6126c3919c5060203d602011610fce57610fbf818361141c565b9a38612411565b6126e491945060203d602011610fce57610fbf818361141c565b92386123c4565b8651633312a4fd60e21b81528086019182524260208301529081906040010390fd5b504281111561235b565b865163c6b949a960e01b81528590fd5b865163473ae14d60e01b81528590fd5b806105986127449261132a565b38612345565b3461033d5761010036600319011261033d576004356127688161032c565b604435906127758261032c565b6064356127818161032c565b6001600160401b039260c43584811161033d576127a2903690600401610711565b9160e43595861161033d576127be61049c963690600401610711565b95909460a435926084359260243590614e03565b9060a060031983011261033d576004356127eb8161032c565b916024356127f88161032c565b91604435916001600160401b039081841161033d578060238501121561033d5783600401359382851161033d578160248660071b8301011161033d57602401939260643583811161033d578261285091600401610711565b9390939260843591821161033d57610c0f91600401610711565b3461033d57612878366127d2565b969492939091956128876149df565b61288f6158c2565b61289886615c0a565b6128a56111db3388615dde565b612aae576128b382856158ed565b73__$11854c5905aa23948096e0e4d7059bb9de$__97883b1561033d57604093845199635e157ccf60e11b8b5260009a8b81806128f38860048301614313565b0381855af480156105a457612a9b575b508a813b15611a91578284928c8b6129308b51968795869485946376fb859760e01b865260048601614345565b03915af480156105a457612a88575b50895b848110612954578a61265a6001606555565b8888888888888f888a916129698a868961441a565b3597612975898b615d53565b8a602087898b848461298882868561441a565b0135936129949261441a565b0135898c60609586926129a69261441a565b0135906129b1611464565b338152926001600160a01b038b1684860152838d01528483015260808201526129db368686614446565b60a08201528b8d6129ed368a8a61449e565b60c08401526129fb906145a1565b60009182526020526040902090612a119161483d565b612a1c8d898c61441a565b0135988c89612a2c828b8561441a565b013598612a389261441a565b01359651968796339b600160a01b600190031699612a569789614999565b037f4c048dfd080dcfa2cccc41ef603e5f0ed6602ca215a41581d653aadf841a560b91a4612a83906143f0565b612942565b80610598612a959261132a565b3861293f565b80610598612aa89261132a565b38612903565b604051600162bed83560e01b0319815280610f8e3389600484016142f9565b3461033d5760408060031936011261033d57612b07600435612aee8161032c565b600060208451612afd81611342565b828152015261452f565b602435600052602052806000208151612b1f81611342565b60206001835493848452015491019081528251918252516020820152f35b3461033d57600036600319011261033d5760008051602061608a833981519152546040516001600160a01b039091168152602090f35b3461033d57612b8136611b06565b612b8c9291926149df565b612b946158c2565b612ba16111db3384615dde565b611c3557612baf8184615988565b60005b818110612bc35761049c6001606555565b80612bd2612c45928487614a8d565b35612bdd8186615d53565b602080612beb84878a614a8d565b0135612bfa83610c95896145da565b55612c06838689614a8d565b60405191013581526001600160a01b038616907feead0384c6f48c02c0099b2433359d43617492f06d8e3a59cbe786b9970f7e619080602081016112bf565b612bb2565b3461033d57600036600319011261033d576020604051604b8152f35b3461033d57602036600319011261033d57600435612c838161032c565b612c8b61369b565b612c9481615bb2565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d576040516328b80cf560e21b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457612d2c575b507522a92199182fa0a8282927ab20a62fa6a0a720a3a2a960511b60008051602061600a833981519152600080a3005b80610598612d399261132a565b38612cfc565b3461033d57602036600319011261033d57600435612d5c8161032c565b612d6461369b565b612d6d81615bb2565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d57604051631f1afd0d60e01b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457612e06575b507622a9219b9918afa0a8282927ab20a62fa6a0a720a3a2a960491b60008051602061600a833981519152600080a3005b80610598612e139261132a565b38612dd5565b3461033d57608036600319011261033d57610a1a600435612e398161032c565b612ec5604435612e488161032c565b610ca460643591612e588361032c565b6040805195612e66876113ca565b612ea56000918289528260208a015282848a01528260608a01528260808a01528260a08a01528260c08a01528260e08a015282610100809a0152614613565b6024358252602052209060018060a01b0316600052602052604060002090565b906008612ed0611457565b8354909390612ef0906001600160a01b03165b6001600160a01b03168552565b60018101546020850152600281015460408501526003810154606085015260048101546080850152600581015460a0850152600681015460c0850152600781015460e08501520154908201526040519182918291909161012081019260018060a01b0381511682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080910151910152565b3461033d57602036600319011261033d57600435612fc78161032c565b612fcf61369b565b612fd881615b35565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d57604051632867932b60e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457613071575b5076415050524f5645445f544f4b454e5f524547495354525960481b60008051602061600a833981519152600080a3005b8061059861307e9261132a565b38613040565b3461033d576130a36130953661067a565b9161309e6149df565b614c56565b6001606555005b3461033d57600036600319011261033d5760008051602061602a833981519152546040516001600160a01b039091168152602090f35b3461033d57602036600319011261033d576004356130fd8161032c565b61310561369b565b61310e81615b77565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d57604051632d8b49e160e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a4576131a0575b506f5354414b494e475f53455454494e475360801b60008051602061600a833981519152600080a3005b806105986131ad9261132a565b38613176565b3461033d57602036600319011261033d576004356131d08161032c565b6131d861369b565b6001600160a01b038116156131f05761049c9061377d565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461033d57613252366127d2565b90613262979296939594976149df565b61326a6158c2565b61327488866158ed565b73__$11854c5905aa23948096e0e4d7059bb9de$__3b1561033d57604051635e157ccf60e11b8152600081806132ad8860048301614313565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af480156105a457613617575b5073__$11854c5905aa23948096e0e4d7059bb9de$__3b1561033d576040516376fb859760e01b81526000818061330e86868d8d60048601614345565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af480156105a457613604575b5061333c83615c0a565b60008051602061608a8339815191525461338090602090613365906001600160a01b0316611716565b6040518093819263e985e9c560e01b835233600484016142f9565b03816001600160a01b0388165afa9081156105a4576000916135d5575b50156135b95760005b8881106133b75761049c6001606555565b6133c2818a8861441a565b35868a60606133f08560406133e7828660206133df83838c61441a565b01359861441a565b0135938c61441a565b013582156135a7578115613595578015158061358b575b61356b57604051627eeac760e11b8152336004820152602481018590526020816044816001600160a01b038d165afa9081156105a45760009161354c575b5082811061350f57507fe4cf997ce4def583f8220b51e6c89b5dbf6eeded5de4d1d78884a25d2bf46d5d8392896135028f8f8c918f97918d926134eb8a61350a9f9e9d8e6134e6916134a7613498611471565b6001600160a01b039095168552565b60208401528b60408401528460608401526134c3368888614446565b60808401526134d3368a8a61449e565b60a0840152610ca43391610c958d6144f6565b614abd565b60405197889760018060a01b03169b339b89614999565b0390a46143f0565b6133a6565b604051636906ef1760e11b81523360048201526001600160a01b038a1660248201526044810186905260648101849052608481019190915260a490fd5b613565915060203d602011610fce57610fbf818361141c565b38613445565b6040516346a836ff60e11b81526004810191909152426024820152604490fd5b5042811115613407565b60405163c6b949a960e01b8152600490fd5b6040516331cc996d60e11b8152600490fd5b60405163d65b0d6960e01b815280610f8e8533600484016142f9565b6135f7915060203d6020116135fd575b6135ef818361141c565b810190614aa8565b3861339d565b503d6135e5565b806105986136119261132a565b38613332565b806105986136249261132a565b386132d1565b3461033d57602036600319011261033d576004356136478161032c565b61364f61369b565b61365881615bb2565b6001600160a01b031661366a8161374f565b7722a92198989a9aafa0a8282927ab20a62fa6a0a720a3a2a960411b60008051602061600a833981519152600080a3005b6033546001600160a01b031633036136af57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600080516020615f8a83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60008051602061602a83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60008051602061608a83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b156137cd57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561382e57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b9081602091031261033d575190565b6040513d6000823e3d90fd5b156138aa57565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b60809060208152602e60208201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960408201526d6f6e206973206e6f74205555505360901b60608201520190565b803b1561398557600080516020615fea83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b906139ea82613950565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613a94575b613a2c575050565b613a919160008060405193613a4085611401565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020860152660819985a5b195960ca1b6040860152602081519101845af4613a8b613bfa565b91613c2a565b50565b506000613a24565b90613aa682613950565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613ae757613a2c575050565b506001613a24565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169290613b28308514156137c6565b613b45600080516020615fea833981519152948286541614613827565b613b4d61369b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615613b835750506103509150613950565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181613bda575b50613bc75760405162461bcd60e51b815280610f8e60048201613901565b61035093613bd591146138a3565b613a9c565b613bf391925060203d8111610fce57610fbf818361141c565b9038613ba9565b3d15613c25573d90613c0b8261149e565b91613c19604051938461141c565b82523d6000602084013e565b606090565b91929015613c8c5750815115613c3e575090565b3b15613c475790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015613c9f5750805190602001fd5b60405162461bcd60e51b815260206004820152908190610f8e906024830190610787565b9a98969492909160ff9c9a989694926000549d8e60081c1615809e819f613dec575b8115613dcc575b5015613d7057613d129c8e613d09600160ff196000541617600055565b613d57576140b0565b613d1857565b613d2861ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b613d6b61010061ff00196000541617600055565b6140b0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b15915081613dde575b5038613cec565b6001915060ff161438613dd7565b600160ff8216109150613ce5565b51906103508261032c565b908161014091031261033d57613e1961144a565b90613e2381613dfa565b8252613e3160208201613dfa565b6020830152613e4260408201613dfa565b6040830152613e5360608201613dfa565b6060830152613e6460808201613dfa565b6080830152613e7560a08201613dfa565b60a0830152613e8660c08201613dfa565b60c0830152613e9760e08201613dfa565b60e0830152610100613eaa818301613dfa565b90830152613ebc610120809201613dfa565b9082015290565b8051600080516020615faa83398151915280546001600160a01b03199081166001600160a01b03938416179091556020830151600080516020615fca8339815191528054831691841691909117905560408301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5028054831691841691909117905560608301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5038054831691841691909117905560808301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5048054831691841691909117905560a08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5058054831691841691909117905560c083015160008051602061606a8339815191528054831691841691909117905560e08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d507805483169184169190911790556101008301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50880549092169083161790556101209091015161035091167f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50980546001600160a01b0319166001600160a01b03909216919091179055565b95909691999b9a9893946141ac9561014099946141398f8f908f8f90614134928f8f926140eb6140f0926140e661413496615a82565b6159cf565b615ac0565b6140f987615a0e565b61410288615b02565b61410b89615b35565b6141148a615b77565b61411d8b615a47565b6141268c615bb2565b61412f8d615bb2565b615bb2565b615bd4565b60405163ef8c824960e01b81526001600160a01b03998a16600482015299891660248b01529b881660448a01529a87166064890152998616608488015298851660a487015297841660c486015296831660e485015295821661010484015294166101248201529283908190610144820190565b038173__$c98ca6a62396e5a7a1471db151198a1f31$__5af480156105a457614200946141e86141f6926141fb95600091614218575b50613ec3565b6001600160a01b031661374f565b613721565b6136f3565b6142086142a9565b6142106142dd565b6103506142cc565b61423c91506101403d61014011614242575b614234818361141c565b810190613e05565b386141e2565b503d61422a565b1561425057565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b6142c360ff60005460081c166142be81614249565b614249565b6103503361377d565b61035060ff60005460081c16614249565b6142f260ff60005460081c166142be81614249565b6001606555565b6001600160a01b0391821681529116602082015260400190565b600080516020615faa83398151915281526001600160a01b03909116602082015260400190565b60ff81160361033d57565b909293918060408301604084525260608201939060005b8181106143ad57505050808303602091820152818352918201929160005b828110614388575050505090565b90919293828060019260ff883561439e8161433a565b1681520195019392910161437a565b9091939460019085356143bf8161032c565b60a083901b839003168152602090810196950192910161435c565b634e487b7160e01b600052601160045260246000fd5b60001981146143ff5760010190565b6143da565b634e487b7160e01b600052603260045260246000fd5b919081101561442a5760071b0190565b614404565b6001600160401b03811161133d5760051b60200190565b92916144518261442f565b9161445f604051938461141c565b829481845260208094019160051b810192831161033d57905b8282106144855750505050565b83809183356144938161032c565b815201910190614478565b92916144a98261442f565b916144b7604051938461141c565b829481845260208094019160051b810192831161033d57905b8282106144dd5750505050565b83809183356144eb8161433a565b8152019101906144d0565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5136020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5116020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5146020526040902090565b818102929181159184041417156143ff57565b81811061466a575050565b6000815560010161465f565b80546000825580614685575050565b6103509160005260206000209081019061465f565b90600160401b811161133d578154908083558181106146b857505050565b610350926000526020600020918201910161465f565b805460008255806146dd575050565b61035091600052601f6020600020910160051c81019061465f565b90600160401b811161133d57815481835580821061471557505050565b61035092600052601f6020600020918180850160051c8401941680614741575b500160051c019061465f565b600019908186019182549160200360031b1c16905538614735565b9080516001600160401b03811161133d5761477781846146f8565b61478b602080930193600052602060002090565b908060051c9260005b8481106148075750601f19821690910390816147b2575b5050505050565b9390600094855b8281106147d05750505050015538808080806147ab565b90919295826147fc600192846147e78b5160ff1690565b919060ff809160031b9316831b921b19161790565b9701939291016147b9565b6000805b83811061481f575084820155600101614794565b9690836148346001928a6147e7865160ff1690565b9201970161480b565b815181546001600160a01b0319166001600160a01b03918216178255909190602082810151600185810180549285166001600160a01b03166001600160a01b03199093169290921790915591604084015160028601556060840151600386015560808401516004860155600585019060a0850151928351936001600160401b03851161133d5781906148cf868661469a565b0192600052806000209160005b8581106148fc575050505050505090600660c0610350930151910161475c565b84518216848201559382019386016148dc565b91908082526020809201929160005b82811061492c575050505090565b90919293828060019287356149408161032c565b848060a01b0316815201950191019291909261491e565b91908082526020809201929160005b828110614974575050505090565b90919293828060019260ff883561498a8161433a565b16815201950193929101614966565b9694926106a39896926149d1959260018060a01b0316895260208901526040880152606087015260c0608087015260c086019161490f565b9260a0818503910152614957565b6002606554146149f0576002606555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b919081101561442a5760051b0190565b6006610350916000815560006001820155600060028201556000600382015560006004820155614a7760058201614676565b016146ce565b919081101561442a576060020190565b919081101561442a5760061b0190565b51906103508261204a565b9081602091031261033d57516106a38161204a565b815181546001600160a01b0319166001600160a01b039182161782559091906020808301519160019283860155604084015160028601556060840151600386015560048501906080850151928351936001600160401b03851161133d578190614b26868661469a565b0192600052806000209160005b858110614b53575050505050505090600560a0610350930151910161475c565b8451821684820155938201938601614b33565b60056103509160008155600060018201556000600282015560006003820155614a7760048201614676565b919082018092116143ff57565b906008614ba9611457565b8354909390614bc0906001600160a01b0316612ee3565b60018101546020850152600281015460408501526003810154606085015260048101546080850152600581015460a0850152600681015460c0850152600781015460e08501520154610100830152565b600080516020615faa83398151915281526001600160a01b039182166020820152911660408201526060810191909152608081019190915260a081019190915260c00190565b919091614c88614c8383610ca4614c7087610c9587614613565b3360009081526020919091526040902090565b614b9e565b60408101938451156147ab57614ce2614cac85610ca433610ca486610c958a614613565b60086000918281558260018201558260028201558260038201558260048201558260058201558260068201558260078201550155565b60208281018051875160809586018051604080516001600160a01b038c81168252978101959095528401929092526060830191909152959194919092169133917fb00a321de530b83262da5c2b572508a21b98c8d189dba9939e0359e8c9fbfeac91a473__$11854c5905aa23948096e0e4d7059bb9de$__90519351915193813b1561033d57600093614d8d60405196879586948594634c4c261960e01b8652339060048701614c10565b03915af480156105a457614d9e5750565b806105986103509261132a565b9035601e198236030181121561033d5701602081359101916001600160401b03821161033d578160051b3603831361033d57565b81835290916001600160fb1b03831161033d5760209260051b809284830137010190565b969297959390989491614e146149df565b614e1c6158c2565b60008051602061602a8339815191525460405163b8e6b50f60e01b60208201526001600160a01b03998a166024820152604481019b909b5290881660648b015297871660848a015260a489015260c488015261010060e48801529490931694938493614e8d9161012486019161490f565b9060231984830301610104850152614ea492614957565b03601f1981018252614eb6908261141c565b614ebf9161586f565b506103506001606555565b51906103508261433a565b5190600682101561033d57565b51906001600160e01b03198216820361033d57565b81601f8201121561033d578051614f0d8161149e565b92614f1b604051948561141c565b8184526020828401011161033d576106a39160208085019101610764565b81601f8201121561033d57805190614f508261442f565b92604092614f608451958661141c565b808552602093848087019260051b8501019383851161033d57858101925b858410614f8f575050505050505090565b83516001600160401b039081811161033d578301916101a09283601f19828a03011261033d57614fbd61147e565b908a8101518252614fcf878201614eca565b8b830152606094614fe1868301613dfa565b88840152608095868301519084015260a095614ffe878401613dfa565b9084015260c095615010878401613dfa565b9084015260e09586830151908401526101009586830151908401526101209561503a878401614a9d565b908401526101409561504d878401614ed5565b9084015261016095615060878401614ee2565b90840152610180918281015195861161033d578c966150848c898099850101614ef7565b90850152015190820152815201930192614f7e565b9060208282031261033d5781516001600160401b039283821161033d5701908181039260a0841261033d576080604051946150d386611342565b1261033d576040516150e48161135d565b835181526020840151602082015260408401516040820152606084015160608201528452608083015190811161033d5761511e9201614f39565b602082015290565b9060405191828154918282526020928383019160005283600020936000905b82821061515b575050506103509250038361141c565b85546001600160a01b031684526001958601958895509381019390910190615145565b906040805180938054926151a5615199858560209181520190565b92600052602060002090565b9360005b81601f8201106155c1576103509554928282106155ab575b828210615591575b828210615577575b82821061555d575b828210615543575b828210615529575b82821061550f575b8282106154f5575b8282106154de575b508181106154c6575b8181106154ae575b818110615496575b81811061547e575b818110615466575b81811061544e575b818110615436575b81811061541e575b818110615406575b8181106153ee575b8181106153d6575b8181106153be575b8181106153a6575b81811061538e575b818110615376575b81811061535e575b818110615346575b81811061532e575b818110615316575b8181106152fe575b8181106152e6575b8181106152ce575b106152c0575b50038361141c565b60f81c8152602001386152b8565b60f083901c60ff1684529260019060200193016152b2565b60e883901c60ff1684529260019060200193016152aa565b60e083901c60ff1684529260019060200193016152a2565b60d883901c60ff16845292600190602001930161529a565b60d083901c60ff168452926001906020019301615292565b60c883901c60ff16845292600190602001930161528a565b60c083901c60ff168452926001906020019301615282565b60b883901c60ff16845292600190602001930161527a565b60b083901c60ff168452926001906020019301615272565b60a883901c60ff16845292600190602001930161526a565b60a083901c60ff168452926001906020019301615262565b609883901c60ff16845292600190602001930161525a565b609083901c60ff168452926001906020019301615252565b608883901c60ff16845292600190602001930161524a565b608083901c60ff168452926001906020019301615242565b607883901c60ff16845292600190602001930161523a565b607083901c60ff168452926001906020019301615232565b606883901c60ff16845292600190602001930161522a565b606083901c60ff168452926001906020019301615222565b605883901c60ff16845292600190602001930161521a565b605083901c60ff168452926001906020019301615212565b604883901c60ff16845292600190602001930161520a565b83901c60ff16845292600190602001930138615201565b603884901c60ff16855290936001906020019401906151f9565b603084901c60ff16855290936001906020019401906151f1565b602884901c60ff16855290936001906020019401906151e9565b602084811c60ff16865291949091600191019401906151e1565b601884901c60ff16855290936001906020019401906151d9565b601084901c60ff16855290936001906020019401906151d1565b600884901c60ff16855290936001906020019401906151c9565b60ff8416855290936001906020019401906151c1565b91935091600161040060209261585f885461585460ff6155e58582851660ff169052565b61582d6156926157dd8d61578d8961573d8e61560a8184018a8d60081c1660ff169052565b61561d8584018a8d60101c1660ff169052565b888b610200606095615638878201858560181c1660ff169052565b61564d6080958585888501921c1660ff169052565b6156f360a097615666898401878760281c1660ff169052565b6156a360c09b61567f8d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b6156b86101208401878760481c1660ff169052565b6156cd6101408401878760501c1660ff169052565b6156e26101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b6157086101a08201858560681c1660ff169052565b61571d6101c08201858560701c1660ff169052565b6157326101e08201858560781c1660ff169052565b01921c1660ff169052565b6157526102208c01888b60881c1660ff169052565b6157676102408c01888b60901c1660ff169052565b61577c6102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b6157a26102a08a01868960a81c1660ff169052565b6157b76102c08a01868960b01c1660ff169052565b6157cc6102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b6157f26103208801848760c81c1660ff169052565b6158076103408801848760d01c1660ff169052565b61581c6103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b6158426103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b01950191019186939194926151a9565b6000918291602082519201905af4615885613bfa565b901561588e5790565b80511561589d57602081519101fd5b60405163d4c4c23d60e01b815260206004820152908190610f8e906024830190610787565b60ff60008051602061604a83398151915254166158db57565b60405163ab35696f60e01b8152600490fd5b6158f682615f0e565b60015b82811061590557505050565b6000198101908082116143ff5761593761592361593c93868661441a565b3561592f83878761441a565b359083615f50565b6143f0565b6158f9565b61594a82615f0e565b60015b82811061595957505050565b6000198101908082116143ff57615937615977615983938686614a7d565b3561592f838787614a7d565b61594d565b61599182615f0e565b60015b8281106159a057505050565b6000198101908082116143ff576159376159be6159ca938686614a8d565b3561592f838787614a8d565b615994565b6001600160a01b0316156159df57565b60405163602d6df560e01b8152734d41524b4554504c4143455f53455454494e475360601b6004820152602490fd5b6001600160a01b031615615a1e57565b60405163602d6df560e01b81526d524f59414c54595f454e47494e4560901b6004820152602490fd5b6001600160a01b031615615a5757565b60405163602d6df560e01b81526f5354414b494e475f524547495354525960801b6004820152602490fd5b6001600160a01b031615615a9257565b60405163602d6df560e01b8152724e4554574f524b5f42454e454649434941525960681b6004820152602490fd5b6001600160a01b031615615ad057565b60405163602d6df560e01b81527653504143455f4f50455241544f525f524547495354525960481b6004820152602490fd5b6001600160a01b031615615b1257565b60405163602d6df560e01b8152675041594d454e545360c01b6004820152602490fd5b6001600160a01b031615615b4557565b60405163602d6df560e01b815276415050524f5645445f544f4b454e5f524547495354525960481b6004820152602490fd5b6001600160a01b031615615b8757565b60405163602d6df560e01b81526f5354414b494e475f53455454494e475360801b6004820152602490fd5b6001600160a01b031615615bc257565b60405163c49074af60e01b8152600490fd5b6001600160a01b03811615908115615c00575b50615bee57565b60405163d94b7f7760e01b8152600490fd5b90503b1538615be7565b803b158015615c3d575b615c1b5750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b808352602482015260248152615c6681611401565b519084617530fa6000513d82615cba575b5081615cb0575b5080615ca0575b80615c91575b15615c14565b50615c9b81615d23565b615c8b565b50615caa81615cc6565b15615c85565b9050151538615c7e565b60201115915038615c77565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b602482015260248152615cf681611401565b5191617530fa6000513d82615d17575b5081615d10575090565b9050151590565b60201115915038615d06565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152615cf681611401565b6040516001620b695760e21b03198152600481018390526020816024816001600160a01b0386165afa9081156105a457600091615dc0575b5015615d95575050565b604051632be7c7f360e01b81526001600160a01b039190911660048201526024810191909152604490fd5b615dd8915060203d8111610fce57610fbf818361141c565b38615d8b565b6000806040516020810190638da5cb5b60e01b825260048152615e0081611342565b5190845afa90615e0e613bfa565b91158015615e6a575b615e48575060208180518101031261033d576020015190615e378261032c565b6001600160a01b0391821691161490565b60405163915b8f1d60e01b81526001600160a01b039091166004820152602490fd5b506020825110615e17565b90615e7f81615f0e565b60015b818110615e8e57505050565b615e99818385614a35565b600019820190358282116143ff57615eb2828587614a35565b351015615ec85750615ec3906143f0565b615e82565b8183615edc615ee393610f8e959688614a35565b3595614a35565b3560405193849363f48f718f60e01b8552600485016040919493926060820195825260208201520152565b8015615f3e57604b8111615f1f5750565b6044906040519063f80a484560e01b82526004820152604b6024820152fd5b60405163c2e5347d60e01b8152600490fd5b909182811115615f5f57505050565b60405163f48f718f60e01b8152600481019290925260248201929092526044810191909152606490fdfe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5005e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d501360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc376c367a1420063e9671cc85404673694901b9db2c20dc84b5acbf060f7ee37a5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50b5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5155e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5065e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50aa2646970667358221220a652df5bd491578dc76ab50c5f6a70f8bd2669050474e0cd6903fad7bb0f4ee064736f6c63430008120033","sourceMap":"1418:25080:75:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;1720:61:75;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;-1:-1:-1;;;1418:25080:75;15956:224;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;15956:224;;1418:25080;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;15869:321;15956:224;;;;;;;;;;;;;;:::i;:::-;15869:321;:::i;:::-;;2536:1:25;1787;2065:22;1787:1;1985:109;2536:1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;20579:26:75;;;:::i;:::-;20616:60;:82;;;;;;1418:25080;;-1:-1:-1;;;20616:82:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;20616:82;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;20616:82;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;20713:78:75;1418:25080;20616:82;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;1418:25080::-;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;21313:20:75;;;:::i;:::-;21344:54;:70;;;;;;1418:25080;;-1:-1:-1;;;21344:70:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;21344:70;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;21344:70;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;21429:66:75;1418:25080;21344:70;;;;;;:::i;:::-;;;;1418:25080;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;18312:80;1418:25080;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;-1:-1:-1;1418:25080:75;;;18312:42;1418:25080;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;18312:80;1418:25080;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;-1:-1:-1;1418:25080:75;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15956:224;1418:25080;-1:-1:-1;;1418:25080:75;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:103:25;;:::i;:::-;1720:61:75;;:::i;:::-;1418:25080;;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;17314:53;;;;17291:85;;;;1418:25080;;;;17291:85;;;;1418:25080;;;;;;;;;;;;;;;;;;;;;;17291:85;;1418:25080;17291:85;17169:264;17291:85;17193:197;17291:85;;;;;;15956:224;;17291:85;;;;;;:::i;17193:197::-;1418:25080;;17169:264;;;;;;;:::i;:::-;2536:1:25;;1787;2065:22;1787:1;1985:109;2536:1;1418:25080:75;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;22635:22:75;;;:::i;:::-;22668:56;:74;;;;;;1418:25080;;-1:-1:-1;;;22668:74:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;22668:74;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;22668:74;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;22757:70:75;1418:25080;22668:74;;;;;;:::i;:::-;;;;1418:25080;;;-1:-1:-1;;1418:25080:75;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;2471:103:25;;;;:::i;:::-;11659:9:75;;;;:::i;:::-;11697:1;11700:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;11722:3:75;11759:12;;11722:3;11759:12;;;;:::i;:::-;1418:25080;11789:50;;;:::i;:::-;11697:1;1418:25080;;;;;;;;;;;11849:10;1418:25080;;;;;;11789:80;;1418:25080;11789:85;11785:132;;11931:78;11938:71;11849:10;11938:59;:50;;;;:::i;:::-;1418:25080;;;;;;;;;;11938:59;1418:25080;;;;;;;;;;;;;;;;11938:71;11931:78;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;11849:10;12028:57;11697:1;;12028:57;11722:3;:::i;:::-;11685:13;;11785:132;11894:8;11722:3;:::i;1418:25080::-;;;;;;-1:-1:-1;;1418:25080:75;;;;1899:2243;1418:25080;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;1899:2243;;:::i;1418:25080::-;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;20217:25:75;;;:::i;:::-;20253:59;:80;;;;;;1418:25080;;-1:-1:-1;;;20253:80:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;20253:80;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;20253:80;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;20348:76:75;1418:25080;20253:80;;;;;;:::i;:::-;;;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1898:6:24;1418:25080:75;;;;1873:80:24;1889:4;1881:23;;;1873:80;:::i;:::-;1963:87;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;1971:30:24;1963:87;:::i;:::-;1303:62:17;;:::i;:::-;1418:25080:75;;;;;;:::i;:::-;-1:-1:-1;1418:25080:75;;971:66:21;;1418:25080:75;;971:66:21;;;3330:17;;;;;;:::i;3232:526::-;1418:25080:75;;;;;;;;971:66:21;;;;;;;3383:63;;1418:25080:75;;3383:63:21;;-1:-1:-1;;3383:63:21;;;3232:526;-1:-1:-1;3379:302:21;;1418:25080:75;;-1:-1:-1;;;3610:56:21;;1418:25080:75;3610:56:21;1418:25080:75;3610:56:21;;;:::i;:::-;;;;3379:302;3737:9;3496:28;3488:82;3496:28;;3488:82;:::i;:::-;3737:9;:::i;3383:63::-;;;;;1418:25080:75;3383:63:21;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1418:25080:75;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15956:224;1418:25080;15956:224;;1418:25080;;;;;;;;:::i;:::-;;;;;19028:69;1418:25080;;;:::i;:::-;;;;;;;19028:50;1418:25080;;;;;;:::i;:::-;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;19028:50;:::i;:::-;1418:25080;;;;;;;;;;;;;;;;;;;;;;19028:69;1418:25080;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;:::i;:::-;2471:103:25;;;:::i;:::-;1720:61:75;;:::i;:::-;6875:47;6876:46;6911:10;6876:46;;:::i;:::-;6875:47;;1418:25080;6875:47;6871:131;;7044:9;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;-1:-1:-1;7085:20:75;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;7107:3:75;7144:12;;;;;:::i;:::-;1418:25080;;7193:12;;;;;;:::i;:::-;:17;1418:25080;7247:12;;;;;;:::i;:::-;:25;1418:25080;7328:7;;;;;:::i;:::-;7354:18;;;:53;;;7107:3;7350:158;;1418:25080;;;;7685:70;1418:25080;7522:68;1418:25080;7522:59;1418:25080;7107:3;1418:25080;;;;;:::i;:::-;;;;;7609:57;;1418:25080;7522:59;:::i;:68::-;1418:25080;;;;;;1787:1:25;;1418:25080:75;;;;1787:1:25;1418:25080:75;;;;;;;;;;;;;;;;;;7685:70;;;;7107:3;:::i;:::-;7070:13;;7350:158;1418:25080;;-1:-1:-1;;;7434:59:75;;;;;1418:25080;;;7477:15;1418:25080;;;;;;;;3610:56:21;;;7354:53:75;7392:15;;7376:31;;;7354:53;;6871:131;1418:25080;;-1:-1:-1;;;;;;6945:46:75;;1418:25080;6945:46;6911:10;1418:25080;6945:46;;;;:::i;1418:25080::-;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;15956:224;;;1418:25080;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;-1:-1:-1;;;;;1418:25080:75;;;;15956:224;1418:25080;-1:-1:-1;;1418:25080:75;;;;:::o;:::-;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;3901:220:24;1418:25080:75;;;;;;;;;;3901:220:24;:::i;1418:25080:75:-;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1418:25080:75;;;;2333:6:24;-1:-1:-1;;;;;1418:25080:75;2324:4:24;2316:23;1418:25080:75;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;18523:52;1418:25080;;;;;:::i;:::-;18523:52;:::i;:::-;1418:25080;;-1:-1:-1;1418:25080:75;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;18768:78;1418:25080;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;-1:-1:-1;1418:25080:75;;;18768:40;1418:25080;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;:::i;:::-;2471:103:25;;;;:::i;:::-;6081:47:75;6082:46;6117:10;6082:46;;:::i;6081:47::-;6077:131;;6235:9;;;;:::i;:::-;6335:1;6338:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;6360:3:75;6397:12;;6360:3;6397:12;;;;:::i;:::-;1418:25080;6427:67;:53;:46;:37;;;;:::i;:46::-;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;6427:53;-1:-1:-1;;;;;1418:25080:75;;;6427:67;;6423:114;;6551:53;6558:46;:37;;;;:::i;:46::-;6551:53;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;6623:50;6335:1;;6623:50;6360:3;:::i;:::-;6323:13;;6077:131;1418:25080;;-1:-1:-1;;;;;;6151:46:75;;1418:25080;;;6151:46;;6117:10;;1418:25080;6151:46;;;:::i;1418:25080::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;-1:-1:-1;;;;;1418:25080:75;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;24346:24:75;;;:::i;:::-;24381:72;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;-1:-1:-1;;;;;;;;;;;;;;;;24468:87:75;1418:25080;;;-1:-1:-1;;1418:25080:75;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;1720:61:75;;:::i;:::-;8663:47;8664:46;8699:10;8664:46;;:::i;8663:47::-;8659:131;;8827:9;;;;:::i;:::-;8865:1;8868:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;8890:3:75;8927:12;;8890:3;8927:12;;;;:::i;:::-;1418:25080;9002:7;;;;:::i;:::-;9088:18;:12;;;;;;:::i;:::-;:18;1418:25080;9024:61;:52;;;;:::i;:61::-;1787:1:25;9168:12:75;;;;;:::i;:::-;1418:25080;;9168:18;;1418:25080;;;-1:-1:-1;;;;;1418:25080:75;;;9125:62;;1418:25080;;;;9125:62;1418:25080;8890:3;8853:13;;8659:131;1418:25080;;-1:-1:-1;;;;;;8733:46:75;;1418:25080;8733:46;8699:10;1418:25080;;8733:46;;;:::i;1418:25080::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15956:224;1418:25080;15956:224;;1418:25080;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17612:57;1418:25080;;;;;;:::i;:::-;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17612:57;:::i;:::-;1418:25080;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1303:62:17;;:::i;:::-;2758:6;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;;;;;;;-1:-1:-1;;;;;1418:25080:75;2806:40:17;1418:25080:75;;2806:40:17;1418:25080:75;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;:::i;:::-;2471:103:25;;;:::i;:::-;1720:61:75;;:::i;:::-;1418:25080;;;;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;;;;;;15468:61;;;;15428:210;;;;1418:25080;;;;;;;15428:210;;1418:25080;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;15341:307;15428:210;;;;;;15956:224;;15428:210;;;;;;:::i;1418:25080::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;20952:29:75;;;:::i;:::-;20992:62;:86;;;;;;1418:25080;;-1:-1:-1;;;20992:86:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;20992:86;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;20992:86;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;21093:83:75;1418:25080;20992:86;;;;;;:::i;:::-;;;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;18063:54;1418:25080;;;;;:::i;:::-;18063:54;:::i;1418:25080::-;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1418:25080:75;;;;24695:32;1418:25080;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;1418:25080:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;;;;;;;;;;;;24695:32;1418:25080;;;;;;;-1:-1:-1;;1418:25080:75;;;;1513:6:17;1418:25080:75;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;24015:21:75;;;:::i;:::-;24047:66;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;-1:-1:-1;;;;;;;;;;;;;;;;24128:81:75;1418:25080;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;1084:2:77;1418:25080:75;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;21617:14:75;;;:::i;:::-;21642:49;:60;;;;;;1418:25080;;-1:-1:-1;;;21642:60:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;21642:60;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;21642:60;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;21717:55:75;1418:25080;21642:60;;;;;;:::i;:::-;;;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;;;-1:-1:-1;;;;;;;;;;;971:66:21;1418:25080:75;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;2471:103:25;;;:::i;:::-;1720:61:75;;:::i;:::-;12386:16;;;:::i;:::-;12475:40;:58;;;;;;1418:25080;;;;971:66:21;;;;12475:58:75;;-1:-1:-1;12475:58:75;;;;;;;;;;:::i;:::-;;;;;;;;;;;;1418:25080;12547:11;;;12543:48;;12605:14;;12601:49;;12664:20;;;:58;;;1418:25080;12660:152;;12844:18;12897:71;12844:18;;;;;:::i;:::-;1418:25080;;;12897:58;1418:25080;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;;;;;12897:58;1418:25080;;-1:-1:-1;;;12897:71:75;;;;;1418:25080;;;;;;;;;;;;;;12897:71;;;;;;;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;1418:25080:75;;;-1:-1:-1;;;12999:63:75;;;;;1418:25080;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;12999:63;;;1418:25080;12999:63;1418:25080;12999:63;;1418:25080;12999:63;;;;;;;;;;;1418:25080;13076:27;;;;13072:124;;13261:28;;;;:::i;:::-;13205:85;;;;;;;1418:25080;;-1:-1:-1;;;13205:85:75;;-1:-1:-1;;;;;;;;;;;13205:85:75;;;1418:25080;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;13205:85;;;;;;;;;;;;;;1418:25080;13330:26;;;;;;:::i;:::-;1418:25080;;;;;;;;;;;;13367:10;1418:25080;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;13475:397;;1418:25080;13475:397;;1418:25080;13475:397;;;;1418:25080;13475:397;1418:25080;13475:397;;1418:25080;13475:397;1418:25080;13475:397;;1418:25080;13475:397;1418:25080;13475:397;;1418:25080;13475:397;1418:25080;13475:397;;1418:25080;971:66:21;13475:397:75;;1418:25080;13475:397;;;;1418:25080;13367:10;;13406:26;;;;:::i;:::-;1418:25080;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;1691:18:77;;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;1787:1:25;1418:25080:75;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13367:10;;13888:141;;1418:25080;;13888:141;1418:25080;14168:19;;1418:25080;14205:22;;;;1418:25080;14245:37;1418:25080;14245:37;1418:25080;14040:256;;;;;;1418:25080;;971:66:21;;;;;;;;;;14040:256:75;;13367:10;14040:256;;;;:::i;:::-;;;;;;;;;;;1418:25080;2536:1:25;;1787;2065:22;1787:1;1985:109;2536:1;1418:25080:75;;14040:256;;;;;;:::i;:::-;;;;;1418:25080;;;13205:85;;;;;;:::i;:::-;;;;13072:124;1418:25080;;-1:-1:-1;;;13126:59:75;;;;;1418:25080;;;;;;;;;;;;;3610:56:21;;;12999:63:75;;;;;1418:25080;12999:63;1418:25080;12999:63;;;;;;;:::i;:::-;;;;;12897:71;;;;;1418:25080;12897:71;1418:25080;12897:71;;;;;;;:::i;:::-;;;;;12660:152;1418:25080;;-1:-1:-1;;;12745:56:75;;;;;1418:25080;;;12785:15;1418:25080;;;;;;;;;3610:56:21;;;12664:58:75;12707:15;;12688:34;;;12664:58;;12601:49;1418:25080;;-1:-1:-1;;;12628:22:75;;1418:25080;;12628:22;12543:48;1418:25080;;-1:-1:-1;;;12567:24:75;;1418:25080;;12567:24;12475:58;;;;;;:::i;:::-;;;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;16203:774;1418:25080;;;;;;:::i;:::-;;;;;;;;;;;;16203:774;;:::i;1418:25080::-;;;-1:-1:-1;;1418:25080:75;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;2471:103:25;;;;;;;;;:::i;:::-;1720:61:75;;:::i;:::-;4590:16;;;:::i;:::-;4621:47;4622:46;4657:10;4622:46;;:::i;4621:47::-;4617:131;;4785:9;;;;:::i;:::-;4805:60;:78;;;;;;1418:25080;;;;971:66:21;;;;4805:78:75;;:34;:78;;;;;;1418:25080;4805:78;;;:::i;:::-;;;;;;;;;;;;1418:25080;4893:74;;;;;;;1418:25080;;;;;4893:74;1418:25080;;971:66:21;;;;;;;;;;4893:74:75;;1418:25080;4893:74;;;:::i;:::-;;;;;;;;;;;1418:25080;4983:13;;4998:20;;;;;;2536:1:25;;1787;2065:22;1787:1;1985:109;5020:3:75;5057:12;;;;;;;;;;;;;;;:::i;:::-;1418:25080;5132:7;;;;;:::i;:::-;5353:18;;:12;;;;;;;;;;:::i;:::-;:18;1418:25080;5400:12;;;;:::i;:::-;:22;1418:25080;5450:21;;;:12;;;;;;:::i;:::-;:21;1418:25080;;;;:::i;:::-;4657:10;1418:25080;;4657:10;-1:-1:-1;;;;;1418:25080:75;;5224:356;;;1418:25080;5224:356;;;1418:25080;5224:356;;;1418:25080;5224:356;;;1418:25080;;;;;;:::i;:::-;5224:356;;;1418:25080;;;;;;;;:::i;:::-;5224:356;;;1418:25080;5155:57;;;:::i;:::-;1418:25080;;;;;;;;;;;;;:::i;:::-;5760:12;;;;;:::i;:::-;:18;1418:25080;5796:12;;;;;;;;:::i;:::-;:22;1418:25080;5836:12;;;;:::i;:::-;:21;1418:25080;;;4657:10;;;;1418:25080;;;;;;;;5600:335;;;;;:::i;:::-;;;;;5020:3;;;:::i;:::-;4983:13;;4893:74;;;;;;:::i;:::-;;;;4805:78;;;;;;:::i;:::-;;;;4617:131;1418:25080;;-1:-1:-1;;;;;;4691:46:75;;1418:25080;4691:46;4657:10;1418:25080;;4691:46;;;:::i;1418:25080::-;;;;;;;;;;;;;17861:59;1418:25080;;;;;:::i;:::-;-1:-1:-1;1418:25080:75;;;;;;:::i;:::-;;;;;;17861:59;:::i;:::-;1418:25080;;-1:-1:-1;1418:25080:75;;;;-1:-1:-1;1418:25080:75;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;1720:61:75;;:::i;:::-;7946:47;7947:46;7982:10;7947:46;;:::i;7946:47::-;7942:131;;8110:9;;;;:::i;:::-;8148:1;8151:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;8173:3:75;8210:12;;8173:3;8210:12;;;;:::i;:::-;1418:25080;8285:7;;;;:::i;:::-;8373:18;:12;;;;;;:::i;:::-;:18;1418:25080;8307:63;:54;;;;:::i;:63::-;1787:1:25;8455:12:75;;;;;:::i;:::-;1418:25080;;8455:18;;1418:25080;;;-1:-1:-1;;;;;1418:25080:75;;;8410:64;;1418:25080;;;;8410:64;1418:25080;8173:3;8136:13;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;1032:2:77;1418:25080:75;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;22958:21:75;;;:::i;:::-;22990:61;:84;;;;;;1418:25080;;-1:-1:-1;;;22990:84:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;22990:84;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;22990:84;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;23089:81:75;1418:25080;22990:84;;;;;;:::i;:::-;;;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;23303:22:75;;;:::i;:::-;23336:62;:86;;;;;;1418:25080;;-1:-1:-1;;;23336:86:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;23336:86;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;23336:86;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;23437:83:75;1418:25080;23336:86;;;;;;:::i;:::-;;;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;;:::i;:::-;19296:82;1418:25080;;;;;:::i;:::-;19296:64;1418:25080;;;;;;:::i;:::-;;;;;;;;:::i;:::-;19296:46;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19296:46;:::i;:::-;1418:25080;;;;;;;;;;;;;;;;;;;;;;;19296:82;1418:25080;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;21933:29:75;;;:::i;:::-;21973:62;:86;;;;;;1418:25080;;-1:-1:-1;;;21973:86:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;21973:86;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;21973:86;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;22074:83:75;1418:25080;21973:86;;;;;;:::i;:::-;;;;1418:25080;;;;2536:1:25;1418:25080:75;;;:::i;:::-;2471:103:25;;;:::i;:::-;2536:1;:::i;:::-;1787;2065:22;1787:1;1418:25080:75;;;;;;;-1:-1:-1;;1418:25080:75;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;22300:22:75;;;:::i;:::-;22333:56;:74;;;;;;1418:25080;;-1:-1:-1;;;22333:74:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;22333:74;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;22333:74;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;22422:70:75;1418:25080;22333:74;;;;;;:::i;:::-;;;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;2402:22:17;1418:25080:75;;2496:8:17;;;:::i;1418:25080:75:-;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;;;;;;:::i;:::-;1720:61:75;;:::i;:::-;9515:9;;;;:::i;:::-;9535:60;:78;;;;1418:25080;;-1:-1:-1;;;9535:78:75;;:34;1418:25080;;9535:78;;1418:25080;9535:78;;;:::i;:::-;;:60;;:78;;;;;;;;1418:25080;9535:60;;9623:74;;;;1418:25080;;-1:-1:-1;;;9623:74:75;;9535:34;1418:25080;;9623:74;;;;;1418:25080;9623:74;;;:::i;:::-;;9535:60;;9623:74;;;;;;;;1418:25080;9732:16;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1418:25080:75;9820:91;;;;9857:53;;-1:-1:-1;;;;;1418:25080:75;;;9857:53;1418:25080;;971:66:21;;;;;;;9820:91:75;;9845:10;1418:25080;9820:91;;;:::i;:::-;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;9820:91;;;;;;;9535:34;9820:91;;;1418:25080;9819:92;;9815:182;;9535:34;10027:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;10049:3:75;10086:12;;;;;:::i;:::-;1418:25080;10136:12;;10247:27;:12;10136;1418:25080;10187:12;10136;;9820:91;10136:12;;;;;:::i;:::-;:18;1418:25080;10187:12;;:::i;:::-;:21;1418:25080;10247:12;;;:::i;:::-;:27;1418:25080;10293:10;;10289:46;;10353:13;;10349:48;;10415:19;;;:56;;;10049:3;10411:161;;1418:25080;;-1:-1:-1;;;10610:38:75;;9845:10;1418:25080;10610:38;;1418:25080;;;;;;;9820:91;1418:25080;;;-1:-1:-1;;;;;1418:25080:75;;10610:38;;;;;;;9535:34;10610:38;;;10049:3;10666:24;;;;10662:158;;1418:25080;11212:292;1418:25080;;;11212:292;1418:25080;;;;;;;;;;;10049:3;1418:25080;;;;10834:71;1418:25080;10908:284;1418:25080;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;;10908:284;9820:91;10908:284;;1418:25080;10908:284;1418:25080;10908:284;;1418:25080;10908:284;10247:27;10908:284;;1418:25080;;;;;;:::i;:::-;10908:284;;;1418:25080;;;;;;:::i;:::-;;10908:284;;1418:25080;10834:59;9845:10;10834:50;;;;:::i;:71::-;1418:25080;:::i;:::-;;;;;;;;;;;;9845:10;;11212:292;;;:::i;:::-;;;;10049:3;:::i;:::-;10012:13;;10662:158;1418:25080;;-1:-1:-1;;;10717:88:75;;9845:10;1418:25080;10717:88;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;3610:56:21;10610:38:75;;;;9820:91;10610:38;9820:91;10610:38;;;;;;;:::i;:::-;;;;10411:161;1418:25080;;-1:-1:-1;;;10498:59:75;;1418:25080;10498:59;;1418:25080;;;;10541:15;1418:25080;;;;;;3610:56:21;10415::75;10456:15;;10438:33;;;10415:56;;10349:48;1418:25080;;-1:-1:-1;;;10375:22:75;;1418:25080;;10375:22;10289:46;1418:25080;;-1:-1:-1;;;10312:23:75;;1418:25080;;10312:23;9815:182;1418:25080;;-1:-1:-1;;;9934:52:75;;1418:25080;9934:52;1418:25080;9845:10;1418:25080;9934:52;;;:::i;9820:91::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;9623:74;;;;;;:::i;:::-;;;;9535:78;;;;;;:::i;:::-;;;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;23655:23:75;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;23689:95;1418:25080;23689:95;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;23799:85:75;1418:25080;1599:130:17;1513:6;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;929:10:34;1662:23:17;1418:25080:75;;1599:130:17:o;1418:25080:75:-;;;;3610:56:21;;;1418:25080:75;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;:::o;2666:187:17:-;2758:6;1418:25080:75;;-1:-1:-1;;;;;1418:25080:75;;;-1:-1:-1;;;;;;1418:25080:75;;;;;;;;;;2806:40:17;-1:-1:-1;;2806:40:17;2666:187::o;1418:25080:75:-;;;;:::o;:::-;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;971:66:21;;;;;;;;;;;:::o;:::-;1418:25080:75;;971:66:21;;;;;;;;;;;:::o;:::-;1418:25080:75;;-1:-1:-1;;;971:66:21;;;;;;;;;;;1418:25080:75;971:66:21;1418:25080:75;;;971:66:21;-1:-1:-1;;;971:66:21;;;;;;;;;;;;;;;;;1418:25080:75;971:66:21;1418:25080:75;;;971:66:21;-1:-1:-1;;;971:66:21;;;;;;:::o;1699:281::-;1713:19:33;;:23;1418:25080:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;1699:281:21:o;1418:25080:75:-;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;2372:276:21;;2171:17;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;2204:27:21;-1:-1:-1;;2204:27:21;1418:25080:75;;2523:15:21;;;:28;;;2372:276;2519:123;;2372:276;;:::o;2519:123::-;7318:69:33;1418:25080:75;-1:-1:-1;1418:25080:75;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;7276:25:33;;;;;;;;;:::i;:::-;7318:69;;:::i;:::-;;2372:276:21:o;2523:28::-;;-1:-1:-1;2523:28:21;;2372:276;;2171:17;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;2204:27:21;;;;1418:25080:75;;2523:15:21;;;:28;;;2519:123;;2372:276;;:::o;2523:28::-;;1418:25080:75;2523:28:21;;1842:226:24;-1:-1:-1;;;;;1898:6:24;1418:25080:75;;;;1873:80:24;1889:4;1881:23;;;1873:80;:::i;:::-;1963:87;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;1971:30:24;1963:87;:::i;:::-;1303:62:17;;:::i;:::-;971:66:21;;1418:25080:75;;971:66:21;;;3330:17;;;;;;:::i;3232:526::-;3383:63;;1418:25080:75;;;;;;971:66:21;;;;;;;3383:63;;1418:25080:75;;3383:63:21;;;;;;;3232:526;-1:-1:-1;3379:302:21;;1418:25080:75;;-1:-1:-1;;;3610:56:21;;1418:25080:75;3610:56:21;3383:63;3610:56;;;:::i;3379:302::-;3737:9;3496:28;3488:82;3496:28;;3488:82;:::i;:::-;3737:9;:::i;3383:63::-;;;;;;;;;;;;;;;:::i;:::-;;;;;1418:25080:75;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1418:25080:75;;;;:::o;:::-;;;:::o;7682:628:33:-;;;;7886:418;;;1418:25080:75;;;7917:22:33;7913:286;;8212:17;;:::o;7913:286::-;1713:19;:23;1418:25080:75;;8212:17:33;:::o;1418:25080:75:-;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;7886:418:33;1418:25080:75;;;;-1:-1:-1;8991:21:33;:17;;9163:142;;;;;;;8987:379;1418:25080:75;;-1:-1:-1;;;9335:20:33;;1418:25080:75;9335:20:33;;;1418:25080:75;;;;;;;;;;;:::i;3246:506:23:-;;;;;;;;1418:25080:75;3246:506:23;;;;;;3302:13;1418:25080:75;;;;;;3301:14:23;3347:34;;;;;;3246:506;3346:108;;;;3246:506;1418:25080:75;;;;3636:1:23;3536:16;;;1418:25080:75;;;3302:13:23;1418:25080:75;;;3302:13:23;1418:25080:75;;3536:16:23;3562:65;;3636:1;:::i;:::-;3647:99;;3246:506::o;3647:99::-;3681:21;1418:25080:75;;3302:13:23;1418:25080:75;;3302:13:23;1418:25080:75;;3681:21:23;1418:25080:75;;3551:1:23;1418:25080:75;;3721:14:23;;1418:25080:75;;3721:14:23;3246:506::o;3562:65::-;3596:20;1418:25080:75;;;3302:13:23;1418:25080:75;;;3302:13:23;1418:25080:75;;3596:20:23;3636:1;:::i;1418:25080:75:-;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;3346:108:23;3426:4;1713:19:33;:23;;-1:-1:-1;1713:23:33;3387:66:23;;3346:108;;;;;3387:66;3452:1;1418:25080:75;;;;3436:17:23;3387:66;;;3347:34;3380:1;1418:25080:75;;;3365:16:23;;-1:-1:-1;3347:34:23;;1691:18:77;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;1691:18:77;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;;;;;;;;;1691:18:77;;;;;1418:25080:75;;;;;;;;;;;;;1691:18:77;;;;;1418:25080:75;;;;;;;;;;;;;1691:18:77;;;;;1418:25080:75;;;;;;;;;;;;;1691:18:77;;;;;1418:25080:75;;;;;;;;;;;;;1691:18:77;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;;;;;;;;;1691:18:77;;;;;1418:25080:75;;;;;;;;;;;;;1691:18:77;;;;;1418:25080:75;;;;;;;;;;;1691:18:77;;;;;;;1418:25080:75;1691:18:77;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;1899:2243;;;;;;;;;;;3471:366;1899:2243;3471:366;1899:2243;;3356:24;1899:2243;;;;;;3299:21;1899:2243;;;;2576:26;2666:29;1899:2243;2489:25;3240:23;1899:2243;2489:25;:::i;:::-;2576:26;:::i;:::-;2666:29;:::i;:::-;2751:20;;;:::i;:::-;2822:14;;;:::i;:::-;2900:29;;;:::i;:::-;2987:22;;;:::i;:::-;3067;;;:::i;:::-;3125:21;;;:::i;:::-;3182:22;;;:::i;:::-;3240:23;:::i;:::-;3299:21;:::i;3356:24::-;1418:25080;;-1:-1:-1;;;3471:366:75;;-1:-1:-1;;;;;1418:25080:75;;;3471:366;;;1418:25080;;;;1691:18:77;;;1418:25080:75;;;;1691:18:77;;;1418:25080:75;;;;1691:18:77;;;1418:25080:75;;;;1691:18:77;;;1418:25080:75;;;;1691:18:77;;;1418:25080:75;;;;1691:18:77;;;1418:25080:75;;;;1691:18:77;;;1418:25080:75;;;;1691:18:77;;;1418:25080:75;;;1691:18:77;;;1418:25080:75;;;;;;1691:18:77;;;;;3471:366:75;;:14;;:366;;;;;;3988:52;3471:366;1691:18:77;3847:75:75;3471:366;3932:46;3471:366;-1:-1:-1;3471:366:75;;;1899:2243;1691:18:77;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;3847:75;:::i;:::-;3932:46;:::i;:::-;3988:52;:::i;:::-;1003:95:17;;:::i;:::-;1868:111:25;;:::i;:::-;1042:67:24;;:::i;3471:366:75:-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;1418:25080;;;;:::o;:::-;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;5328:125:23;5366:69;1418:25080:75;5374:13:23;1418:25080:75;;;;5366:69:23;;;:::i;:::-;;:::i;:::-;1195:12:17;929:10:34;1195:12:17;:::i;5328:125:23:-;5366:69;1418:25080:75;5374:13:23;1418:25080:75;;;;5366:69:23;:::i;5328:125::-;5366:69;1418:25080:75;5374:13:23;1418:25080:75;;;;5366:69:23;;;:::i;:::-;1787:1:25;2065:22;1787:1;5328:125:23:o;1418:25080:75:-;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1418:25080:75;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;11789:32;1418:25080;;;;;;:::o;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;7522:41;1418:25080;;;;;;:::o;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;18523:34;1418:25080;;;;;;:::o;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;6427:19;1418:25080;;;;;;:::o;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;18063:36;1418:25080;;;;;;:::o;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;13330:8;1418:25080;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1418:25080:75;;-1:-1:-1;1418:25080:75;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1418:25080:75;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1691:18:77;;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;1691:18:77;1418:25080:75;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;-1:-1:-1;;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1418:25080:75;;-1:-1:-1;1418:25080:75;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;2580:287:25:-;1830:1;2712:7;1418:25080:75;2712:19:25;1830:1;;;2712:7;1787:1;2580:287::o;1830:1::-;1418:25080:75;;-1:-1:-1;;;1830:1:25;;;;;;;;;;;1418:25080:75;1830:1:25;1418:25080:75;;;1830:1:25;;;;1418:25080:75;;;;;;;;;;;;:::o;:::-;;;;6335:1;1418:25080;;6335:1;1418:25080;;;;6335:1;1418:25080;;;;6335:1;1418:25080;;;;6335:1;1418:25080;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;1691:18:77;;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1418:25080:75;;-1:-1:-1;1418:25080:75;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11697:1;1418:25080;;11697:1;1418:25080;;;;11697:1;1418:25080;;;;11697:1;1418:25080;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1418:25080:75;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14309:825::-;;;;1418:25080;14515:66;:26;:48;:36;:26;;;;:::i;:36::-;14552:10;1418:25080;;;;;;;;;;;;;;14515:66;1418:25080;:::i;:::-;14595:14;;;1418:25080;;;14595:19;14591:32;;14633:73;14640:66;14552:10;14640:48;14552:10;14640:36;:26;;;;:::i;:66::-;1418:25080;14613:1;1418:25080;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14633:73;14856:11;;;;1418:25080;;;;14909:29;;;;1418:25080;;14595:14;1418:25080;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;14909:29;14856:11;;1418:25080;;;;;14552:10;;14722:226;;;14959:48;1418:25080;;;;;;14959:168;;;;;;-1:-1:-1;1418:25080:75;14959:168;14595:14;1418:25080;971:66:21;;;;;;;;;;14959:168:75;;14552:10;14959:168;;;;;:::i;:::-;;;;;;;;;;;14309:825;:::o;14959:168::-;;;;;;:::i;1418:25080::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;:::o;2471:103:25:-;;;;;;;;;;;;:::i;:::-;1720:61:75;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;-1:-1:-1;;;16620:340:75;;;;-1:-1:-1;;;;;1418:25080:75;;;16620:340;;;1418:25080;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16620:340;15956:224;;16620:340;;;;;;;;:::i;:::-;16533:437;;;:::i;:::-;;2536:1:25;1787;2065:22;1787:1;1985:109;1418:25080:75;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;;1418:25080:75;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;15956:224;;;;1418:25080;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;1691:18:77;1418:25080:75;;;1691:18:77;:::i;:::-;1418:25080:75;;;;;;;;;;;;;;;;1691:18:77;1418:25080:75;;;1691:18:77;:::i;:::-;1418:25080:75;;;;;;1691:18:77;1418:25080:75;;;1691:18:77;:::i;:::-;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;-1:-1:-1;1418:25080:75;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24740:408;24885:31;24740:408;;;24885:31;;;;;;;;;;:::i;:::-;24930:8;;24926:195;;24740:408;:::o;24926:195::-;1418:25080;;24958:16;24954:68;;24885:31;25036:75;;;;;24954:68;1418:25080;;-1:-1:-1;;;24983:39:75;;24885:31;24983:39;;;1418:25080;;;;;;;;;;;:::i;25154:110::-;1418:25080;-1:-1:-1;;;;;;;;;;;971:66:21;1418:25080:75;25200:57;;25154:110::o;25200:57::-;1418:25080;;-1:-1:-1;;;25241:16:75;;;;;25270:300;25390:16;;;:::i;:::-;25434:1;25437:20;;;;;;25270:300;;;:::o;25459:3::-;-1:-1:-1;;1418:25080:75;;;;;;;;25532:20;25506:16;25459:3;25506:16;;;;:::i;:::-;1418:25080;25532:12;;;;;:::i;:::-;1418:25080;25532:20;;;:::i;:::-;25459:3;:::i;:::-;25422:13;;25576:310;25706:16;;;:::i;:::-;25750:1;25753:20;;;;;;25576:310;;;:::o;25775:3::-;-1:-1:-1;;1418:25080:75;;;;;;;;25848:20;25822:16;25775:3;25822:16;;;;:::i;:::-;1418:25080;25848:12;;;;;:::i;25775:3::-;25738:13;;25892:300;26012:16;;;:::i;:::-;26056:1;26059:20;;;;;;25892:300;;;:::o;26081:3::-;-1:-1:-1;;1418:25080:75;;;;;;;;26154:20;26128:16;26081:3;26128:16;;;;:::i;:::-;1418:25080;26154:12;;;;;:::i;26081:3::-;26044:13;;4861:177:77;-1:-1:-1;;;;;1418:25080:75;4961:22:77;4957:74;;4861:177::o;4957:74::-;1418:25080:75;;-1:-1:-1;;;4992:39:77;;-1:-1:-1;;;4992:39:77;;;1418:25080:75;;;4992:39:77;4861:177;-1:-1:-1;;;;;1418:25080:75;4961:22:77;4957:74;;4861:177::o;4957:74::-;1418:25080:75;;-1:-1:-1;;;4992:39:77;;-1:-1:-1;;;4992:39:77;;;1418:25080:75;;;4992:39:77;4861:177;-1:-1:-1;;;;;1418:25080:75;4961:22:77;4957:74;;4861:177::o;4957:74::-;1418:25080:75;;-1:-1:-1;;;4992:39:77;;-1:-1:-1;;;4992:39:77;;;1418:25080:75;;;4992:39:77;4861:177;-1:-1:-1;;;;;1418:25080:75;4961:22:77;4957:74;;4861:177::o;4957:74::-;1418:25080:75;;-1:-1:-1;;;4992:39:77;;-1:-1:-1;;;4992:39:77;;;1418:25080:75;;;4992:39:77;4861:177;-1:-1:-1;;;;;1418:25080:75;4961:22:77;4957:74;;4861:177::o;4957:74::-;1418:25080:75;;-1:-1:-1;;;4992:39:77;;-1:-1:-1;;;4992:39:77;;;1418:25080:75;;;4992:39:77;4861:177;-1:-1:-1;;;;;1418:25080:75;4961:22:77;4957:74;;4861:177::o;4957:74::-;1418:25080:75;;-1:-1:-1;;;4992:39:77;;-1:-1:-1;;;4992:39:77;;;1418:25080:75;;;4992:39:77;4861:177;-1:-1:-1;;;;;1418:25080:75;4961:22:77;4957:74;;4861:177::o;4957:74::-;1418:25080:75;;-1:-1:-1;;;4992:39:77;;-1:-1:-1;;;4992:39:77;;;1418:25080:75;;;4992:39:77;4861:177;-1:-1:-1;;;;;1418:25080:75;4961:22:77;4957:74;;4861:177::o;4957:74::-;1418:25080:75;;-1:-1:-1;;;4992:39:77;;-1:-1:-1;;;4992:39:77;;;1418:25080:75;;;4992:39:77;5044:163;-1:-1:-1;;;;;1418:25080:75;5132:30:77;5128:72;;5044:163::o;5128:72::-;1418:25080:75;;-1:-1:-1;;;5171:29:77;;;;;5213:168;-1:-1:-1;;;;;1418:25080:75;;5292:21:77;;:49;;;;5213:168;5288:86;;;5213:168::o;5288:86::-;1418:25080:75;;-1:-1:-1;;;5350:24:77;;;;;5292:49;5317:19;;;:24;5292:49;;;5387:321;5488:28;;:33;:131;;;;5387:321;5471:231;;5387:321;:::o;5471:231::-;1418:25080:75;;-1:-1:-1;;;5651:40:77;;-1:-1:-1;;;;;1418:25080:75;;;5651:40:77;;;1418:25080:75;;;5651:40:77;5488:131;1418:25080:75;4592:71:62;-1:-1:-1;1418:25080:75;;4592:71:62;;;1017:25;;;;4592:71;;;;;;1418:25080:75;4592:71:62;;;;;;:::i;:::-;4784:212;;;;;-1:-1:-1;4784:212:62;;5013:29;;;5488:131:77;5013:48:62;;;;5488:131:77;975:149:62;;;;5488:131:77;1543:81:62;;;5488:131:77;5541:78;5488:131;;1543:81:62;1570:54;;;;:::i;:::-;1543:81;;975:149;1060:64;;;;:::i;:::-;1059:65;975:149;;5013:48;5046:15;;;;5013:48;;;:29;4592:71;-1:-1:-1;5024:18:62;;-1:-1:-1;5013:29:62;;;4421:647;-1:-1:-1;4592:71:62;4421:647;1418:25080:75;;4592:71:62;;;1017:25;;;;4592:71;;1418:25080:75;;;4592:71:62;;;1418:25080:75;4592:71:62;;;;;;:::i;:::-;4784:212;;;;-1:-1:-1;4784:212:62;;5013:29;;;4421:647;5013:48;;;;5006:55;4421:647;:::o;5013:48::-;5046:15;;;;4421:647;:::o;5013:29::-;4592:71;-1:-1:-1;5024:18:62;;-1:-1:-1;5013:29:62;;;4421:647;-1:-1:-1;4592:71:62;4421:647;1418:25080:75;;4592:71:62;;;1017:25;;;;4592:71;;5592:26:77;;;4592:71:62;;;1418:25080:75;4592:71:62;;;;;;:::i;5714:248:77:-;1418:25080:75;;-1:-1:-1;;;;;;5818:58:77;;;;;1418:25080:75;;;5818:58:77;1418:25080:75;;;-1:-1:-1;;;;;1418:25080:75;;5818:58:77;;;;;;;-1:-1:-1;5818:58:77;;;5714:248;5818:63;;5814:142;;5714:248;;:::o;5814:142::-;1418:25080:75;;-1:-1:-1;;;5904:41:77;;-1:-1:-1;;;;;1418:25080:75;;;;5818:58:77;5904:41;;1418:25080:75;;;;;;;;;;3610:56:21;5818:58:77;;;;;;;;;;;;;;:::i;:::-;;;;5968:358;6141:34;1418:25080:75;;;6141:34:77;;;;;;;;;;;;;;;:::i;:::-;6113:63;;;;;;;;:::i;:::-;6190:8;;1418:25080:75;;6190:28:77;;5968:358;6186:77;;1418:25080:75;6141:34:77;1418:25080:75;;;6280:27:77;;1418:25080:75;;;;6141:34:77;6280:27;1418:25080:75;;;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;6280:39:77;;5968:358::o;6186:77::-;1418:25080:75;;-1:-1:-1;;;6227:36:77;;-1:-1:-1;;;;;1418:25080:75;;;6141:34:77;6227:36;;1418:25080:75;6141:34:77;;6227:36;6190:28;1418:25080:75;6141:34:77;1418:25080:75;;6202:16:77;6190:28;;6332:345;;6432:16;;;:::i;:::-;6476:1;6479:20;;;;;;6332:345;;;:::o;6501:3::-;6524:12;;;;;:::i;:::-;-1:-1:-1;;1418:25080:75;;;;;;;;;6540:16:77;;;;;:::i;:::-;1418:25080:75;-1:-1:-1;6524:32:77;6520:141;;6501:3;;;;:::i;:::-;6464:13;;6520:141;6615:16;;;6633:12;6615:16;6583:63;6615:16;;;;:::i;:::-;1418:25080:75;6633:12:77;;:::i;:::-;1418:25080:75;;;6583:63:77;;;;;;;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;6683:202:77;6756:12;;6752:37;;1032:2;6803:24;;6799:79;;6683:202;:::o;6799:79::-;1418:25080:75;;;;6836:42:77;;;;;;;;;1418:25080:75;1032:2:77;1418:25080:75;;;;6836:42:77;6752:37;1418:25080:75;;-1:-1:-1;;;6777:12:77;;;;;7108:254;;;7230:28;;;;7226:130;;7108:254;;;:::o;7226:130::-;1418:25080:75;;-1:-1:-1;;;7281:64:77;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;3610:56:21","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":8952,"length":20},{"start":10421,"length":20},{"start":12918,"length":20},{"start":12977,"length":20},{"start":13012,"length":20},{"start":13074,"length":20},{"start":19783,"length":20}]},"src/v2/utils/MarketConfigV2.sol":{"MarketConfigV2":[{"start":1271,"length":20},{"start":1497,"length":20},{"start":2868,"length":20},{"start":3554,"length":20},{"start":8059,"length":20},{"start":8669,"length":20},{"start":11414,"length":20},{"start":11631,"length":20},{"start":12250,"length":20},{"start":12560,"length":20},{"start":16816,"length":20}]}},"immutableReferences":{"30045":[{"start":3759,"length":32},{"start":5458,"length":32},{"start":15097,"length":32}]}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","MAX_CHECKOUT_SIZE()":"a3eaf4d9","acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":"b8e6b50f","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","cancelMintDirectSales(address,uint256[])":"5e50c42e","cancelOffer(address,uint256,address)":"e92f94d1","cancelSalePrices(address,uint256[])":"2f79f335","checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":"2c0c49ee","getCheckoutExecutionModule()":"9400d601","getDirectSaleConfig(address,uint256)":"6e2f4d8b","getERC1155ApprovalManager()":"c7c83d17","getMarketConfig()":"614bd944","getOffer(address,uint256,address,address)":"e3409ce3","getSalePrice(address,uint256,address)":"369679a4","getTokenAllowListConfig(address,uint256)":"bf3d90f8","getTokenMintLimit(address,uint256)":"8760251a","getTokenMintsPerAddress(address,uint256,address)":"28fbba03","getTokenTxLimit(address,uint256)":"552f791d","getTokenTxsPerAddress(address,uint256,address)":"5a501f8f","getTradeExecutionModule()":"ed5b25b5","initialize(address,address,address,address,address,address,address,address,address,address,address,address,address)":"2fdd983d","isPaused()":"b187bd26","makeOffer(address,uint256,address,uint256,uint256,uint256)":"b38df71f","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7","owner()":"8da5cb5b","prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"be542141","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","setApprovedTokenRegistry(address)":"e4e87e3b","setCheckoutExecutionModule(address)":"63cf9cef","setContractPaused(bool)":"882796f1","setERC1155ApprovalManager(address)":"ff5c83a4","setERC20ApprovalManager(address)":"d7a9fb7c","setERC721ApprovalManager(address)":"d80b23e3","setMarketplaceSettings(address)":"176ab440","setNetworkBeneficiary(address)":"3492e5a8","setPayments(address)":"af231a58","setRoyaltyEngine(address)":"21ede032","setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"ff3a52d4","setSpaceOperatorRegistry(address)":"7f358230","setStakingRegistry(address)":"2c740844","setStakingSettings(address)":"f1035744","setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":"373a9412","setTokenMintLimits(address,(uint256,uint256)[])":"c7ec1b98","setTokenTxLimits(address,(uint256,uint256)[])":"6442950e","setTradeExecutionModule(address)":"a0f597dd","transferOwnership(address)":"f2fde38b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"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\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"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\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CHECKOUT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"acceptOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"cancelMintDirectSales\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"cancelOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"cancelSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem[]\",\"name\":\"_items\",\"type\":\"tuple[]\"}],\"name\":\"checkout\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutSummary\",\"name\":\"summary\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]\",\"name\":\"items\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutExecution\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCheckoutExecutionModule\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDirectSaleConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.DirectSaleConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC1155ApprovalManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"contract IPayments\",\"name\":\"payments\",\"type\":\"address\"},{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IStakingSettings\",\"name\":\"stakingSettings\",\"type\":\"address\"},{\"internalType\":\"contract IRareStakingRegistry\",\"name\":\"stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IERC20ApprovalManager\",\"name\":\"erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC721ApprovalManager\",\"name\":\"erc721ApprovalManager\",\"type\":\"address\"}],\"internalType\":\"struct MarketConfigV2.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"getOffer\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"marketplaceFeeTotal\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"stakingFeeRemaining\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"stakingFeeTotal\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.Offer\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"getSalePrice\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.SalePrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenAllowListConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.AllowListConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenMintLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTokenMintsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenTxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTokenTxsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTradeExecutionModule\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tradeExecutionModule\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_checkoutExecutionModule\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"makeOffer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"prepareMintDirectSales\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"}],\"name\":\"setApprovedTokenRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_checkoutExecutionModule\",\"type\":\"address\"}],\"name\":\"setCheckoutExecutionModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isPaused\",\"type\":\"bool\"}],\"name\":\"setContractPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC1155ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC20ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC721ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"}],\"name\":\"setMarketplaceSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"}],\"name\":\"setNetworkBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"}],\"name\":\"setPayments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"}],\"name\":\"setRoyaltyEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"setSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"}],\"name\":\"setSpaceOperatorRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"}],\"name\":\"setStakingRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"}],\"name\":\"setStakingSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenAllowListConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenMintLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenTxLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tradeExecutionModule\",\"type\":\"address\"}],\"name\":\"setTradeExecutionModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"The marketplace is the UUPS proxy-facing contract and owns all marketplace storage. Trade and checkout execution are routed through delegatecall so modules read and write the marketplace proxy's ERC-7201 namespace.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"cancelMintDirectSales(address,uint256[])\":{\"details\":\"Token ids must be strictly ascending.\"},\"cancelSalePrices(address,uint256[])\":{\"details\":\"Token ids must be strictly ascending.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Best-effort execution returns one result per item. All-skipped checkouts complete successfully.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"RareERC1155Marketplace\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Accepts all or part of an ERC1155 token offer through the trade execution module.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings through the trade execution module.\"},\"cancelMintDirectSales(address,uint256[])\":{\"notice\":\"Cancels configured primary mint sales for token ids.\"},\"cancelOffer(address,uint256,address)\":{\"notice\":\"Cancels the caller's offer for one token id and currency.\"},\"cancelSalePrices(address,uint256[])\":{\"notice\":\"Cancels the caller's secondary listings for token ids.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases.\"},\"initialize(address,address,address,address,address,address,address,address,address,address,address,address,address)\":{\"notice\":\"Initializes the UUPS marketplace proxy.\"},\"makeOffer(address,uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Creates or replaces a token-level ERC1155 offer.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales through the trade execution module.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Configures or replaces primary mint sales for token ids.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Creates or replaces secondary fixed-price listings.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"notice\":\"Sets token id allowlist configurations.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets max quantity each address may mint for token ids while a limit is enabled.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets max mint transactions each address may submit for token ids while a limit is enabled.\"}},\"notice\":\"ERC1155 marketplace state, escrow, configuration, and execution module router.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155Marketplace.sol\":\"RareERC1155Marketplace\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol\":{\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0\",\"dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x584ebdf9c1118a7c773f98788e3f3ede01982bdf8932aa06f5acc7d54876e161\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9826c7edf276ff48b99ee217358393097c30448a71d345d287c2f6961bb1f159\",\"dweb:/ipfs/QmYXBTY9wDvffGU47yMRFJ1NFyKwpbj94VHzRzhsm6R7Gz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xb607cb94c27e89750f5ae2ccebcb94e654e926f6125f4fd4c6262c89875118ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33e8f8d863c6943ea046fcf4972b4e815c04ab06bad195dba1d93f8ebeb8420d\",\"dweb:/ipfs/QmTQzxQTuuzPDk3eqVmYy7hv2RCXM1yt1NtubXpRbzYjaj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025\",\"dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685\",\"dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155CheckoutExecutionModule.sol\":{\"keccak256\":\"0x5e21c4d426f55a9c348d866505dcd62395f6c96c971c523c4ea9d1507aa49564\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36f027c0fb078527e853940bacded87cbbbd57d3d85c54a34ebcef3fd585d24a\",\"dweb:/ipfs/QmeK38XavEKAmqGVd2tiXnc95qAZnVUM2wMEkXoQ5AtoAV\"]},\"src/marketplace/IRareERC1155Marketplace.sol\":{\"keccak256\":\"0xe1d12e07644cf56ed2dcb98e690ca93775b13a03189b4a802d6134c2c2e921b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1099e8215c451fa6dad6f8be5c196c3915dc3b911d4507d46cd9f7f20e29335e\",\"dweb:/ipfs/QmUiW9oVP6Ft4C57zGE6ZWnkMKzJ8DzJoaBemKzBdWbLUK\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x8d34a6232df2f8000be37bf27bffc0ebcd32f6b7d6675e9e858a3b520d486d40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5893c1f94047332f3b26ff0fe3a2410a339fc3fd6d5397b4ee6c2c8fd02a6c70\",\"dweb:/ipfs/QmUwJwJ4XicMDJAzmsGUcYZfhKf4X9kDhmESKRhqindpAM\"]},\"src/marketplace/IRareERC1155TradeExecutionModule.sol\":{\"keccak256\":\"0xeac5a1dcc35c87ba1867c2754e12ab54dfb00112f0392d0be073b3a381df8fb1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f74c949b2d3b3f4f01ce37e1990370a476ea7b7fb1692b5ac96606c0303dd89\",\"dweb:/ipfs/QmbsX9rW7r8trT2jRhF34LkwNPwqNQZMv32WwoBswNVTFH\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155Marketplace.sol\":{\"keccak256\":\"0x40741677ac142ba9120d9127af62c6b4ba4d806bc1e26c15b5f0a4764df5dd43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb496d7bf89ec9fabe7a31eabf0c522e72cf63bf93d65d2458469f07a1523c1\",\"dweb:/ipfs/QmW1WN1nYr4rd2t7QRsTEqawKRWAVSQX6tYvxjmFs5JgRW\"]},\"src/marketplace/RareERC1155MarketplacePayments.sol\":{\"keccak256\":\"0xafebd89e5951bfc64c9bd315ae8f3961120d5006f7424cf4127c8ca11e0bb6c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69892edf0cca19978fcbc2b486ce6d4e5bf482777279d6c3e116109e9bfb0836\",\"dweb:/ipfs/QmUXniFfx21Arz81G3tZAAGakozcb3L2GjqaZv2CdXiBS6\"]},\"src/marketplace/RareERC1155MarketplaceStorage.sol\":{\"keccak256\":\"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a\",\"dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89\",\"dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CHECKOUT_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"acceptOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"cancelMintDirectSales"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"cancelOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"cancelSalePrices"},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","name":"_items","type":"tuple[]","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"checkout","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","name":"","type":"tuple","components":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","name":"summary","type":"tuple","components":[{"internalType":"uint256","name":"filledCount","type":"uint256"},{"internalType":"uint256","name":"skippedCount","type":"uint256"},{"internalType":"uint256","name":"ethSpent","type":"uint256"},{"internalType":"uint256","name":"ethRefunded","type":"uint256"}]},{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","name":"items","type":"tuple[]","components":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bool","name":"filled","type":"bool"},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8"},{"internalType":"bytes4","name":"reason","type":"bytes4"},{"internalType":"bytes","name":"failureData","type":"bytes"},{"internalType":"uint256","name":"totalPaid","type":"uint256"}]}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCheckoutExecutionModule","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDirectSaleConfig","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleConfig","name":"","type":"tuple","components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getERC1155ApprovalManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMarketConfig","outputs":[{"internalType":"struct MarketConfigV2.Config","name":"","type":"tuple","components":[{"internalType":"address","name":"networkBeneficiary","type":"address"},{"internalType":"contract IMarketplaceSettings","name":"marketplaceSettings","type":"address"},{"internalType":"contract ISpaceOperatorRegistry","name":"spaceOperatorRegistry","type":"address"},{"internalType":"contract IRoyaltyEngineV1","name":"royaltyEngine","type":"address"},{"internalType":"contract IPayments","name":"payments","type":"address"},{"internalType":"contract IApprovedTokenRegistry","name":"approvedTokenRegistry","type":"address"},{"internalType":"contract IStakingSettings","name":"stakingSettings","type":"address"},{"internalType":"contract IRareStakingRegistry","name":"stakingRegistry","type":"address"},{"internalType":"contract IERC20ApprovalManager","name":"erc20ApprovalManager","type":"address"},{"internalType":"contract IERC721ApprovalManager","name":"erc721ApprovalManager","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"stateMutability":"view","type":"function","name":"getOffer","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.Offer","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"initialQuantity","type":"uint256"},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256"},{"internalType":"uint256","name":"marketplaceFeeTotal","type":"uint256"},{"internalType":"uint256","name":"stakingFeeRemaining","type":"uint256"},{"internalType":"uint256","name":"stakingFeeTotal","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"stateMutability":"view","type":"function","name":"getSalePrice","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.SalePrice","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenAllowListConfig","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfig","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenTxsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTradeExecutionModule","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"},{"internalType":"address","name":"_marketplaceSettings","type":"address"},{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"},{"internalType":"address","name":"_royaltyEngine","type":"address"},{"internalType":"address","name":"_payments","type":"address"},{"internalType":"address","name":"_approvedTokenRegistry","type":"address"},{"internalType":"address","name":"_stakingSettings","type":"address"},{"internalType":"address","name":"_stakingRegistry","type":"address"},{"internalType":"address","name":"_erc20ApprovalManager","type":"address"},{"internalType":"address","name":"_erc721ApprovalManager","type":"address"},{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"},{"internalType":"address","name":"_tradeExecutionModule","type":"address"},{"internalType":"address","name":"_checkoutExecutionModule","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"stateMutability":"payable","type":"function","name":"makeOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"prepareMintDirectSales"},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"_approvedTokenRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setApprovedTokenRegistry"},{"inputs":[{"internalType":"address","name":"_checkoutExecutionModule","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setCheckoutExecutionModule"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setContractPaused"},{"inputs":[{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC1155ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc20ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC20ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc721ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC721ApprovalManager"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketplaceSettings"},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkBeneficiary"},{"inputs":[{"internalType":"address","name":"_payments","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPayments"},{"inputs":[{"internalType":"address","name":"_royaltyEngine","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyEngine"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"setSalePrices"},{"inputs":[{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSpaceOperatorRegistry"},{"inputs":[{"internalType":"address","name":"_stakingRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingRegistry"},{"inputs":[{"internalType":"address","name":"_stakingSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingSettings"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenAllowListConfigs"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenMintLimits"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenTxLimits"},{"inputs":[{"internalType":"address","name":"_tradeExecutionModule","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTradeExecutionModule"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgradeTo"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"}],"devdoc":{"kind":"dev","methods":{"cancelMintDirectSales(address,uint256[])":{"details":"Token ids must be strictly ascending."},"cancelSalePrices(address,uint256[])":{"details":"Token ids must be strictly ascending."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"details":"Best-effort execution returns one result per item. All-skipped checkouts complete successfully."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"owner()":{"details":"Returns the address of the current owner."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"details":"Request token ids must be strictly ascending."},"setTokenMintLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending."},"setTokenTxLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"notice":"Accepts all or part of an ERC1155 token offer through the trade execution module."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings through the trade execution module."},"cancelMintDirectSales(address,uint256[])":{"notice":"Cancels configured primary mint sales for token ids."},"cancelOffer(address,uint256,address)":{"notice":"Cancels the caller's offer for one token id and currency."},"cancelSalePrices(address,uint256[])":{"notice":"Cancels the caller's secondary listings for token ids."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"notice":"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases."},"initialize(address,address,address,address,address,address,address,address,address,address,address,address,address)":{"notice":"Initializes the UUPS marketplace proxy."},"makeOffer(address,uint256,address,uint256,uint256,uint256)":{"notice":"Creates or replaces a token-level ERC1155 offer."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales through the trade execution module."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Configures or replaces primary mint sales for token ids."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Creates or replaces secondary fixed-price listings."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"notice":"Sets token id allowlist configurations."},"setTokenMintLimits(address,(uint256,uint256)[])":{"notice":"Sets max quantity each address may mint for token ids while a limit is enabled."},"setTokenTxLimits(address,(uint256,uint256)[])":{"notice":"Sets max mint transactions each address may submit for token ids while a limit is enabled."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155Marketplace.sol":"RareERC1155Marketplace"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol":{"keccak256":"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b","urls":["bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0","dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol":{"keccak256":"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f","urls":["bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053","dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"keccak256":"0x584ebdf9c1118a7c773f98788e3f3ede01982bdf8932aa06f5acc7d54876e161","urls":["bzz-raw://9826c7edf276ff48b99ee217358393097c30448a71d345d287c2f6961bb1f159","dweb:/ipfs/QmYXBTY9wDvffGU47yMRFJ1NFyKwpbj94VHzRzhsm6R7Gz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol":{"keccak256":"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908","urls":["bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1","dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xb607cb94c27e89750f5ae2ccebcb94e654e926f6125f4fd4c6262c89875118ad","urls":["bzz-raw://33e8f8d863c6943ea046fcf4972b4e815c04ab06bad195dba1d93f8ebeb8420d","dweb:/ipfs/QmTQzxQTuuzPDk3eqVmYy7hv2RCXM1yt1NtubXpRbzYjaj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0","urls":["bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025","dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol":{"keccak256":"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908","urls":["bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685","dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155CheckoutExecutionModule.sol":{"keccak256":"0x5e21c4d426f55a9c348d866505dcd62395f6c96c971c523c4ea9d1507aa49564","urls":["bzz-raw://36f027c0fb078527e853940bacded87cbbbd57d3d85c54a34ebcef3fd585d24a","dweb:/ipfs/QmeK38XavEKAmqGVd2tiXnc95qAZnVUM2wMEkXoQ5AtoAV"],"license":"MIT"},"src/marketplace/IRareERC1155Marketplace.sol":{"keccak256":"0xe1d12e07644cf56ed2dcb98e690ca93775b13a03189b4a802d6134c2c2e921b2","urls":["bzz-raw://1099e8215c451fa6dad6f8be5c196c3915dc3b911d4507d46cd9f7f20e29335e","dweb:/ipfs/QmUiW9oVP6Ft4C57zGE6ZWnkMKzJ8DzJoaBemKzBdWbLUK"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x8d34a6232df2f8000be37bf27bffc0ebcd32f6b7d6675e9e858a3b520d486d40","urls":["bzz-raw://5893c1f94047332f3b26ff0fe3a2410a339fc3fd6d5397b4ee6c2c8fd02a6c70","dweb:/ipfs/QmUwJwJ4XicMDJAzmsGUcYZfhKf4X9kDhmESKRhqindpAM"],"license":"MIT"},"src/marketplace/IRareERC1155TradeExecutionModule.sol":{"keccak256":"0xeac5a1dcc35c87ba1867c2754e12ab54dfb00112f0392d0be073b3a381df8fb1","urls":["bzz-raw://9f74c949b2d3b3f4f01ce37e1990370a476ea7b7fb1692b5ac96606c0303dd89","dweb:/ipfs/QmbsX9rW7r8trT2jRhF34LkwNPwqNQZMv32WwoBswNVTFH"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155Marketplace.sol":{"keccak256":"0x40741677ac142ba9120d9127af62c6b4ba4d806bc1e26c15b5f0a4764df5dd43","urls":["bzz-raw://6eb496d7bf89ec9fabe7a31eabf0c522e72cf63bf93d65d2458469f07a1523c1","dweb:/ipfs/QmW1WN1nYr4rd2t7QRsTEqawKRWAVSQX6tYvxjmFs5JgRW"],"license":"MIT"},"src/marketplace/RareERC1155MarketplacePayments.sol":{"keccak256":"0xafebd89e5951bfc64c9bd315ae8f3961120d5006f7424cf4127c8ca11e0bb6c1","urls":["bzz-raw://69892edf0cca19978fcbc2b486ce6d4e5bf482777279d6c3e116109e9bfb0836","dweb:/ipfs/QmUXniFfx21Arz81G3tZAAGakozcb3L2GjqaZv2CdXiBS6"],"license":"MIT"},"src/marketplace/RareERC1155MarketplaceStorage.sol":{"keccak256":"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1","urls":["bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a","dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd","urls":["bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89","dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":75} \ No newline at end of file diff --git a/abis/RareERC1155MarketplacePayments.json b/abis/RareERC1155MarketplacePayments.json index 9ec4217..748798c 100644 --- a/abis/RareERC1155MarketplacePayments.json +++ b/abis/RareERC1155MarketplacePayments.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"checkSplits","inputs":[{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"pure"},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x6080806040523461001c576116c090816100228239308160070152f35b600080fdfe6080604052307f000000000000000000000000000000000000000000000000000000000000000014600436101561003557600080fd5b60003560e01c806330863baf146109a657806338fa83e71461098f5780634c4c2619146109575780635ea509b51461094057806376fb8597146107bb5780637baf92a31461078b578063981e8fc5146104e1578063bc2af99e1461043c578063c3924158146101d1578063e6e1b2dc1461016f5763f0859688146100b857600080fd5b61016a5760a036600319011261016a576100d06109e6565b6001600160401b0360643581811161016a576100f0903690600401610b0b565b60843591821161016a573660238301121561016a5781600401359261011484610af4565b926101226040519485610ad3565b84845260209460248686019160051b8301019136831161016a57602401905b82821061015b576101598686604435876004356114c5565b005b81358152908601908601610141565b600080fd5b5061016a5760a036600319011261016a576101886109e6565b6001600160401b039060643582811161016a576101a9903690600401610b0b565b60843592831161016a576101c4610159933690600401610b79565b91604435906004356113c2565b5061016a5761010036600319011261016a576004356101ee6109e6565b6101f66109fc565b6001600160a01b039260a4358481169392909160643585840361016a576001600160401b039460c43586811161016a57610234903690600401610b0b565b9560e43590811161016a5761024d903690600401610b79565b9661025e8396608435858888610eee565b886002850154169060405190635dc22eff60e01b82528060048301526020938483602481875afa80156103a657859360009161040f575b50156103b25750602460405180948193632260494f60e01b835260048301525afa80156103a65760ff91600091610379575b505b1697606489116103595760646102e26101599a85610eaa565b0492836102f3575b505050506113c2565b8361035094975061030391610c28565b956040519161031183610a6c565b6001835283368185013785541661032783610ebd565b526040519261033584610a6c565b6001845236818501378061034884610ebd565b5285856114c5565b388080806102ea565b60405163d6849ff160e01b8152600481018a905260646024820152604490fd5b6103999150833d851161039f575b6103918183610ad3565b810190610e91565b386102c7565b503d610387565b6040513d6000823e3d90fd5b600187015460405163b28a7bad60e01b8152918d16600483015290935083915060249082908d165afa80156103a65760ff916000916103f2575b506102c9565b6104099150833d851161039f576103918183610ad3565b386103ec565b61042f9150843d8611610435575b6104278183610ad3565b810190610be1565b38610295565b503d61041d565b604036600319011261016a576001600160a01b03806104596109e6565b16908115159081610484575b5061046c57005b6024906040519063cd5f748960e01b82526004820152fd5b60249150602090600560043501541660405192838092632d5ad3d560e01b82528660048301525afa9081156103a6576000916104c3575b501582610465565b6104db915060203d8111610435576104278183610ad3565b826104bb565b5061016a5761012036600319011261016a576104fb6109e6565b6001600160a01b03606435808216900361016a5760c43590808216820361016a576001600160401b0360e43581811161016a5761053c903690600401610b0b565b93610104359180831161016a5760006105c161055d82953690600401610b79565b936105766084359860a435608435606435600435610eee565b6004803560030154604051637a99dc0160e11b81526001600160a01b039093169183019190915260448035602484015260843590830152909586929188169183919082906064820190565b03925af19384156103a657600093600095610679575b5050506000946000955b845187101561060e57610602610608916105fb8988610eda565b5190610e84565b96610e41565b956105e1565b8590856084358211610658576101599582610632575b5050506064356004356113c2565b82935061064461065093608435610c28565b936064356004356114c5565b848080610624565b6040516344783bd360e11b8152600481018390526084356024820152604490fd5b9193509193503d90816000823e6106908282610ad3565b604081838101031261016a57805184811161016a578101828201601f8201121561016a578051906106c082610af4565b946106ce6040519687610ad3565b82865260208087019360051b83010191858501831161016a57602001925b8284106107725750505050602081015193841161016a57818101601f85830101121561016a57838101519061072082610af4565b9461072e6040519687610ad3565b82865260208087019360051b8284010101938201841161016a5701602001905b8282106107625750505090913880806105d7565b815181526020918201910161074e565b8351828116810361016a578152602093840193016106ec565b5061016a57608036600319011261016a576101596107a76109e6565b6107af6109fc565b60643591600435611176565b604036600319011261016a576001600160401b0360043581811161016a576107e7903690600401610a3c565b90602492833590811161016a57610802903690600401610a3c565b90831561092e576005841161090f578184036108f2579291906000936000935b8285106108525786866064810361083557005b6064604492604051926357623e5560e01b84526004840152820152fd5b9091929394610862868387610e50565b356001600160a01b0381169081900361016a57156108da5760ff8061089061088b898888610e50565b610e76565b16156108c2576108b9916108b3916108ac61088b8a8989610e50565b1690610e84565b95610e41565b93929190610822565b60405163d4c1893560e01b8152600481018890528890fd5b6040516306f5730d60e41b8152600481018790528790fd5b604484838760405192632db4fb2960e01b84526004840152820152fd5b6040516366a4d05560e01b815260048101859052600581870152604490fd5b60405163d218e6a560e01b8152600490fd5b5061016a5761015961095136610a12565b91610bf9565b5061016a5760c036600319011261016a576101596109736109e6565b61097b6109fc565b60a4359160843591606435916004356110be565b5061016a576101596109a036610a12565b91610c4b565b5061016a5760a036600319011261016a576109bf6109e6565b6084356001600160a01b038116810361016a57610159916064359060443590600435610eee565b602435906001600160a01b038216820361016a57565b604435906001600160a01b038216820361016a57565b606090600319011261016a57600435906024356001600160a01b038116810361016a579060443590565b9181601f8401121561016a578235916001600160401b03831161016a576020808501948460051b01011161016a57565b604081019081106001600160401b03821117610a8757604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b03821117610a8757604052565b608081019081106001600160401b03821117610a8757604052565b90601f801991011681019081106001600160401b03821117610a8757604052565b6001600160401b038111610a875760051b60200190565b81601f8201121561016a57803591610b2283610af4565b92610b306040519485610ad3565b808452602092838086019260051b82010192831161016a578301905b828210610b5a575050505090565b81356001600160a01b038116810361016a578152908301908301610b4c565b81601f8201121561016a57803591610b9083610af4565b92610b9e6040519485610ad3565b808452602092838086019260051b82010192831161016a578301905b828210610bc8575050505090565b813560ff8116810361016a578152908301908301610bba565b9081602091031261016a5751801515810361016a5790565b91908115610c0c57610c0a92610c4b565b565b50505034610c1657565b60405163429465b160e01b8152600490fd5b91908203918211610c3557565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281169060008215610e145734610e02576040938451926370a0823160e01b9081855230600486015260209283866024818a5afa958615610df8578596610dc4575b506008015416803b15610dc05783809160848b8a519485938492630aed65f560e11b84528c600485015233602485015230604485015260648401525af18015610db657610d88575b508190602487518097819382523060048301525afa918215610d7d5791610d4d575b50610d0a9250610c28565b90838203610d185750505050565b51636ff596f360e01b81526001600160a01b0392909216600483015260248201929092526044810191909152606490fd5b0390fd5b905082813d8311610d76575b610d638183610ad3565b8101031261016a57610d0a915138610cff565b503d610d59565b8551903d90823e3d90fd5b6001600160401b038194929411610da25786529181610cdd565b634e487b7160e01b82526041600452602482fd5b87513d86823e3d90fd5b8380fd5b9095508381813d8311610df1575b610ddc8183610ad3565b81010312610ded5751946008610c95565b8480fd5b503d610dd2565b88513d87823e3d90fd5b60405163d9efa38960e01b8152600490fd5b5050505050803403610e235750565b604490604051906305e4640960e21b82526004820152346024820152fd5b6000198114610c355760010190565b9190811015610e605760051b0190565b634e487b7160e01b600052603260045260246000fd5b3560ff8116810361016a5790565b91908201809211610c3557565b9081602091031261016a575160ff8116810361016a5790565b81810292918115918404141715610c3557565b805115610e605760200190565b805160011015610e605760400190565b8051821015610e605760209160051b010190565b91929094939481156110b65760018060a01b039283600682015416946040805196879263470d6ed960e11b845260048401528260246020998a935afa9182156110ab5760009261107c575b5084821161105f57805195610f4d87610a9d565b600287528136898901378084541680610f6589610ebd565b526007850154835163e286ef3360e01b81529b831660048d015289908c90602490829086165afa9a8b156110545760009b611017575b5081610c0a9a9b16610fac89610eca565b5281610fb789610eca565b511661100457905b610fc888610eca565b91169052805196610fd888610a9d565b600288523690880137610feb8185610c28565b610ff487610ebd565b52610ffe86610eca565b526114c5565b508061100f88610eca565b511690610fbf565b8981813d831161104d575b61102c8183610ad3565b8101031261104957519a828c168c03611046575081610f9b565b80fd5b8b80fd5b503d611022565b83513d6000823e3d90fd5b60449185915191639bdfbb5160e01b835260048301526024820152fd5b90918782813d83116110a4575b6110938183610ad3565b810103126110465750519038610f39565b503d611089565b50513d6000823e3d90fd5b505050509050565b92949390919381156110ef576110da6110df92610c0a97610eaa565b610e84565b926001600160a01b031691611176565b505050505050565b3d15611131573d906001600160401b038211610a875760405191611125601f8201601f191660200184610ad3565b82523d6000602084013e565b606090565b919082519283825260005b848110611162575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201611141565b92918215611211576001600160a01b0391821693841561119d5750610c0a93911690611217565b600094509282600486950154169260405190602082019363410085df60e01b8552166024820152816044820152604481526111d781610ab8565b51925af16111e36110f7565b90156111ec5750565b604051635519d77560e11b815260206004820152908190610d49906024830190611136565b50505050565b91906112a191600080604051936020968786019463a9059cbb60e01b865260018060a01b03809316602488015260448701526044865261125686610ab8565b16926040519461126586610a6c565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af161129b6110f7565b91611329565b805190828215928315611311575b505050156112ba5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b6113219350820181019101610be1565b3882816112af565b9192901561138b575081511561133d575090565b3b156113465790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b82519091501561139e5750805190602001fd5b60405162461bcd60e51b815260206004820152908190610d49906024830190611136565b949194939093835182518082036114a75750508351936113e185610af4565b946113ef6040519687610ad3565b8086526113fe601f1991610af4565b013660208701378693600091825b81518082101561149557600019810190811161148157810361144257808761143761143d938b610eda565b52610e41565b61140c565b9561060261143d9160646114648d60ff61145c8d8d610eda565b511690610eaa565b0461146f8a8c610eda565b5261147a898b610eda565b5190610c28565b634e487b7160e01b85526011600452602485fd5b505094509692505093610c0a946114c5565b6044925060405191632db4fb2960e01b835260048301526024820152fd5b9194909392938451845180820361166c575050600094855b85518710156114fd576106026114f7916105fb8989610eda565b956114dd565b909295509590929581810361164e57506001600160a01b0392831695861561155d57505060005b81518110156110b657806115538461153f6115589486610eda565b511661154b8388610eda565b519089611217565b610e41565b611524565b83929650600490939193015416916040516020948582019363c176e63960e01b85526064830160406024850152895180915287608485019a01916000905b828210611635575050505081880360231901604483015280518089529086019786019060005b818110611621575050600095969750906115e881879695949303601f198101835282610ad3565b51925af1906115f56110f7565b91156115ff575050565b610d49604051928392634c0fe4a160e11b845260048401526024830190611136565b8951835298870198918701916001016115c1565b835181168c529a89019a9289019260019091019061159b565b6044925060405191633bc6f52760e21b835260048301526024820152fd5b60449250604051916345e8c29760e11b835260048301526024820152fdfea2646970667358221220a2555de9b654ddef2b36d90dd859edf136e2146fc8bb7c7add19b1699a9d680864736f6c63430008120033","sourceMap":"538:9900:167:-:0;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052307f000000000000000000000000000000000000000000000000000000000000000014600436101561003557600080fd5b60003560e01c806330863baf146109a657806338fa83e71461098f5780634c4c2619146109575780635ea509b51461094057806376fb8597146107bb5780637baf92a31461078b578063981e8fc5146104e1578063bc2af99e1461043c578063c3924158146101d1578063e6e1b2dc1461016f5763f0859688146100b857600080fd5b61016a5760a036600319011261016a576100d06109e6565b6001600160401b0360643581811161016a576100f0903690600401610b0b565b60843591821161016a573660238301121561016a5781600401359261011484610af4565b926101226040519485610ad3565b84845260209460248686019160051b8301019136831161016a57602401905b82821061015b576101598686604435876004356114c5565b005b81358152908601908601610141565b600080fd5b5061016a5760a036600319011261016a576101886109e6565b6001600160401b039060643582811161016a576101a9903690600401610b0b565b60843592831161016a576101c4610159933690600401610b79565b91604435906004356113c2565b5061016a5761010036600319011261016a576004356101ee6109e6565b6101f66109fc565b6001600160a01b039260a4358481169392909160643585840361016a576001600160401b039460c43586811161016a57610234903690600401610b0b565b9560e43590811161016a5761024d903690600401610b79565b9661025e8396608435858888610eee565b886002850154169060405190635dc22eff60e01b82528060048301526020938483602481875afa80156103a657859360009161040f575b50156103b25750602460405180948193632260494f60e01b835260048301525afa80156103a65760ff91600091610379575b505b1697606489116103595760646102e26101599a85610eaa565b0492836102f3575b505050506113c2565b8361035094975061030391610c28565b956040519161031183610a6c565b6001835283368185013785541661032783610ebd565b526040519261033584610a6c565b6001845236818501378061034884610ebd565b5285856114c5565b388080806102ea565b60405163d6849ff160e01b8152600481018a905260646024820152604490fd5b6103999150833d851161039f575b6103918183610ad3565b810190610e91565b386102c7565b503d610387565b6040513d6000823e3d90fd5b600187015460405163b28a7bad60e01b8152918d16600483015290935083915060249082908d165afa80156103a65760ff916000916103f2575b506102c9565b6104099150833d851161039f576103918183610ad3565b386103ec565b61042f9150843d8611610435575b6104278183610ad3565b810190610be1565b38610295565b503d61041d565b604036600319011261016a576001600160a01b03806104596109e6565b16908115159081610484575b5061046c57005b6024906040519063cd5f748960e01b82526004820152fd5b60249150602090600560043501541660405192838092632d5ad3d560e01b82528660048301525afa9081156103a6576000916104c3575b501582610465565b6104db915060203d8111610435576104278183610ad3565b826104bb565b5061016a5761012036600319011261016a576104fb6109e6565b6001600160a01b03606435808216900361016a5760c43590808216820361016a576001600160401b0360e43581811161016a5761053c903690600401610b0b565b93610104359180831161016a5760006105c161055d82953690600401610b79565b936105766084359860a435608435606435600435610eee565b6004803560030154604051637a99dc0160e11b81526001600160a01b039093169183019190915260448035602484015260843590830152909586929188169183919082906064820190565b03925af19384156103a657600093600095610679575b5050506000946000955b845187101561060e57610602610608916105fb8988610eda565b5190610e84565b96610e41565b956105e1565b8590856084358211610658576101599582610632575b5050506064356004356113c2565b82935061064461065093608435610c28565b936064356004356114c5565b848080610624565b6040516344783bd360e11b8152600481018390526084356024820152604490fd5b9193509193503d90816000823e6106908282610ad3565b604081838101031261016a57805184811161016a578101828201601f8201121561016a578051906106c082610af4565b946106ce6040519687610ad3565b82865260208087019360051b83010191858501831161016a57602001925b8284106107725750505050602081015193841161016a57818101601f85830101121561016a57838101519061072082610af4565b9461072e6040519687610ad3565b82865260208087019360051b8284010101938201841161016a5701602001905b8282106107625750505090913880806105d7565b815181526020918201910161074e565b8351828116810361016a578152602093840193016106ec565b5061016a57608036600319011261016a576101596107a76109e6565b6107af6109fc565b60643591600435611176565b604036600319011261016a576001600160401b0360043581811161016a576107e7903690600401610a3c565b90602492833590811161016a57610802903690600401610a3c565b90831561092e576005841161090f578184036108f2579291906000936000935b8285106108525786866064810361083557005b6064604492604051926357623e5560e01b84526004840152820152fd5b9091929394610862868387610e50565b356001600160a01b0381169081900361016a57156108da5760ff8061089061088b898888610e50565b610e76565b16156108c2576108b9916108b3916108ac61088b8a8989610e50565b1690610e84565b95610e41565b93929190610822565b60405163d4c1893560e01b8152600481018890528890fd5b6040516306f5730d60e41b8152600481018790528790fd5b604484838760405192632db4fb2960e01b84526004840152820152fd5b6040516366a4d05560e01b815260048101859052600581870152604490fd5b60405163d218e6a560e01b8152600490fd5b5061016a5761015961095136610a12565b91610bf9565b5061016a5760c036600319011261016a576101596109736109e6565b61097b6109fc565b60a4359160843591606435916004356110be565b5061016a576101596109a036610a12565b91610c4b565b5061016a5760a036600319011261016a576109bf6109e6565b6084356001600160a01b038116810361016a57610159916064359060443590600435610eee565b602435906001600160a01b038216820361016a57565b604435906001600160a01b038216820361016a57565b606090600319011261016a57600435906024356001600160a01b038116810361016a579060443590565b9181601f8401121561016a578235916001600160401b03831161016a576020808501948460051b01011161016a57565b604081019081106001600160401b03821117610a8757604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b03821117610a8757604052565b608081019081106001600160401b03821117610a8757604052565b90601f801991011681019081106001600160401b03821117610a8757604052565b6001600160401b038111610a875760051b60200190565b81601f8201121561016a57803591610b2283610af4565b92610b306040519485610ad3565b808452602092838086019260051b82010192831161016a578301905b828210610b5a575050505090565b81356001600160a01b038116810361016a578152908301908301610b4c565b81601f8201121561016a57803591610b9083610af4565b92610b9e6040519485610ad3565b808452602092838086019260051b82010192831161016a578301905b828210610bc8575050505090565b813560ff8116810361016a578152908301908301610bba565b9081602091031261016a5751801515810361016a5790565b91908115610c0c57610c0a92610c4b565b565b50505034610c1657565b60405163429465b160e01b8152600490fd5b91908203918211610c3557565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281169060008215610e145734610e02576040938451926370a0823160e01b9081855230600486015260209283866024818a5afa958615610df8578596610dc4575b506008015416803b15610dc05783809160848b8a519485938492630aed65f560e11b84528c600485015233602485015230604485015260648401525af18015610db657610d88575b508190602487518097819382523060048301525afa918215610d7d5791610d4d575b50610d0a9250610c28565b90838203610d185750505050565b51636ff596f360e01b81526001600160a01b0392909216600483015260248201929092526044810191909152606490fd5b0390fd5b905082813d8311610d76575b610d638183610ad3565b8101031261016a57610d0a915138610cff565b503d610d59565b8551903d90823e3d90fd5b6001600160401b038194929411610da25786529181610cdd565b634e487b7160e01b82526041600452602482fd5b87513d86823e3d90fd5b8380fd5b9095508381813d8311610df1575b610ddc8183610ad3565b81010312610ded5751946008610c95565b8480fd5b503d610dd2565b88513d87823e3d90fd5b60405163d9efa38960e01b8152600490fd5b5050505050803403610e235750565b604490604051906305e4640960e21b82526004820152346024820152fd5b6000198114610c355760010190565b9190811015610e605760051b0190565b634e487b7160e01b600052603260045260246000fd5b3560ff8116810361016a5790565b91908201809211610c3557565b9081602091031261016a575160ff8116810361016a5790565b81810292918115918404141715610c3557565b805115610e605760200190565b805160011015610e605760400190565b8051821015610e605760209160051b010190565b91929094939481156110b65760018060a01b039283600682015416946040805196879263470d6ed960e11b845260048401528260246020998a935afa9182156110ab5760009261107c575b5084821161105f57805195610f4d87610a9d565b600287528136898901378084541680610f6589610ebd565b526007850154835163e286ef3360e01b81529b831660048d015289908c90602490829086165afa9a8b156110545760009b611017575b5081610c0a9a9b16610fac89610eca565b5281610fb789610eca565b511661100457905b610fc888610eca565b91169052805196610fd888610a9d565b600288523690880137610feb8185610c28565b610ff487610ebd565b52610ffe86610eca565b526114c5565b508061100f88610eca565b511690610fbf565b8981813d831161104d575b61102c8183610ad3565b8101031261104957519a828c168c03611046575081610f9b565b80fd5b8b80fd5b503d611022565b83513d6000823e3d90fd5b60449185915191639bdfbb5160e01b835260048301526024820152fd5b90918782813d83116110a4575b6110938183610ad3565b810103126110465750519038610f39565b503d611089565b50513d6000823e3d90fd5b505050509050565b92949390919381156110ef576110da6110df92610c0a97610eaa565b610e84565b926001600160a01b031691611176565b505050505050565b3d15611131573d906001600160401b038211610a875760405191611125601f8201601f191660200184610ad3565b82523d6000602084013e565b606090565b919082519283825260005b848110611162575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201611141565b92918215611211576001600160a01b0391821693841561119d5750610c0a93911690611217565b600094509282600486950154169260405190602082019363410085df60e01b8552166024820152816044820152604481526111d781610ab8565b51925af16111e36110f7565b90156111ec5750565b604051635519d77560e11b815260206004820152908190610d49906024830190611136565b50505050565b91906112a191600080604051936020968786019463a9059cbb60e01b865260018060a01b03809316602488015260448701526044865261125686610ab8565b16926040519461126586610a6c565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af161129b6110f7565b91611329565b805190828215928315611311575b505050156112ba5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b6113219350820181019101610be1565b3882816112af565b9192901561138b575081511561133d575090565b3b156113465790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b82519091501561139e5750805190602001fd5b60405162461bcd60e51b815260206004820152908190610d49906024830190611136565b949194939093835182518082036114a75750508351936113e185610af4565b946113ef6040519687610ad3565b8086526113fe601f1991610af4565b013660208701378693600091825b81518082101561149557600019810190811161148157810361144257808761143761143d938b610eda565b52610e41565b61140c565b9561060261143d9160646114648d60ff61145c8d8d610eda565b511690610eaa565b0461146f8a8c610eda565b5261147a898b610eda565b5190610c28565b634e487b7160e01b85526011600452602485fd5b505094509692505093610c0a946114c5565b6044925060405191632db4fb2960e01b835260048301526024820152fd5b9194909392938451845180820361166c575050600094855b85518710156114fd576106026114f7916105fb8989610eda565b956114dd565b909295509590929581810361164e57506001600160a01b0392831695861561155d57505060005b81518110156110b657806115538461153f6115589486610eda565b511661154b8388610eda565b519089611217565b610e41565b611524565b83929650600490939193015416916040516020948582019363c176e63960e01b85526064830160406024850152895180915287608485019a01916000905b828210611635575050505081880360231901604483015280518089529086019786019060005b818110611621575050600095969750906115e881879695949303601f198101835282610ad3565b51925af1906115f56110f7565b91156115ff575050565b610d49604051928392634c0fe4a160e11b845260048401526024830190611136565b8951835298870198918701916001016115c1565b835181168c529a89019a9289019260019091019061159b565b6044925060405191633bc6f52760e21b835260048301526024820152fd5b60449250604051916345e8c29760e11b835260048301526024820152fdfea2646970667358221220a2555de9b654ddef2b36d90dd859edf136e2146fc8bb7c7add19b1699a9d680864736f6c63430008120033","sourceMap":"538:9900:167:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;538:9900:167;;;;;;:::i;:::-;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;538:9900:167;;;;;;:::i;:::-;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;538:9900:167;;;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;3621:33;3739:7;3621:33;538:9900;;;3739:7;;;;:::i;:::-;3787:29;;;;538:9900;;;;;;;;;3787:62;;;538:9900;3787:62;;538:9900;;3787:62;;;538:9900;3787:62;;;;;;;;;;538:9900;3787:62;;;538:9900;-1:-1:-1;3787:239:167;;;538:9900;;;;;;;;;;;3864:60;;538:9900;3864:60;;538:9900;3864:60;;;;;;538:9900;3864:60;538:9900;3864:60;;;3787:239;;;538:9900;4040:24;538:9900;4040:24;;4036:142;;538:9900;4211:28;4792:12;4211:28;;;:::i;:::-;538:9900;4260:15;;4256:451;;3787:239;4792:12;;;;;:::i;4256:451::-;4291:30;4680:15;4291:30;;;;;;:::i;:::-;538:9900;;;;;;;:::i;:::-;;;;;;;;;;;;;4420:59;;;:::i;:::-;538:9900;;;;;;;:::i;:::-;;;;;;;;;4558:32;;;;:::i;:::-;538:9900;4680:15;;;:::i;:::-;4256:451;;;;;;4036:142;538:9900;;-1:-1:-1;;;4087:80:167;;538:9900;4087:80;;538:9900;;;;;;;;;;4087:80;3864:60;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;538:9900;;;;;;;;;3787:239;538:9900;3939:27;;538:9900;;;-1:-1:-1;;;3939:87:167;;538:9900;;;;3939:87;;538:9900;;;-1:-1:-1;538:9900:167;;-1:-1:-1;538:9900:167;;;;;;3939:87;;;;;;538:9900;3939:87;538:9900;3939:87;;;3787:239;;;;3939:87;;;;;;;;;;;;;;:::i;:::-;;;;3787:62;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;538:9900;;;-1:-1:-1;;538:9900:167;;;;-1:-1:-1;;;;;538:9900:167;;;:::i;:::-;;742:30;;;;:98;;;;538:9900;738:202;;;538:9900;738:202;538:9900;;;;863:66;;;;;;538:9900;863:66;;538:9900;863:66;742:98;538:9900;;;;;777:29;538:9900;;777:29;538:9900;;;;;;;;;;;777:63;;;538:9900;777:63;;538:9900;777:63;;;;;;;538:9900;777:63;;;742:98;776:64;;742:98;;;777:63;;;;538:9900;777:63;;;;;;;;;:::i;:::-;;;;538:9900;;;;;;-1:-1:-1;;538:9900:167;;;;;;:::i;:::-;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;5394:69;538:9900;;;;;;;;:::i;:::-;;5296:7;538:9900;;;;;;;;;;;5296:7;:::i;:::-;538:9900;;;;5394:21;538:9900;;;-1:-1:-1;;;5394:69:167;;-1:-1:-1;;;;;538:9900:167;;;5394:69;;;538:9900;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5394:69;;;;;;;;;;538:9900;;;5394:69;;;538:9900;5474:26;;;538:9900;5515:13;538:9900;5510:102;5552:3;538:9900;;5530:20;;;;;5571:30;5552:3;5589:12;;;;;:::i;:::-;538:9900;5571:30;;:::i;:::-;5552:3;;:::i;:::-;5515:13;;;5530:20;;;;538:9900;;5626:32;;5622:157;;6049:12;5793:18;;5789:175;;5510:102;538:9900;;;;;;;6049:12;:::i;5789:175::-;538:9900;;;5827:33;5943:9;538:9900;;;5827:33;:::i;:::-;538:9900;;;;;5943:9;:::i;:::-;5789:175;;;;;5622:157;538:9900;;-1:-1:-1;;;5681:87:167;;538:9900;5681:87;;538:9900;;;;;;;;;;;5681:87;5394:69;;;;;;;;;;538:9900;5394:69;;;;;;:::i;:::-;538:9900;5394:69;;;;538:9900;;;;;;;;;;;;;5394:69;;;538:9900;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;5394:69;;;;538:9900;;;;;;;;;;;;;;;;;;;;;;;;;;5394:69;;;538:9900;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;5394:69;;;538:9900;;;;;;;;;;;;;;5394:69;;;;;;;;;;538:9900;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;538:9900:167;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;-1:-1:-1;;538:9900:167;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;2340:28;;;2336:95;;2471:1;2445:27;;2441:148;;2602:46;;;2598:178;;2786:22;;;538:9900;2823:13;538:9900;2818:355;2838:23;;;;;;3187:17;;3201:3;3187:17;;3183:93;;538:9900;3183:93;3201:3;538:9900;;;;3213:63;;;;;;538:9900;3213:63;;538:9900;;;;3213:63;2863:3;2886:19;;;;;;;;;;:::i;:::-;538:9900;-1:-1:-1;;;;;538:9900:167;;;;;;;;2886:33;2882:137;;538:9900;3036:15;;;;;;;:::i;:::-;;:::i;:::-;538:9900;3036:20;3032:87;;2863:3;3147:15;3133:29;3147:15;;;;;;;:::i;:::-;538:9900;3133:29;;:::i;:::-;2863:3;;:::i;:::-;2823:13;;;;;;3032:87;538:9900;;-1:-1:-1;;;3065:54:167;;538:9900;3065:54;;538:9900;;;;;3065:54;2882:137;538:9900;;-1:-1:-1;;;2946:58:167;;538:9900;2946:58;;538:9900;;;;;2946:58;2598:178;538:9900;;;;;;2671:94;;;;;;538:9900;2671:94;;538:9900;;;;2671:94;2441:148;538:9900;;-1:-1:-1;;;2495:83:167;;538:9900;2495:83;;538:9900;;;2471:1;538:9900;;;;;;2495:83;2336:95;538:9900;;-1:-1:-1;;;2377:54:167;;538:9900;;2377:54;538:9900;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;-1:-1:-1;;538:9900:167;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;-1:-1:-1;;538:9900:167;;;;;;:::i;:::-;;;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;538:9900:167;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;538:9900:167;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;:::o;:::-;-1:-1:-1;;;;;538:9900:167;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;952:352::-;;;1094:12;;1090:139;;1289:7;;;:::i;:::-;952:352::o;1090:139::-;1126:9;;;;1122:76;;1212:7::o;1122:76::-;538:9900;;-1:-1:-1;;;1149:49:167;;;;;538:9900;;;;;;;;;;:::o;:::-;;;;;;;;;;;;1310:901;-1:-1:-1;;;;;538:9900:167;;;;1485:1;1457:30;;1453:181;;1648:9;1644:85;;538:9900;;;;;;;;1813:30;;;;1837:4;1813:30;;;538:9900;1813:30;;;;538:9900;1813:30;;;;;;;;;;;;;1310:901;1854:28;;;538:9900;;1854:95;;;;;538:9900;;;;;;;;;;;;;;;1854:95;;;1813:30;1854:95;;538:9900;1914:10;538:9900;;;;1837:4;538:9900;;;;;;;;1854:95;;;;;;;;1310:901;538:9900;;;;;;1985:30;;;;;;1837:4;1813:30;1985;;538:9900;1985:30;;;;;;;;;;1310:901;1985:46;;;;;:::i;:::-;2045:25;;;;2041:164;;1310:901;;;;:::o;2041:164::-;538:9900;-1:-1:-1;;;2093:101:167;;-1:-1:-1;;;;;538:9900:167;;;;1813:30;2093:101;;538:9900;;;;;;;;;;;;;;;;;2093:101;;;;;1985:30;;;;;;;;;;;;;;;:::i;:::-;;;538:9900;;;;1985:46;538:9900;;1985:30;;;;;;;;;538:9900;;;;;;;;;;1854:95;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;1854:95;;538:9900;-1:-1:-1;;;538:9900:167;;;1813:30;538:9900;;;;1854:95;538:9900;;;;;;;;;1854:95;538:9900;;;1813:30;;;;;;;;;;;;;;;;;:::i;:::-;;;538:9900;;;;;;1854:28;1813:30;;538:9900;;;;1813:30;;;;;;538:9900;;;;;;;;;1644:85;538:9900;;-1:-1:-1;;;1671:58:167;;;;;1453:181;1507:9;;;;;;;:20;1503:100;;1617:7;:::o;1503:100::-;538:9900;;;;1536:67;;;;;;;;;538:9900;1507:9;538:9900;;;;1536:67;538:9900;-1:-1:-1;;538:9900:167;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;6751:1;538:9900;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;6075:1099::-;;;;;;;6296:20;;6292:57;;538:9900;;;;;6380:23;;;;;538:9900;;;;;;;;;;;;6380:52;;;;;538:9900;6380:52;538:9900;6380:52;;;;;;;;;;;6315:1;6380:52;;;6075:1099;6446:28;;;;6442:155;;538:9900;;;;;;:::i;:::-;6667:1;538:9900;;;;;;;;;;;;6679:51;;;;:::i;:::-;538:9900;6764:23;;;538:9900;;;-1:-1:-1;;;6764:67:167;;538:9900;;;6380:52;6764:67;;538:9900;6764:23;;538:9900;;;;;;;;6764:67;;;;;;;6315:1;6764:67;;;6075:1099;538:9900;;7159:7;538:9900;;;6740:92;;;:::i;:::-;538:9900;6858:13;;;;:::i;:::-;538:9900;;6858:81;;;;6842:97;;;:::i;:::-;538:9900;;;;;;;;;;:::i;:::-;6667:1;538:9900;;;;;;;7016:28;;;;:::i;:::-;7003:41;;;:::i;:::-;538:9900;7054:23;;;:::i;:::-;538:9900;7159:7;:::i;6858:81::-;6926:13;;;;;:::i;:::-;538:9900;;6858:81;;;6764:67;;;;;;;;;;;;;;:::i;:::-;;;538:9900;;;;;;;;;;;;;6764:67;;;;538:9900;;;;;;;6764:67;;;;;;538:9900;;;6315:1;538:9900;;;;;6442:155;538:9900;;;;;6497:89;;;;;;6380:52;6497:89;;538:9900;;;;;6497:89;6380:52;;;;;;;;;;;;;;;;:::i;:::-;;;538:9900;;;;;;6380:52;;;;;;;;;;538:9900;;;6315:1;538:9900;;;;;6292:57;6332:7;;;;;;:::o;7180:418::-;;;;;;;7435:14;;7431:51;;7544:18;7543:47;7544:18;7543:47;7544:18;;:::i;:::-;7543:47;:::i;:::-;538:9900;-1:-1:-1;;;;;538:9900:167;;7543:47;:::i;7431:51::-;7465:7;;;;;;:::o;538:9900::-;;;;;;;-1:-1:-1;;;;;538:9900:167;;;;;;;;;;;-1:-1:-1;;538:9900:167;;;;;:::i;:::-;;;;-1:-1:-1;538:9900:167;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;7604:669;;;7789:12;;7785:49;;-1:-1:-1;;;;;538:9900:167;;;;7848:30;;7844:354;;-1:-1:-1;8208:58:167;;538:9900;;;8208:58;:::i;7844:354::-;7800:1;7938:16;;;;;;;;538:9900;;;;;7994:77;;;;538:9900;;;;7994:77;;538:9900;7994:77;;;538:9900;;;;;;;7994:77;;;;;:::i;:::-;7930:155;;;;;;:::i;:::-;8103:8;;8099:68;;8181:7;:::o;8099:68::-;538:9900;;-1:-1:-1;;;8120:47:167;;7994:77;7938:16;8120:47;;538:9900;;;;;;7994:77;538:9900;;;;:::i;7785:49::-;7817:7;;;;:::o;941:175:107:-;;;5535:69:112;941:175:107;-1:-1:-1;538:9900:167;;;1050:58:107;;;;;;538:9900:167;;;;1050:58:107;;538:9900:167;;;;;;;;1050:58:107;;;538:9900:167;;;;;;1050:58:107;;;;;:::i;:::-;538:9900:167;;;;;;;;:::i;:::-;;;;;;;;;5487:31:112;;;;;;;;:::i;:::-;5535:69;;:::i;:::-;538:9900:167;;5705:22:107;;;;:56;;;;;941:175;538:9900:167;;;;;;941:175:107;:::o;538:9900:167:-;;;;;;;;;;;;;;;;1050:58:107;538:9900:167;;;;;;;;-1:-1:-1;;;538:9900:167;;;;;5705:56:107;5731:30;;-1:-1:-1;5731:30:107;;;;;;;:::i;:::-;5705:56;;;;;7671:628:112;;;;7875:418;;;538:9900:167;;;7906:22:112;7902:286;;8201:17;;:::o;7902:286::-;1702:19;:23;538:9900:167;;8201:17:112;:::o;538:9900:167:-;;;-1:-1:-1;;;538:9900:167;;;;;;;;;;;;;;;;;;;;7875:418:112;538:9900:167;;;;-1:-1:-1;8980:21:112;:17;;9152:142;;;;;;;8976:379;538:9900:167;;-1:-1:-1;;;9324:20:112;;538:9900:167;9324:20:112;;;538:9900:167;;;;;;;;;;;:::i;8279:949::-;;;;;;;538:9900;;;;8522:46;;;8518:178;;538:9900;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;8781:33;8830:13;-1:-1:-1;8830:13:167;;8874:3;538:9900;;8845:27;;;;;;-1:-1:-1;;538:9900:167;;;;;;;8897:32;;;;8949:28;;;8874:3;8949:28;;;:::i;:::-;538:9900;8874:3;:::i;:::-;8830:13;;8893:231;9040:15;9080:29;8874:3;9040:15;9059:3;9030:25;9040:15;538:9900;9040:15;;;;:::i;:::-;538:9900;;9030:25;;:::i;:::-;538:9900;9016:46;;;;:::i;:::-;538:9900;9099:10;;;;:::i;:::-;538:9900;9080:29;;:::i;538:9900::-;-1:-1:-1;;;538:9900:167;;;;;;;;8845:27;;;;;;;;;;9213:7;8845:27;9213:7;:::i;8518:178::-;538:9900;;;;;2671:94;;;;8591;;;;;538:9900;;;;;8591:94;9234:1202;;;;;;;538:9900;;;;9472:37;;;9468:161;;9639:23;;-1:-1:-1;9677:13:167;;9713:3;538:9900;;9692:19;;;;;9732:26;9713:3;9747:11;;;;;:::i;9713:3::-;9677:13;;;9692:19;;;;;;;;;9782:22;;;9778:105;;-1:-1:-1;;;;;;538:9900:167;;;;9898:30;;9894:356;;10314:13;;-1:-1:-1;10353:3:167;538:9900;;10329:22;;;;;10391:14;10372:47;10391:14;;10353:3;10391:14;;;:::i;:::-;538:9900;;10407:11;;;;:::i;:::-;538:9900;10372:47;;;:::i;:::-;10353:3;:::i;:::-;10314:13;;9894:356;9988:16;;;;;;;;;;538:9900;;;;;10044:79;;;;;538:9900;;;;10044:79;;538:9900;;;;10044:79;;;538:9900;;;;;;;;;;;;;-1:-1:-1;538:9900:167;;;;;;;-1:-1:-1;;;;538:9900:167;;;-1:-1:-1;;538:9900:167;;;;;;;;;;;;;;;;;-1:-1:-1;538:9900:167;;;;;;10044:79;;-1:-1:-1;10044:79:167;;;;;;;;;;;;;538:9900;;10044:79;;;;;;:::i;:::-;9980:157;;;;;;;:::i;:::-;10155:8;;10151:68;;10233:7;;:::o;10151:68::-;538:9900;;;10172:47;;;;;;;;9988:16;10172:47;;538:9900;10044:79;538:9900;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9778:105;538:9900;;;;;9813:70;;;;;;;;;538:9900;;;;;9813:70;9468:161;538:9900;;;;;9532:86;;;;;;;;;538:9900;;;;;9532:86","linkReferences":{},"immutableReferences":{"library_deploy_address":[{"start":7,"length":32}]}},"methodIdentifiers":{"checkAmountAndTransfer(MarketConfigV2.Config storage,address,uint256)":"38fa83e7","checkBatchPayment(MarketConfigV2.Config storage,address,uint256)":"5ea509b5","checkIfCurrencyIsApproved(MarketConfigV2.Config storage,address)":"bc2af99e","checkSplits(address[],uint8[])":"76fb8597","payoutMarketplaceFee(MarketConfigV2.Config storage,address,uint256,uint256,address)":"30863baf","payoutPrimary(MarketConfigV2.Config storage,address,address,uint256,uint256,address,address[],uint8[])":"c3924158","payoutSecondary(MarketConfigV2.Config storage,address,uint256,address,uint256,uint256,address,address[],uint8[])":"981e8fc5","payoutSplits(MarketConfigV2.Config storage,address,uint256,address[],uint8[])":"e6e1b2dc","performPayouts(MarketConfigV2.Config storage,address,uint256,address[],uint256[])":"f0859688","refund(MarketConfigV2.Config storage,address,address,uint256)":"7baf92a3","refundRemainingOffer(MarketConfigV2.Config storage,address,address,uint256,uint256,uint256)":"4c4c2619"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"checkSplits\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"RareERC1155MarketplacePayments\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Shared payment, refund, royalty, staking fee, and split payout helpers for ERC1155 marketplaces.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155MarketplacePayments.sol\":\"RareERC1155MarketplacePayments\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350\",\"dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155MarketplacePayments.sol\":{\"keccak256\":\"0x53d345e5b50ecbede9f57d71ea952279c61a3a68dbdc3e5437311d26af6385c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6456557338e5ad27b23a06dd75c8e91b024caf7002d57873c12b0419466feae\",\"dweb:/ipfs/QmYTenZhNjk4dMHbU25pphtUueaWQBvdVHU37pPFdj2h5v\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"pure","type":"function","name":"checkSplits"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155MarketplacePayments.sol":"RareERC1155MarketplacePayments"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9","urls":["bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350","dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155MarketplacePayments.sol":{"keccak256":"0x53d345e5b50ecbede9f57d71ea952279c61a3a68dbdc3e5437311d26af6385c8","urls":["bzz-raw://c6456557338e5ad27b23a06dd75c8e91b024caf7002d57873c12b0419466feae","dweb:/ipfs/QmYTenZhNjk4dMHbU25pphtUueaWQBvdVHU37pPFdj2h5v"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":167} \ No newline at end of file +{"abi":[{"type":"function","name":"checkSplits","inputs":[{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"pure"},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x6080806040523461001c5761199490816100228239308160080152f35b600080fdfe604060808152307f0000000000000000000000000000000000000000000000000000000000000000146004918236101561003857600080fd5b600091823560e01c806330863baf1461090d57806338fa83e7146108f55780634c4c2619146108bb5780635021b71b1461082f5780635ea509b51461081757806376fb8597146106975780637baf92a314610665578063981e8fc514610549578063bc2af99e14610498578063c392415814610211578063c69cbad0146101f3578063e6e1b2dc146101925763f0859688146100d357600080fd5b61018e5760a036600319011261018e576100eb610928565b6001600160401b039360643585811161018a5761010b9036908301610a75565b9160843595861161018a573660238701121561018a57858201359561013b61013288610a5e565b95519586610a3d565b86855260209660248887019160051b8301019136831161018657602401905b82821061017757505050610174949550604435913561177b565b80f35b8135815290880190880161015a565b8780fd5b8480fd5b5080fd5b83858361018e5760a036600319011261018e576101ad610928565b6001600160401b039160643583811161018a576101cd9036908301610a75565b9060843593841161018a576101e86101749436908301610ae3565b926044359135611678565b838261020e576101746102053661096f565b93929092611147565b80fd5b5061018e5761010036600319011261018e5782359061022e610928565b90610237610943565b60a4356001600160a01b0381811695919390606435878603610494576001600160401b039660c435888111610490576102739036908d01610a75565b9760e435908111610490579061028f8c94939236908601610ae3565b996102a08399608435858b8b6110a9565b836002880154169181875196635dc22eff60e01b88528701526020958681602481875afa908115610484578f91928f938489938b979692610455575b5050156103f857505060249088519485938492632260494f60e01b84528301525afa9081156103ee579060ff918c916103c1575b505b169a60648c116103a35750606461032d6101749b9c83610e40565b04908161033f575b5050505050611678565b6103999497508161034f91610bc2565b9680519261035c846109d6565b6001845284368186013786541661037284610e53565b52519261037e846109d6565b6001845236818501378061039184610e53565b52858561177b565b3880808080610335565b845163d6849ff160e01b81529081018c905260646024820152604490fd5b6103e19150853d87116103e7575b6103d98183610a3d565b810190610e27565b38610310565b503d6103cf565b85513d8d823e3d90fd5b60018b01548a5163b28a7bad60e01b81529183169382019390935294508492506024918391165afa9081156103ee579060ff918c91610438575b50610312565b61044f9150853d87116103e7576103d98183610a3d565b38610432565b610476919250873d891161047d575b61046e8183610a3d565b810190610b7b565b90386102dc565b503d610464565b8e8951903d90823e3d90fd5b8a80fd5b8880fd5b83858480600319360112610545576001600160a01b0390816104b8610928565b169182151590816104e2575b506104cd578380f35b5163cd5f748960e01b81529182015260249150fd5b6024915060209060058635015416835192838092632d5ad3d560e01b825287898301525afa90811561053b57859161051d575b5015856104c4565b610535915060203d811161047d5761046e8183610a3d565b85610515565b82513d87823e3d90fd5b8280fd5b509291926105455761012036600319011261054557813590610569610928565b610571610959565b6001600160a01b039360c435929160a435916084359190878616860361064c576001600160401b039660e435888111610661576105b19036908c01610a75565b9761010435908111610661576105ca9036908c01610ae3565b98856105e3575050610174985089945b60443591610e84565b6006830154825163470d6ed960e11b81529b8c018690526020918c916024918391165afa90811561065857508a90610621575b6101749950946105da565b506020893d8211610650575b8161063a60209383610a3d565b8101031261064c576101749851610616565b8980fd5b3d915061062d565b513d8c823e3d90fd5b8b80fd5b83858361018e57608036600319011261018e5761017490610684610928565b61068c610943565b90606435923561142c565b83858480600319360112610545576001600160401b0390823582811161018a576106c49036908501610b4b565b91906024938435908111610813576106df9036908701610b4b565b90841561080357600585116107e6578185036107cb57939190879488935b82851061072f57505050505060648203610715578480f35b516357623e5560e01b815292830152606490820152604490fd5b909192939561073f878387610de6565b356001600160a01b0381169081900361049057156107b55760ff8061076d6107688a8888610de6565b610e0c565b161561079f5761079691610790916107896107688b8989610de6565b1690610e1a565b96610dd7565b939291906106fd565b865163d4c1893560e01b8152808b018990528990fd5b85516306f5730d60e41b8152808a018890528890fd5b604487838888885193632db4fb2960e01b8552840152820152fd5b83516366a4d05560e01b8152808801869052600581880152604490fd5b835163d218e6a560e01b81528790fd5b8680fd5b838261020e57610174610829366109ac565b91610b93565b83858361018e5761014036600319011261018e5761084b610928565b610853610959565b9160e4356001600160a01b038116810361018a576001600160401b039361010435858111610813576108889036908501610a75565b9261012435958611610813576108a46101749636908301610ae3565b9460c4359260a43592608435926044359135610e84565b83858361018e5760c036600319011261018e57610174906108da610928565b6108e2610943565b9160a43592608435926064359235611374565b838261020e57610174610907366109ac565b91610be5565b838261020e5761017461091f3661096f565b939290926110a9565b602435906001600160a01b038216820361093e57565b600080fd5b604435906001600160a01b038216820361093e57565b606435906001600160a01b038216820361093e57565b60a090600319011261093e57600435906001600160a01b0390602435828116810361093e57916044359160643591608435908116810361093e5790565b606090600319011261093e57600435906024356001600160a01b038116810361093e579060443590565b604081019081106001600160401b038211176109f157604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176109f157604052565b608081019081106001600160401b038211176109f157604052565b90601f801991011681019081106001600160401b038211176109f157604052565b6001600160401b0381116109f15760051b60200190565b81601f8201121561093e57803591610a8c83610a5e565b92610a9a6040519485610a3d565b808452602092838086019260051b82010192831161093e578301905b828210610ac4575050505090565b81356001600160a01b038116810361093e578152908301908301610ab6565b81601f8201121561093e57803591610afa83610a5e565b92610b086040519485610a3d565b808452602092838086019260051b82010192831161093e578301905b828210610b32575050505090565b813560ff8116810361093e578152908301908301610b24565b9181601f8401121561093e578235916001600160401b03831161093e576020808501948460051b01011161093e57565b9081602091031261093e5751801515810361093e5790565b91908115610ba657610ba492610be5565b565b50505034610bb057565b60405163429465b160e01b8152600490fd5b91908203918211610bcf57565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281169060008215610daa5734610d98576040938451926370a0823160e01b9081855230600486015260209283866024818a5afa958615610d8e578596610d5e575b506008015416803b15610d5a5783809160848b8a519485938492630aed65f560e11b84528c600485015233602485015230604485015260648401525af18015610d5057610d22575b508190602487518097819382523060048301525afa918215610d175791610ce7575b50610ca49250610bc2565b90838203610cb25750505050565b51636ff596f360e01b81526001600160a01b0392909216600483015260248201929092526044810191909152606490fd5b0390fd5b905082813d8311610d10575b610cfd8183610a3d565b8101031261093e57610ca4915138610c99565b503d610cf3565b8551903d90823e3d90fd5b6001600160401b038194929411610d3c5786529181610c77565b634e487b7160e01b82526041600452602482fd5b87513d86823e3d90fd5b8380fd5b9095508381813d8311610d87575b610d768183610a3d565b8101031261018a5751946008610c2f565b503d610d6c565b88513d87823e3d90fd5b60405163d9efa38960e01b8152600490fd5b5050505050803403610db95750565b604490604051906305e4640960e21b82526004820152346024820152fd5b6000198114610bcf5760010190565b9190811015610df65760051b0190565b634e487b7160e01b600052603260045260246000fd5b3560ff8116810361093e5790565b91908201809211610bcf57565b9081602091031261093e575160ff8116810361093e5790565b81810292918115918404141715610bcf57565b805115610df65760200190565b805160011015610df65760400190565b8051821015610df65760209160051b010190565b90999584989497610e9d919a9694939a89958585611147565b6003810154604051637a99dc0160e11b81526001600160a01b039b8c166004820152602481019a909a5260448a019890985297989760009788908b90606490829084908e165af1998a1561109e578899899b610f8a575b5050875b8a51891015610f2557610f19610f1f91610f128b8e610e70565b5190610e1a565b98610dd7565b97610ef8565b9295989093969991949750898311610f6c57610ba4989983610f4b575b50505050611678565b83610f63949750610f5b91610bc2565b95858561177b565b38808080610f42565b6044838b604051916344783bd360e11b835260048301526024820152fd5b919a5098503d80898b3e610f9e818b610a3d565b8901986040818b0312610494578051906001600160401b0391828111610490578101928b601f85011215610490578b845191610fd983610a5e565b95610fe76040519788610a3d565b83875260208088019460051b82010192831161109a57602001925b82841061107d5750505050602081015191821161064c57019880601f8b01121561049457895161103181610a5e565b9a61103f6040519c8d610a3d565b818c526020808d019260051b82010192831161049057602001905b82821061106d5750505097983880610ef4565b815181526020918201910161105a565b8351828116810361109657815260209384019301611002565b8e80fd5b8d80fd5b6040513d8a823e3d90fd5b9194939290811561113f57600683015460405163470d6ed960e11b81526004810197909752602090879060249082906001600160a01b03165afa928315611133576000936110fd575b610ba4959650611147565b92956020813d821161112b575b8161111760209383610a3d565b8101031261081357519495508594926110f2565b3d915061110a565b6040513d6000823e3d90fd5b505050509050565b9190811561136d5781841161134f5760409283519361116585610a07565b6002855260209681368988013782546001600160a01b0391908216908161118b89610e53565b526007850154845163e286ef3360e01b815291841660048301528a908290602490829087165afa90811561134457908391600091611309575b50166111cf88610e60565b52816111da88610e60565b51166112f7575b816111eb88610e60565b911690528151966111fb88610a07565b6002885282368a8a013761120f8187610bc2565b61121889610e53565b5261122288610e60565b5261122c87610e53565b51156112aa5761123b87610e60565b511561124d575050610ba4955061177b565b9581610ba4989761127561129a9451986112668a6109d6565b60018a528a36818c0137610e53565b511661128088610e53565b52519661128c886109d6565b600188523681890137610e53565b516112a486610e53565b5261177b565b9581610ba498976112d261129a9451986112c38a6109d6565b60018a528a36818c0137610e60565b51166112dd88610e53565b5251966112e9886109d6565b600188523681890137610e60565b508061130287610e60565b51166111e1565b9091508a81813d831161133d575b6113218183610a3d565b8101031261018e575190838216820361020e57508290386111c4565b503d611317565b84513d6000823e3d90fd5b6044828560405191639bdfbb5160e01b835260048301526024820152fd5b5050505050565b92949390919381156113a55761139061139592610ba497610e40565b610e1a565b926001600160a01b03169161142c565b505050505050565b3d156113e7573d906001600160401b0382116109f157604051916113db601f8201601f191660200184610a3d565b82523d6000602084013e565b606090565b919082519283825260005b848110611418575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016113f7565b929182156114c7576001600160a01b039182169384156114535750610ba4939116906114cd565b600094509282600486950154169260405190602082019363410085df60e01b85521660248201528160448201526044815261148d81610a22565b51925af16114996113ad565b90156114a25750565b604051635519d77560e11b815260206004820152908190610ce39060248301906113ec565b50505050565b919061155791600080604051936020968786019463a9059cbb60e01b865260018060a01b03809316602488015260448701526044865261150c86610a22565b16926040519461151b866109d6565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af16115516113ad565b916115df565b8051908282159283156115c7575b505050156115705750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b6115d79350820181019101610b7b565b388281611565565b9192901561164157508151156115f3575090565b3b156115fc5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156116545750805190602001fd5b60405162461bcd60e51b815260206004820152908190610ce39060248301906113ec565b9491949390938351825180820361175d57505083519361169785610a5e565b946116a56040519687610a3d565b8086526116b4601f1991610a5e565b013660208701378693600091825b81518082101561174b5760001981019081116117375781036116f85780876116ed6116f3938b610e70565b52610dd7565b6116c2565b956107906116f391606461171a8d60ff6117128d8d610e70565b511690610e40565b046117258a8c610e70565b52611730898b610e70565b5190610bc2565b634e487b7160e01b85526011600452602485fd5b505094509692505093610ba49461177b565b6044925060405191632db4fb2960e01b835260048301526024820152fd5b949193929081518451808203611940575050600095865b85518810156117b8576117ac6117b291610f128a89610e70565b97610dd7565b96611792565b9093965094909391948181036119225750801561136d576001600160a01b0393841692831561182f57505060005b845181101561136d57806117fd61182a9284610e70565b511561182557611825856118118389610e70565b511661181d8386610e70565b5190866114cd565b610dd7565b6117e6565b849294919350600490969596015416916040516020948582019363c176e63960e01b85526064830160406024850152895180915287608485019a01916000905b828210611909575050505081880360231901604483015280518089529086019786019060005b8181106118f5575050600095969750906118bc81879695949303601f198101835282610a3d565b51925af1906118c96113ad565b91156118d3575050565b610ce3604051928392634c0fe4a160e11b8452600484015260248301906113ec565b895183529887019891870191600101611895565b835181168c529a89019a9289019260019091019061186f565b6044925060405191633bc6f52760e21b835260048301526024820152fd5b60449250604051916345e8c29760e11b835260048301526024820152fdfea2646970667358221220e88953e8903faad022a73a2130d17f1c614e87afa599b18665910d013996eb6964736f6c63430008120033","sourceMap":"538:12134:76:-:0;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x604060808152307f0000000000000000000000000000000000000000000000000000000000000000146004918236101561003857600080fd5b600091823560e01c806330863baf1461090d57806338fa83e7146108f55780634c4c2619146108bb5780635021b71b1461082f5780635ea509b51461081757806376fb8597146106975780637baf92a314610665578063981e8fc514610549578063bc2af99e14610498578063c392415814610211578063c69cbad0146101f3578063e6e1b2dc146101925763f0859688146100d357600080fd5b61018e5760a036600319011261018e576100eb610928565b6001600160401b039360643585811161018a5761010b9036908301610a75565b9160843595861161018a573660238701121561018a57858201359561013b61013288610a5e565b95519586610a3d565b86855260209660248887019160051b8301019136831161018657602401905b82821061017757505050610174949550604435913561177b565b80f35b8135815290880190880161015a565b8780fd5b8480fd5b5080fd5b83858361018e5760a036600319011261018e576101ad610928565b6001600160401b039160643583811161018a576101cd9036908301610a75565b9060843593841161018a576101e86101749436908301610ae3565b926044359135611678565b838261020e576101746102053661096f565b93929092611147565b80fd5b5061018e5761010036600319011261018e5782359061022e610928565b90610237610943565b60a4356001600160a01b0381811695919390606435878603610494576001600160401b039660c435888111610490576102739036908d01610a75565b9760e435908111610490579061028f8c94939236908601610ae3565b996102a08399608435858b8b6110a9565b836002880154169181875196635dc22eff60e01b88528701526020958681602481875afa908115610484578f91928f938489938b979692610455575b5050156103f857505060249088519485938492632260494f60e01b84528301525afa9081156103ee579060ff918c916103c1575b505b169a60648c116103a35750606461032d6101749b9c83610e40565b04908161033f575b5050505050611678565b6103999497508161034f91610bc2565b9680519261035c846109d6565b6001845284368186013786541661037284610e53565b52519261037e846109d6565b6001845236818501378061039184610e53565b52858561177b565b3880808080610335565b845163d6849ff160e01b81529081018c905260646024820152604490fd5b6103e19150853d87116103e7575b6103d98183610a3d565b810190610e27565b38610310565b503d6103cf565b85513d8d823e3d90fd5b60018b01548a5163b28a7bad60e01b81529183169382019390935294508492506024918391165afa9081156103ee579060ff918c91610438575b50610312565b61044f9150853d87116103e7576103d98183610a3d565b38610432565b610476919250873d891161047d575b61046e8183610a3d565b810190610b7b565b90386102dc565b503d610464565b8e8951903d90823e3d90fd5b8a80fd5b8880fd5b83858480600319360112610545576001600160a01b0390816104b8610928565b169182151590816104e2575b506104cd578380f35b5163cd5f748960e01b81529182015260249150fd5b6024915060209060058635015416835192838092632d5ad3d560e01b825287898301525afa90811561053b57859161051d575b5015856104c4565b610535915060203d811161047d5761046e8183610a3d565b85610515565b82513d87823e3d90fd5b8280fd5b509291926105455761012036600319011261054557813590610569610928565b610571610959565b6001600160a01b039360c435929160a435916084359190878616860361064c576001600160401b039660e435888111610661576105b19036908c01610a75565b9761010435908111610661576105ca9036908c01610ae3565b98856105e3575050610174985089945b60443591610e84565b6006830154825163470d6ed960e11b81529b8c018690526020918c916024918391165afa90811561065857508a90610621575b6101749950946105da565b506020893d8211610650575b8161063a60209383610a3d565b8101031261064c576101749851610616565b8980fd5b3d915061062d565b513d8c823e3d90fd5b8b80fd5b83858361018e57608036600319011261018e5761017490610684610928565b61068c610943565b90606435923561142c565b83858480600319360112610545576001600160401b0390823582811161018a576106c49036908501610b4b565b91906024938435908111610813576106df9036908701610b4b565b90841561080357600585116107e6578185036107cb57939190879488935b82851061072f57505050505060648203610715578480f35b516357623e5560e01b815292830152606490820152604490fd5b909192939561073f878387610de6565b356001600160a01b0381169081900361049057156107b55760ff8061076d6107688a8888610de6565b610e0c565b161561079f5761079691610790916107896107688b8989610de6565b1690610e1a565b96610dd7565b939291906106fd565b865163d4c1893560e01b8152808b018990528990fd5b85516306f5730d60e41b8152808a018890528890fd5b604487838888885193632db4fb2960e01b8552840152820152fd5b83516366a4d05560e01b8152808801869052600581880152604490fd5b835163d218e6a560e01b81528790fd5b8680fd5b838261020e57610174610829366109ac565b91610b93565b83858361018e5761014036600319011261018e5761084b610928565b610853610959565b9160e4356001600160a01b038116810361018a576001600160401b039361010435858111610813576108889036908501610a75565b9261012435958611610813576108a46101749636908301610ae3565b9460c4359260a43592608435926044359135610e84565b83858361018e5760c036600319011261018e57610174906108da610928565b6108e2610943565b9160a43592608435926064359235611374565b838261020e57610174610907366109ac565b91610be5565b838261020e5761017461091f3661096f565b939290926110a9565b602435906001600160a01b038216820361093e57565b600080fd5b604435906001600160a01b038216820361093e57565b606435906001600160a01b038216820361093e57565b60a090600319011261093e57600435906001600160a01b0390602435828116810361093e57916044359160643591608435908116810361093e5790565b606090600319011261093e57600435906024356001600160a01b038116810361093e579060443590565b604081019081106001600160401b038211176109f157604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176109f157604052565b608081019081106001600160401b038211176109f157604052565b90601f801991011681019081106001600160401b038211176109f157604052565b6001600160401b0381116109f15760051b60200190565b81601f8201121561093e57803591610a8c83610a5e565b92610a9a6040519485610a3d565b808452602092838086019260051b82010192831161093e578301905b828210610ac4575050505090565b81356001600160a01b038116810361093e578152908301908301610ab6565b81601f8201121561093e57803591610afa83610a5e565b92610b086040519485610a3d565b808452602092838086019260051b82010192831161093e578301905b828210610b32575050505090565b813560ff8116810361093e578152908301908301610b24565b9181601f8401121561093e578235916001600160401b03831161093e576020808501948460051b01011161093e57565b9081602091031261093e5751801515810361093e5790565b91908115610ba657610ba492610be5565b565b50505034610bb057565b60405163429465b160e01b8152600490fd5b91908203918211610bcf57565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281169060008215610daa5734610d98576040938451926370a0823160e01b9081855230600486015260209283866024818a5afa958615610d8e578596610d5e575b506008015416803b15610d5a5783809160848b8a519485938492630aed65f560e11b84528c600485015233602485015230604485015260648401525af18015610d5057610d22575b508190602487518097819382523060048301525afa918215610d175791610ce7575b50610ca49250610bc2565b90838203610cb25750505050565b51636ff596f360e01b81526001600160a01b0392909216600483015260248201929092526044810191909152606490fd5b0390fd5b905082813d8311610d10575b610cfd8183610a3d565b8101031261093e57610ca4915138610c99565b503d610cf3565b8551903d90823e3d90fd5b6001600160401b038194929411610d3c5786529181610c77565b634e487b7160e01b82526041600452602482fd5b87513d86823e3d90fd5b8380fd5b9095508381813d8311610d87575b610d768183610a3d565b8101031261018a5751946008610c2f565b503d610d6c565b88513d87823e3d90fd5b60405163d9efa38960e01b8152600490fd5b5050505050803403610db95750565b604490604051906305e4640960e21b82526004820152346024820152fd5b6000198114610bcf5760010190565b9190811015610df65760051b0190565b634e487b7160e01b600052603260045260246000fd5b3560ff8116810361093e5790565b91908201809211610bcf57565b9081602091031261093e575160ff8116810361093e5790565b81810292918115918404141715610bcf57565b805115610df65760200190565b805160011015610df65760400190565b8051821015610df65760209160051b010190565b90999584989497610e9d919a9694939a89958585611147565b6003810154604051637a99dc0160e11b81526001600160a01b039b8c166004820152602481019a909a5260448a019890985297989760009788908b90606490829084908e165af1998a1561109e578899899b610f8a575b5050875b8a51891015610f2557610f19610f1f91610f128b8e610e70565b5190610e1a565b98610dd7565b97610ef8565b9295989093969991949750898311610f6c57610ba4989983610f4b575b50505050611678565b83610f63949750610f5b91610bc2565b95858561177b565b38808080610f42565b6044838b604051916344783bd360e11b835260048301526024820152fd5b919a5098503d80898b3e610f9e818b610a3d565b8901986040818b0312610494578051906001600160401b0391828111610490578101928b601f85011215610490578b845191610fd983610a5e565b95610fe76040519788610a3d565b83875260208088019460051b82010192831161109a57602001925b82841061107d5750505050602081015191821161064c57019880601f8b01121561049457895161103181610a5e565b9a61103f6040519c8d610a3d565b818c526020808d019260051b82010192831161049057602001905b82821061106d5750505097983880610ef4565b815181526020918201910161105a565b8351828116810361109657815260209384019301611002565b8e80fd5b8d80fd5b6040513d8a823e3d90fd5b9194939290811561113f57600683015460405163470d6ed960e11b81526004810197909752602090879060249082906001600160a01b03165afa928315611133576000936110fd575b610ba4959650611147565b92956020813d821161112b575b8161111760209383610a3d565b8101031261081357519495508594926110f2565b3d915061110a565b6040513d6000823e3d90fd5b505050509050565b9190811561136d5781841161134f5760409283519361116585610a07565b6002855260209681368988013782546001600160a01b0391908216908161118b89610e53565b526007850154845163e286ef3360e01b815291841660048301528a908290602490829087165afa90811561134457908391600091611309575b50166111cf88610e60565b52816111da88610e60565b51166112f7575b816111eb88610e60565b911690528151966111fb88610a07565b6002885282368a8a013761120f8187610bc2565b61121889610e53565b5261122288610e60565b5261122c87610e53565b51156112aa5761123b87610e60565b511561124d575050610ba4955061177b565b9581610ba4989761127561129a9451986112668a6109d6565b60018a528a36818c0137610e53565b511661128088610e53565b52519661128c886109d6565b600188523681890137610e53565b516112a486610e53565b5261177b565b9581610ba498976112d261129a9451986112c38a6109d6565b60018a528a36818c0137610e60565b51166112dd88610e53565b5251966112e9886109d6565b600188523681890137610e60565b508061130287610e60565b51166111e1565b9091508a81813d831161133d575b6113218183610a3d565b8101031261018e575190838216820361020e57508290386111c4565b503d611317565b84513d6000823e3d90fd5b6044828560405191639bdfbb5160e01b835260048301526024820152fd5b5050505050565b92949390919381156113a55761139061139592610ba497610e40565b610e1a565b926001600160a01b03169161142c565b505050505050565b3d156113e7573d906001600160401b0382116109f157604051916113db601f8201601f191660200184610a3d565b82523d6000602084013e565b606090565b919082519283825260005b848110611418575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016113f7565b929182156114c7576001600160a01b039182169384156114535750610ba4939116906114cd565b600094509282600486950154169260405190602082019363410085df60e01b85521660248201528160448201526044815261148d81610a22565b51925af16114996113ad565b90156114a25750565b604051635519d77560e11b815260206004820152908190610ce39060248301906113ec565b50505050565b919061155791600080604051936020968786019463a9059cbb60e01b865260018060a01b03809316602488015260448701526044865261150c86610a22565b16926040519461151b866109d6565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af16115516113ad565b916115df565b8051908282159283156115c7575b505050156115705750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b6115d79350820181019101610b7b565b388281611565565b9192901561164157508151156115f3575090565b3b156115fc5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156116545750805190602001fd5b60405162461bcd60e51b815260206004820152908190610ce39060248301906113ec565b9491949390938351825180820361175d57505083519361169785610a5e565b946116a56040519687610a3d565b8086526116b4601f1991610a5e565b013660208701378693600091825b81518082101561174b5760001981019081116117375781036116f85780876116ed6116f3938b610e70565b52610dd7565b6116c2565b956107906116f391606461171a8d60ff6117128d8d610e70565b511690610e40565b046117258a8c610e70565b52611730898b610e70565b5190610bc2565b634e487b7160e01b85526011600452602485fd5b505094509692505093610ba49461177b565b6044925060405191632db4fb2960e01b835260048301526024820152fd5b949193929081518451808203611940575050600095865b85518810156117b8576117ac6117b291610f128a89610e70565b97610dd7565b96611792565b9093965094909391948181036119225750801561136d576001600160a01b0393841692831561182f57505060005b845181101561136d57806117fd61182a9284610e70565b511561182557611825856118118389610e70565b511661181d8386610e70565b5190866114cd565b610dd7565b6117e6565b849294919350600490969596015416916040516020948582019363c176e63960e01b85526064830160406024850152895180915287608485019a01916000905b828210611909575050505081880360231901604483015280518089529086019786019060005b8181106118f5575050600095969750906118bc81879695949303601f198101835282610a3d565b51925af1906118c96113ad565b91156118d3575050565b610ce3604051928392634c0fe4a160e11b8452600484015260248301906113ec565b895183529887019891870191600101611895565b835181168c529a89019a9289019260019091019061186f565b6044925060405191633bc6f52760e21b835260048301526024820152fd5b60449250604051916345e8c29760e11b835260048301526024820152fdfea2646970667358221220e88953e8903faad022a73a2130d17f1c614e87afa599b18665910d013996eb6964736f6c63430008120033","sourceMap":"538:12134:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;538:12134:76;;;;;;:::i;:::-;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;538:12134:76;;;;;;:::i;:::-;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;538:12134:76;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;3621:33;3739:7;3621:33;538:12134;;;3739:7;;;;:::i;:::-;3787:29;;;;538:12134;;;;;;;;;;3787:62;;;;538:12134;;3787:62;;;538:12134;3787:62;;;;;;;;;;;;;;;;;;;;;;;538:12134;-1:-1:-1;;3787:239:76;;;538:12134;;;;;;;;;;;;;;3864:60;;;;538:12134;3864:60;;;;;;;;538:12134;3864:60;;;;;3787:239;;;538:12134;4040:24;538:12134;4040:24;;4036:142;;4211:28;538:12134;4211:28;4792:12;4211:28;;;;:::i;:::-;538:12134;4260:15;;4256:451;;3787:239;4792:12;;;;;;:::i;4256:451::-;4680:15;4291:30;;;;;;;:::i;:::-;538:12134;;;;;;;:::i;:::-;;;;;;;;;;;;;4420:59;;;:::i;:::-;538:12134;;;;;;:::i;:::-;;;;;;;;;4558:32;;;;:::i;:::-;538:12134;4680:15;;;:::i;:::-;4256:451;;;;;;;4036:142;538:12134;;-1:-1:-1;;;4087:80:76;;;;;538:12134;;;;;;;;;;4087:80;3864:60;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;538:12134;;;;;;;;;3787:239;538:12134;3939:27;;538:12134;;;-1:-1:-1;;;3939:87:76;;538:12134;;;3939:87;;;538:12134;;;;;-1:-1:-1;538:12134:76;;-1:-1:-1;538:12134:76;;;;;3939:87;;;;;;;;538:12134;3939:87;;;;;3787:239;;;;3939:87;;;;;;;;;;;;;;:::i;:::-;;;;3787:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;538:12134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;:::i;:::-;;742:30;;;;:98;;;;538:12134;738:202;;;538:12134;;;738:202;538:12134;-1:-1:-1;;;863:66:76;;;;;538:12134;;;-1:-1:-1;863:66:76;742:98;538:12134;;;;;777:29;538:12134;;777:29;538:12134;;;;;;;;;;;777:63;;;;;;538:12134;777:63;;;;;;;;;;;742:98;776:64;;742:98;;;777:63;;;;538:12134;777:63;;;;;;;;;:::i;:::-;;;;;538:12134;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;538:12134:76;;;;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;5199:79;:20;;;:79;;5559:12;5199:79;;;;;538:12134;;5559:12;;:::i;5199:79::-;5226:23;;;538:12134;;;-1:-1:-1;;;5226:52:76;;;;;538:12134;;;;;;;;;;;;5226:52;;;;;;;;;;;;5199:79;5559:12;5199:79;;;;;5226:52;;538:12134;5226:52;;;;;;;;;538:12134;5226:52;;;:::i;:::-;;;538:12134;;;;5559:12;538:12134;;5226:52;;538:12134;;;;5226:52;;;-1:-1:-1;5226:52:76;;;538:12134;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;538:12134:76;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;2340:28;;;2336:95;;2471:1;2445:27;;2441:148;;2602:46;;;2598:178;;2786:22;;;;2823:13;;2818:355;2838:23;;;;;;3187:17;;;;;3201:3;3187:17;;3183:93;;538:12134;;;3183:93;538:12134;-1:-1:-1;;;3213:63:76;;;;;538:12134;3201:3;538:12134;;;;;;3213:63;2863:3;2886:19;;;;;;;;;;:::i;:::-;538:12134;-1:-1:-1;;;;;538:12134:76;;;;;;;;2886:33;2882:137;;538:12134;3036:15;;;;;;;:::i;:::-;;:::i;:::-;538:12134;3036:20;3032:87;;2863:3;3147:15;3133:29;3147:15;;;;;;;:::i;:::-;538:12134;3133:29;;:::i;:::-;2863:3;;:::i;:::-;2823:13;;;;;;3032:87;538:12134;;-1:-1:-1;;;3065:54:76;;;;;538:12134;;;;;3065:54;2882:137;538:12134;;-1:-1:-1;;;2946:58:76;;;;;538:12134;;;;;2946:58;2598:178;538:12134;;;;;;;2671:94;;;;;;;;538:12134;;;;2671:94;2441:148;538:12134;;-1:-1:-1;;;2495:83:76;;;;;538:12134;;;2471:1;538:12134;;;;;;2495:83;2336:95;538:12134;;-1:-1:-1;;;2377:54:76;;538:12134;;2377:54;538:12134;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;-1:-1:-1;;538:12134:76;;;;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;538:12134:76;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;538:12134:76;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;538:12134:76;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;538:12134:76;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;:::o;:::-;-1:-1:-1;;;;;538:12134:76;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;952:352::-;;;1094:12;;1090:139;;1289:7;;;:::i;:::-;952:352::o;1090:139::-;1126:9;;;;1122:76;;1212:7::o;1122:76::-;538:12134;;-1:-1:-1;;;1149:49:76;;;;;538:12134;;;;;;;;;;:::o;:::-;;;;;;;;;;;;1310:901;-1:-1:-1;;;;;538:12134:76;;;;1485:1;1457:30;;1453:181;;1648:9;1644:85;;538:12134;;;;;;;;1813:30;;;;1837:4;1813:30;;;538:12134;1813:30;;;;538:12134;1813:30;;;;;;;;;;;;;1310:901;1854:28;;;538:12134;;1854:95;;;;;538:12134;;;;;;;;;;;;;;;1854:95;;;1813:30;1854:95;;538:12134;1914:10;538:12134;;;;1837:4;538:12134;;;;;;;;1854:95;;;;;;;;1310:901;538:12134;;;;;;1985:30;;;;;;1837:4;1813:30;1985;;538:12134;1985:30;;;;;;;;;;1310:901;1985:46;;;;;:::i;:::-;2045:25;;;;2041:164;;1310:901;;;;:::o;2041:164::-;538:12134;-1:-1:-1;;;2093:101:76;;-1:-1:-1;;;;;538:12134:76;;;;1813:30;2093:101;;538:12134;;;;;;;;;;;;;;;;;2093:101;;;;;1985:30;;;;;;;;;;;;;;;:::i;:::-;;;538:12134;;;;1985:46;538:12134;;1985:30;;;;;;;;;538:12134;;;;;;;;;;1854:95;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;1854:95;;538:12134;-1:-1:-1;;;538:12134:76;;;1813:30;538:12134;;;;1854:95;538:12134;;;;;;;;;1854:95;538:12134;;;1813:30;;;;;;;;;;;;;;;;;:::i;:::-;;;538:12134;;;;;;1854:28;1813:30;;;;;;;;538:12134;;;;;;;;;1644:85;538:12134;;-1:-1:-1;;;1671:58:76;;;;;1453:181;1507:9;;;;;;;:20;1503:100;;1617:7;:::o;1503:100::-;538:12134;;;;1536:67;;;;;;;;;538:12134;1507:9;538:12134;;;;1536:67;538:12134;-1:-1:-1;;538:12134:76;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;8004:1;538:12134;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;5594:1312::-;;;;;;;;6133:7;5594:1312;;;;;;5997:33;6133:7;;;;:::i;:::-;6231:21;;;538:12134;;;-1:-1:-1;;;6231:69:76;;-1:-1:-1;;;;;538:12134:76;;;6231:69;;;538:12134;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;538:12134:76;;;;;;-1:-1:-1;;538:12134:76;;6231:69;;;;;;;;-1:-1:-1;;6231:69:76;;;5594:1312;6311:26;;;6389:3;538:12134;;6367:20;;;;;6408:30;6389:3;6426:12;;;;;:::i;:::-;538:12134;6408:30;;:::i;:::-;6389:3;;:::i;:::-;6352:13;;;6367:20;;;;;;;;;;;;6463:32;;;6459:157;;6886:12;6630:18;;;6626:175;;6347:102;6886:12;;;;;:::i;6626:175::-;6664:33;6780:9;6664:33;;;;;;:::i;:::-;6780:9;;;;:::i;:::-;6626:175;;;;;;6459:157;538:12134;;;;;6518:87;;;;;;6231:69;6518:87;;538:12134;;;;;6518:87;6231:69;;;;;;;;;;;;;;;:::i;:::-;;;538:12134;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6231:69;;;;;;;;;538:12134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6231:69;538:12134;;;;;;;;;6912:473;;;;;;7133:20;;7129:57;;7217:23;;;538:12134;;;-1:-1:-1;;;7217:52:76;;;;;538:12134;;;;7217:52;;538:12134;;;;;;-1:-1:-1;;;;;538:12134:76;7217:52;;;;;;;7152:1;7217:52;;;6912:473;7370:7;;;;;:::i;7217:52::-;;;;;;;;;;;;;;;;;:::i;:::-;;;538:12134;;;;;;;-1:-1:-1;538:12134:76;;;7217:52;;;;;-1:-1:-1;7217:52:76;;;538:12134;;;7152:1;538:12134;;;;;7129:57;7169:7;;;;;;:::o;7391:1882::-;;;7630:20;;7626:57;;7697:29;;;7693:157;;538:12134;;;;;;;;:::i;:::-;7920:1;538:12134;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;7932:51;;;:::i;:::-;538:12134;8017:23;;;538:12134;;;-1:-1:-1;;;8017:67:76;;538:12134;;;8017:67;;;538:12134;8017:23;;538:12134;;;;;;;;8017:67;;;;;;;;;;7649:1;8017:67;;;7391:1882;538:12134;;7993:92;;;:::i;:::-;538:12134;8111:13;;;;:::i;:::-;538:12134;;8111:81;;;8095:97;;;;:::i;:::-;538:12134;;;;;;;;;;:::i;:::-;7920:1;538:12134;;;;;;;;8269:29;;;;:::i;:::-;8256:42;;;:::i;:::-;538:12134;8308:24;;;:::i;:::-;538:12134;8347:10;;;:::i;:::-;538:12134;8347:15;8343:400;;8757:10;;;:::i;:::-;538:12134;8757:15;8753:424;;9258:7;;;;;;:::i;8753:424::-;538:12134;;9127:18;538:12134;;8902:13;9021:10;538:12134;;;;;;:::i;:::-;;;;;;;;;;8902:13;:::i;:::-;538:12134;;8875:40;;;:::i;:::-;538:12134;;;;;;:::i;:::-;;;;;;;;;9021:10;:::i;:::-;538:12134;8997:34;;;:::i;:::-;538:12134;9127:18;:::i;8343:400::-;538:12134;;8697:14;538:12134;;8484:13;8595:10;538:12134;;;;;;:::i;:::-;;;;;;;;;;8484:13;:::i;:::-;538:12134;;8461:36;;;:::i;:::-;538:12134;;;;;;:::i;:::-;;;;;;;;;8595:10;:::i;8111:81::-;8179:13;;;;;:::i;:::-;538:12134;;8111:81;;8017:67;;;;;;;;;;;;;;;;;:::i;:::-;;;538:12134;;;;;;;;;;;;;8017:67;;;;;;;;;;;;538:12134;;;7649:1;538:12134;;;;;7693:157;538:12134;;;;;7749:90;;;;;;;;;538:12134;;;;;7749:90;7626:57;7666:7;;;;;:::o;9279:418::-;;;;;;;9534:14;;9530:51;;9643:18;9642:47;9643:18;9642:47;9643:18;;:::i;:::-;9642:47;:::i;:::-;538:12134;-1:-1:-1;;;;;538:12134:76;;9642:47;:::i;9530:51::-;9564:7;;;;;;:::o;538:12134::-;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;-1:-1:-1;;538:12134:76;;;;;:::i;:::-;;;;-1:-1:-1;538:12134:76;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;9703:669;;;9888:12;;9884:49;;-1:-1:-1;;;;;538:12134:76;;;;9947:30;;9943:354;;-1:-1:-1;10307:58:76;;538:12134;;;10307:58;:::i;9943:354::-;9899:1;10037:16;;;;;;;;538:12134;;;;;10093:77;;;;538:12134;;;;10093:77;;538:12134;10093:77;;;538:12134;;;;;;;10093:77;;;;;:::i;:::-;10029:155;;;;;;:::i;:::-;10202:8;;10198:68;;10280:7;:::o;10198:68::-;538:12134;;-1:-1:-1;;;10219:47:76;;10093:77;10037:16;10219:47;;538:12134;;;;;;10093:77;538:12134;;;;:::i;9884:49::-;9916:7;;;;:::o;941:175:54:-;;;5535:69:56;941:175:54;-1:-1:-1;538:12134:76;;;1050:58:54;;;;;;538:12134:76;;;;1050:58:54;;538:12134:76;;;;;;;;1050:58:54;;;538:12134:76;;;;;;1050:58:54;;;;;:::i;:::-;538:12134:76;;;;;;;;:::i;:::-;;;;;;;;;5487:31:56;;;;;;;;:::i;:::-;5535:69;;:::i;:::-;538:12134:76;;5705:22:54;;;;:56;;;;;941:175;538:12134:76;;;;;;941:175:54;:::o;538:12134:76:-;;;;;;;;;;;;;;;;1050:58:54;538:12134:76;;;;;;;;-1:-1:-1;;;538:12134:76;;;;;5705:56:54;5731:30;;-1:-1:-1;5731:30:54;;;;;;;:::i;:::-;5705:56;;;;;7671:628:56;;;;7875:418;;;538:12134:76;;;7906:22:56;7902:286;;8201:17;;:::o;7902:286::-;1702:19;:23;538:12134:76;;8201:17:56;:::o;538:12134:76:-;;;-1:-1:-1;;;538:12134:76;;;;;;;;;;;;;;;;;;;;7875:418:56;538:12134:76;;;;-1:-1:-1;8980:21:56;:17;;9152:142;;;;;;;8976:379;538:12134:76;;-1:-1:-1;;;9324:20:56;;538:12134:76;9324:20:56;;;538:12134:76;;;;;;;;;;;:::i;10378:949::-;;;;;;;538:12134;;;;10621:46;;;10617:178;;538:12134;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;10880:33;10929:13;-1:-1:-1;10929:13:76;;10973:3;538:12134;;10944:27;;;;;;-1:-1:-1;;538:12134:76;;;;;;;10996:32;;;;11048:28;;;10973:3;11048:28;;;:::i;:::-;538:12134;10973:3;:::i;:::-;10929:13;;10992:231;11139:15;11179:29;10973:3;11139:15;11158:3;11129:25;11139:15;538:12134;11139:15;;;;:::i;:::-;538:12134;;11129:25;;:::i;:::-;538:12134;11115:46;;;;:::i;:::-;538:12134;11198:10;;;;:::i;:::-;538:12134;11179:29;;:::i;538:12134::-;-1:-1:-1;;;538:12134:76;;;;;;;;10944:27;;;;;;;;;;11312:7;10944:27;11312:7;:::i;10617:178::-;538:12134;;;;;2671:94;;;;10690;;;;;538:12134;;;;;10690:94;11333:1337;;;;;;538:12134;;;;11571:37;;;11567:161;;11738:23;;-1:-1:-1;11776:13:76;;11812:3;538:12134;;11791:19;;;;;11831:26;11812:3;11846:11;;;;;:::i;11831:26::-;11812:3;;:::i;:::-;11776:13;;;11791:19;;;;;;;;;;11881:22;;;11877:105;;11997:12;;;11993:49;;-1:-1:-1;;;;;538:12134:76;;;;12056:30;;12052:356;;12472:13;;-1:-1:-1;12511:3:76;538:12134;;12487:22;;;;;12534:11;;12511:3;12534:11;;;:::i;:::-;538:12134;12534:16;12530:63;;12606:47;12625:14;;;;;:::i;:::-;538:12134;;12641:11;;;;:::i;:::-;538:12134;12606:47;;;:::i;:::-;12511:3;:::i;:::-;12472:13;;12052:356;12146:16;;;;;;;;;;;;538:12134;;;;;12202:79;;;;;538:12134;;;;12202:79;;538:12134;;;;12202:79;;;538:12134;;;;;;;;;;;;;-1:-1:-1;538:12134:76;;;;;;;-1:-1:-1;;;;538:12134:76;;;-1:-1:-1;;538:12134:76;;;;;;;;;;;;;;;;;-1:-1:-1;538:12134:76;;;;;;12202:79;;-1:-1:-1;12202:79:76;;;;;;;;;;;;;538:12134;;12202:79;;;;;;:::i;:::-;12138:157;;;;;;;:::i;:::-;12313:8;;12309:68;;12391:7;;:::o;12309:68::-;538:12134;;;12330:47;;;;;;;;12146:16;12330:47;;538:12134;12202:79;538:12134;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11877:105;538:12134;;;;;11912:70;;;;;;;;;538:12134;;;;;11912:70;11567:161;538:12134;;;;;11631:86;;;;;;;;;538:12134;;;;;11631:86","linkReferences":{},"immutableReferences":{"library_deploy_address":[{"start":8,"length":32}]}},"methodIdentifiers":{"checkAmountAndTransfer(MarketConfigV2.Config storage,address,uint256)":"38fa83e7","checkBatchPayment(MarketConfigV2.Config storage,address,uint256)":"5ea509b5","checkIfCurrencyIsApproved(MarketConfigV2.Config storage,address)":"bc2af99e","checkSplits(address[],uint8[])":"76fb8597","payoutMarketplaceFee(MarketConfigV2.Config storage,address,uint256,uint256,address)":"30863baf","payoutMarketplaceFeeWithStakingFee(MarketConfigV2.Config storage,address,uint256,uint256,address)":"c69cbad0","payoutPrimary(MarketConfigV2.Config storage,address,address,uint256,uint256,address,address[],uint8[])":"c3924158","payoutSecondary(MarketConfigV2.Config storage,address,uint256,address,uint256,uint256,address,address[],uint8[])":"981e8fc5","payoutSecondaryWithStakingFee(MarketConfigV2.Config storage,address,uint256,address,uint256,uint256,uint256,address,address[],uint8[])":"5021b71b","payoutSplits(MarketConfigV2.Config storage,address,uint256,address[],uint8[])":"e6e1b2dc","performPayouts(MarketConfigV2.Config storage,address,uint256,address[],uint256[])":"f0859688","refund(MarketConfigV2.Config storage,address,address,uint256)":"7baf92a3","refundRemainingOffer(MarketConfigV2.Config storage,address,address,uint256,uint256,uint256)":"4c4c2619"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"checkSplits\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"RareERC1155MarketplacePayments\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Shared payment, refund, royalty, staking fee, and split payout helpers for ERC1155 marketplaces.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155MarketplacePayments.sol\":\"RareERC1155MarketplacePayments\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x8d34a6232df2f8000be37bf27bffc0ebcd32f6b7d6675e9e858a3b520d486d40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5893c1f94047332f3b26ff0fe3a2410a339fc3fd6d5397b4ee6c2c8fd02a6c70\",\"dweb:/ipfs/QmUwJwJ4XicMDJAzmsGUcYZfhKf4X9kDhmESKRhqindpAM\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155MarketplacePayments.sol\":{\"keccak256\":\"0xafebd89e5951bfc64c9bd315ae8f3961120d5006f7424cf4127c8ca11e0bb6c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69892edf0cca19978fcbc2b486ce6d4e5bf482777279d6c3e116109e9bfb0836\",\"dweb:/ipfs/QmUXniFfx21Arz81G3tZAAGakozcb3L2GjqaZv2CdXiBS6\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"pure","type":"function","name":"checkSplits"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155MarketplacePayments.sol":"RareERC1155MarketplacePayments"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x8d34a6232df2f8000be37bf27bffc0ebcd32f6b7d6675e9e858a3b520d486d40","urls":["bzz-raw://5893c1f94047332f3b26ff0fe3a2410a339fc3fd6d5397b4ee6c2c8fd02a6c70","dweb:/ipfs/QmUwJwJ4XicMDJAzmsGUcYZfhKf4X9kDhmESKRhqindpAM"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155MarketplacePayments.sol":{"keccak256":"0xafebd89e5951bfc64c9bd315ae8f3961120d5006f7424cf4127c8ca11e0bb6c1","urls":["bzz-raw://69892edf0cca19978fcbc2b486ce6d4e5bf482777279d6c3e116109e9bfb0836","dweb:/ipfs/QmUXniFfx21Arz81G3tZAAGakozcb3L2GjqaZv2CdXiBS6"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":76} \ No newline at end of file diff --git a/abis/RareERC1155MarketplaceStorage.json b/abis/RareERC1155MarketplaceStorage.json index 856f513..0db5925 100644 --- a/abis/RareERC1155MarketplaceStorage.json +++ b/abis/RareERC1155MarketplaceStorage.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_CHECKOUT_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"DirectSettlementCallUnsupported","inputs":[]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SettlementCannotBeZero","inputs":[]},{"type":"error","name":"SettlementDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","MAX_CHECKOUT_SIZE()":"a3eaf4d9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectSettlementCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SettlementCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"SettlementDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CHECKOUT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"This is not a deployable marketplace. `RareERC1155Marketplace` owns this storage behind the proxy, and `RareERC1155Settlement` uses the same namespace when executed through delegatecall from the marketplace.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"MARKETPLACE_STORAGE_LOCATION\":{\"details\":\"cast index-erc7201 superrare.storage.RareERC1155Marketplace\"}},\"title\":\"RareERC1155MarketplaceStorage\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"ERC-7201 storage namespace and validation helpers for the ERC1155 marketplace.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155MarketplaceStorage.sol\":\"RareERC1155MarketplaceStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350\",\"dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155MarketplaceStorage.sol\":{\"keccak256\":\"0xe7b315f4c7e8da495637acec91648113ad26cf6cf37a783632baaf81998e012e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f83d84dfbe0c43d476c137eb6c4b63ca88dff555c37123a8fc0e17884885cd5\",\"dweb:/ipfs/QmNT27NUUzmawaa8kpGXFepvBTiRiZtwdt3ozRFCbiEuPp\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e\",\"dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[],"type":"error","name":"DirectSettlementCallUnsupported"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[],"type":"error","name":"SettlementCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"SettlementDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CHECKOUT_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155MarketplaceStorage.sol":"RareERC1155MarketplaceStorage"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9","urls":["bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350","dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155MarketplaceStorage.sol":{"keccak256":"0xe7b315f4c7e8da495637acec91648113ad26cf6cf37a783632baaf81998e012e","urls":["bzz-raw://4f83d84dfbe0c43d476c137eb6c4b63ca88dff555c37123a8fc0e17884885cd5","dweb:/ipfs/QmNT27NUUzmawaa8kpGXFepvBTiRiZtwdt3ozRFCbiEuPp"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052","urls":["bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e","dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":168} \ No newline at end of file +{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_CHECKOUT_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","MAX_CHECKOUT_SIZE()":"a3eaf4d9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CHECKOUT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"This is not a deployable marketplace. `RareERC1155Marketplace` owns this storage behind the proxy, and execution modules use the same namespace when executed through delegatecall from the marketplace.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"MARKETPLACE_STORAGE_LOCATION\":{\"details\":\"cast index-erc7201 superrare.storage.RareERC1155Marketplace\"}},\"title\":\"RareERC1155MarketplaceStorage\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"ERC-7201 storage namespace and validation helpers for the ERC1155 marketplace.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155MarketplaceStorage.sol\":\"RareERC1155MarketplaceStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9\",\"dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155MarketplaceStorage.sol\":{\"keccak256\":\"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a\",\"dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89\",\"dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CHECKOUT_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155MarketplaceStorage.sol":"RareERC1155MarketplaceStorage"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9","urls":["bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9","dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155MarketplaceStorage.sol":{"keccak256":"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1","urls":["bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a","dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd","urls":["bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89","dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":171} \ No newline at end of file diff --git a/abis/RareERC1155Settlement.json b/abis/RareERC1155Settlement.json deleted file mode 100644 index 96fdb1d..0000000 --- a/abis/RareERC1155Settlement.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_CHECKOUT_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"acceptOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"checkout","inputs":[{"name":"_items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[{"name":"execution","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","components":[{"name":"summary","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","components":[{"name":"filledCount","type":"uint256","internalType":"uint256"},{"name":"skippedCount","type":"uint256","internalType":"uint256"},{"name":"ethSpent","type":"uint256","internalType":"uint256"},{"name":"ethRefunded","type":"uint256","internalType":"uint256"}]},{"name":"items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","components":[{"name":"itemIndex","type":"uint256","internalType":"uint256"},{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"filled","type":"bool","internalType":"bool"},{"name":"failureStage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","internalType":"bytes4"},{"name":"failureData","type":"bytes","internalType":"bytes"},{"name":"totalPaid","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"payable"},{"type":"function","name":"executeCheckoutItem","inputs":[{"name":"_item","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"_remainingEth","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_grossAmount","type":"uint256","internalType":"uint256"},{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[{"name":"totalPaid","type":"uint256","internalType":"uint256"},{"name":"newRemainingEth","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"executeCheckoutPayout","inputs":[{"name":"_item","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"_seller","type":"address","internalType":"address"},{"name":"_grossAmount","type":"uint256","internalType":"uint256"},{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"DirectSettlementCallUnsupported","inputs":[]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SettlementCannotBeZero","inputs":[]},{"type":"error","name":"SettlementDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x60a080604052346100245730608052615db290816200002a8239608051816110bb0152f35b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c9081630a6ce3131461009a575080632c0c49ee1461009557806359a8a40a146100905780637777e6d71461008b578063a3eaf4d914610086578063b8e6b50f14610081578063cfdbf2541461007c5763d65852a61461007757600080fd5b610ad2565b610ab6565b610a2c565b610a10565b61047d565b6103ea565b610347565b6080366003190112610119576004356100b28161011c565b6024356100be8161011c565b604435916100cb8361011c565b606435926001600160401b039283851161011557366023860112156101155784600401359384116101155736602460608602870101116101155760246101129501926110fc565b80f35b8580fd5b80fd5b6001600160a01b0381160361012d57565b600080fd5b359061013d8261011c565b565b9181601f8401121561012d578235916001600160401b03831161012d576020808501948460051b01011161012d57565b634e487b7160e01b600052602160045260246000fd5b6006111561018f57565b61016f565b90600682101561018f5752565b919082519283825260005b8481106101cd575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016101ac565b9060209182815260c09283820191835193845183830152828501516040908184015283818701516060978891828701520151926080938486015201519660a0908180860152885180975260e0918286019487848a60051b8901019b01996000975b8a89106102585750505050505050505050505090565b909192939495969798999a9b8a806001928f60df19868303018d5251908151815261028b838301518483019060ff169052565b818c01516001600160a01b0316818d01528187015181880152878201516001600160a01b031688820152818901516001600160a01b0316818a0152818a0151818b01528a8201518b820152610100808301511515908201526102f66101208084015190830190610194565b610140828101516001600160e01b0319169082015261032661016080840151906101a080918501528301906101a1565b91610180809101519101529e0199019901979a999896959493929190610242565b602036600319011261012d576001600160401b0360043581811161012d5761037390369060040161013f565b604051929161038184610b6d565b6040519360808501938411858510176103d6576103d2946103c69460405260008152600060208201526000604082015260006060820152815260606020820152611e38565b604051918291826101e1565b0390f35b610b57565b908161010091031261012d5790565b60e036600319011261012d576001600160401b0360043581811161012d576104169036906004016103db565b604435906104238261011c565b60a43583811161012d5761043b90369060040161013f565b9060c43594851161012d5761045761046b95369060040161013f565b94909360843591606435916024359061246f565b60408051928352602083019190915290f35b606036600319011261012d5761049460043561011c565b61049f60243561011c565b6044356001600160401b03811161012d576104be90369060040161013f565b6104c66110b8565b6104d08183615bff565b73__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d57604051635e157ccf60e11b81526000818061050b60243560048301610c0d565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561079a576109f2575b5061053981610c77565b9061054381610c77565b61054c82610cdd565b926000805b848110610885575073__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d5760006105979160405180938192635ea509b560e01b835260243560048401610dc3565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561079a57610872575b5060005b8381106107b257506004356001600160a01b03163b1561012d57604051630d4498e760e21b815291600091839182916105fd91903360048501610f7c565b0381836004356001600160a01b03165af1801561079a5761079f575b5060005b81811061062657005b60206106328285610d6a565b5101516106be575b8061064760019285610d6a565b515161066760606106588488610d6a565b5101516001600160a01b031690565b90604061067584878a610d43565b0135600080516020615d3d8339815191526106b56020610696878a8d610d43565b013560405191829133978a8060a01b036004351696602435918561108d565b0390a40161061d565b60206106ca8285610d6a565b5101519060406106da8286610d6a565b510151916106ed60606106588488610d6a565b9260806106fa8488610d6a565b5101519160a061070a8589610d6a565b5101519273__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d57600093610751916040519788958695631872482b60e31b875260243560043560048901611029565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af491821561079a57600192610781575b50905061063a565b8061078e61079492610b88565b80610a05565b38610779565b610c34565b8061078e6107ac92610b88565b38610619565b806107c06001928689610d43565b356107df816107d0600435610df2565b90600052602052604060002090565b5461083e575b6107f4816107d0600435610e64565b54610801575b50016105bf565b61082c9061081533916107d0600435610e9d565b9060018060a01b0316600052602052604060002090565b6108368154610da3565b9055386107fa565b604061084b83888b610d43565b013561086b61086333610815856107d0600435610e2b565b918254610db6565b90556107e5565b8061078e61087f92610b88565b386105bb565b61089f61089382878a610d43565b336024356004356144b1565b6108a98288610d6a565b526108b48187610d6a565b506020806108c28389610d6a565b510151610905575b50806108d860019288610d6a565b51516108e48286610d6a565b5260406108f282888b610d43565b01356108fe8287610d6a565b5201610551565b9091610968908261093961092d600080516020615d1d8339815191525460018060a01b031690565b6001600160a01b031690565b81610944878c610d6a565b5101519060405180809681946361fe24a960e11b8352600483019190602083019252565b03915afa91821561079a576001936109be936109b8926000916109c5575b506040610993888d610d6a565b5101526109a0868b610d6a565b51015160406109af878c610d6a565b51015190610db6565b90610db6565b91906108ca565b6109e59150823d84116109eb575b6109dd8183610bec565b810190610d7e565b38610986565b503d6109d3565b8061078e6109ff92610b88565b3861052f565b600091031261012d57565b3461012d57600036600319011261012d57602060405160328152f35b3461012d5761010036600319011261012d57600435610a4a8161011c565b60443590610a578261011c565b606435610a638161011c565b6001600160401b039260c43584811161012d57610a8490369060040161013f565b9160e43595861161012d57610aa0610ab496369060040161013f565b95909460a435926084359260243590611adf565b005b3461012d57600036600319011261012d576020604051604b8152f35b60c036600319011261012d576001600160401b0360043581811161012d57610afe9036906004016103db565b60243590610b0b8261011c565b60843583811161012d57610b2390369060040161013f565b9060a43594851161012d57610b3f610ab495369060040161013f565b949093610b4a6110b8565b606435916044359161297f565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176103d657604052565b6001600160401b0381116103d657604052565b60c081019081106001600160401b038211176103d657604052565b606081019081106001600160401b038211176103d657604052565b602081019081106001600160401b038211176103d657604052565b90601f801991011681019081106001600160401b038211176103d657604052565b600080516020615cfd83398151915281526001600160a01b03909116602082015260400190565b6040513d6000823e3d90fd5b604051906101a082018281106001600160401b038211176103d657604052565b6001600160401b0381116103d65760051b60200190565b90610c8182610c60565b610c8e6040519182610bec565b8281528092610c9f601f1991610c60565b0190602036910137565b60405190610cb682610b9b565b606060a0836000815260006020820152600060408201526000838201528260808201520152565b90610ce782610c60565b610cf46040519182610bec565b8281528092610d05601f1991610c60565b019060005b828110610d1657505050565b602090610d21610ca9565b82828501015201610d0a565b634e487b7160e01b600052603260045260246000fd5b9190811015610d655760051b81013590607e198136030182121561012d570190565b610d2d565b8051821015610d655760209160051b010190565b9081602091031261012d575190565b634e487b7160e01b600052601160045260246000fd5b9060018201809211610db157565b610d8d565b91908201809211610db157565b600080516020615cfd83398151915281526001600160a01b039091166020820152604081019190915260600190565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5106020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5116020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5126020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c6020526040902090565b90815180825260208080930193019160005b828110610f68575050505090565b835185529381019392810192600101610f5a565b6001600160a01b039091168152606060208201819052610fb2939192610fa491840190610f48565b916040818403910152610f48565b90565b90815180825260208080930193019160005b828110610fd5575050505090565b83516001600160a01b031685529381019392810192600101610fc7565b90815180825260208080930193019160005b828110611012575050505090565b835160ff1685529381019392810192600101611004565b95929361107f94610fb2989692600080516020615cfd833981519152895260018060a01b03948580921660208b0152166040890152606088015260808701521660a08501526101008060c0860152840190610fb5565b9160e0818403910152610ff2565b6001600160a01b03918216815260208101929092529091166040820152606081019190915260800190565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146110ea57565b604051636a5f212f60e11b8152600490fd5b92936111066110b8565b6111108186615cb5565b6001600160a01b039233838516146116cc5773__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d57604051635e157ccf60e11b81526000818061115b8560048301610c0d565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561079a576116b9575b5061118985611964565b600080516020615d5d833981519152546111cd906020906111b2906001600160a01b031661092d565b6040518093819263e985e9c560e01b83528860048401611705565b0381888a165afa90811561079a5760009161168a575b501561166e576111f282610c77565b906111fc83610c77565b6112058461175c565b9260008061122a61092d600080516020615d1d8339815191525460018060a01b031690565b878c888d898d8588106114ba57505050505050505073__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d57600061127b9160405180938192635ea509b560e01b83528860048401610dc3565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561079a576114a7575b5090859160005b89878c81841061141357505050506112c1925033878a6158d2565b60005b8381106112d5575050505050505050565b6112df8184610d6a565b51519060206112ee8286610d6a565b51015160406112fd8387610d6a565b51015192606061130d8488610d6a565b51015191608061131d8589610d6a565b5101519473__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d5786956000948b611363938f956040519a8b98899863981e8fc560e01b8a5260048a016118d5565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af491821561079a5786867f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d7886948a8c6113f78f60406113e18a6113c98f829060019f9d8a9e611400575b50610d6a565b51519860206113d98383886117ac565b0135946117ac565b0135908b60405195869516993399169785611940565b0390a4016112c4565b8061078e61140d92610b88565b386113c3565b95839160019596976114458361081561142b88610ed6565b6114368887876117ac565b35600052602052604060002090565b611463600260406114578887876117ac565b01359201918254611818565b8091551561147b575b505050505001908692916112a6565b611436611498946108159361149261149d98610ed6565b936117ac565b611865565b898189898e61146c565b8061078e6114b492610b88565b3861129f565b926114e7886114e188958895839d9b9c986114db8560409d61150f9d6117ac565b9261450a565b92610d6a565b526114f2838d610d6a565b506114fe8383836117ac565b35611509848b610d6a565b526117ac565b013561151b8487610d6a565b5261154b60208b8d8c61152e888a610d6a565b5192604051809681958294627eeac760e11b8452600484016117bc565b0392165afa90811561079a5760009161164f575b5061156a8487610d6a565b51811061161457506115a4602080611582868b610d6a565b510151604051809381926361fe24a960e11b8352600483019190602083019252565b0381865afa91821561079a576001926115ed926000916115f5575b5060406115cc878c610d6a565b5101526109b860206115de878c610d6a565b51015160406109af888d610d6a565b92019061122a565b61160e915060203d6020116109eb576109dd8183610bec565b386115bf565b8961164b8d928861163088611629818c610d6a565b5192610d6a565b5190604051958695636906ef1760e11b8752600487016117d7565b0390fd5b611668915060203d6020116109eb576109dd8183610bec565b3861155f565b60405163d65b0d6960e01b81528061164b878660048401611705565b6116ac915060203d6020116116b2575b6116a48183610bec565b8101906116ed565b386111e3565b503d61169a565b8061078e6116c692610b88565b3861117f565b60405163aac1ae8b60e01b81526001600160a01b0384166004820152602490fd5b9081602091031261012d5751801515810361012d5790565b6001600160a01b0391821681529116602082015260400190565b6040519060a082018281106001600160401b038211176103d657604052606060808360008152600060208201526000604082015282808201520152565b9061176682610c60565b6117736040519182610bec565b8281528092611784601f1991610c60565b019060005b82811061179557505050565b6020906117a061171f565b82828501015201611789565b9190811015610d65576060020190565b6001600160a01b039091168152602081019190915260400190565b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b606319810191908211610db157565b91908203918211610db157565b908160011b9180830460021490151715610db157565b81810292918115918404141715610db157565b818110611859575050565b6000815560010161184e565b6005600091828155826001820155826002820155826003820155600481018054848255806118bb575b50500190815490808355816118a257505050565b60208161013d94601f935220910160051c81019061184e565b6118ce918552602085209081019061184e565b388061188e565b96936119319591610fb299979394600080516020615cfd8339815191528a5260018060a01b03958680931660208c015260408b0152166060890152608088015260a08701521660c08501526101208060e0860152840190610fb5565b91610100818403910152610ff2565b909493926060926080830196835260018060a01b0316602083015260408201520152565b803b158015611997575b6119755750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b506119a1816119a7565b1561196e565b6040519060208083018160006301ffc9a760e01b95868452866024820152602481526119d281610bb6565b51617530938685fa933d6000519086611a77575b5085611a6d575b5084611a0a575b50505081611a00575090565b610fb29150611a82565b83945090600091839460405185810192835263ffffffff60e01b602482015260248152611a3681610bb6565b5192fa60005190913d83611a62575b505081611a58575b5015903880806119f4565b9050151538611a4d565b101591503880611a45565b15159450386119ed565b8411159550386119e6565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152611ab281610bb6565b5191617530fa6000513d82611ad3575b5081611acc575090565b9050151590565b60201115915038611ac2565b9491959296909397611aef6110b8565b60409384519a611afe8c610b9b565b6001600160a01b039788168c5260208c01968752978716858c0181815299881660608d0190815260808d019b8c5260a08d01958652999890338114611e1657508b51611b52906001600160a01b0316611964565b895173__$11854c5905aa23948096e0e4d7059bb9de$__93906001600160a01b031694843b1561012d578751635e157ccf60e11b8152600096879082908190611b9e9060048301610c0d565b0381895af4801561079a57611e03575b50843b156101155787516376fb859760e01b8152868180611bd58787878b60048601612ac4565b0381895af4801561079a57611df0575b50865115611ddf57918d939161092d9897969593611c5d6020611c1f61092d611c0d8a615293565b9a519a9e909a6001600160a01b031690565b600080516020615d5d83398151915254611c41906001600160a01b031661092d565b908c51808095819463e985e9c560e01b83523360048401611705565b03915afa90811561079a578891611dc1575b5015611d9957908f91611cc08f94938f611cb3908f8d90611ca7611c99865160018060a01b031690565b93516001600160a01b031690565b90519151923390615561565b516001600160a01b031690565b8c5194516001600160a01b03169590873b15611d955790611cfc949392918c519d8e9a8b998a9963981e8fc560e01b8b52339460048c01612910565b03915af4801561079a57611d68611d58611d4a7fd6c105ec24ddd771e44ffc25e8a8603b6b78ba980a72645a26740b3d8437388599611d7d978a95611d82575b50516001600160a01b031690565b9b516001600160a01b031690565b955198516001600160a01b031690565b98519151925195869516991697339785611940565b0390a4565b8061078e611d8f92610b88565b38611d3c565b8980fd5b8f51895163d65b0d6960e01b815290819061164b906001600160a01b03163360048401611705565b611dd9915060203d81116116b2576116a48183610bec565b38611c6f565b875163c6b949a960e01b8152600490fd5b8061078e611dfd92610b88565b38611be5565b8061078e611e1092610b88565b38611bae565b8651630bfa508960e41b81526001600160a01b03919091166004820152602490fd5b9190611e426110b8565b611e4b826120eb565b611e548261206f565b91602092838501908152349260005b838110611f4d57505050508060608451015280611ed0575b50815180519181015160408083015160609384015182519586526020860193909352908401529082015233907ff769e48349f9b4903ef362e95411b2c4778d3bdaf9dc87b0d25f29f2813ea16390608090a290565b73__$11854c5905aa23948096e0e4d7059bb9de$__803b1561012d57604051637baf92a360e01b8152600080516020615cfd833981519152600482015260006024820181905233604483015260648201939093529190829060849082905af4801561079a5715611e7b578061078e611f4792610b88565b38611e7b565b611f628582611f5d8188876120bf565b612195565b91969015611fe4575090611fc1600192968951611f7f8151610da3565b9052838060a01b03611f9d6060611f97868b8a6120bf565b016120e1565b1615611fc7575b611fbb83875183611fb58383610d6a565b52610d6a565b50613d68565b01611e63565b610180810151611fdd60408c5101918251610db6565b9052611fa4565b956001929150611fc190888a5101611fdd8151610da3565b604051906101a082018281106001600160401b038211176103d657604052816101806000918281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201528261014082015260606101608201520152565b9061207982610c60565b6120866040519182610bec565b8281528092612097601f1991610c60565b019060005b8281106120a857505050565b6020906120b3611ffc565b8282850101520161209c565b9190811015610d655760051b8101359060fe198136030182121561012d570190565b35610fb28161011c565b801561211b57603281116120fc5750565b6044906040519063f80a484560e01b8252600482015260326024820152fd5b60405163c2e5347d60e01b8152600490fd5b6040519061213a82610bd1565b60008252565b3d1561217a573d906001600160401b0382116103d6576040519161216e601f8201601f191660200184610bec565b82523d6000602084013e565b606090565b919082604091031261012d576020825192015190565b90816121a9916121a3611ffc565b50613bcf565b90826121b482612c8a565b8051909392906001600160a01b031680612279575b501561226a57507f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50b546000938493909261220c926001600160a01b03169361239d565b90602082519201905af461221e612140565b9015612250576122399192506020808251830101910161217f565b600161010084015291906101808201529160019190565b61225c61226391613e41565b9083613cd2565b9160009190565b91509350612263915082613ca9565b6001600160a01b03166080870152386121c9565b60ff81160361012d57565b9035601e198236030181121561012d5701602081359101916001600160401b03821161012d578160051b3603831361012d57565b81835290916001600160fb1b03831161012d5760209260051b809284830137010190565b9061238a610fb29260ff81356123058161228d565b16835260208101356123168161011c565b6001600160a01b0316602084015261234361233360408301610132565b6001600160a01b03166040850152565b61236261235260608301610132565b6001600160a01b03166060850152565b6080810135608084015260a081013560a084015260c081013560c084015260e0810190612298565b9091610100908160e082015201916122cc565b825160208085015160408087015160608801516080909801519151632cd4520560e11b8186015260e060248201529796889692956001600160a01b03949193908516906123ef906101048a01906122f0565b9360448901526064880152608487015260a486015260231992838683030160c48701528080885193848152019701926000905b8382106124525750505050508284030160e4830152610fb29261244491610ff2565b03601f198101835282610bec565b845181168952978201978997509382019360019190910190612422565b9061248898979695949392916124836110b8565b61250e565b9091565b35610fb28161228d565b906040610fb2926001815281602082015201906101a1565b906040610fb2926002815281602082015201906101a1565b906040610fb2926003815281602082015201906101a1565b906040610fb2926004815281602082015201906101a1565b906040610fb2926005815281602082015201906101a1565b989796959493929190600060ff8b356125268161228d565b16156125995750600160ff61253a8c61248c565b161461258f5761164b6124446125766125528d61248c565b60405163bb75025d60e01b602082015260ff90911660248201529182906044820190565b604051631ee0c01d60e31b815291829160048301612496565b6124889899612aeb565b91826125c69895939b96929794999b5087936125b5818c610db6565b9a6125cb8a8d60608c019d8e6120e1565b6132ef565b80516128045750602089016125e76125e2826120e1565b610df2565b9a61260160808c0135809d90600052602052604060002090565b5415158b8d61261b816107d0612616886120e1565b610e64565b541515926127d4575b5050612798575b61263a61092d61092d846120e1565b946126448d614476565b60c08d01359661265388614476565b91813b1561279457604051630d4498e760e21b81529392849291839185918391612681913360048501610f7c565b03925af19081612781575b506126b55761164b61269c612140565b604051631ee0c01d60e31b8152918291600483016124c6565b6001600160a01b0397886126c88f6120e1565b1661274557506126d98e8c92611818565b9f600080516020615d3d8339815191529a60a09a612728996127149761270e975b8b8161272f575b50505050505050506120e1565b996120e1565b90604051958695339b16980135928561108d565b0390a49190565b61273897613aa8565b893880808080808b612701565b9f8b9150600080516020615d3d8339815191529a8f9a8f996127149761270e9761277c60a09f6127776127289f6120e1565b613537565b6126fa565b8061078e61278e92610b88565b3861268c565b8380fd5b6127c36127b08d6107d06127ab866120e1565b610e9d565b3360009081526020919091526040902090565b6127cd8154610da3565b905561262b565b60c06127f16127b06127fb936107d06127ec8a6120e1565b610e2b565b9201358254610db6565b90558b8d612624565b604051631ee0c01d60e31b815290819061164b90600483016124ae565b91908082526020809201929160005b82811061283e575050505090565b90919293828060019287356128528161011c565b848060a01b03168152019501910192919092612830565b91908082526020809201929160005b828110612886575050505090565b90919293828060019260ff883561289c8161228d565b16815201950193929101612878565b979593610fb29997936129029692600080516020615cfd8339815191528b5260018060a01b03948580921660208d01521660408b015260608a015260808901521660a08701526101008060c0880152860191612821565b9260e0818503910152612869565b9896949093610fb29a98946020946129709894600080516020615cfd8339815191528d528c60018060a01b03978880951691015260408d01521660608b015260808a015260a08901521660c08701526101208060e0880152860191612821565b92610100818503910152612869565b97969592919094939560ff6129938a61248c565b1615612a6057600160ff6129a68b61248c565b16146129d95761164b6129b88a61248c565b60405163bb75025d60e01b815260ff90911660048201529081906024820190565b979192939495969773__$11854c5905aa23948096e0e4d7059bb9de$__94612a03602085016120e1565b96612a10606086016120e1565b99873b1561012d57600099608097612a42966040519d8e9c8d9b8c9b63981e8fc560e01b8d5201359060048c01612910565b03915af4801561079a57612a535750565b8061078e61013d92610b88565b9791969794909493929373__$11854c5905aa23948096e0e4d7059bb9de$__94612a986060612a91602087016120e1565b95016120e1565b94863b1561012d57600098612a42946040519b8c9a8b998a99631872482b60e31b8b5260048b016128ab565b9290612add90610fb29593604086526040860191612821565b926020818503910152612869565b949895909792969193988899612b01818a610db6565b99612b13818c6125c660608c016120e1565b9b8c51612c6f579a9b508b9a6001600160a01b03612b3360608b016120e1565b16612c505750612bc0969798999a612b4a91611818565b995b6002612b7d896108158c6080612b6c612b67602084016120e1565b610ed6565b910135600052602052604060002090565b01612b8d60c08b01358254611818565b80915515612c2c575b612bb9612ba560208b016120e1565b60c08b01359060808c0135908b33916137d0565b8789613aa8565b612bcc602083016120e1565b917f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d788694611d7d612bfd606084016120e1565b6040516001600160a01b03968716963396169490928392909160c08101359160a0820135916080013585611940565b612c4b611498896108158c6107d0612b676020608084013593016120e1565b612b96565b9a88999a9150612c6a906127776060612bc09a9b016120e1565b612b4c565b604051631ee0c01d60e31b81528061164b8f600483016124ae565b90612c9361171f565b908235612c9f8161228d565b60ff8116938415612d0457612cb38261228d565b60018514612cef5750612cc59061228d565b6040519263bb75025d60e01b6020850152602484015260248352612ce883610bb6565b6000929190565b91935050612cfd9150612f0b565b9192909190565b91935050612cfd9150612d47565b903590601e198136030182121561012d57018035906001600160401b03821161012d57602001918160051b3603831361012d57565b612d4f61171f565b9060608101612d6c612d68612d63836120e1565b6143d0565b1590565b612ec157612db160209283810192612d83846120e1565b90612dbb612d90826120e1565b9260808501359360a086013595868660c0830135998360e08c950190612d12565b9590943391614d14565b60608101516001600160a01b03168a5296909115612e955750505050505081810151808385015280612e0d575b5060a091506080810151606084015201516080820152600191612e0961212d565b9190565b600080516020615d1d83398151915254612e55918491612e35906001600160a01b031661092d565b60405180809581946361fe24a960e11b8352600483019190602083019252565b03915afa90811561079a5760a093600092612e78575b5050604084015238612de8565b612e8e9250803d106109eb576109dd8183610bec565b3880612e6b565b612eb99750612ea9919293949596506120e1565b612eb333936120e1565b91613f10565b916000929190565b612efd939150612ed3612ce8916120e1565b60405163cd5f748960e01b60208201526001600160a01b0390911660248201529384906044820190565b03601f198101855284610bec565b90612f1461171f565b90604080840190612f34612f27836120e1565b6001600160a01b03168552565b612f4061092d836120e1565b33146132b55760209081860195612f61612d68612f5c896120e1565b61445e565b61327757612f6d61171f565b50612f77876120e1565b90612f81856120e1565b9160c0612faf6060840192612f95846120e1565b946080810135809660a08301359586930135988994615168565b9390911561324f57505050612fc961092d61092d8b6120e1565b61301386612fd6896120e1565b600080516020615d5d83398151915254612ff8906001600160a01b031661092d565b885163e985e9c560e01b815293849283929060048401611705565b0381855afa60009181613230575b5061305e575050505050612efd9061304461303e612ce8956120e1565b976120e1565b905196879363d65b0d6960e01b9085015260248401611705565b9692949395961561321757868561309292613078866120e1565b8751809581948293627eeac760e11b8452600484016117bc565b03915afa600091816131f8575b5061310057505091612ce89493916130bc61270e612efd956120e1565b9051988995636906ef1760e11b90870152602486019093600093608093969560a084019760018060a01b038092168552166020840152604083015260608201520152565b92949182849a959297989a106131c05750505050828401805186860152600080516020615d1d8339815191525461316a939250859190613148906001600160a01b031661092d565b905190835180809681946361fe24a960e11b8352600483019190602083019252565b03915afa91821561079a576080946000936131a1575b50508401526060810151606084015201516080820152600191612e0961212d565b6131b8929350803d106109eb576109dd8183610bec565b903880613180565b612ce89650946131de6131d8612efd969b99976120e1565b9a6120e1565b9051998a96636906ef1760e11b90880152602487016117d7565b613210919250883d8a116109eb576109dd8183610bec565b903861309f565b5050612ce8949350612efd925061303e613044916120e1565b613248919250883d8a116116b2576116a48183610bec565b9038613021565b93955093969150945061327161326b61326b612eb9999b6120e1565b926120e1565b9261425b565b5094612ce8925061328a612efd916120e1565b9551630f20e39960e21b928101929092526001600160a01b0390951660248201529384906044820190565b612efd94506132c6612ce8926120e1565b905163aac1ae8b60e01b60208201526001600160a01b0390911660248201529384906044820190565b91811561352c576001600160a01b0383169081156134ea5750604080516370a0823160e01b8152336004820152602092908381602481855afa600091816134cb575b50613371575050516364db3d5960e01b918101919091526001600160a01b039092166024830152604482015260006064820152610fb28160848101612444565b84811061348c57507f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d508546133cf9184916133b3906001600160a01b031661092d565b9084518080958194636eb1769f60e11b83523360048401611705565b03915afa6000918161346d575b5061341b5750516337a950bb60e01b918101919091526001600160a01b039092166024830152604482015260006064820152610fb28160848101612444565b83811061342f575050505050610fb261212d565b90516337a950bb60e01b928101929092526001600160a01b03909316602482015260448101919091526064810191909152610fb28160848101612444565b613485919250843d86116109eb576109dd8183610bec565b90386133dc565b91516364db3d5960e01b93810193909352506001600160a01b03909316602482015260448101919091526064810191909152610fb28160848101612444565b6134e3919250853d87116109eb576109dd8183610bec565b9038613331565b92505080821015613522576040516310da2c1360e21b602082015260248101919091526044810191909152610fb28160648101612444565b5050610fb261212d565b505050610fb261212d565b9091821561375b57604080516370a0823160e01b8082523060048084019190915292959294926020929091906001600160a01b0385169060008582602481865afa90918161373c575b506135a857888861164b613592612140565b9251631ee0c01d60e31b815292839283016124ae565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d508549092906135df906001600160a01b031661092d565b803b1561012d578951630aed65f560e11b81526001600160a01b038816818b0190815233602082015230604082015260608101879052909160009183919082908490829060800103925af19081613729575b5061364357888861164b613592612140565b8851908152308882019081529091600091869184918290819060200103915afa90918161370a575b5061367d57878761164b613592612140565b949693959460009190818110613702576136979250611818565b905b8082036136a857505050505050565b8351636ff596f360e01b938101939093526001600160a01b03959095166024830152604482019490945260648082019490945292835261164b906136ed608485610bec565b51631ee0c01d60e31b815292839283016124ae565b505090613699565b613722919250853d87116109eb576109dd8183610bec565b903861366b565b8061078e61373692610b88565b38613631565b613754919250863d88116109eb576109dd8183610bec565b9038613580565b915050565b9391909260e0959360018060a01b03928380921687521660208601521660408401526060830152608082015260c060a0820152600060c08201520190565b6001600160a01b0391821681526020810192909252918216604082015291166060820152608081019190915260a00190565b60408051627eeac760e11b8082529196929560209593949290916001600160a01b03881691906000888280613809888a600484016117bc565b0381875afa909181613a89575b5061383f5761164b8a613827612140565b9051631ee0c01d60e31b8152918291600483016124de565b90868210613a5d578951818152600089828061385f898c600484016117bc565b0381885afa909181613a3e575b5061387d5761164b8b613827612140565b600080516020615d5d833981519152549093906138a2906001600160a01b031661092d565b803b1561012d576000888792898f8f6138d28f8793519889978896879563eb46c45b60e01b875260048701613760565b03925af19081613a2b575b506138ee5761164b8b613827612140565b8a5182815260008a82806139068a8c600484016117bc565b0381865afa909181613a0c575b506139245761164b8c613827612140565b8b5192835291906000908a90839081806139428b8e600484016117bc565b03915afa9091816139ed575b5061395f5761164b8b613827612140565b9061396f8880939c9b9c94611818565b14928315936139d8575b5050506139895750505050505050565b61164b9750916139c19493916139b3938751988996638791019960e01b908801526024870161379e565b03601f198101845283610bec565b51631ee0c01d60e31b8152918291600483016124de565b6139e3929350610db6565b1415388581613979565b613a059192508a3d8c116109eb576109dd8183610bec565b903861394e565b613a249192508b3d8d116109eb576109dd8183610bec565b9038613913565b8061078e613a3892610b88565b386138dd565b613a569192508a3d8c116109eb576109dd8183610bec565b903861386c565b508851636906ef1760e11b8189015261164b918a906139c19083906139b3908b898f8c602487016117d7565b613aa1919250893d8b116109eb576109dd8183610bec565b9038613816565b9497969795919593929360018060a01b0390817f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50b5416976040519660209184613b09848b019b636b2c295360e11b8d5260c060248d015260e48c01906122f0565b961660448a0152606489015260848801528060231994858982030160a48a01528381520195926000905b838210613b91575050505050926124448360009899613b5f948a999897858098030160c4860152612869565b51915af4613b6b612140565b9015613b745750565b604051631ee0c01d60e31b815290819061164b90600483016124f6565b90919293968380600192848b35613ba78161011c565b1681520198019493920190613b33565b604051613bc381610bd1565b60008152906000368137565b90613bd8611ffc565b5060c0613be48261248c565b91613c70613bf4602083016120e1565b613c60613c03604085016120e1565b613c44613c12606087016120e1565b93613c34613c1e613bb7565b99613c27610c40565b9b8c5260ff1660208c0152565b6001600160a01b031660408a0152565b60808581013560608a01526001600160a01b0390911690880152565b6001600160a01b031660a0860152565b60a081013582850152013560e0830152600061010083015260006101208301526000610140830152610160820152600061018082015290565b6001610120820152610160906001600160e01b0319613cc78461449b565b166101408201520152565b600682101561018f576101609161012082015263ffffffff60e01b613cc78461449b565b9081526001600160a01b039182166020820152911660408201526060810191909152608081019190915290151560a082015294939261012092613d6392613d419060c0890190610194565b6001600160e01b03191660e087015261014061010087018190528601906101a1565b930152565b8051906020810151613d7a9060ff1690565b60408201519092906001600160a01b031660608301516080840151909391906001600160a01b031660a08301519094906001600160a01b03169260c08101519060e0810151610100820151613dce90151590565b61012083015190613dde82610185565b6101408401516001600160e01b0319169261016085015194610180015195604051998a99600160a01b60019003169d60ff169c613e1b998b613cf6565b037f844491b54cb1a58801f9eb51fecfaf5076847131d8f6ec580232d9766e3fae4f91a4565b90613e4b82613e5d565b91613e5857505060059190565b925090565b631ee0c01d60e31b6001600160e01b0319613e778361449b565b1614801590613f05575b613ef6576024810151916044820151606483019283519160058611908115613eea575b50613ed757613eb39051611809565b10613ec857613ec183610185565b6001929190565b60009250829150610fb261212d565b5050915050600090600090610fb261212d565b60409150141538613ea4565b50600090600090610fb261212d565b506064815110613e81565b949293959195613f23816107d084610f0f565b956001600160e01b03191694634ed1072f60e11b808714614236575063915b8f1d60e01b8681146142015750600162bed83560e01b03198681146141e3575063e2cf60cb60e01b8681146141af575063c6b949a960e01b8681146141905750636d03a2e560e01b86811461411a575063ae3586c560e01b918683146140ab5750635bdd08f560e01b9250505083811461407a575063456afd0b60e01b90508281146140515750631d6bbb8d60e11b8281146140225750632e834cbf60e11b9182149050613ff557505050610fb261212d565b61244461400e6001610fb294015460018060a01b031690565b604051948593602085015260248401611705565b60029390930154604051602081019490945260248401919091526044830152509050610fb28160648101612444565b935050506003610fb2910154916124446040519384926020840152602483019190602083019252565b92509350506124446004610fb293015460405194859360208501526024840160209093929193604081019481520152565b92975092509350610fb2945061244492506140c9816107d088610e64565b54916140dc81610815846107d08b610e9d565b5491604051978896602088015260248701919594939060809360a084019760018060a01b038093168552602085015216604083015260608201520152565b95509290919650610fb295506124449350614138826107d089610df2565b549261414b81610815856107d08c610e2b565b5492604051988997602089015260248801929060a09491979695929760c0850198600180881b0380931686526020860152166040840152606083015260808201520152565b97505050505050505060405190602082015260048152610fb281610b6d565b60405160208101919091526001600160a01b0390911660248201529650610fb2955086945050604484019250612444915050565b955050509450505061244461400e610fb2935460018060a01b031690565b60405160208101919091526001600160a01b03909316602484015250909550610fb29450859350506044830191506124449050565b95505091509450610fb2935061244491506040519485936020850152602484016117bc565b94929161426f81610815876107d086610ed6565b956001600160e01b0319169463c6b949a960e01b8087146141905750630bac95f560e21b8681146143905750635493bdef60e11b918683146143675750632e834cbf60e11b925050508381146143495750631d6bbb8d60e11b905082811461431a57506364b7fccd60e11b91821490506142ee57505050610fb261212d565b6124446002610fb293015460405194859360208501526024840160209093929193604081019481520152565b60019390930154604051602081019490945260248401919091526044830152509050610fb28160648101612444565b9354909450610fb293925061244491506001600160a01b031661400e565b9297509250935061244492506003610fb29501549160405196879560208701526024860161108d565b60405160208101919091526001600160a01b0393841660248201526044810191909152911660648201529450610fb2935084925050608482019050612444565b6001600160a01b03908116908115614457576020907f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d505541691602460405180948193632d5ad3d560e01b835260048301525afa60009181614437575b50610fb25750600090565b61445091925060203d81116116b2576116a48183610bec565b903861442c565b5050600190565b803b1515908161446c575090565b610fb291506119a7565b906040519161448483610b6d565b60018352602083016020368237835115610d655752565b60048151106144ab576020015190565b50600090565b92916144bb610ca9565b508235906020840135926144e76144db6040870135966060810190612d12565b9087878787878d614d14565b9791156144f8575050505050505090565b6145029750613f10565b602081519101fd5b92909161451561171f565b50813590604060208401359301359361453285858585858b615168565b979115614543575050505050505090565b614502975061425b565b9060405191828154918282526020928383019160005283600020936000905b8282106145825750505061013d92500383610bec565b85546001600160a01b03168452600195860195889550938101939091019061456c565b906040805180938054926145cc6145c0858560209181520190565b92600052602060002090565b9360005b81601f8201106149e85761013d9554928282106149d2575b8282106149b8575b82821061499e575b828210614984575b82821061496a575b828210614950575b828210614936575b82821061491c575b828210614905575b508181106148ed575b8181106148d5575b8181106148bd575b8181106148a5575b81811061488d575b818110614875575b81811061485d575b818110614845575b81811061482d575b818110614815575b8181106147fd575b8181106147e5575b8181106147cd575b8181106147b5575b81811061479d575b818110614785575b81811061476d575b818110614755575b81811061473d575b818110614725575b81811061470d575b8181106146f5575b106146e7575b500383610bec565b60f81c8152602001386146df565b60f083901c60ff1684529260019060200193016146d9565b60e883901c60ff1684529260019060200193016146d1565b60e083901c60ff1684529260019060200193016146c9565b60d883901c60ff1684529260019060200193016146c1565b60d083901c60ff1684529260019060200193016146b9565b60c883901c60ff1684529260019060200193016146b1565b60c083901c60ff1684529260019060200193016146a9565b60b883901c60ff1684529260019060200193016146a1565b60b083901c60ff168452926001906020019301614699565b60a883901c60ff168452926001906020019301614691565b60a083901c60ff168452926001906020019301614689565b609883901c60ff168452926001906020019301614681565b609083901c60ff168452926001906020019301614679565b608883901c60ff168452926001906020019301614671565b608083901c60ff168452926001906020019301614669565b607883901c60ff168452926001906020019301614661565b607083901c60ff168452926001906020019301614659565b606883901c60ff168452926001906020019301614651565b606083901c60ff168452926001906020019301614649565b605883901c60ff168452926001906020019301614641565b605083901c60ff168452926001906020019301614639565b604883901c60ff168452926001906020019301614631565b83901c60ff16845292600190602001930138614628565b603884901c60ff1685529093600190602001940190614620565b603084901c60ff1685529093600190602001940190614618565b602884901c60ff1685529093600190602001940190614610565b602084811c60ff1686529194909160019101940190614608565b601884901c60ff1685529093600190602001940190614600565b601084901c60ff16855290936001906020019401906145f8565b600884901c60ff16855290936001906020019401906145f0565b60ff8416855290936001906020019401906145e8565b919350916001610400602092614c868854614c7b60ff614a0c8582851660ff169052565b614c54614ab9614c048d614bb489614b648e614a318184018a8d60081c1660ff169052565b614a448584018a8d60101c1660ff169052565b888b610200606095614a5f878201858560181c1660ff169052565b614a746080958585888501921c1660ff169052565b614b1a60a097614a8d898401878760281c1660ff169052565b614aca60c09b614aa68d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b614adf6101208401878760481c1660ff169052565b614af46101408401878760501c1660ff169052565b614b096101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b614b2f6101a08201858560681c1660ff169052565b614b446101c08201858560701c1660ff169052565b614b596101e08201858560781c1660ff169052565b01921c1660ff169052565b614b796102208c01888b60881c1660ff169052565b614b8e6102408c01888b60901c1660ff169052565b614ba36102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b614bc96102a08a01868960a81c1660ff169052565b614bde6102c08a01868960b01c1660ff169052565b614bf36102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b614c196103208801848760c81c1660ff169052565b614c2e6103408801848760d01c1660ff169052565b614c436103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b614c696103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b01950191019186939194926145d0565b9060405160e081018181106001600160401b038211176103d65760405282546001600160a01b039081168252600184015416602082015291829060c090614d0f90600690600281015460408601526003810154606086015260048101546080860152614d046005820161454d565b60a0860152016145a5565b910152565b9092969493959196614d24610ca9565b97614d3a614d35836107d086610f0f565b614c96565b828a5280516001600160a01b031660608b01529687516001600160a01b03959086168015614f7957614d6c9086614f94565b9015614f5e5715614f4157614d8791612d6891848688615019565b614f29578515614f1157614d9e826107d085610df2565b54614db082610815856107d088610e2b565b5490878115159283614efd575b505050614ee557610815826107d0614ddb614de2956107d088610e64565b5495610e9d565b54908015159182614ed2575b5050614ebd5760808401518015159081614eb3575b50614e9e5760608401514210614e895760408401518503614e7457602084015191811691166001600160a01b031603614e615760c092614e429161183b565b602084015260a08101516080840152015160a082015260019160009190565b50600093632e834cbf60e11b9392509050565b50600095631d6bbb8d60e11b95945092505050565b5060009563456afd0b60e01b95945092505050565b50600095635bdd08f560e01b95945092505050565b9050831138614e03565b5060009563ae3586c560e01b95945092505050565b614edd919250610da3565b113880614dee565b50600098636d03a2e560e01b98975095505050505050565b614f08929350610db6565b11388781614dbd565b5060009863c6b949a960e01b98975095505050505050565b5060009863e2cf60cb60e01b98975095505050505050565b5060009a600162bed83560e01b03199a9950975050505050505050565b5060009b63915b8f1d60e01b9b9a5098505050505050505050565b5060009b634ed1072f60e11b9b9a5098505050505050505050565b604051638da5cb5b60e01b602082019081526004825292939290614fb781610b6d565b6000928392839251915afa90614fcb612140565b9115801561500e575b61500757602082805181010312610119575060200151614ff38161011c565b6001926001600160a01b0391821691161490565b9250508190565b506020825110614fd4565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d60209081526040808320938352928152828220835196949061506988610b6d565b6001815491828a5201549081848a01521590811561514e575b506151425783929195949351868101916bffffffffffffffffffffffff199060601b168252601481526150b481610b6d565b5190209551959481945b8486106150cf575050505050501490565b909192939495615112908760051b8301358082111560001461511c57865185810192835260208301919091526151088160408401612444565b5190205b96615159565b94939291906150be565b865185810191825260208201929092529061513a8160408401612444565b51902061510c565b50505050505050600190565b905042101538615082565b6000198114610db15760010190565b9493929061517461171f565b95828752851561527d5761518e926107d061081592610ed6565b906002820154908115615268576003830154801515908161525d575b506152485782546001600160a01b03918216911603615234578260018301540361522057831161520d576151e36005926151ff9461183b565b60208501526151f46004820161454d565b6060850152016145a5565b608082015260019160009190565b506000936364b7fccd60e11b9392509050565b50600094631d6bbb8d60e11b949350915050565b50600094632e834cbf60e11b949350915050565b50600095635493bdef60e11b95945092505050565b9050421015386151aa565b50600095630bac95f560e21b95945092505050565b5060009663c6b949a960e01b9695509350505050565b80516001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d51360205260409020909190916152e760208201938451600052602052604060002090565b9060409361531885830193615302855160018060a01b031690565b60018060a01b0316600052602052604060002090565b6060830180519091615332916001600160a01b0316615302565b93600285015492831561547157600486015480151580615467575b615423575050845461537291506001600160a01b03165b91516001600160a01b031690565b6001600160a01b0381811690831603615408575050600183015491608081019283518082036153e757505060a001948551908282116153c757505050906153bf610fb2925185519061183b565b9351906154d9565b5163587ced0f60e01b815260048101919091526024810191909152604490fd5b8751631d6bbb8d60e11b815260048101919091526024810191909152604490fd5b61164b8751928392632e834cbf60e11b845260048401611705565b61164b90898561544f61536461543f8b5160018060a01b031690565b965197516001600160a01b031690565b915163581fa6b560e01b81529586956004870161379e565b504281111561534d565b61164b888461549c61536461548c8a5160018060a01b031690565b955196516001600160a01b031690565b915163b9c59b5760e01b81526001600160a01b03948516600482015260248101959095528316604485015291909116606483015281906084820190565b9190916002810190815490818514615534576003019182546154fb868261183b565b831561551e57839004958303928311610db15761551a92869255611818565b9055565b634e487b7160e01b600052601260045260246000fd5b6000809394955060049250600382018181549660018060a01b031985541685558160018601555555015590565b60408051627eeac760e11b8082529296600496909594939092916001600160a01b03891691602091828180615599898b8f84016117bc565b0381875afa90811561079a57600091615790575b5088811061577157908291869493898c6155d18951988993849388855284016117bc565b0381875afa94851561079a57600095615752575b50600080516020615d5d83398151915254615608906001600160a01b031661092d565b803b1561012d576000898b928f8f8f9061563886928f8f51998a988997889663eb46c45b60e01b88528701613760565b03925af1801561079a5761573f575b508683898d6156608a51948593849389855284016117bc565b0381885afa92831561079a5788958d8c928794600097615720575b506156918b51998a9586948594855284016117bc565b03915afa93841561079a578a936000956156fb575b5050826156b291611818565b14928315936156e6575b5050506156cc5750505050505050565b51638791019960e01b81529650869561164b95870161379e565b6156f1929350610db6565b14153886816156bc565b6156b292955084918161571992903d106109eb576109dd8183610bec565b94916156a6565b615738919750853d87116109eb576109dd8183610bec565b953861567b565b8061078e61574c92610b88565b38615647565b61576a919550833d85116109eb576109dd8183610bec565b93386155e5565b8961164b88928b898f8a51968796636906ef1760e11b885287016117d7565b6157a79150833d85116109eb576109dd8183610bec565b386155ad565b602090818184031261012d578051906001600160401b03821161012d57019180601f8401121561012d5782516157e281610c60565b936157f06040519586610bec565b818552838086019260051b82010192831161012d578301905b828210615817575050505090565b81518152908301908301615809565b9092916040820191604081528451809352606081019260208096019060005b81811061585f57505050610fb29394818403910152610f48565b82516001600160a01b031686529487019491870191600101615845565b93602095926158c1946158b39360018060a01b0392838092168952168888015216604086015260c0606086015260c0850190610f48565b908382036080850152610f48565b9060a0818303910152600081520190565b835190949093926001600160a01b0386169290916158f76158f287611825565b610c77565b946159046158f288611825565b809660005b898110615b8157506040968751916313849cfd60e21b918284528084808460049e8f83019161593792615826565b03815a93600094fa93841561079a57600094615b66575b5060005b8c8110615af65750600080516020615d5d8339815191525461597c906001600160a01b031661092d565b92833b1561012d576000898f958c968f8f906159ae8e8e8894519c8d9889978896637ee7f69b60e01b8852870161587c565b03925af190811561079a576000948d92615ae3575b506159d98c519788958694859485528401615826565b03915afa91821561079a57600092615ac0575b5060005b898110615a04575050505050505050505050565b615a0d81611825565b615a178185610d6a565b51615a37615a258386610d6a565b51615a30858a610d6a565b5190611818565b1490811591615a7c575b50615a4e576001016159f0565b61164b9899508092506116299150615a6593610d6a565b519351638791019960e01b8152968796870161379e565b9050615ab8615aa6615aa0615a99615a9385610da3565b88610d6a565b5193610da3565b85610d6a565b51615ab18489610d6a565b5190610db6565b141538615a41565b615adc91923d8091833e615ad48183610bec565b8101906157ad565b90386159ec565b8061078e615af092610b88565b386159c3565b615aff81611825565b615b098187610d6a565b51615b14838b610d6a565b5111615b235750600101615952565b8c8f8d888c61164b938f96615b4f908f8a615b4181615b4893610d6a565b5195610d6a565b5194610d6a565b519351636906ef1760e11b815296879687016117d7565b615b7a91943d8091833e615ad48183610bec565b923861594e565b6001919250615b8f81611825565b615bac87615b9d8387610d6a565b6001600160a01b039091169052565b615bc288615b9d615bbc84610da3565b87610d6a565b615bcc8286610d6a565b51615bd7828c610d6a565b52615bf5615bef615be88488610d6a565b5192610da3565b8b610d6a565b5201908791615909565b615c0882615c53565b60015b828110615c1757505050565b600019810190808211610db157615c49615c35615c4e938686610d43565b35615c41838787610d43565b359083615c83565b615159565b615c0b565b801561211b57604b8111615c645750565b6044906040519063f80a484560e01b82526004820152604b6024820152fd5b919080821115615c9257505050565b606493506040519263f48f718f60e01b8452600484015260248301526044820152fd5b615cbe82615c53565b60015b828110615ccd57505050565b600019810190808211610db157615c49615ceb615cf79386866117ac565b35615c418387876117ac565b615cc156fe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5005e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50162f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50aa264697066735822122021551e17cf731138ae2156496b9e33f430ab60311f2b323732364712508edc7664736f6c63430008120033","sourceMap":"1047:53966:75:-:0;;;;;;;1251:4;1243:13;;1047:53966;;;;;;1243:13;1047:53966;;;;;;;;;","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":1276,"length":20},{"start":1337,"length":20},{"start":1413,"length":20},{"start":1477,"length":20},{"start":1850,"length":20},{"start":1919,"length":20},{"start":4430,"length":20},{"start":4489,"length":20},{"start":4715,"length":20},{"start":4777,"length":20},{"start":4941,"length":20},{"start":5009,"length":20},{"start":7040,"length":20},{"start":7932,"length":20},{"start":10765,"length":20},{"start":10902,"length":20}]}}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b6000803560e01c9081630a6ce3131461009a575080632c0c49ee1461009557806359a8a40a146100905780637777e6d71461008b578063a3eaf4d914610086578063b8e6b50f14610081578063cfdbf2541461007c5763d65852a61461007757600080fd5b610ad2565b610ab6565b610a2c565b610a10565b61047d565b6103ea565b610347565b6080366003190112610119576004356100b28161011c565b6024356100be8161011c565b604435916100cb8361011c565b606435926001600160401b039283851161011557366023860112156101155784600401359384116101155736602460608602870101116101155760246101129501926110fc565b80f35b8580fd5b80fd5b6001600160a01b0381160361012d57565b600080fd5b359061013d8261011c565b565b9181601f8401121561012d578235916001600160401b03831161012d576020808501948460051b01011161012d57565b634e487b7160e01b600052602160045260246000fd5b6006111561018f57565b61016f565b90600682101561018f5752565b919082519283825260005b8481106101cd575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016101ac565b9060209182815260c09283820191835193845183830152828501516040908184015283818701516060978891828701520151926080938486015201519660a0908180860152885180975260e0918286019487848a60051b8901019b01996000975b8a89106102585750505050505050505050505090565b909192939495969798999a9b8a806001928f60df19868303018d5251908151815261028b838301518483019060ff169052565b818c01516001600160a01b0316818d01528187015181880152878201516001600160a01b031688820152818901516001600160a01b0316818a0152818a0151818b01528a8201518b820152610100808301511515908201526102f66101208084015190830190610194565b610140828101516001600160e01b0319169082015261032661016080840151906101a080918501528301906101a1565b91610180809101519101529e0199019901979a999896959493929190610242565b602036600319011261012d576001600160401b0360043581811161012d5761037390369060040161013f565b604051929161038184610b6d565b6040519360808501938411858510176103d6576103d2946103c69460405260008152600060208201526000604082015260006060820152815260606020820152611e38565b604051918291826101e1565b0390f35b610b57565b908161010091031261012d5790565b60e036600319011261012d576001600160401b0360043581811161012d576104169036906004016103db565b604435906104238261011c565b60a43583811161012d5761043b90369060040161013f565b9060c43594851161012d5761045761046b95369060040161013f565b94909360843591606435916024359061246f565b60408051928352602083019190915290f35b606036600319011261012d5761049460043561011c565b61049f60243561011c565b6044356001600160401b03811161012d576104be90369060040161013f565b6104c66110b8565b6104d08183615bff565b73__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d57604051635e157ccf60e11b81526000818061050b60243560048301610c0d565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561079a576109f2575b5061053981610c77565b9061054381610c77565b61054c82610cdd565b926000805b848110610885575073__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d5760006105979160405180938192635ea509b560e01b835260243560048401610dc3565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561079a57610872575b5060005b8381106107b257506004356001600160a01b03163b1561012d57604051630d4498e760e21b815291600091839182916105fd91903360048501610f7c565b0381836004356001600160a01b03165af1801561079a5761079f575b5060005b81811061062657005b60206106328285610d6a565b5101516106be575b8061064760019285610d6a565b515161066760606106588488610d6a565b5101516001600160a01b031690565b90604061067584878a610d43565b0135600080516020615d3d8339815191526106b56020610696878a8d610d43565b013560405191829133978a8060a01b036004351696602435918561108d565b0390a40161061d565b60206106ca8285610d6a565b5101519060406106da8286610d6a565b510151916106ed60606106588488610d6a565b9260806106fa8488610d6a565b5101519160a061070a8589610d6a565b5101519273__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d57600093610751916040519788958695631872482b60e31b875260243560043560048901611029565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af491821561079a57600192610781575b50905061063a565b8061078e61079492610b88565b80610a05565b38610779565b610c34565b8061078e6107ac92610b88565b38610619565b806107c06001928689610d43565b356107df816107d0600435610df2565b90600052602052604060002090565b5461083e575b6107f4816107d0600435610e64565b54610801575b50016105bf565b61082c9061081533916107d0600435610e9d565b9060018060a01b0316600052602052604060002090565b6108368154610da3565b9055386107fa565b604061084b83888b610d43565b013561086b61086333610815856107d0600435610e2b565b918254610db6565b90556107e5565b8061078e61087f92610b88565b386105bb565b61089f61089382878a610d43565b336024356004356144b1565b6108a98288610d6a565b526108b48187610d6a565b506020806108c28389610d6a565b510151610905575b50806108d860019288610d6a565b51516108e48286610d6a565b5260406108f282888b610d43565b01356108fe8287610d6a565b5201610551565b9091610968908261093961092d600080516020615d1d8339815191525460018060a01b031690565b6001600160a01b031690565b81610944878c610d6a565b5101519060405180809681946361fe24a960e11b8352600483019190602083019252565b03915afa91821561079a576001936109be936109b8926000916109c5575b506040610993888d610d6a565b5101526109a0868b610d6a565b51015160406109af878c610d6a565b51015190610db6565b90610db6565b91906108ca565b6109e59150823d84116109eb575b6109dd8183610bec565b810190610d7e565b38610986565b503d6109d3565b8061078e6109ff92610b88565b3861052f565b600091031261012d57565b3461012d57600036600319011261012d57602060405160328152f35b3461012d5761010036600319011261012d57600435610a4a8161011c565b60443590610a578261011c565b606435610a638161011c565b6001600160401b039260c43584811161012d57610a8490369060040161013f565b9160e43595861161012d57610aa0610ab496369060040161013f565b95909460a435926084359260243590611adf565b005b3461012d57600036600319011261012d576020604051604b8152f35b60c036600319011261012d576001600160401b0360043581811161012d57610afe9036906004016103db565b60243590610b0b8261011c565b60843583811161012d57610b2390369060040161013f565b9060a43594851161012d57610b3f610ab495369060040161013f565b949093610b4a6110b8565b606435916044359161297f565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176103d657604052565b6001600160401b0381116103d657604052565b60c081019081106001600160401b038211176103d657604052565b606081019081106001600160401b038211176103d657604052565b602081019081106001600160401b038211176103d657604052565b90601f801991011681019081106001600160401b038211176103d657604052565b600080516020615cfd83398151915281526001600160a01b03909116602082015260400190565b6040513d6000823e3d90fd5b604051906101a082018281106001600160401b038211176103d657604052565b6001600160401b0381116103d65760051b60200190565b90610c8182610c60565b610c8e6040519182610bec565b8281528092610c9f601f1991610c60565b0190602036910137565b60405190610cb682610b9b565b606060a0836000815260006020820152600060408201526000838201528260808201520152565b90610ce782610c60565b610cf46040519182610bec565b8281528092610d05601f1991610c60565b019060005b828110610d1657505050565b602090610d21610ca9565b82828501015201610d0a565b634e487b7160e01b600052603260045260246000fd5b9190811015610d655760051b81013590607e198136030182121561012d570190565b610d2d565b8051821015610d655760209160051b010190565b9081602091031261012d575190565b634e487b7160e01b600052601160045260246000fd5b9060018201809211610db157565b610d8d565b91908201809211610db157565b600080516020615cfd83398151915281526001600160a01b039091166020820152604081019190915260600190565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5106020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5116020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5126020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c6020526040902090565b90815180825260208080930193019160005b828110610f68575050505090565b835185529381019392810192600101610f5a565b6001600160a01b039091168152606060208201819052610fb2939192610fa491840190610f48565b916040818403910152610f48565b90565b90815180825260208080930193019160005b828110610fd5575050505090565b83516001600160a01b031685529381019392810192600101610fc7565b90815180825260208080930193019160005b828110611012575050505090565b835160ff1685529381019392810192600101611004565b95929361107f94610fb2989692600080516020615cfd833981519152895260018060a01b03948580921660208b0152166040890152606088015260808701521660a08501526101008060c0860152840190610fb5565b9160e0818403910152610ff2565b6001600160a01b03918216815260208101929092529091166040820152606081019190915260800190565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146110ea57565b604051636a5f212f60e11b8152600490fd5b92936111066110b8565b6111108186615cb5565b6001600160a01b039233838516146116cc5773__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d57604051635e157ccf60e11b81526000818061115b8560048301610c0d565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561079a576116b9575b5061118985611964565b600080516020615d5d833981519152546111cd906020906111b2906001600160a01b031661092d565b6040518093819263e985e9c560e01b83528860048401611705565b0381888a165afa90811561079a5760009161168a575b501561166e576111f282610c77565b906111fc83610c77565b6112058461175c565b9260008061122a61092d600080516020615d1d8339815191525460018060a01b031690565b878c888d898d8588106114ba57505050505050505073__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d57600061127b9160405180938192635ea509b560e01b83528860048401610dc3565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561079a576114a7575b5090859160005b89878c81841061141357505050506112c1925033878a6158d2565b60005b8381106112d5575050505050505050565b6112df8184610d6a565b51519060206112ee8286610d6a565b51015160406112fd8387610d6a565b51015192606061130d8488610d6a565b51015191608061131d8589610d6a565b5101519473__$11854c5905aa23948096e0e4d7059bb9de$__3b1561012d5786956000948b611363938f956040519a8b98899863981e8fc560e01b8a5260048a016118d5565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af491821561079a5786867f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d7886948a8c6113f78f60406113e18a6113c98f829060019f9d8a9e611400575b50610d6a565b51519860206113d98383886117ac565b0135946117ac565b0135908b60405195869516993399169785611940565b0390a4016112c4565b8061078e61140d92610b88565b386113c3565b95839160019596976114458361081561142b88610ed6565b6114368887876117ac565b35600052602052604060002090565b611463600260406114578887876117ac565b01359201918254611818565b8091551561147b575b505050505001908692916112a6565b611436611498946108159361149261149d98610ed6565b936117ac565b611865565b898189898e61146c565b8061078e6114b492610b88565b3861129f565b926114e7886114e188958895839d9b9c986114db8560409d61150f9d6117ac565b9261450a565b92610d6a565b526114f2838d610d6a565b506114fe8383836117ac565b35611509848b610d6a565b526117ac565b013561151b8487610d6a565b5261154b60208b8d8c61152e888a610d6a565b5192604051809681958294627eeac760e11b8452600484016117bc565b0392165afa90811561079a5760009161164f575b5061156a8487610d6a565b51811061161457506115a4602080611582868b610d6a565b510151604051809381926361fe24a960e11b8352600483019190602083019252565b0381865afa91821561079a576001926115ed926000916115f5575b5060406115cc878c610d6a565b5101526109b860206115de878c610d6a565b51015160406109af888d610d6a565b92019061122a565b61160e915060203d6020116109eb576109dd8183610bec565b386115bf565b8961164b8d928861163088611629818c610d6a565b5192610d6a565b5190604051958695636906ef1760e11b8752600487016117d7565b0390fd5b611668915060203d6020116109eb576109dd8183610bec565b3861155f565b60405163d65b0d6960e01b81528061164b878660048401611705565b6116ac915060203d6020116116b2575b6116a48183610bec565b8101906116ed565b386111e3565b503d61169a565b8061078e6116c692610b88565b3861117f565b60405163aac1ae8b60e01b81526001600160a01b0384166004820152602490fd5b9081602091031261012d5751801515810361012d5790565b6001600160a01b0391821681529116602082015260400190565b6040519060a082018281106001600160401b038211176103d657604052606060808360008152600060208201526000604082015282808201520152565b9061176682610c60565b6117736040519182610bec565b8281528092611784601f1991610c60565b019060005b82811061179557505050565b6020906117a061171f565b82828501015201611789565b9190811015610d65576060020190565b6001600160a01b039091168152602081019190915260400190565b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b606319810191908211610db157565b91908203918211610db157565b908160011b9180830460021490151715610db157565b81810292918115918404141715610db157565b818110611859575050565b6000815560010161184e565b6005600091828155826001820155826002820155826003820155600481018054848255806118bb575b50500190815490808355816118a257505050565b60208161013d94601f935220910160051c81019061184e565b6118ce918552602085209081019061184e565b388061188e565b96936119319591610fb299979394600080516020615cfd8339815191528a5260018060a01b03958680931660208c015260408b0152166060890152608088015260a08701521660c08501526101208060e0860152840190610fb5565b91610100818403910152610ff2565b909493926060926080830196835260018060a01b0316602083015260408201520152565b803b158015611997575b6119755750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b506119a1816119a7565b1561196e565b6040519060208083018160006301ffc9a760e01b95868452866024820152602481526119d281610bb6565b51617530938685fa933d6000519086611a77575b5085611a6d575b5084611a0a575b50505081611a00575090565b610fb29150611a82565b83945090600091839460405185810192835263ffffffff60e01b602482015260248152611a3681610bb6565b5192fa60005190913d83611a62575b505081611a58575b5015903880806119f4565b9050151538611a4d565b101591503880611a45565b15159450386119ed565b8411159550386119e6565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152611ab281610bb6565b5191617530fa6000513d82611ad3575b5081611acc575090565b9050151590565b60201115915038611ac2565b9491959296909397611aef6110b8565b60409384519a611afe8c610b9b565b6001600160a01b039788168c5260208c01968752978716858c0181815299881660608d0190815260808d019b8c5260a08d01958652999890338114611e1657508b51611b52906001600160a01b0316611964565b895173__$11854c5905aa23948096e0e4d7059bb9de$__93906001600160a01b031694843b1561012d578751635e157ccf60e11b8152600096879082908190611b9e9060048301610c0d565b0381895af4801561079a57611e03575b50843b156101155787516376fb859760e01b8152868180611bd58787878b60048601612ac4565b0381895af4801561079a57611df0575b50865115611ddf57918d939161092d9897969593611c5d6020611c1f61092d611c0d8a615293565b9a519a9e909a6001600160a01b031690565b600080516020615d5d83398151915254611c41906001600160a01b031661092d565b908c51808095819463e985e9c560e01b83523360048401611705565b03915afa90811561079a578891611dc1575b5015611d9957908f91611cc08f94938f611cb3908f8d90611ca7611c99865160018060a01b031690565b93516001600160a01b031690565b90519151923390615561565b516001600160a01b031690565b8c5194516001600160a01b03169590873b15611d955790611cfc949392918c519d8e9a8b998a9963981e8fc560e01b8b52339460048c01612910565b03915af4801561079a57611d68611d58611d4a7fd6c105ec24ddd771e44ffc25e8a8603b6b78ba980a72645a26740b3d8437388599611d7d978a95611d82575b50516001600160a01b031690565b9b516001600160a01b031690565b955198516001600160a01b031690565b98519151925195869516991697339785611940565b0390a4565b8061078e611d8f92610b88565b38611d3c565b8980fd5b8f51895163d65b0d6960e01b815290819061164b906001600160a01b03163360048401611705565b611dd9915060203d81116116b2576116a48183610bec565b38611c6f565b875163c6b949a960e01b8152600490fd5b8061078e611dfd92610b88565b38611be5565b8061078e611e1092610b88565b38611bae565b8651630bfa508960e41b81526001600160a01b03919091166004820152602490fd5b9190611e426110b8565b611e4b826120eb565b611e548261206f565b91602092838501908152349260005b838110611f4d57505050508060608451015280611ed0575b50815180519181015160408083015160609384015182519586526020860193909352908401529082015233907ff769e48349f9b4903ef362e95411b2c4778d3bdaf9dc87b0d25f29f2813ea16390608090a290565b73__$11854c5905aa23948096e0e4d7059bb9de$__803b1561012d57604051637baf92a360e01b8152600080516020615cfd833981519152600482015260006024820181905233604483015260648201939093529190829060849082905af4801561079a5715611e7b578061078e611f4792610b88565b38611e7b565b611f628582611f5d8188876120bf565b612195565b91969015611fe4575090611fc1600192968951611f7f8151610da3565b9052838060a01b03611f9d6060611f97868b8a6120bf565b016120e1565b1615611fc7575b611fbb83875183611fb58383610d6a565b52610d6a565b50613d68565b01611e63565b610180810151611fdd60408c5101918251610db6565b9052611fa4565b956001929150611fc190888a5101611fdd8151610da3565b604051906101a082018281106001600160401b038211176103d657604052816101806000918281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201528261014082015260606101608201520152565b9061207982610c60565b6120866040519182610bec565b8281528092612097601f1991610c60565b019060005b8281106120a857505050565b6020906120b3611ffc565b8282850101520161209c565b9190811015610d655760051b8101359060fe198136030182121561012d570190565b35610fb28161011c565b801561211b57603281116120fc5750565b6044906040519063f80a484560e01b8252600482015260326024820152fd5b60405163c2e5347d60e01b8152600490fd5b6040519061213a82610bd1565b60008252565b3d1561217a573d906001600160401b0382116103d6576040519161216e601f8201601f191660200184610bec565b82523d6000602084013e565b606090565b919082604091031261012d576020825192015190565b90816121a9916121a3611ffc565b50613bcf565b90826121b482612c8a565b8051909392906001600160a01b031680612279575b501561226a57507f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50b546000938493909261220c926001600160a01b03169361239d565b90602082519201905af461221e612140565b9015612250576122399192506020808251830101910161217f565b600161010084015291906101808201529160019190565b61225c61226391613e41565b9083613cd2565b9160009190565b91509350612263915082613ca9565b6001600160a01b03166080870152386121c9565b60ff81160361012d57565b9035601e198236030181121561012d5701602081359101916001600160401b03821161012d578160051b3603831361012d57565b81835290916001600160fb1b03831161012d5760209260051b809284830137010190565b9061238a610fb29260ff81356123058161228d565b16835260208101356123168161011c565b6001600160a01b0316602084015261234361233360408301610132565b6001600160a01b03166040850152565b61236261235260608301610132565b6001600160a01b03166060850152565b6080810135608084015260a081013560a084015260c081013560c084015260e0810190612298565b9091610100908160e082015201916122cc565b825160208085015160408087015160608801516080909801519151632cd4520560e11b8186015260e060248201529796889692956001600160a01b03949193908516906123ef906101048a01906122f0565b9360448901526064880152608487015260a486015260231992838683030160c48701528080885193848152019701926000905b8382106124525750505050508284030160e4830152610fb29261244491610ff2565b03601f198101835282610bec565b845181168952978201978997509382019360019190910190612422565b9061248898979695949392916124836110b8565b61250e565b9091565b35610fb28161228d565b906040610fb2926001815281602082015201906101a1565b906040610fb2926002815281602082015201906101a1565b906040610fb2926003815281602082015201906101a1565b906040610fb2926004815281602082015201906101a1565b906040610fb2926005815281602082015201906101a1565b989796959493929190600060ff8b356125268161228d565b16156125995750600160ff61253a8c61248c565b161461258f5761164b6124446125766125528d61248c565b60405163bb75025d60e01b602082015260ff90911660248201529182906044820190565b604051631ee0c01d60e31b815291829160048301612496565b6124889899612aeb565b91826125c69895939b96929794999b5087936125b5818c610db6565b9a6125cb8a8d60608c019d8e6120e1565b6132ef565b80516128045750602089016125e76125e2826120e1565b610df2565b9a61260160808c0135809d90600052602052604060002090565b5415158b8d61261b816107d0612616886120e1565b610e64565b541515926127d4575b5050612798575b61263a61092d61092d846120e1565b946126448d614476565b60c08d01359661265388614476565b91813b1561279457604051630d4498e760e21b81529392849291839185918391612681913360048501610f7c565b03925af19081612781575b506126b55761164b61269c612140565b604051631ee0c01d60e31b8152918291600483016124c6565b6001600160a01b0397886126c88f6120e1565b1661274557506126d98e8c92611818565b9f600080516020615d3d8339815191529a60a09a612728996127149761270e975b8b8161272f575b50505050505050506120e1565b996120e1565b90604051958695339b16980135928561108d565b0390a49190565b61273897613aa8565b893880808080808b612701565b9f8b9150600080516020615d3d8339815191529a8f9a8f996127149761270e9761277c60a09f6127776127289f6120e1565b613537565b6126fa565b8061078e61278e92610b88565b3861268c565b8380fd5b6127c36127b08d6107d06127ab866120e1565b610e9d565b3360009081526020919091526040902090565b6127cd8154610da3565b905561262b565b60c06127f16127b06127fb936107d06127ec8a6120e1565b610e2b565b9201358254610db6565b90558b8d612624565b604051631ee0c01d60e31b815290819061164b90600483016124ae565b91908082526020809201929160005b82811061283e575050505090565b90919293828060019287356128528161011c565b848060a01b03168152019501910192919092612830565b91908082526020809201929160005b828110612886575050505090565b90919293828060019260ff883561289c8161228d565b16815201950193929101612878565b979593610fb29997936129029692600080516020615cfd8339815191528b5260018060a01b03948580921660208d01521660408b015260608a015260808901521660a08701526101008060c0880152860191612821565b9260e0818503910152612869565b9896949093610fb29a98946020946129709894600080516020615cfd8339815191528d528c60018060a01b03978880951691015260408d01521660608b015260808a015260a08901521660c08701526101208060e0880152860191612821565b92610100818503910152612869565b97969592919094939560ff6129938a61248c565b1615612a6057600160ff6129a68b61248c565b16146129d95761164b6129b88a61248c565b60405163bb75025d60e01b815260ff90911660048201529081906024820190565b979192939495969773__$11854c5905aa23948096e0e4d7059bb9de$__94612a03602085016120e1565b96612a10606086016120e1565b99873b1561012d57600099608097612a42966040519d8e9c8d9b8c9b63981e8fc560e01b8d5201359060048c01612910565b03915af4801561079a57612a535750565b8061078e61013d92610b88565b9791969794909493929373__$11854c5905aa23948096e0e4d7059bb9de$__94612a986060612a91602087016120e1565b95016120e1565b94863b1561012d57600098612a42946040519b8c9a8b998a99631872482b60e31b8b5260048b016128ab565b9290612add90610fb29593604086526040860191612821565b926020818503910152612869565b949895909792969193988899612b01818a610db6565b99612b13818c6125c660608c016120e1565b9b8c51612c6f579a9b508b9a6001600160a01b03612b3360608b016120e1565b16612c505750612bc0969798999a612b4a91611818565b995b6002612b7d896108158c6080612b6c612b67602084016120e1565b610ed6565b910135600052602052604060002090565b01612b8d60c08b01358254611818565b80915515612c2c575b612bb9612ba560208b016120e1565b60c08b01359060808c0135908b33916137d0565b8789613aa8565b612bcc602083016120e1565b917f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d788694611d7d612bfd606084016120e1565b6040516001600160a01b03968716963396169490928392909160c08101359160a0820135916080013585611940565b612c4b611498896108158c6107d0612b676020608084013593016120e1565b612b96565b9a88999a9150612c6a906127776060612bc09a9b016120e1565b612b4c565b604051631ee0c01d60e31b81528061164b8f600483016124ae565b90612c9361171f565b908235612c9f8161228d565b60ff8116938415612d0457612cb38261228d565b60018514612cef5750612cc59061228d565b6040519263bb75025d60e01b6020850152602484015260248352612ce883610bb6565b6000929190565b91935050612cfd9150612f0b565b9192909190565b91935050612cfd9150612d47565b903590601e198136030182121561012d57018035906001600160401b03821161012d57602001918160051b3603831361012d57565b612d4f61171f565b9060608101612d6c612d68612d63836120e1565b6143d0565b1590565b612ec157612db160209283810192612d83846120e1565b90612dbb612d90826120e1565b9260808501359360a086013595868660c0830135998360e08c950190612d12565b9590943391614d14565b60608101516001600160a01b03168a5296909115612e955750505050505081810151808385015280612e0d575b5060a091506080810151606084015201516080820152600191612e0961212d565b9190565b600080516020615d1d83398151915254612e55918491612e35906001600160a01b031661092d565b60405180809581946361fe24a960e11b8352600483019190602083019252565b03915afa90811561079a5760a093600092612e78575b5050604084015238612de8565b612e8e9250803d106109eb576109dd8183610bec565b3880612e6b565b612eb99750612ea9919293949596506120e1565b612eb333936120e1565b91613f10565b916000929190565b612efd939150612ed3612ce8916120e1565b60405163cd5f748960e01b60208201526001600160a01b0390911660248201529384906044820190565b03601f198101855284610bec565b90612f1461171f565b90604080840190612f34612f27836120e1565b6001600160a01b03168552565b612f4061092d836120e1565b33146132b55760209081860195612f61612d68612f5c896120e1565b61445e565b61327757612f6d61171f565b50612f77876120e1565b90612f81856120e1565b9160c0612faf6060840192612f95846120e1565b946080810135809660a08301359586930135988994615168565b9390911561324f57505050612fc961092d61092d8b6120e1565b61301386612fd6896120e1565b600080516020615d5d83398151915254612ff8906001600160a01b031661092d565b885163e985e9c560e01b815293849283929060048401611705565b0381855afa60009181613230575b5061305e575050505050612efd9061304461303e612ce8956120e1565b976120e1565b905196879363d65b0d6960e01b9085015260248401611705565b9692949395961561321757868561309292613078866120e1565b8751809581948293627eeac760e11b8452600484016117bc565b03915afa600091816131f8575b5061310057505091612ce89493916130bc61270e612efd956120e1565b9051988995636906ef1760e11b90870152602486019093600093608093969560a084019760018060a01b038092168552166020840152604083015260608201520152565b92949182849a959297989a106131c05750505050828401805186860152600080516020615d1d8339815191525461316a939250859190613148906001600160a01b031661092d565b905190835180809681946361fe24a960e11b8352600483019190602083019252565b03915afa91821561079a576080946000936131a1575b50508401526060810151606084015201516080820152600191612e0961212d565b6131b8929350803d106109eb576109dd8183610bec565b903880613180565b612ce89650946131de6131d8612efd969b99976120e1565b9a6120e1565b9051998a96636906ef1760e11b90880152602487016117d7565b613210919250883d8a116109eb576109dd8183610bec565b903861309f565b5050612ce8949350612efd925061303e613044916120e1565b613248919250883d8a116116b2576116a48183610bec565b9038613021565b93955093969150945061327161326b61326b612eb9999b6120e1565b926120e1565b9261425b565b5094612ce8925061328a612efd916120e1565b9551630f20e39960e21b928101929092526001600160a01b0390951660248201529384906044820190565b612efd94506132c6612ce8926120e1565b905163aac1ae8b60e01b60208201526001600160a01b0390911660248201529384906044820190565b91811561352c576001600160a01b0383169081156134ea5750604080516370a0823160e01b8152336004820152602092908381602481855afa600091816134cb575b50613371575050516364db3d5960e01b918101919091526001600160a01b039092166024830152604482015260006064820152610fb28160848101612444565b84811061348c57507f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d508546133cf9184916133b3906001600160a01b031661092d565b9084518080958194636eb1769f60e11b83523360048401611705565b03915afa6000918161346d575b5061341b5750516337a950bb60e01b918101919091526001600160a01b039092166024830152604482015260006064820152610fb28160848101612444565b83811061342f575050505050610fb261212d565b90516337a950bb60e01b928101929092526001600160a01b03909316602482015260448101919091526064810191909152610fb28160848101612444565b613485919250843d86116109eb576109dd8183610bec565b90386133dc565b91516364db3d5960e01b93810193909352506001600160a01b03909316602482015260448101919091526064810191909152610fb28160848101612444565b6134e3919250853d87116109eb576109dd8183610bec565b9038613331565b92505080821015613522576040516310da2c1360e21b602082015260248101919091526044810191909152610fb28160648101612444565b5050610fb261212d565b505050610fb261212d565b9091821561375b57604080516370a0823160e01b8082523060048084019190915292959294926020929091906001600160a01b0385169060008582602481865afa90918161373c575b506135a857888861164b613592612140565b9251631ee0c01d60e31b815292839283016124ae565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d508549092906135df906001600160a01b031661092d565b803b1561012d578951630aed65f560e11b81526001600160a01b038816818b0190815233602082015230604082015260608101879052909160009183919082908490829060800103925af19081613729575b5061364357888861164b613592612140565b8851908152308882019081529091600091869184918290819060200103915afa90918161370a575b5061367d57878761164b613592612140565b949693959460009190818110613702576136979250611818565b905b8082036136a857505050505050565b8351636ff596f360e01b938101939093526001600160a01b03959095166024830152604482019490945260648082019490945292835261164b906136ed608485610bec565b51631ee0c01d60e31b815292839283016124ae565b505090613699565b613722919250853d87116109eb576109dd8183610bec565b903861366b565b8061078e61373692610b88565b38613631565b613754919250863d88116109eb576109dd8183610bec565b9038613580565b915050565b9391909260e0959360018060a01b03928380921687521660208601521660408401526060830152608082015260c060a0820152600060c08201520190565b6001600160a01b0391821681526020810192909252918216604082015291166060820152608081019190915260a00190565b60408051627eeac760e11b8082529196929560209593949290916001600160a01b03881691906000888280613809888a600484016117bc565b0381875afa909181613a89575b5061383f5761164b8a613827612140565b9051631ee0c01d60e31b8152918291600483016124de565b90868210613a5d578951818152600089828061385f898c600484016117bc565b0381885afa909181613a3e575b5061387d5761164b8b613827612140565b600080516020615d5d833981519152549093906138a2906001600160a01b031661092d565b803b1561012d576000888792898f8f6138d28f8793519889978896879563eb46c45b60e01b875260048701613760565b03925af19081613a2b575b506138ee5761164b8b613827612140565b8a5182815260008a82806139068a8c600484016117bc565b0381865afa909181613a0c575b506139245761164b8c613827612140565b8b5192835291906000908a90839081806139428b8e600484016117bc565b03915afa9091816139ed575b5061395f5761164b8b613827612140565b9061396f8880939c9b9c94611818565b14928315936139d8575b5050506139895750505050505050565b61164b9750916139c19493916139b3938751988996638791019960e01b908801526024870161379e565b03601f198101845283610bec565b51631ee0c01d60e31b8152918291600483016124de565b6139e3929350610db6565b1415388581613979565b613a059192508a3d8c116109eb576109dd8183610bec565b903861394e565b613a249192508b3d8d116109eb576109dd8183610bec565b9038613913565b8061078e613a3892610b88565b386138dd565b613a569192508a3d8c116109eb576109dd8183610bec565b903861386c565b508851636906ef1760e11b8189015261164b918a906139c19083906139b3908b898f8c602487016117d7565b613aa1919250893d8b116109eb576109dd8183610bec565b9038613816565b9497969795919593929360018060a01b0390817f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50b5416976040519660209184613b09848b019b636b2c295360e11b8d5260c060248d015260e48c01906122f0565b961660448a0152606489015260848801528060231994858982030160a48a01528381520195926000905b838210613b91575050505050926124448360009899613b5f948a999897858098030160c4860152612869565b51915af4613b6b612140565b9015613b745750565b604051631ee0c01d60e31b815290819061164b90600483016124f6565b90919293968380600192848b35613ba78161011c565b1681520198019493920190613b33565b604051613bc381610bd1565b60008152906000368137565b90613bd8611ffc565b5060c0613be48261248c565b91613c70613bf4602083016120e1565b613c60613c03604085016120e1565b613c44613c12606087016120e1565b93613c34613c1e613bb7565b99613c27610c40565b9b8c5260ff1660208c0152565b6001600160a01b031660408a0152565b60808581013560608a01526001600160a01b0390911690880152565b6001600160a01b031660a0860152565b60a081013582850152013560e0830152600061010083015260006101208301526000610140830152610160820152600061018082015290565b6001610120820152610160906001600160e01b0319613cc78461449b565b166101408201520152565b600682101561018f576101609161012082015263ffffffff60e01b613cc78461449b565b9081526001600160a01b039182166020820152911660408201526060810191909152608081019190915290151560a082015294939261012092613d6392613d419060c0890190610194565b6001600160e01b03191660e087015261014061010087018190528601906101a1565b930152565b8051906020810151613d7a9060ff1690565b60408201519092906001600160a01b031660608301516080840151909391906001600160a01b031660a08301519094906001600160a01b03169260c08101519060e0810151610100820151613dce90151590565b61012083015190613dde82610185565b6101408401516001600160e01b0319169261016085015194610180015195604051998a99600160a01b60019003169d60ff169c613e1b998b613cf6565b037f844491b54cb1a58801f9eb51fecfaf5076847131d8f6ec580232d9766e3fae4f91a4565b90613e4b82613e5d565b91613e5857505060059190565b925090565b631ee0c01d60e31b6001600160e01b0319613e778361449b565b1614801590613f05575b613ef6576024810151916044820151606483019283519160058611908115613eea575b50613ed757613eb39051611809565b10613ec857613ec183610185565b6001929190565b60009250829150610fb261212d565b5050915050600090600090610fb261212d565b60409150141538613ea4565b50600090600090610fb261212d565b506064815110613e81565b949293959195613f23816107d084610f0f565b956001600160e01b03191694634ed1072f60e11b808714614236575063915b8f1d60e01b8681146142015750600162bed83560e01b03198681146141e3575063e2cf60cb60e01b8681146141af575063c6b949a960e01b8681146141905750636d03a2e560e01b86811461411a575063ae3586c560e01b918683146140ab5750635bdd08f560e01b9250505083811461407a575063456afd0b60e01b90508281146140515750631d6bbb8d60e11b8281146140225750632e834cbf60e11b9182149050613ff557505050610fb261212d565b61244461400e6001610fb294015460018060a01b031690565b604051948593602085015260248401611705565b60029390930154604051602081019490945260248401919091526044830152509050610fb28160648101612444565b935050506003610fb2910154916124446040519384926020840152602483019190602083019252565b92509350506124446004610fb293015460405194859360208501526024840160209093929193604081019481520152565b92975092509350610fb2945061244492506140c9816107d088610e64565b54916140dc81610815846107d08b610e9d565b5491604051978896602088015260248701919594939060809360a084019760018060a01b038093168552602085015216604083015260608201520152565b95509290919650610fb295506124449350614138826107d089610df2565b549261414b81610815856107d08c610e2b565b5492604051988997602089015260248801929060a09491979695929760c0850198600180881b0380931686526020860152166040840152606083015260808201520152565b97505050505050505060405190602082015260048152610fb281610b6d565b60405160208101919091526001600160a01b0390911660248201529650610fb2955086945050604484019250612444915050565b955050509450505061244461400e610fb2935460018060a01b031690565b60405160208101919091526001600160a01b03909316602484015250909550610fb29450859350506044830191506124449050565b95505091509450610fb2935061244491506040519485936020850152602484016117bc565b94929161426f81610815876107d086610ed6565b956001600160e01b0319169463c6b949a960e01b8087146141905750630bac95f560e21b8681146143905750635493bdef60e11b918683146143675750632e834cbf60e11b925050508381146143495750631d6bbb8d60e11b905082811461431a57506364b7fccd60e11b91821490506142ee57505050610fb261212d565b6124446002610fb293015460405194859360208501526024840160209093929193604081019481520152565b60019390930154604051602081019490945260248401919091526044830152509050610fb28160648101612444565b9354909450610fb293925061244491506001600160a01b031661400e565b9297509250935061244492506003610fb29501549160405196879560208701526024860161108d565b60405160208101919091526001600160a01b0393841660248201526044810191909152911660648201529450610fb2935084925050608482019050612444565b6001600160a01b03908116908115614457576020907f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d505541691602460405180948193632d5ad3d560e01b835260048301525afa60009181614437575b50610fb25750600090565b61445091925060203d81116116b2576116a48183610bec565b903861442c565b5050600190565b803b1515908161446c575090565b610fb291506119a7565b906040519161448483610b6d565b60018352602083016020368237835115610d655752565b60048151106144ab576020015190565b50600090565b92916144bb610ca9565b508235906020840135926144e76144db6040870135966060810190612d12565b9087878787878d614d14565b9791156144f8575050505050505090565b6145029750613f10565b602081519101fd5b92909161451561171f565b50813590604060208401359301359361453285858585858b615168565b979115614543575050505050505090565b614502975061425b565b9060405191828154918282526020928383019160005283600020936000905b8282106145825750505061013d92500383610bec565b85546001600160a01b03168452600195860195889550938101939091019061456c565b906040805180938054926145cc6145c0858560209181520190565b92600052602060002090565b9360005b81601f8201106149e85761013d9554928282106149d2575b8282106149b8575b82821061499e575b828210614984575b82821061496a575b828210614950575b828210614936575b82821061491c575b828210614905575b508181106148ed575b8181106148d5575b8181106148bd575b8181106148a5575b81811061488d575b818110614875575b81811061485d575b818110614845575b81811061482d575b818110614815575b8181106147fd575b8181106147e5575b8181106147cd575b8181106147b5575b81811061479d575b818110614785575b81811061476d575b818110614755575b81811061473d575b818110614725575b81811061470d575b8181106146f5575b106146e7575b500383610bec565b60f81c8152602001386146df565b60f083901c60ff1684529260019060200193016146d9565b60e883901c60ff1684529260019060200193016146d1565b60e083901c60ff1684529260019060200193016146c9565b60d883901c60ff1684529260019060200193016146c1565b60d083901c60ff1684529260019060200193016146b9565b60c883901c60ff1684529260019060200193016146b1565b60c083901c60ff1684529260019060200193016146a9565b60b883901c60ff1684529260019060200193016146a1565b60b083901c60ff168452926001906020019301614699565b60a883901c60ff168452926001906020019301614691565b60a083901c60ff168452926001906020019301614689565b609883901c60ff168452926001906020019301614681565b609083901c60ff168452926001906020019301614679565b608883901c60ff168452926001906020019301614671565b608083901c60ff168452926001906020019301614669565b607883901c60ff168452926001906020019301614661565b607083901c60ff168452926001906020019301614659565b606883901c60ff168452926001906020019301614651565b606083901c60ff168452926001906020019301614649565b605883901c60ff168452926001906020019301614641565b605083901c60ff168452926001906020019301614639565b604883901c60ff168452926001906020019301614631565b83901c60ff16845292600190602001930138614628565b603884901c60ff1685529093600190602001940190614620565b603084901c60ff1685529093600190602001940190614618565b602884901c60ff1685529093600190602001940190614610565b602084811c60ff1686529194909160019101940190614608565b601884901c60ff1685529093600190602001940190614600565b601084901c60ff16855290936001906020019401906145f8565b600884901c60ff16855290936001906020019401906145f0565b60ff8416855290936001906020019401906145e8565b919350916001610400602092614c868854614c7b60ff614a0c8582851660ff169052565b614c54614ab9614c048d614bb489614b648e614a318184018a8d60081c1660ff169052565b614a448584018a8d60101c1660ff169052565b888b610200606095614a5f878201858560181c1660ff169052565b614a746080958585888501921c1660ff169052565b614b1a60a097614a8d898401878760281c1660ff169052565b614aca60c09b614aa68d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b614adf6101208401878760481c1660ff169052565b614af46101408401878760501c1660ff169052565b614b096101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b614b2f6101a08201858560681c1660ff169052565b614b446101c08201858560701c1660ff169052565b614b596101e08201858560781c1660ff169052565b01921c1660ff169052565b614b796102208c01888b60881c1660ff169052565b614b8e6102408c01888b60901c1660ff169052565b614ba36102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b614bc96102a08a01868960a81c1660ff169052565b614bde6102c08a01868960b01c1660ff169052565b614bf36102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b614c196103208801848760c81c1660ff169052565b614c2e6103408801848760d01c1660ff169052565b614c436103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b614c696103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b01950191019186939194926145d0565b9060405160e081018181106001600160401b038211176103d65760405282546001600160a01b039081168252600184015416602082015291829060c090614d0f90600690600281015460408601526003810154606086015260048101546080860152614d046005820161454d565b60a0860152016145a5565b910152565b9092969493959196614d24610ca9565b97614d3a614d35836107d086610f0f565b614c96565b828a5280516001600160a01b031660608b01529687516001600160a01b03959086168015614f7957614d6c9086614f94565b9015614f5e5715614f4157614d8791612d6891848688615019565b614f29578515614f1157614d9e826107d085610df2565b54614db082610815856107d088610e2b565b5490878115159283614efd575b505050614ee557610815826107d0614ddb614de2956107d088610e64565b5495610e9d565b54908015159182614ed2575b5050614ebd5760808401518015159081614eb3575b50614e9e5760608401514210614e895760408401518503614e7457602084015191811691166001600160a01b031603614e615760c092614e429161183b565b602084015260a08101516080840152015160a082015260019160009190565b50600093632e834cbf60e11b9392509050565b50600095631d6bbb8d60e11b95945092505050565b5060009563456afd0b60e01b95945092505050565b50600095635bdd08f560e01b95945092505050565b9050831138614e03565b5060009563ae3586c560e01b95945092505050565b614edd919250610da3565b113880614dee565b50600098636d03a2e560e01b98975095505050505050565b614f08929350610db6565b11388781614dbd565b5060009863c6b949a960e01b98975095505050505050565b5060009863e2cf60cb60e01b98975095505050505050565b5060009a600162bed83560e01b03199a9950975050505050505050565b5060009b63915b8f1d60e01b9b9a5098505050505050505050565b5060009b634ed1072f60e11b9b9a5098505050505050505050565b604051638da5cb5b60e01b602082019081526004825292939290614fb781610b6d565b6000928392839251915afa90614fcb612140565b9115801561500e575b61500757602082805181010312610119575060200151614ff38161011c565b6001926001600160a01b0391821691161490565b9250508190565b506020825110614fd4565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d60209081526040808320938352928152828220835196949061506988610b6d565b6001815491828a5201549081848a01521590811561514e575b506151425783929195949351868101916bffffffffffffffffffffffff199060601b168252601481526150b481610b6d565b5190209551959481945b8486106150cf575050505050501490565b909192939495615112908760051b8301358082111560001461511c57865185810192835260208301919091526151088160408401612444565b5190205b96615159565b94939291906150be565b865185810191825260208201929092529061513a8160408401612444565b51902061510c565b50505050505050600190565b905042101538615082565b6000198114610db15760010190565b9493929061517461171f565b95828752851561527d5761518e926107d061081592610ed6565b906002820154908115615268576003830154801515908161525d575b506152485782546001600160a01b03918216911603615234578260018301540361522057831161520d576151e36005926151ff9461183b565b60208501526151f46004820161454d565b6060850152016145a5565b608082015260019160009190565b506000936364b7fccd60e11b9392509050565b50600094631d6bbb8d60e11b949350915050565b50600094632e834cbf60e11b949350915050565b50600095635493bdef60e11b95945092505050565b9050421015386151aa565b50600095630bac95f560e21b95945092505050565b5060009663c6b949a960e01b9695509350505050565b80516001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d51360205260409020909190916152e760208201938451600052602052604060002090565b9060409361531885830193615302855160018060a01b031690565b60018060a01b0316600052602052604060002090565b6060830180519091615332916001600160a01b0316615302565b93600285015492831561547157600486015480151580615467575b615423575050845461537291506001600160a01b03165b91516001600160a01b031690565b6001600160a01b0381811690831603615408575050600183015491608081019283518082036153e757505060a001948551908282116153c757505050906153bf610fb2925185519061183b565b9351906154d9565b5163587ced0f60e01b815260048101919091526024810191909152604490fd5b8751631d6bbb8d60e11b815260048101919091526024810191909152604490fd5b61164b8751928392632e834cbf60e11b845260048401611705565b61164b90898561544f61536461543f8b5160018060a01b031690565b965197516001600160a01b031690565b915163581fa6b560e01b81529586956004870161379e565b504281111561534d565b61164b888461549c61536461548c8a5160018060a01b031690565b955196516001600160a01b031690565b915163b9c59b5760e01b81526001600160a01b03948516600482015260248101959095528316604485015291909116606483015281906084820190565b9190916002810190815490818514615534576003019182546154fb868261183b565b831561551e57839004958303928311610db15761551a92869255611818565b9055565b634e487b7160e01b600052601260045260246000fd5b6000809394955060049250600382018181549660018060a01b031985541685558160018601555555015590565b60408051627eeac760e11b8082529296600496909594939092916001600160a01b03891691602091828180615599898b8f84016117bc565b0381875afa90811561079a57600091615790575b5088811061577157908291869493898c6155d18951988993849388855284016117bc565b0381875afa94851561079a57600095615752575b50600080516020615d5d83398151915254615608906001600160a01b031661092d565b803b1561012d576000898b928f8f8f9061563886928f8f51998a988997889663eb46c45b60e01b88528701613760565b03925af1801561079a5761573f575b508683898d6156608a51948593849389855284016117bc565b0381885afa92831561079a5788958d8c928794600097615720575b506156918b51998a9586948594855284016117bc565b03915afa93841561079a578a936000956156fb575b5050826156b291611818565b14928315936156e6575b5050506156cc5750505050505050565b51638791019960e01b81529650869561164b95870161379e565b6156f1929350610db6565b14153886816156bc565b6156b292955084918161571992903d106109eb576109dd8183610bec565b94916156a6565b615738919750853d87116109eb576109dd8183610bec565b953861567b565b8061078e61574c92610b88565b38615647565b61576a919550833d85116109eb576109dd8183610bec565b93386155e5565b8961164b88928b898f8a51968796636906ef1760e11b885287016117d7565b6157a79150833d85116109eb576109dd8183610bec565b386155ad565b602090818184031261012d578051906001600160401b03821161012d57019180601f8401121561012d5782516157e281610c60565b936157f06040519586610bec565b818552838086019260051b82010192831161012d578301905b828210615817575050505090565b81518152908301908301615809565b9092916040820191604081528451809352606081019260208096019060005b81811061585f57505050610fb29394818403910152610f48565b82516001600160a01b031686529487019491870191600101615845565b93602095926158c1946158b39360018060a01b0392838092168952168888015216604086015260c0606086015260c0850190610f48565b908382036080850152610f48565b9060a0818303910152600081520190565b835190949093926001600160a01b0386169290916158f76158f287611825565b610c77565b946159046158f288611825565b809660005b898110615b8157506040968751916313849cfd60e21b918284528084808460049e8f83019161593792615826565b03815a93600094fa93841561079a57600094615b66575b5060005b8c8110615af65750600080516020615d5d8339815191525461597c906001600160a01b031661092d565b92833b1561012d576000898f958c968f8f906159ae8e8e8894519c8d9889978896637ee7f69b60e01b8852870161587c565b03925af190811561079a576000948d92615ae3575b506159d98c519788958694859485528401615826565b03915afa91821561079a57600092615ac0575b5060005b898110615a04575050505050505050505050565b615a0d81611825565b615a178185610d6a565b51615a37615a258386610d6a565b51615a30858a610d6a565b5190611818565b1490811591615a7c575b50615a4e576001016159f0565b61164b9899508092506116299150615a6593610d6a565b519351638791019960e01b8152968796870161379e565b9050615ab8615aa6615aa0615a99615a9385610da3565b88610d6a565b5193610da3565b85610d6a565b51615ab18489610d6a565b5190610db6565b141538615a41565b615adc91923d8091833e615ad48183610bec565b8101906157ad565b90386159ec565b8061078e615af092610b88565b386159c3565b615aff81611825565b615b098187610d6a565b51615b14838b610d6a565b5111615b235750600101615952565b8c8f8d888c61164b938f96615b4f908f8a615b4181615b4893610d6a565b5195610d6a565b5194610d6a565b519351636906ef1760e11b815296879687016117d7565b615b7a91943d8091833e615ad48183610bec565b923861594e565b6001919250615b8f81611825565b615bac87615b9d8387610d6a565b6001600160a01b039091169052565b615bc288615b9d615bbc84610da3565b87610d6a565b615bcc8286610d6a565b51615bd7828c610d6a565b52615bf5615bef615be88488610d6a565b5192610da3565b8b610d6a565b5201908791615909565b615c0882615c53565b60015b828110615c1757505050565b600019810190808211610db157615c49615c35615c4e938686610d43565b35615c41838787610d43565b359083615c83565b615159565b615c0b565b801561211b57604b8111615c645750565b6044906040519063f80a484560e01b82526004820152604b6024820152fd5b919080821115615c9257505050565b606493506040519263f48f718f60e01b8452600484015260248301526044820152fd5b615cbe82615c53565b60015b828110615ccd57505050565b600019810190808211610db157615c49615ceb615cf79386866117ac565b35615c418387876117ac565b615cc156fe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5005e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50162f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50aa264697066735822122021551e17cf731138ae2156496b9e33f430ab60311f2b323732364712508edc7664736f6c63430008120033","sourceMap":"1047:53966:75:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;1047:53966:75;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5277:3318;1047:53966;;5277:3318;;:::i;:::-;1047:53966;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1047:53966:75;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;9396:34;1047:53966;;;-1:-1:-1;1047:53966:75;;-1:-1:-1;1047:53966:75;;;;-1:-1:-1;1047:53966:75;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;9396:34;:::i;:::-;1047:53966;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;1047:53966:75;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;13016:23;1047:53966;;;;;;:::i;:::-;;;;;;;;;;;;13016:23;;:::i;:::-;1047:53966;;;;;;;;;;;;;;;;;;-1:-1:-1;;1047:53966:75;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;:::i;:::-;2084:75;;:::i;:::-;2507:9;;;;:::i;:::-;2589:40;:58;;;;1047:53966;;-1:-1:-1;;;2589:58:75;;-1:-1:-1;1047:53966:75;;2589:58;1047:53966;;;2589:58;;;:::i;:::-;;:40;;:58;;;;;;;;1047:53966;2735:27;;;;:::i;:::-;2799;;;;:::i;:::-;2883:40;;;:::i;:::-;2933:22;-1:-1:-1;;2986:16:75;;;;;;2589:40;;3656:62;;;;-1:-1:-1;3656:62:75;1047:53966;;;;;;;;;;3656:62;;1047:53966;;;3656:62;;;:::i;:::-;;2589:40;;3656:62;;;;;;;;2966:680;3734:13;-1:-1:-1;3749:16:75;;;;;;-1:-1:-1;1047:53966:75;;-1:-1:-1;;;;;1047:53966:75;4249:73;;;;1047:53966;;-1:-1:-1;;;4249:73:75;;1047:53966;-1:-1:-1;;1047:53966:75;;;;4249:73;;1047:53966;3122:10;1047:53966;4249:73;;;:::i;:::-;;1047:53966;;;;-1:-1:-1;;;;;1047:53966:75;4249:73;;;;;;;;3729:510;4338:13;-1:-1:-1;4353:16:75;;;;;;1047:53966;4338:13;1047:53966;4390:17;;;;:::i;:::-;;:29;1047:53966;4386:505;;4338:13;4976:17;;1047:53966;4976:17;;;:::i;:::-;;1047:53966;5047:24;1047:53966;5047:17;;;;:::i;:::-;;:24;1047:53966;-1:-1:-1;;;;;1047:53966:75;;;5047:24;5089:12;1047:53966;5089:12;;;;;:::i;:::-;:21;1047:53966;-1:-1:-1;;;;;;;;;;;4910:284:75;1047:53966;5162:12;;;;;:::i;:::-;:18;1047:53966;;;3122:10;;;;1047:53966;;;;;;;;;;;;4910:284;;;:::i;:::-;;;;1047:53966;4338:13;;4386:505;1047:53966;4603:17;;;;:::i;:::-;;:29;1047:53966;4658:17;1047:53966;4658:17;;;;:::i;:::-;;:32;1047:53966;4716:17;:24;1047:53966;4716:17;;;;:::i;:24::-;4766:17;:33;:17;;;;:::i;:::-;;:33;;4825:17;1047:53966;4825:17;;;;:::i;:::-;;:29;;2589:40;;4444:432;;;;-1:-1:-1;1047:53966:75;4444:432;1047:53966;;;;;;;;;;;4444:432;;1047:53966;;;;;4444:432;;;:::i;:::-;;2589:40;;4444:432;;;;;;;1047:53966;4444:432;;;4386:505;;;;;;4444:432;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;4249:73::-;;;;;;:::i;:::-;;;;3734:13;3800:12;;1047:53966;3800:12;;;;:::i;:::-;1047:53966;3839:43;1047:53966;3839:34;1047:53966;;3839:34;:::i;:::-;1047:53966;;;;;;;;;;3839:43;1047:53966;3835:172;;3734:13;4025:41;1047:53966;4025:32;1047:53966;;4025:32;:::i;:41::-;1047:53966;4021:148;;3734:13;1047:53966;;3734:13;;4021:148;4090:59;3122:10;4090:47;3122:10;1047:53966;4090:38;1047:53966;;4090:38;:::i;:47::-;1047:53966;;;;;;;;;;;;;;;;4090:59;:64;1047:53966;;4090:64;:::i;:::-;1047:53966;;4021:148;;;3835:172;1047:53966;3971:12;;;;;:::i;:::-;:21;1047:53966;3906:86;:61;3122:10;3906:49;1047:53966;3906:40;1047:53966;;3906:40;:::i;:61::-;1047:53966;;;3906:86;:::i;:::-;1047:53966;;3835:172;;3656:62;;;;;;:::i;:::-;;;;2971:13;3055:92;3134:12;;;;;:::i;:::-;3122:10;1047:53966;;;;3055:92;:::i;:::-;3019:128;;;;:::i;:::-;;;;;;:::i;:::-;;1047:53966;3165:17;;;;;:::i;:::-;;:29;1047:53966;3161:313;;2971:13;3502:17;;;1047:53966;3502:17;;;:::i;:::-;;1047:53966;3488:39;;;;:::i;:::-;1047:53966;;3554:12;;;;;:::i;:::-;:21;1047:53966;3541:34;;;;:::i;:::-;1047:53966;;2971:13;;3161:313;1047:53966;;3274:89;1047:53966;;3274:58;1047:53966;-1:-1:-1;;;;;;;;;;;1047:53966:75;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;3274:58;3333:17;;;;;:::i;:::-;;:29;1047:53966;;;;;;;;;;;;3274:89;;1047:53966;3274:89;;1047:53966;;;;;;;;3274:89;;;;;;;;;;1047:53966;3274:89;3381:78;3274:89;3395:64;3274:89;-1:-1:-1;3274:89:75;;;3161:313;3219:17;1047:53966;3219:17;;;;:::i;:::-;;:32;1047:53966;3395:17;;;;:::i;:::-;;:29;1047:53966;;3427:17;;;;:::i;:::-;;:32;1047:53966;3395:64;;:::i;:::-;3381:78;;:::i;:::-;3161:313;;;;3274:89;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;2589:58;;;;;;:::i;:::-;;;;1047:53966;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1047:53966:75;;;;;;;1091:2:74;1047:53966:75;;;;;;;;;-1:-1:-1;;1047:53966:75;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8601:664;1047:53966;;;;;;:::i;:::-;;;;;;;;;;;;8601:664;;:::i;:::-;1047:53966;;;;;;;-1:-1:-1;;1047:53966:75;;;;;;;1039:2:74;1047:53966:75;;;;;;-1:-1:-1;;1047:53966:75;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2151:1;1047:53966;;;;;;:::i;:::-;2084:75;;;;;:::i;:::-;1047:53966;;;;;2151:1;;:::i;1047:53966::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1047:53966:75;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;1047:53966:75;;-1:-1:-1;1047:53966:75;;;;-1:-1:-1;1047:53966:75;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1047:53966:75;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;4153:1;1047:53966;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1047:53966:75;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;3839:16;1047:53966;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;3906:22;1047:53966;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;4025:14;1047:53966;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;4090:20;1047:53966;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;7327:12;1047:53966;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;36382:19;1047:53966;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2165:127::-;2230:4;2239;-1:-1:-1;;;;;1047:53966:75;2222:21;2218:67;;2165:127::o;2218:67::-;1047:53966;;-1:-1:-1;;;2252:33:75;;;;;2084:75;;;;;:::i;:::-;5500:9;;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;5524:10;1047:53966;;;5524:21;5520:66;;5659:40;:58;;;;1047:53966;;-1:-1:-1;;;5659:58:75;;:14;1047:53966;;5659:58;;;;;;:::i;:::-;;:40;;:58;;;;;;;;2084:75;5752:16;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1047:53966:75;5840:68;;;;5874:33;;-1:-1:-1;;;;;1047:53966:75;;;5874:33;1047:53966;;;;;;;;;5840:68;;;5659:58;5840:68;;;:::i;:::-;;1047:53966;;;;5840:68;;;;;;;5659:14;5840:68;;;2084:75;5839:69;;5835:156;;6078:27;;;:::i;:::-;6142;;;;:::i;:::-;6228:42;;;:::i;:::-;6280:22;5659:14;;6909:58;1047:53966;-1:-1:-1;;;;;;;;;;;1047:53966:75;;;;;;;;;6909:58;6333:16;;;;;;;;;;;5659:40;;;;;;;;;7171:62;;;;5659:14;7171:62;1047:53966;;;;;;;;;;7171:62;;;5659:58;7171:62;;;:::i;:::-;;5659:40;;7171:62;;;;;;;;6313:848;7249:13;;;;5659:14;7264:16;;;;;;;;;5524:10;;;;7741:7;5524:10;;;7741:7;;;:::i;:::-;5659:14;7780:16;;;;;;2084:75;;;;;;;;:::o;7765:13::-;7920:17;;;;:::i;:::-;;1047:53966;8005:17;5840:68;8005:17;;;;:::i;:::-;;:29;1047:53966;;8056:17;;;;:::i;:::-;;:32;1047:53966;8139:17;:33;:17;;;;:::i;:::-;;:33;;8194:17;:29;:17;;;;:::i;:::-;;:29;;5659:40;;7813:428;;;;1047:53966;;5659:14;1047:53966;;7813:428;1047:53966;;;;;;;;;;;;;7813:428;;5659:58;7813:428;;;:::i;:::-;;5659:40;;7813:428;;;;;;;;;8261:257;7813:428;;8261:257;7813:428;1047:53966;8483:12;7813:428;8370:17;7813:428;;;1047:53966;7813:428;;;;;;7765:13;8370:17;;:::i;:::-;;1047:53966;8447:12;5840:68;8447:12;;;;;:::i;:::-;:18;1047:53966;8483:12;;:::i;:::-;:21;1047:53966;;;;;;;;;5524:10;;1047:53966;;8261:257;;;:::i;:::-;;;;1047:53966;7765:13;;7813:428;;;;;;:::i;:::-;;;;7249:13;7327:30;;;1047:53966;7327:30;;;:61;:30;:52;:30;;;:::i;:::-;7358:12;;;;;:::i;:::-;1047:53966;;;;;;;;;;7327:61;7402:43;:18;1047:53966;7424:12;;;;;:::i;:::-;:21;1047:53966;7402:18;;1047:53966;;;7402:43;:::i;:::-;1047:53966;;;7463:23;7459:130;;7249:13;1047:53966;;;;;;7249:13;;;;;;7459:130;7544:12;7513:61;:30;:52;:30;;7506:68;7513:30;;:::i;:::-;7544:12;;:::i;7513:61::-;7506:68;:::i;:::-;7459:130;;;;;;;7171:62;;;;;;:::i;:::-;;;;6318:13;6479:12;6366:126;6479:12;6402:90;6479:12;;;;;;;;;;;1047:53966;6479:12;6568;6479;;:::i;:::-;6402:90;;:::i;:::-;6366:126;;:::i;:::-;;;;;;:::i;:::-;;6521:12;;;;;:::i;:::-;1047:53966;6507:34;;;;:::i;:::-;1047:53966;6568:12;:::i;:::-;:21;1047:53966;6555:34;;;;:::i;:::-;1047:53966;6628:39;5840:68;6655:11;;;;;;;:::i;:::-;1047:53966;;;;;;;;;;;;;6628:39;;5659:58;6628:39;;;:::i;:::-;;1047:53966;;6628:39;;;;;;;5659:14;6628:39;;;6318:13;6701:10;;;;;:::i;:::-;1047:53966;6685:26;;6681:163;;6968:17;6909:89;5840:68;6968:17;;;;;:::i;:::-;;:29;1047:53966;;;;;;;;;;6909:89;;5659:58;6909:89;;1047:53966;;;;;;;;6909:89;;;;;;;;;;;1047:53966;6909:89;7012:78;6909:89;5659:14;6909:89;;;6318:13;6858:17;1047:53966;6858:17;;;;:::i;:::-;;:32;1047:53966;7026:64;5840:68;7026:17;;;;:::i;:::-;;:29;1047:53966;;7058:17;;;;:::i;7012:78::-;1047:53966;;6318:13;;;6909:89;;;;5840:68;6909:89;5840:68;6909:89;;;;;;;:::i;:::-;;;;6681:163;6790:11;6738:91;6790:11;;;6803:10;6790:11;;;;;:::i;:::-;1047:53966;6803:10;;:::i;:::-;1047:53966;;;;6738:91;;;;;;;;5659:58;6738:91;;;:::i;:::-;;;;6628:39;;;;5840:68;6628:39;5840:68;6628:39;;;;;;;:::i;:::-;;;;5835:156;1047:53966;;-1:-1:-1;;;5931:49:75;;1047:53966;5931:49;1047:53966;;5659:58;5931:49;;;:::i;5840:68::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;5659:58;;;;;;:::i;:::-;;;;5520:66;1047:53966;;-1:-1:-1;;;5554:32:75;;-1:-1:-1;;;;;1047:53966:75;;5554:32;;;1047:53966;;;6738:91;1047:53966;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;-1:-1:-1;1047:53966:75;;-1:-1:-1;1047:53966:75;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1047:53966:75;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;1047:53966:75;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;52596:1;1047:53966;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;5659:14;1047:53966;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5109:321:74:-;5210:28;;:33;:131;;;;5109:321;5193:231;;5109:321;:::o;5193:231::-;1047:53966:75;;-1:-1:-1;;;5373:40:74;;-1:-1:-1;;;;;1047:53966:75;;;5373:40:74;;;1047:53966:75;;;5373:40:74;5210:131;5264:77;;;;:::i;:::-;5263:78;5210:131;;1349:282:62;1047:53966:75;;4592:71:62;;;;;1017:25;-1:-1:-1;1017:25:62;;;4592:71;;;;;;;;1047:53966:75;4592:71:62;;;;;;:::i;:::-;4784:212;;;;;;;;-1:-1:-1;4784:212:62;5013:29;;;;1349:282;5013:48;;;;1349:282;975:149;;;;1349:282;1543:81;;;;;;1536:88;1349:282;:::o;1543:81::-;1570:54;;;;:::i;975:149::-;1047:53966:75;;;;-1:-1:-1;1047:53966:75;;;;;4592:71:62;;;;;;1047:53966:75;;;4592:71:62;;;1047:53966:75;4592:71:62;;;;;;:::i;:::-;4784:212;;;-1:-1:-1;4784:212:62;;;;;5013:29;;975:149;5013:48;;;;;975:149;1059:65;;975:149;;;;;;5013:48;5046:15;;;;5013:48;;;:29;5024:18;;;-1:-1:-1;5013:29:62;;;;:48;5046:15;;;-1:-1:-1;5013:48:62;;;:29;5024:18;-1:-1:-1;5024:18:62;;-1:-1:-1;5013:29:62;;;4421:647;-1:-1:-1;4592:71:62;4421:647;1047:53966:75;;4592:71:62;;;1017:25;;;;4592:71;;5314:26:74;;;4592:71:62;;;1047:53966:75;4592:71:62;;;;;;:::i;:::-;4784:212;;;;-1:-1:-1;4784:212:62;;5013:29;;;4421:647;5013:48;;;;5006:55;4421:647;:::o;5013:48::-;5046:15;;;;4421:647;:::o;5013:29::-;4592:71;-1:-1:-1;5024:18:62;;-1:-1:-1;5013:29:62;;;2084:75:75;;;;;;;;;;;:::i;:::-;1047:53966;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;8957:240;;;1047:53966;;;;;;8957:240;;;1047:53966;;;;;;8957:240;;;1047:53966;;;8957:240;;;1047:53966;;;;8957:240;;1047:53966;;;8957:240;;-1:-1:-1;15270:10:75;:26;;15266:108;;-1:-1:-1;1047:53966:75;;15408:22;;-1:-1:-1;;;;;1047:53966:75;15408:22;:::i;:::-;1047:53966;;15441:60;;1047:53966;-1:-1:-1;;;;;1047:53966:75;15441:84;;;;;;1047:53966;;-1:-1:-1;;;15441:84:75;;-1:-1:-1;;;;1047:53966:75;;;;15441:84;;;;;;:::i;:::-;;;;;;;;;;;;2084:75;15535:74;;;;;;1047:53966;;-1:-1:-1;;;15535:74:75;;;1047:53966;;15535:74;;;;;15441:84;15535:74;;;:::i;:::-;;;;;;;;;;;;2084:75;1047:53966;;;15623:20;15619:55;;15733:34;;;;1047:53966;15733:34;;;;;15906:71;8957:240;15906:24;15859:32;15733:34;;;:::i;:::-;1047:53966;;;;;;-1:-1:-1;;;;;1047:53966:75;;;15906:24;-1:-1:-1;;;;;;;;;;;1047:53966:75;15943:33;;-1:-1:-1;;;;;1047:53966:75;;;15943:33;1047:53966;;;;;;;;;;;15906:71;;15270:10;15441:84;15906:71;;;:::i;:::-;;;;;;;;;;;;;;2084:75;15905:72;;15901:168;;1047:53966;;;;;;;;16163:15;1047:53966;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;15270:10;;16163:15;;:::i;:::-;1047:53966;-1:-1:-1;;;;;1047:53966:75;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;16190:322;;;;;1047:53966;16190:322;1047:53966;;;;;;;;;;;;;;;;16190:322;;15270:10;16190:322;15441:84;16190:322;;;:::i;:::-;;;;;;;;;1047:53966;;;16528:228;16190:322;16528:228;16190:322;;;;;2084:75;-1:-1:-1;1047:53966:75;-1:-1:-1;;;;;1047:53966:75;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;15270:10;;16528:228;;;:::i;:::-;;;;2084:75::o;16190:322::-;;;;;;:::i;:::-;;;;;1047:53966;;;15901:168;1047:53966;;;;-1:-1:-1;;;16000:58:75;;1047:53966;;;16000:58;;-1:-1:-1;;;;;1047:53966:75;15270:10;15441:84;16000:58;;;:::i;15906:71::-;;;;8957:240;15906:71;;;;;;;;;:::i;:::-;;;;15619:55;1047:53966;;-1:-1:-1;;;15652:22:75;;15441:84;;15652:22;15535:74;;;;;;:::i;:::-;;;;15441:84;;;;;;:::i;:::-;;;;15266:108;1047:53966;;-1:-1:-1;;;15319:44:75;;-1:-1:-1;;;;;1047:53966:75;;;;15319:44;;;1047:53966;;;6738:91;2084:75;;;;;:::i;:::-;9468:13;;;:::i;:::-;9511:39;;;:::i;:::-;9493:15;;;;;;:57;;;9645:9;9669:13;-1:-1:-1;9684:17:75;;;;;;10354;;;;;:29;:17;;:29;1047:53966;10412:17;10408:116;;9664:680;-1:-1:-1;10594:17:75;;1047:53966;;10637:30;;;1047:53966;10681:26;;;;1047:53966;10354:29;10721;;;1047:53966;;;;;;;;;;;;;;;;;;;;;10570:10;;10539:221;;1047:53966;;10539:221;2084:75;:::o;10408:116::-;10445:21;:68;;;;;1047:53966;;-1:-1:-1;;;10445:68:75;;-1:-1:-1;;;;;;;;;;;10445:68:75;;;1047:53966;-1:-1:-1;1047:53966:75;;;;;;10487:10;1047:53966;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;10445:68;;;;;;;10408:116;10445:68;;;;;;:::i;:::-;;10408:116;;9669:13;9809:51;9833:9;;;;;;;:::i;:::-;9809:51;:::i;:::-;9874:310;;;;;;9904:30;;10266:6;1047:53966;9904:30;9952:17;;;:34;1047:53966;;9952:34;:::i;:::-;1047:53966;;;;;;;10008:25;;:9;;;;;:::i;:::-;:25;;:::i;:::-;1047:53966;10008:39;10004:91;;9874:310;10198:27;:15;;;:27;;;;;:::i;:::-;;;:::i;:::-;;10266:6;:::i;:::-;1047:53966;9669:13;;10004:91;10079:16;;;1047:53966;10049:46;:26;:17;;:26;1047:53966;;;10049:46;:::i;:::-;1047:53966;;10004:91;;9874:310;10134:17;1047:53966;10134:17;;;10266:6;10134:17;;;;:30;:35;1047:53966;;10134:35;:::i;1047:53966::-;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1047:53966:75;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;6613:211:74:-;6689:12;;6685:37;;1091:2;6736:27;;6732:85;;6613:211;:::o;6732:85::-;1047:53966:75;;;;6772:45:74;;;;;;;;;1047:53966:75;1091:2:74;1047:53966:75;;;;6772:45:74;6685:37;1047:53966:75;;-1:-1:-1;;;6710:12:74;;;;;1047:53966:75;;;;;;;:::i;:::-;21646:14;1047:53966;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;-1:-1:-1;;1047:53966:75;;;;;:::i;:::-;;;;-1:-1:-1;1047:53966:75;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::o;10773:1360::-;;;11052:42;10773:1360;1047:53966;;:::i;:::-;;11052:42;:::i;:::-;11104:31;;11223;;;:::i;:::-;1047:53966;;;;;;-1:-1:-1;;;;;1047:53966:75;;11264:64;;10773:1360;11342:6;;11338:167;;-1:-1:-1;11563:12:75;1047:53966;11268:14;;;;1047:53966;;11589:52;;-1:-1:-1;;;;;1047:53966:75;11589:52;;:::i;:::-;11563:79;;;;;;;;;;;:::i;:::-;11656:8;;11652:263;;11973:36;1047:53966;;;11563:79;1047:53966;;;11973:36;;;;;;:::i;:::-;12035:4;12019:13;;;1047:53966;12019:13;;12049:16;;;1047:53966;12087:39;1047:53966;12087:39;10773:1360;:::o;11652:263::-;11746:31;11830:20;11746:31;;:::i;:::-;11830:20;;;:::i;:::-;11865:39;11268:14;11865:39;;:::o;11338:167::-;11429:11;;;;;;;;;:::i;11264:64::-;-1:-1:-1;;;;;1047:53966:75;11298:13;;;1047:53966;11264:64;;;1047:53966;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;12139:526::-;1047:53966;;12519:20;;;;1047:53966;12553:23;;;;1047:53966;12590:24;;;;12628:20;;;;;1047:53966;;-1:-1:-1;;;12343:315:75;;;;1047:53966;12343:315;;;1047:53966;;12590:24;1047:53966;;12628:20;;-1:-1:-1;;;;;1047:53966:75;12139:526;;1047:53966;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;12343:315;;1047:53966;;;:::i;:::-;12343:315;1047:53966;;12343:315;;;;;;:::i;1047:53966::-;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;;2084:75;;2151:1;2084:75;;;;;;;;;;:::i;:::-;2151:1;:::i;:::-;;;2084:75::o;1047:53966::-;;;;;:::i;:::-;;;;;13338:28;1047:53966;;;;;;;;;;:::i;:::-;;;;;17524:39;1047:53966;;;;;;;;;;:::i;:::-;;;;;18297:25;1047:53966;;;;;;;;;;:::i;:::-;;;;;29702:36;1047:53966;;;;;;;;;;:::i;:::-;;;;;32697:27;1047:53966;;;;;;;;;;:::i;12671:1076::-;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;:::i;:::-;;13055:58;13051:250;;13314:14;13338:28;1047:53966;13314:14;;;:::i;:::-;1047:53966;13314:53;13310:241;;13568:172;13654:76;;13715:14;;;:::i;:::-;1047:53966;;-1:-1:-1;;;13654:76:75;;;;1047:53966;;;;13654:76;;;1047:53966;;;;;;;;;13654:76;1047:53966;;-1:-1:-1;;;13568:172:75;;1047:53966;;;13654:76;13568:172;;;:::i;13310:241::-;13390:150;;;;:::i;13051:250::-;13136:154;;17381:21;13136:154;;;;;;;;;;17135:31;;17251:30;;;;;:::i;:::-;17381:21;17337:92;17381:21;;;;;;;;:::i;:::-;17337:92;:::i;:::-;1047:53966;;17439:156;;17646:21;;;;17629:39;17646:21;;;:::i;:::-;17629:39;:::i;:::-;17669:13;17629:54;17669:13;;;1047:53966;17629:54;;1047:53966;;;;;;;;;;17629:54;1047:53966;17629:58;;17734:21;;17719:52;17734:21;17719:37;17734:21;;;:::i;:::-;17719:37;:::i;:52::-;1047:53966;17719:56;;17785:137;;;13051:250;17931:120;;;;13051:250;18065:60;:35;18078:21;;;:::i;18065:60::-;18138:31;;;;:::i;:::-;18188:14;;;1047:53966;18171:32;;;;:::i;:::-;18065:139;;;;;;1047:53966;;-1:-1:-1;;;18065:139:75;;1047:53966;;;;;;;;;;;18065:139;;18126:10;18065:139;;;;:::i;:::-;;;;;;;;;13051:250;-1:-1:-1;18061:285:75;;18269:66;18216:130;;:::i;:::-;1047:53966;;-1:-1:-1;;;18269:66:75;;1047:53966;;;18065:139;18269:66;;;:::i;18061:285::-;-1:-1:-1;;;;;1047:53966:75;;18360:21;1047:53966;18360:21;:::i;:::-;1047:53966;;;18429:25;;;;;;:::i;:::-;18356:211;-1:-1:-1;;;;;;;;;;;18356:211:75;1047:53966;18356:211;18744:219;18356:211;18907:21;18356:211;18772:21;18356:211;;18581:17;;18577:152;;18356:211;18772:21;;;;;;;;;:::i;:::-;18907;;:::i;:::-;1047:53966;;;18126:10;;;;1047:53966;;18942:11;;1047:53966;18744:219;;;:::i;:::-;;;;13129:161;;:::o;18577:152::-;18705:12;;;:::i;:::-;18577:152;;;;;;;;;;18356:211;18523:21;;;;-1:-1:-1;;;;;;;;;;;18523:21:75;;;;;18907;18523;18772;18523;18485:71;1047:53966;18523:21;;18744:219;18523:21;;:::i;:::-;18485:71;:::i;:::-;18356:211;;18065:139;;;;;;:::i;:::-;;;;;1047:53966;;;17931:120;17965:70;:58;17986:21;17965:43;17986:21;;;:::i;:::-;17965:43;:::i;:58::-;18024:10;1047:53966;;;;;;;;;;;;;;17965:70;:75;1047:53966;;17965:75;:::i;:::-;1047:53966;;17931:120;;17785:137;17897:14;17821:72;:60;:90;17844:21;17821:45;17844:21;;;:::i;:::-;17821:45;:::i;:72::-;17897:14;;1047:53966;;;17821:90;:::i;:::-;1047:53966;;17785:137;;;;17439:156;1047:53966;;-1:-1:-1;;;17496:88:75;;1047:53966;;;17496:88;;;;;;:::i;1047:53966::-;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;13753:1328::-;;;;;;;;;;1047:53966;14117:14;;;:::i;:::-;1047:53966;14117:58;14113:430;;14580:28;1047:53966;14556:14;;;:::i;:::-;1047:53966;14556:53;14552:462;;15031:43;15059:14;;;:::i;:::-;1047:53966;;-1:-1:-1;;;15031:43:75;;1047:53966;;;;15031:43;;;1047:53966;;;;;;;;;14552:462;14625:47;;;;;;;;;14694:21;;;;;;:::i;:::-;14772;;;;;;:::i;:::-;14625:358;;;;;;14117:14;1047:53966;14737:13;1047:53966;14625:358;1047:53966;;;;;;;;;;;;;14625:358;;14737:13;1047:53966;14625:358;;;;;:::i;:::-;;;;;;;;;;;14997:7;:::o;14625:358::-;;;;;;:::i;14113:430::-;14191:45;;;;;;;;;;;14258:21;14301;;14258;;;;;:::i;:::-;14301;;;:::i;:::-;14191:321;;;;;;14117:14;1047:53966;14191:321;1047:53966;;;;;;;;;;;;;14191:321;;;;;;:::i;1047:53966::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;18976:1775::-;;;;;;;;;;;19338:31;19454:30;;;;;:::i;:::-;19584:21;19540:92;19584:21;;;;;;;:::i;19540:92::-;1047:53966;;;19642:156;;1047:53966;;-1:-1:-1;1047:53966:75;;-1:-1:-1;;;;;19812:21:75;19584;;;19812;:::i;:::-;1047:53966;;;19881:25;20506:12;19881:25;;;;;;;;:::i;:::-;19808:211;;20128:18;20059:59;20072:21;20059:50;20072:21;20095:13;20059:35;20072:21;;;;;:::i;:::-;20059:35;:::i;:::-;20095:13;;1047:53966;;;;;;;;;;20059:59;20128:18;:36;20150:14;;;1047:53966;;;20128:36;:::i;:::-;1047:53966;;;20178:23;20174:120;;19808:211;20389:14;20330:21;20072;;;20330;:::i;:::-;20150:14;;;1047:53966;20095:13;;;;1047:53966;20362:10;;;20389:14;;:::i;:::-;20506:12;;;:::i;:::-;20598:21;20072;;;20598;:::i;:::-;19584;20535:209;;20660:21;19584;;;20660;:::i;:::-;1047:53966;;-1:-1:-1;;;;;1047:53966:75;;;;20362:10;;1047:53966;;;;;;;;20150:14;;;1047:53966;;;20695:11;;1047:53966;;20095:13;;1047:53966;;20535:209;:::i;20174:120::-;20217:66;20224:59;20095:13;20224:50;20095:13;20224:35;20237:21;20072;20095:13;;;1047:53966;20072:21;;20237;:::i;20217:66::-;20174:120;;19808:211;19584:21;;;;;;19937:71;19584:21;19975;19584;20506:12;19584:21;;;19975;:::i;19937:71::-;19808:211;;19642:156;1047:53966;;-1:-1:-1;;;19699:88:75;;1047:53966;19699:88;1047:53966;19699:88;;;;:::i;20757:617::-;;1047:53966;;:::i;:::-;;;;;;;:::i;:::-;;;;20986:58;;;20982:137;;1047:53966;;;:::i;:::-;21156:28;21132:53;;21128:128;;1047:53966;;;;:::i;:::-;;;13677:36;;;;21281:76;;;;;;;1047:53966;21281:76;;;;;;:::i;:::-;20986:14;21266:101;;20757:617;:::o;21128:128::-;21208:37;;;;;;;;:::i;:::-;21201:44;;;;;:::o;20982:137::-;21067:41;;;;;;;;:::i;1047:53966::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;:::o;21380:1699::-;1047:53966;;:::i;:::-;21662:21;;;;21619:65;21620:64;21662:21;;;:::i;:::-;21620:64;:::i;:::-;21619:65;;1047:53966;21619:65;21615:196;;22131:11;21957:21;;;;;;;;;:::i;:::-;21992;21901:292;21992:21;;;:::i;:::-;22051:13;;;;1047:53966;22078:11;;;;1047:53966;22103:14;;;;;;1047:53966;22131:11;;;;;;;;:::i;:::-;22027:10;;;;21901:292;;:::i;:::-;21662:21;22220:20;;1047:53966;-1:-1:-1;;;;;1047:53966:75;;;22220:20;;;22254:13;22250:438;;22720:25;;;;;;;;;1047:53966;22698:19;;;;1047:53966;22759:24;22755:159;;21380:1699;22949:29;22078:11;22949:29;;22051:13;22949:29;;;21662:21;22923:23;;:55;23010:25;;22051:13;22988:19;;:47;23054:4;1047:53966;;;:::i;:::-;23046:26;21380:1699;:::o;22755:159::-;-1:-1:-1;;;;;;;;;;;1047:53966:75;22824:79;;1047:53966;;22824:58;;-1:-1:-1;;;;;1047:53966:75;;;22824:58;1047:53966;;;;;;;;;;22824:79;;;;;1047:53966;;;;;;;;22824:79;;;;;;;;;;22078:11;22824:79;-1:-1:-1;22824:79:75;;;22755:159;22799:22;;1047:53966;22799:22;;1047:53966;22755:159;;;22824:79;;;;;;-1:-1:-1;22824:79:75;;;;;;:::i;:::-;;;;;22250:438;22331:307;22420:21;;;;;;;;;;;:::i;:::-;22463;22027:10;22463:21;;:::i;:::-;22331:307;;:::i;:::-;22283:394;21646:14;22283:394;;;:::o;21615:196::-;21715:75;21768:21;;;;21715:75;21768:21;;:::i;:::-;1047:53966;;-1:-1:-1;;;21715:75:75;;;;-1:-1:-1;;;;;1047:53966:75;;;21715:75;;;1047:53966;;;;;;;;;21715:75;;1047:53966;;21715:75;;;;;;:::i;23085:3316::-;;1047:53966;;:::i;:::-;23333:12;;;;;;23316:29;23333:12;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;;;;23316:29;23359:26;23373:12;;;:::i;23359:26::-;:10;:26;23355:152;;23551:21;;;;;;23520:53;23521:52;23551:21;;;:::i;:::-;23521:52;:::i;23520:53::-;23516:187;;1047:53966;;:::i;:::-;;23864:21;;;:::i;:::-;23887:12;;;;:::i;:::-;23901:21;23952:14;23822:154;23901:21;;;;;;;:::i;:::-;23924:13;;;;1047:53966;23939:11;;;;;1047:53966;23952:14;;;;1047:53966;23822:154;;;;:::i;:::-;23990:6;;;;23986:438;;24462:21;;;24498:24;24453:31;24462:21;;;:::i;24498:24::-;:73;24523:12;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1047:53966:75;24537:33;;-1:-1:-1;;;;;1047:53966:75;;;24537:33;1047:53966;;-1:-1:-1;;;24498:73:75;;1047:53966;;;;;;24498:73;;;;:::i;:::-;;;;;;23316:14;;24498:73;;;23085:3316;-1:-1:-1;24494:584:75;;24992:12;;;;;24936:92;24992:12;25006:21;24992:12;24936:92;24992:12;;:::i;:::-;25006:21;;:::i;:::-;1047:53966;;5931:49;;;;;;24936:92;;;;;;;;:::i;24494:584::-;24616:11;;;;;;;24612:245;;24494:584;;25092:46;24494:584;25110:12;;;:::i;:::-;1047:53966;;;;;;;;;;;25092:46;;24498:73;25092:46;;;:::i;:::-;;;;;23316:14;;25092:46;;;24494:584;-1:-1:-1;25088:970:75;;25841:12;;;25742:266;25841:12;;;25875:21;25841:12;25742:266;25841:12;;:::i;25875:21::-;1047:53966;;6738:91;;;;;;25742:266;;;;;;;1047:53966;;23316:14;1047:53966;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25088:970;25189:30;;;;;;;;;;;;25185:478;;-1:-1:-1;;;;26090:25:75;;;1047:53966;;26068:19;;;1047:53966;-1:-1:-1;;;;;;;;;;;1047:53966:75;26150:85;;25088:970;-1:-1:-1;26090:25:75;;;26150:58;;-1:-1:-1;;;;;1047:53966:75;;;26150:58;1047:53966;;;;;;;;;;;;;26150:85;;24498:73;26150:85;;1047:53966;;;;;;;;26150:85;;;;;;;;;;23924:13;26150:85;23316:14;26150:85;;;25088:970;26125:22;;;;1047:53966;23901:21;26271:29;;;23901:21;26245:23;;:55;26332:25;;23924:13;26310:19;;:47;26150:34;1047:53966;;;:::i;26150:85::-;;;;;;;-1:-1:-1;26150:85:75;;;;;;:::i;:::-;;;;;;25185:478;25295:306;25402:12;;;25440:21;25402:12;25295:306;25402:12;;;;;:::i;:::-;25440:21;;:::i;:::-;1047:53966;;6738:91;;;;;;25295:306;;;;;;;;:::i;25092:46::-;;;;;;;;;;;;;;;:::i;:::-;;;;;24612:245;24759:12;;24703:92;24759:12;;;24703:92;24759:12;;;24773:21;24759:12;;:::i;24498:73::-;;;;;;;;;;;;;;;:::i;:::-;;;;;23986:438;24154:21;;;;;;;;;24231;24197:12;24154:21;24060:314;24154:21;;;:::i;:::-;24197:12;;:::i;24231:21::-;24060:314;;:::i;23516:187::-;23660:21;;23604:78;23660:21;;;23604:78;23660:21;;:::i;:::-;1047:53966;;-1:-1:-1;;;23604:78:75;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;23604:78;;;1047:53966;;;;;;;;;23355:152;23416:70;23473:12;;;23416:70;23473:12;;:::i;:::-;1047:53966;;-1:-1:-1;;;23416:70:75;;;;-1:-1:-1;;;;;1047:53966:75;;;23416:70;;;1047:53966;;;;;;;;;26407:1485;;26650:12;;26646:27;;-1:-1:-1;;;;;1047:53966:75;;;26687:30;;26683:201;;-1:-1:-1;1047:53966:75;;;-1:-1:-1;;;26947:27:75;;26963:10;26947:27;;;1047:53966;26947:27;;;;1047:53966;;;26947:27;;;26661:1;;26947:27;;;26407:1485;-1:-1:-1;26943:446:75;;-1:-1:-1;;1047:53966:75;-1:-1:-1;;;27283:95:75;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;27283:95;;;1047:53966;;;;;26661:1;1047:53966;;;;27283:95;1047:53966;;;;27283:95;1047:53966;26943:446;27019:17;;;27015:230;;-1:-1:-1;27439:28:75;1047:53966;27403:66;;26943:446;;27431:37;;-1:-1:-1;;;;;1047:53966:75;;;27431:37;1047:53966;;;;;;;;;;;27403:66;;26963:10;26947:27;27403:66;;;:::i;:::-;;;;;26661:1;;27403:66;;;26943:446;-1:-1:-1;27399:467:75;;-1:-1:-1;1047:53966:75;-1:-1:-1;;;27758:97:75;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;27758:97;;;1047:53966;;;;;26661:1;1047:53966;;;;27758:97;1047:53966;;;;27758:97;1047:53966;27399:467;27516:19;;;27512:208;;27399:467;;;;;1047:53966;;:::i;27512:208::-;1047:53966;;-1:-1:-1;;;27562:143:75;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;27562:143;;;1047:53966;;;;;;;;;;;;;;;27562:143;1047:53966;;;;27562:143;1047:53966;27403:66;;;;;;;;;;;;;;;:::i;:::-;;;;;27015:230;1047:53966;;-1:-1:-1;;;27083:147:75;;;;;;;-1:-1:-1;;;;;;1047:53966:75;;;27083:147;;;1047:53966;;;;;;;;;;;;;;;27083:147;1047:53966;;;;27083:147;1047:53966;26947:27;;;;;;;;;;;;;;;:::i;:::-;;;;;26683:201;26737:24;-1:-1:-1;;26737:24:75;;;;26733:39;;1047:53966;;-1:-1:-1;;;26793:80:75;;;;;;;1047:53966;;;;;;;;;;;26793:80;1047:53966;;;;26793:80;1047:53966;26733:39;1047:53966;;;;:::i;26646:27::-;1047:53966;;;;;:::i;27898:1508::-;;;28046:12;;28042:25;;1047:53966;;;-1:-1:-1;;;28161:30:75;;;28185:4;28161:30;;;;1047:53966;;;;;;28161:30;;;;;1047:53966;;;-1:-1:-1;;;;;1047:53966:75;;;-1:-1:-1;28161:30:75;1047:53966;;;;28161:30;;;;;;;27898:1508;-1:-1:-1;28157:254:75;;28267:144;;28320:80;28267:144;;:::i;:::-;1047:53966;;-1:-1:-1;;;28320:80:75;;1047:53966;;;28320:80;;;:::i;28157:254::-;28425:28;1047:53966;28157:254;;;28425:41;;-1:-1:-1;;;;;1047:53966:75;;;28425:41;:95;;;;;1047:53966;;-1:-1:-1;;;28425:95:75;;-1:-1:-1;;;;;1047:53966:75;;28425:95;;;1047:53966;;;28485:10;1047:53966;;;;28185:4;1047:53966;;;;;;;;;;;;28057:1;;1047:53966;;;;;28057:1;;1047:53966;;;;28425:95;;;;;;;;28157:254;-1:-1:-1;28421:255:75;;28532:144;;28585:80;28532:144;;:::i;28421:255::-;1047:53966;;28720:30;;;28185:4;28720:30;;;1047:53966;;;;;28057:1;;28686:20;;1047:53966;;;;;;;;28720:30;;;;;;;;;28421:255;-1:-1:-1;28716:253:75;;28825:144;;28878:80;28825:144;;:::i;28716:253::-;28791:22;;;;;28057:1;;28716:253;29004:29;;;;;29036:28;;;;:::i;:::-;29004:64;;29082:25;;;29078:322;;27898:1508;;;;;;:::o;29078:322::-;1047:53966;;-1:-1:-1;;;29232:143:75;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;29232:143;;;1047:53966;;;;;;;;;;;;;;;;29232:143;;;29130:259;;29232:143;1047:53966;;29232:143;:::i;:::-;1047:53966;-1:-1:-1;;;29130:259:75;;1047:53966;;;29130:259;;;:::i;29004:64::-;;;;;;28720:30;;;;;;;;;;;;;;;:::i;:::-;;;;;28425:95;;;;;;:::i;:::-;;;;28161:30;;;;;;;;;;;;;;;:::i;:::-;;;;;28042:25;28060:7;;;:::o;1047:53966::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;29412:2488::-;1047:53966;;;-1:-1:-1;;;29702:36:75;;;1047:53966;;29412:2488;;29702:36;;29412:2488;;;;;-1:-1:-1;;;;;1047:53966:75;;;;-1:-1:-1;29702:36:75;1047:53966;;29702:36;29412:2488;;29702:36;;;;:::i;:::-;;;;;;;;;;;29412:2488;-1:-1:-1;29698:256:75;;29873:70;29820:134;;;:::i;:::-;1047:53966;;-1:-1:-1;;;29873:70:75;;1047:53966;;;29702:36;29873:70;;;:::i;29698:256::-;;29967:29;;;29963:335;;1047:53966;;30348:35;;;-1:-1:-1;30348:35:75;1047:53966;;30348:35;;;29702:36;30348:35;;;:::i;:::-;;;;;;;;;;;29698:256;-1:-1:-1;30344:254:75;;30517:70;30464:134;;;:::i;30344:254::-;-1:-1:-1;;;;;;;;;;;1047:53966:75;30344:254;;;30612:74;;-1:-1:-1;;;;;1047:53966:75;;;30612:74;:132;;;;;-1:-1:-1;1047:53966:75;;;;;;30612:132;1047:53966;;;;;;;;;;;;;;30612:132;;29702:36;30612:132;;;:::i;:::-;;;;;;;;;30344:254;-1:-1:-1;30608:282:75;;30809:70;30756:134;;;:::i;30608:282::-;1047:53966;;30940:36;;;-1:-1:-1;30940:36:75;1047:53966;;30940:36;;;29702;30940;;;:::i;:::-;;;;;;;;;;;30608:282;-1:-1:-1;30936:255:75;;31110:70;31057:134;;;:::i;30936:255::-;1047:53966;;31240:35;;;31017:28;1047:53966;-1:-1:-1;;31017:28:75;;1047:53966;;;;31240:35;31017:28;;29702:36;31240:35;;;:::i;:::-;;;;;;;;;;30936:255;-1:-1:-1;31236:253:75;;31408:70;31355:134;;;:::i;31236:253::-;31316:27;31525:29;31316:27;;;;;;31236:253;31525:29;:::i;:::-;31503:51;;;;:104;;;31236:253;31499:395;;;;;29412:2488;;;;;;;:::o;31499:395::-;31630:253;1047:53966;;;31722:147;1047:53966;;;31722:147;1047:53966;;;31766:31;;;;;;31722:147;;;;;;;;:::i;:::-;;1047:53966;;31722:147;;;;;;:::i;:::-;1047:53966;-1:-1:-1;;;31630:253:75;;1047:53966;;;29702:36;31630:253;;;:::i;31503:104::-;31579:28;;;;;:::i;:::-;31558:49;;31503:104;;;;;31240:35;;;;;;;;;;;;;;;:::i;:::-;;;;;30940:36;;;;;;;;;;;;;;;:::i;:::-;;;;;30612:132;;;;;;:::i;:::-;;;;30348:35;;;;;;;;;;;;;;;:::i;:::-;;;;;29963:335;-1:-1:-1;1047:53966:75;;-1:-1:-1;;;30111:162:75;;;;30019:268;;1047:53966;;30111:162;;1047:53966;;30111:162;;1047:53966;;;;30111:162;;;;:::i;29702:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;31906:832;;;;;;;;;;;1047:53966;;;;;;;32254:12;1047:53966;;;;;32310:314;;;;1047:53966;32310:314;;;32354:53;;;;32310:314;;1047:53966;32310:314;;;1047:53966;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;32310:314;1047:53966;;;;;;;;;;;;;;;:::i;32310:314::-;32254:384;;;;;;:::i;:::-;32652:8;;32648:83;;31906:832;:::o;32648:83::-;1047:53966;;-1:-1:-1;;;32669:62:75;;1047:53966;;;32669:62;;32310:314;32669:62;;;:::i;1047:53966::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;33008:14;1047:53966;;;33008:14;1047:53966;;;:::o;32744:716::-;;1047:53966;;:::i;:::-;;33252:14;33008;;;:::i;:::-;33053:21;32930:523;33053:21;;;;;:::i;:::-;32930:523;33132:12;;;;;:::i;:::-;32930:523;33175:21;;;;;:::i;:::-;33404:12;32930:523;33404:12;;:::i;:::-;1047:53966;;;:::i;:::-;;;;;;33053:21;32930:523;;1047:53966;;32930:523;-1:-1:-1;;;;;1047:53966:75;33132:12;32930:523;;1047:53966;;32930:523;33097:13;;;;1047:53966;33175:21;32930:523;;1047:53966;-1:-1:-1;;;;;1047:53966:75;;;32930:523;;;1047:53966;;32930:523;-1:-1:-1;;;;;1047:53966:75;33217:11;32930:523;;1047:53966;;32930:523;33217:11;;;1047:53966;32930:523;;;1047:53966;33252:14;1047:53966;;32930:523;;1047:53966;33008:14;32930:523;;;1047:53966;33008:14;32930:523;;;1047:53966;33008:14;32930:523;;;1047:53966;32930:523;;;1047:53966;33008:14;32930:523;;;1047:53966;32744:716;:::o;33466:314::-;11396:31;33644:20;;;1047:53966;33739:19;;-1:-1:-1;;;;;;33700:29:75;;;:::i;:::-;1047:53966;33683:14;;;1047:53966;33739:19;:34;33466:314::o;:::-;1047:53966;;;;;;33739:19;33644:20;;;;1047:53966;;;;33700:29;;;:::i;1047:53966::-;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1047:53966:75;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;33786:536::-;1047:53966;;33947:16;;;;1047:53966;;;;;;;;33977:23;;;1047:53966;33977:23;;;-1:-1:-1;;;;;1047:53966:75;34014:15;;;1047:53966;34043:14;;;1047:53966;;;34014:15;;-1:-1:-1;;;;;1047:53966:75;34071:23;;;1047:53966;34071:23;;;-1:-1:-1;;;;;1047:53966:75;34108:13;;;;1047:53966;34135:16;;;;1047:53966;34165:14;;;1047:53966;;;;;;;;34193:20;;;1047:53966;;;;;:::i;:::-;34227:14;;;1047:53966;-1:-1:-1;;;;;;1047:53966:75;34255:19;;;;;34288:17;;;1047:53966;;33977:23;1047:53966;;;;;;;;;;;;;;33881:434;;;;;:::i;:::-;;;;;33786:536::o;34328:450::-;;34601:47;;;:::i;:::-;34658:54;;;34722:49;;34730:27;34722:49;34328:450;:::o;34658:54::-;34671:41;-1:-1:-1;34671:41:75;:::o;34784:1238::-;-1:-1:-1;;;;;;;;;35120:28:75;;;:::i;:::-;1047:53966;35120:68;;;:96;;;34784:1238;35116:172;;35396:197;;;;;;;;;;;;;;;35606:56;35633:27;35606:56;;:83;;;;;34784:1238;35602:159;;;35795:24;1047:53966;;35795:24;:::i;:::-;-1:-1:-1;35771:95:75;;1047:53966;;;:::i;:::-;35963:4;35955:60;;34784:1238;:::o;35771:95::-;-1:-1:-1;;;;;;1047:53966:75;;:::i;35602:159::-;35705:45;;;;;-1:-1:-1;35705:45:75;-1:-1:-1;1047:53966:75;;;:::i;35606:83::-;35687:2;35666:23;;;;35606:83;;;35116:172;35232:45;35240:5;35232:45;35240:5;1047:53966;;;:::i;35120:96::-;1047:53966;35213:3;1047:53966;;35192:24;35120:96;;36028:2673;;;;;;;36382:47;:37;;;;:::i;:47::-;1047:53966;-1:-1:-1;;;;;;1047:53966:75;;-1:-1:-1;;;36444:43:75;;;36440:165;;-1:-1:-1;;;;36618:38:75;;;36614:145;;-1:-1:-1;;;;;;;36772:36:75;;;36768:166;;-1:-1:-1;;;;36947:41:75;;;36943:141;;-1:-1:-1;;;;37097:40:75;;;37093:106;;-1:-1:-1;;;;37213:37:75;;;37209:400;;-1:-1:-1;;;;37633:33:75;37622:44;;;37618:391;;-1:-1:-1;;;;38033:24:75;-1:-1:-1;;;38022:35:75;;;38018:159;;-1:-1:-1;;;;38201:23:75;-1:-1:-1;38190:34:75;;;38186:147;;-1:-1:-1;;;;38346:33:75;;;38342:149;;-1:-1:-1;;;;38515:25:75;38504:36;;;-1:-1:-1;38500:175:75;;1047:53966;;;;;:::i;38500:175::-;38563:101;1047:53966;38631:32;38563:101;38631:32;;1047:53966;;;;;;;;;;;;38563:101;;;;;;;;;;;:::i;38342:149::-;38457:22;;;;;1047:53966;;;38402:78;;;;;;;;;;1047:53966;;;;;;;;-1:-1:-1;1047:53966:75;-1:-1:-1;38402:78:75;1047:53966;;;;38402:78;1047:53966;38186:147;38295:26;;;;;38247:75;38295:26;;1047:53966;;38247:75;1047:53966;;38247:75;;;;;;;;;;1047:53966;;;;;;;;38018:159;38140:25;;;;;38080:86;38140:25;38080:86;38140:25;;1047:53966;;;38080:86;;;;;;;;;;1047:53966;;;;;;;;;;;;;;;37618:391;37700:32;;;;;;;37854:144;37700:32;;37854:144;37700:32;;:42;:32;;;;:::i;:42::-;1047:53966;37777:38;:56;:38;:48;:38;;;;:::i;:56::-;1047:53966;;;;37854:144;;;;;;;;;;1047:53966;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37209:400;37286:34;;;;;;;37446:152;37286:34;;37446:152;37286:34;;:44;:34;;;;:::i;:44::-;1047:53966;37367:40;:58;:40;:50;:40;;;;:::i;:58::-;1047:53966;;;;37446:152;;;;;;;;;;1047:53966;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37093:106;1047:53966;;;;;;;;;;;37146:53;;;;;;;;;;;:::i;36943:141::-;1047:53966;;37011:62;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;37011:62;;;1047:53966;;-1:-1:-1;37011:62:75;;-1:-1:-1;1047:53966:75;;-1:-1:-1;;1047:53966:75;;;;-1:-1:-1;37011:62:75;;-1:-1:-1;;1047:53966:75;36768:166;1047:53966;;;;;;;;36831:92;1047:53966;36831:92;1047:53966;;;;;;;;;;36614:145;1047:53966;;36679:69;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;36679:69;;;1047:53966;-1:-1:-1;1047:53966:75;;-1:-1:-1;36679:69:75;;-1:-1:-1;1047:53966:75;;-1:-1:-1;;1047:53966:75;;;;-1:-1:-1;36679:69:75;;-1:-1:-1;1047:53966:75;36440:165;1047:53966;;;;;;;36510:84;1047:53966;;36510:84;1047:53966;;;;36510:84;;;;;;;;;;;:::i;38707:1466::-;;;;39053:49;:30;:40;:30;;;;:::i;:49::-;1047:53966;-1:-1:-1;;;;;;1047:53966:75;;-1:-1:-1;;;39117:40:75;;;39113:106;;-1:-1:-1;;;;39233:41:75;;;39229:170;;-1:-1:-1;;;;39423:25:75;39412:36;;;39408:216;;-1:-1:-1;;;;38515:25:75;-1:-1:-1;;;39637:36:75;;;39633:168;;-1:-1:-1;;;;38357:22:75;-1:-1:-1;39814:33:75;;;39810:142;;-1:-1:-1;;;;39976:41:75;39965:52;;;-1:-1:-1;39961:186:75;;1047:53966;;;;;:::i;39961:186::-;40040:96;40117:18;40040:96;40117:18;;1047:53966;;;40040:96;;;;;;;;;;1047:53966;;;;;;;;;;;;;;;39810:142;39925:15;;;;;1047:53966;;;39870:71;;;;;;;;;;1047:53966;;;;;;;;-1:-1:-1;1047:53966:75;-1:-1:-1;39870:71:75;1047:53966;;;;39870:71;1047:53966;39633:168;1047:53966;;;;-1:-1:-1;39696:94:75;;1047:53966;-1:-1:-1;39696:94:75;;-1:-1:-1;;;;;;1047:53966:75;;;39408:216;39575:24;;;;;;;39471:142;39575:24;;;39471:142;39575:24;;1047:53966;;;;39471:142;;;;;;;;;;;:::i;39229:170::-;1047:53966;;39297:91;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;39297:91;;;1047:53966;;;;;;;;;;;;;;;-1:-1:-1;39297:91:75;;-1:-1:-1;1047:53966:75;;-1:-1:-1;;1047:53966:75;;;;-1:-1:-1;39297:91:75;1047:53966;40179:407;-1:-1:-1;;;;;1047:53966:75;;;;40350:30;;40346:47;;40408:63;1047:53966;40408:29;1047:53966;;;;;;;;;;;;;40408:63;;;;;1047:53966;40408:63;;-1:-1:-1;;40408:63:75;;;40179:407;-1:-1:-1;40404:176:75;;40557:12;-1:-1:-1;40557:12:75;:::o;40408:63::-;;;;;;;;;;;;;;;:::i;:::-;;;;;40346:47;40382:11;;1047:53966;40382:11;:::o;40592:244::-;40703:28;;:33;;:126;;;;40696:133;40592:244;:::o;40703:126::-;40752:77;;;;:::i;41793:160::-;;1047:53966;;;;;;:::i;:::-;41916:1;1047:53966;;;;;;;;;41893:25;1047:53966;;;;;41793:160::o;41959:234::-;42085:1;1047:53966;;42064:22;42060:44;;42115:72;;;41959:234;:::o;42060:44::-;42088:16;42102:1;42088:16;:::o;42364:832::-;;;1047:53966;;:::i;:::-;;;;42919:14;;;;1047:53966;42947:17;42753:290;42978:14;42947:17;;;1047:53966;42978:14;;;;;;:::i;:::-;42753:290;;;;;;;;:::i;:::-;43057:6;;;43053:105;;43168:21;;;;;;;42364:832;:::o;43053:105::-;48278:267;;;;:::i;:::-;42919:14;42271:81;;;;;43202:667;;;;1047:53966;;:::i;:::-;;;;43674:14;43690:17;43674:14;;;1047:53966;43690:17;;1047:53966;43569:148;;;;;;;;;:::i;:::-;43731:6;;;43727:104;;43841:21;;;;;;;43202:667;:::o;43727:104::-;48853:273;;;;:::i;1047:53966::-;;;;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;-1:-1:-1;1047:53966:75;;-1:-1:-1;1047:53966:75;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;43875:2673::-;;;;;;;;;1047:53966;;:::i;:::-;44348:37;1047:53966;44348:47;:37;;;;:::i;:47::-;1047:53966;:::i;:::-;;;;;;-1:-1:-1;;;;;1047:53966:75;44447:20;;;1047:53966;;;;-1:-1:-1;;;;;1047:53966:75;;;;44508:37;;44504:106;;44658:62;;;;:::i;:::-;44734:14;;44730:76;;44820:8;44816:70;;44900:68;44901:67;;;;;;;:::i;44900:68::-;44896:160;;45069:14;;45065:80;;45176:44;:34;;;;:::i;:44::-;1047:53966;45253:58;:40;:50;:40;;;;:::i;:58::-;1047:53966;45325:14;;;;;:54;;;;43875:2673;45321:142;;;;;45564:48;45491:32;45564:38;45491:42;45564:56;45491:32;;;;:::i;:42::-;1047:53966;45564:38;;:::i;:56::-;1047:53966;45634:12;;;;:40;;;;43875:2673;45630:135;;;;45779:25;;;1047:53966;45779:30;;;:71;;;;43875:2673;45775:157;;;44447:20;45945:26;;1047:53966;45974:15;-1:-1:-1;45941:104:75;;46069:22;;;1047:53966;46059:32;;46055:91;;46160:32;;;1047:53966;;;;;;-1:-1:-1;;;;;1047:53966:75;46160:52;46156:139;;46463:28;46333:18;;;;:::i;:::-;46160:32;46305:25;;1047:53966;;46393:32;;;45779:25;46361:29;;:64;46463:28;;1047:53966;46435:25;;:56;1047:53966;46502:39;-1:-1:-1;46502:39:75;43875:2673;:::o;46156:139::-;-1:-1:-1;;;;;;38515:25:75;46228:56;-1:-1:-1;38515:25:75;-1:-1:-1;46228:56:75:o;46055:91::-;-1:-1:-1;;;;;;38357:22:75;46093:53;-1:-1:-1;38357:22:75;-1:-1:-1;;;46093:53:75:o;45941:104::-;-1:-1:-1;;;;;;38201:23:75;45991:54;-1:-1:-1;38201:23:75;-1:-1:-1;;;45991:54:75:o;45775:157::-;-1:-1:-1;;;;;;38033:24:75;45866:55;-1:-1:-1;38033:24:75;-1:-1:-1;;;45866:55:75:o;45779:71::-;45813:37;;;;45779:71;;;45630:135;-1:-1:-1;;;;;;37633:33:75;45690:64;-1:-1:-1;37633:33:75;-1:-1:-1;;;45690:64:75:o;45634:40::-;45650:14;;;;;:::i;:::-;:24;45634:40;;;;45321:142;-1:-1:-1;;;;;;37224:26:75;45395:57;-1:-1:-1;37224:26:75;-1:-1:-1;;;;;;45395:57:75:o;45325:54::-;45343:24;;;;;:::i;:::-;:36;45325:54;;;;;45065:80;-1:-1:-1;;;;;;15652:22:75;45085:60;-1:-1:-1;15652:22:75;-1:-1:-1;;;;;;45085:60:75:o;44896:160::-;-1:-1:-1;;;;;;36958:30:75;44984:61;-1:-1:-1;36958:30:75;-1:-1:-1;;;;;;44984:61:75:o;44816:70::-;-1:-1:-1;;;;;;;;;36783:25:75;44830:56;-1:-1:-1;36783:25:75;-1:-1:-1;;;;;;;;44830:56:75:o;44730:76::-;-1:-1:-1;;;;;;36629:27:75;44750:56;-1:-1:-1;36629:27:75;-1:-1:-1;;;;;;;;;44750:56:75:o;44504:106::-;-1:-1:-1;;;;;;36455:32:75;44547:63;-1:-1:-1;36455:32:75;-1:-1:-1;;;;;;;;;44547:63:75:o;40842:398::-;1047:53966;;-1:-1:-1;;;41069:34:75;;;;;;;;;40842:398;;;41069:34;;1047:53966;41069:34;:::i;:::-;;41041:63;;;;;;;;;;;;:::i;:::-;41118:8;;1047:53966;;41118:28;;40842:398;41114:55;;41069:34;1047:53966;;;41193:27;;1047:53966;;;;41193:27;41069:34;41193:27;1047:53966;;;;:::i;:::-;;;-1:-1:-1;;;;;1047:53966:75;;;;;41193:39;;40842:398::o;41114:55::-;41148:21;;;;;:::o;41118:28::-;1047:53966;41069:34;1047:53966;;41130:16;41118:28;;41246:541;-1:-1:-1;;;;;1047:53966:75;-1:-1:-1;1047:53966:75;;;41521:21;1047:53966;;;;;;;;;;;;;;;;;;;;41246:541;;1047:53966;;;:::i;:::-;;;;;;;;;;;;;;;;41584:34;:85;;;;;41246:541;41580:102;;;1047:53966;;;;;;;41722:26;;;1047:53966;;;;;;;;;41722:26;;;;;;:::i;:::-;1047:53966;41712:37;;1047:53966;;7208:27:74;7251:13;;7246:118;7266:17;;;;;;7381:20;;;;;;;41246:541:75;:::o;7285:3:74:-;1047:53966:75;;;;;;7285:3:74;1047:53966:75;;;;;;;7506:6:74;;;;:78;:6;;;1047:53966:75;;7525:22:74;;;1047:53966:75;;;;;;;;;;7525:22:74;1047:53966:75;;;;7525:22:74;1047:53966:75;7525:22:74;1047:53966:75;7515:33:74;;7506:78;7285:3;;:::i;:::-;7251:13;;;;;;;7506:78;1047:53966:75;;7561:22:74;;;1047:53966:75;;;;;;;;;;7561:22:74;;1047:53966:75;;;;7561:22:74;1047:53966:75;7561:22:74;1047:53966:75;7551:33:74;;7506:78;;41580:102:75;41671:11;;;;;;;1047:53966;41671:11;:::o;41584:85::-;41622:15;;;:47;;41584:85;;;1047:53966;-1:-1:-1;;1047:53966:75;;;;;;;:::o;46554:1431::-;;;;;1047:53966;;:::i;:::-;;;;;46954:14;;46950:80;;47071:49;:30;;:40;:30;;:::i;:49::-;47134:18;;;;1047:53966;47134:23;;;47130:90;;47234:24;;;1047:53966;47234:29;;;:76;;;;46554:1431;47230:163;;;1047:53966;;-1:-1:-1;;;;;1047:53966:75;;;;;47406:45;47402:107;;47523:15;1047:53966;47523:15;;1047:53966;47523:25;47519:84;;47617:30;-1:-1:-1;47613:133:75;;47784:18;47907:21;47784:18;1047:53966;47784:18;;:::i;:::-;47756:25;;;1047:53966;;47844:25;;;1047:53966;:::i;:::-;47812:29;;;:57;47907:21;1047:53966;:::i;:::-;47879:25;;;:49;1047:53966;47939:39;46908:21;47939:39;46554:1431;:::o;47613:133::-;-1:-1:-1;46908:21:75;;-1:-1:-1;;;39976:41:75;47663:72;-1:-1:-1;39976:41:75;-1:-1:-1;47663:72:75:o;47519:84::-;-1:-1:-1;46908:21:75;;-1:-1:-1;;;38357:22:75;47550:53;-1:-1:-1;38357:22:75;-1:-1:-1;;47550:53:75:o;47402:107::-;-1:-1:-1;46908:21:75;;-1:-1:-1;;;38515:25:75;47453:56;-1:-1:-1;38515:25:75;-1:-1:-1;;47453:56:75:o;47230:163::-;-1:-1:-1;46908:21:75;;-1:-1:-1;;;39423:25:75;47326:56;-1:-1:-1;39423:25:75;-1:-1:-1;;;47326:56:75:o;47234:76::-;47295:15;;;-1:-1:-1;47267:43:75;47234:76;;;47130:90;-1:-1:-1;46908:21:75;;-1:-1:-1;;;39244:30:75;47159:61;-1:-1:-1;39244:30:75;-1:-1:-1;;;47159:61:75:o;46950:80::-;-1:-1:-1;46908:21:75;;-1:-1:-1;;;15652:22:75;46970:60;-1:-1:-1;15652:22:75;-1:-1:-1;;;;46970:60:75:o;49149:1216::-;1047:53966;;-1:-1:-1;;;;;1047:53966:75;;;;;49332:37;1047:53966;;;;;;;49149:1216;49394:14;49332:77;49394:14;;;1047:53966;;;;;;;;;;;;49332:77;49410:12;;;49332:91;49410:12;;;1047:53966;;;;;;;;;;;;;;;;;;;;;;;;;;;;49332:91;49424:22;;;1047:53966;;49424:22;;49332:115;;-1:-1:-1;;;;;1047:53966:75;;;49332:115;49462:14;;;;1047:53966;49462:19;;;49458:152;;49623:20;;;1047:53966;49623:25;;;:68;;;49149:1216;49619:248;;-1:-1:-1;;1047:53966:75;;;;-1:-1:-1;;;;;;1047:53966:75;;;;-1:-1:-1;;;;;1047:53966:75;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;49880:47;49876:148;;50037:11;;1047:53966;50037:11;;1047:53966;50052:12;;;;1047:53966;;;50037:27;;;50033:80;;50127:15;;1047:53966;50127:15;1047:53966;;;50127:32;;;;50123:106;;1047:53966;;;;50254:30;50311:47;1047:53966;;;;50254:30;;:::i;:::-;1047:53966;;50311:47;;:::i;50123:106::-;1047:53966;-1:-1:-1;;;50168:61:75;;49623:20;50168:61;;1047:53966;;;;;;;;;;;;;6738:91;50033:80;1047:53966;;-1:-1:-1;;;50073:40:75;;49623:20;50073:40;;1047:53966;;;;;;;;;;;;;6738:91;49876:148;49950:63;1047:53966;;38515:25;;;;;;49950:63;;49623:20;49950:63;;;:::i;49619:248::-;49714:142;1047:53966;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;-1:-1:-1;;;49714:142:75;;1047:53966;;;49623:20;49714:142;;;:::i;49623:68::-;49676:15;;49652:39;;;49623:68;;49458:152;49504:95;1047:53966;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;-1:-1:-1;;;49504:95:75;;-1:-1:-1;;;;;1047:53966:75;;;49504:95;;;1047:53966;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50371:760;;;;50545:15;;;1047:53966;;;50574:30;;;;50570:348;;50946:30;;1047:53966;;;50946:42;;;;:::i;:::-;1047:53966;;;;;;;;;;;;;;;51076:48;1047:53966;;;;51076:48;:::i;:::-;1047:53966;;50371:760::o;1047:53966::-;;;;-1:-1:-1;1047:53966:75;;;;;-1:-1:-1;1047:53966:75;50570:348;-1:-1:-1;50637:30:75;;;;;50851:21;50637:30;;;;;1047:53966;;;;;;;;;;;;;;;50731:12;1047:53966;50731:12;;1047:53966;;;50851:21;1047:53966;50886:21;:::o;51137:1074::-;1047:53966;;;-1:-1:-1;;;51408:36:75;;;51137:1074;;51408:36;;51137:1074;;;;;;1047:53966;-1:-1:-1;;;;;1047:53966:75;;;51408:36;;;1047:53966;;51408:36;51137:1074;;51408:36;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;51408:36:75;;;51137:1074;51458:29;;;;51454:158;;1047:53966;;;;;;;;51650:35;1047:53966;;51650:35;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;51650:35:75;;;51137:1074;-1:-1:-1;;;;;;;;;;;;1047:53966:75;51696:74;;-1:-1:-1;;;;;1047:53966:75;;;51696:74;:132;;;;;-1:-1:-1;1047:53966:75;;;;;;;51696:132;1047:53966;;;;;;;;;;;;;;;51696:132;;;;;:::i;:::-;;;;;;;;;;;51137:1074;1047:53966;;;;;51868:36;1047:53966;;51868:36;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;51868:36:75;;;51137:1074;1047:53966;51942:35;1047:53966;;51942:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;51942:35:75;;;51137:1074;52013:29;;;;;;:::i;:::-;51991:51;;;;:104;;;51137:1074;51987:218;;;;;51137:1074;;;;;;;:::o;51987:218::-;1047:53966;-1:-1:-1;;;52118:76:75;;1047:53966;-1:-1:-1;1047:53966:75;;52118:76;;;;;:::i;51991:104::-;52067:28;;;;;:::i;:::-;52046:49;;51991:104;;;;;51942:35;52013:29;51942:35;;;;;;;;;;-1:-1:-1;51942:35:75;;;;;;:::i;:::-;;;;;51868:36;;;;;;;;;;;;;;;:::i;:::-;;;;;51696:132;;;;;;:::i;:::-;;;;51650:35;;;;;;;;;;;;;;;:::i;:::-;;;;;51454:158;1047:53966;51510:91;1047:53966;;;;;;;6738:91;;;;;;51510;;;;;:::i;51408:36::-;;;;;;;;;;;;;;:::i;:::-;;;;1047:53966;;;;;;;;;;;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1047:53966:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;52217:2208::-;1047:53966;;52217:2208;;1047:53966;;52217:2208;-1:-1:-1;;;;;1047:53966:75;;;52217:2208;;52567:31;52581:16;1047:53966;52581:16;:::i;:::-;52567:31;:::i;:::-;52657:16;52643:31;52657:16;;;:::i;52643:31::-;52690:13;;52702:1;52705:16;;;;;;1047:53966;;;;;;;;;53118:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;52702:1;53118:56;;;;;;;52702:1;53118:56;;;52685:381;53189:13;52702:1;53204:16;;;;;;-1:-1:-1;;;;;;;;;;;;1047:53966:75;53627:79;;-1:-1:-1;;;;;1047:53966:75;;;53627:79;:139;;;;;;52702:1;1047:53966;;;;;;;;53627:139;1047:53966;;;;;;;;;;;;;;;53627:139;;;;;:::i;:::-;;;;;;;;;;52702:1;53627:139;;;;;53184:433;1047:53966;53818:56;1047:53966;;53818:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;;52702:1;53818:56;;;53184:433;53889:13;52702:1;53904:16;;;;;;52217:2208;;;;;;;;;;;:::o;53889:13::-;53960:5;;;:::i;:::-;54000:35;;;;:::i;:::-;1047:53966;54039:50;:36;;;;:::i;:::-;1047:53966;54078:11;;;;:::i;:::-;1047:53966;54039:50;;:::i;:::-;54000:89;;;;:210;;;53889:13;53979:370;;;1047:53966;;53889:13;;53979:370;54250:84;54291:12;;;;;;;;;54322:11;54291:12;;:::i;54322:11::-;1047:53966;;;-1:-1:-1;;;54250:84:75;;1047:53966;;;54250:84;;;:::i;54000:210::-;54135:16;;54156:54;:40;54179:16;54113:39;54135:16;;;:::i;:::-;54113:39;;:::i;:::-;1047:53966;54179:16;;:::i;:::-;54156:40;;:::i;:::-;1047:53966;54199:11;;;;:::i;:::-;1047:53966;54156:54;;:::i;:::-;54113:97;;54000:210;;;53818:56;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;53627:139;;;;;;:::i;:::-;;;;53189:13;53266:5;;;:::i;:::-;53289:42;;;;:::i;:::-;1047:53966;53334:11;;;;:::i;:::-;1047:53966;-1:-1:-1;53285:262:75;;1047:53966;;;53189:13;;53285:262;53445:12;;;;;53372:160;53445:12;;;53472:42;53445:12;;;;;53459:11;53445:12;;:::i;:::-;1047:53966;53459:11;;:::i;:::-;1047:53966;53472:42;;:::i;:::-;1047:53966;;;-1:-1:-1;;;53372:160:75;;1047:53966;;;53372:160;;;:::i;53118:56::-;;;;;;;;;;;;;:::i;:::-;;;;;52690:13;1047:53966;52761:5;;;;;;:::i;:::-;52780:39;;;;;;:::i;:::-;-1:-1:-1;;;;;1047:53966:75;;;;;;52780:39;52833:42;52849:16;52833:42;52849:16;;;:::i;:::-;52833:42;;:::i;:::-;52921:12;;;;:::i;:::-;1047:53966;52889:44;;;;:::i;:::-;1047:53966;52947:48;52963:16;52983:12;;;;:::i;:::-;1047:53966;52963:16;;:::i;:::-;52947:48;;:::i;:::-;1047:53966;;52690:13;;;;;54431:288;54539:16;;;:::i;:::-;54583:1;54586:20;;;;;;54431:288;;;:::o;54608:3::-;-1:-1:-1;;1047:53966:75;;;;;;;;54681:20;54655:16;54608:3;54655:16;;;;:::i;:::-;1047:53966;54681:12;;;;;:::i;:::-;1047:53966;54681:20;;;:::i;:::-;54608:3;:::i;:::-;54571:13;;6405:202:74;6478:12;;6474:37;;1039:2;6525:24;;6521:79;;6405:202;:::o;6521:79::-;1047:53966:75;;;;6772:45:74;;;;6558:42;;;;;1047:53966:75;1039:2:74;1047:53966:75;;;;6558:42:74;6830:254;;;6952:28;;;;6948:130;;6830:254;;;:::o;6948:130::-;1047:53966:75;;;;;7003:64:74;;;;;;;;;1047:53966:75;;;;;;;;;7003:64:74;54725:286:75;54831:16;;;:::i;:::-;54875:1;54878:20;;;;;;54725:286;;;:::o;54900:3::-;-1:-1:-1;;1047:53966:75;;;;;;;;54973:20;54947:16;54900:3;54947:16;;;;:::i;:::-;1047:53966;54973:12;;;;;:::i;54900:3::-;54863:13;","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":1234,"length":20},{"start":1295,"length":20},{"start":1371,"length":20},{"start":1435,"length":20},{"start":1808,"length":20},{"start":1877,"length":20},{"start":4388,"length":20},{"start":4447,"length":20},{"start":4673,"length":20},{"start":4735,"length":20},{"start":4899,"length":20},{"start":4967,"length":20},{"start":6998,"length":20},{"start":7890,"length":20},{"start":10723,"length":20},{"start":10860,"length":20}]}},"immutableReferences":{"41912":[{"start":4283,"length":32}]}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","MAX_CHECKOUT_SIZE()":"a3eaf4d9","acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":"b8e6b50f","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":"2c0c49ee","executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":"59a8a40a","executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":"d65852a6","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectSettlementCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SettlementCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"SettlementDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CHECKOUT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"acceptOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem[]\",\"name\":\"_items\",\"type\":\"tuple[]\"}],\"name\":\"checkout\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutSummary\",\"name\":\"summary\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]\",\"name\":\"items\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutExecution\",\"name\":\"execution\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem\",\"name\":\"_item\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_remainingEth\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_grossAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"executeCheckoutItem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newRemainingEth\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem\",\"name\":\"_item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_grossAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"executeCheckoutPayout\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Direct calls revert because this contract has no standalone marketplace state or escrow. It must run through `RareERC1155Marketplace` so `address(this)`, `msg.sender`, `msg.value`, and storage all resolve to the marketplace proxy.\",\"kind\":\"dev\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert.\"},\"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Settlement-only entrypoint; the marketplace proxy does not expose this selector.\"},\"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])\":{\"details\":\"Settlement-only entrypoint; the marketplace proxy does not expose this selector.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert.\"}},\"title\":\"RareERC1155Settlement\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Accepts all or part of an ERC1155 token offer.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases.\"},\"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Executes one already validated checkout item through a nested delegatecall rollback boundary.\"},\"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Executes payout for a checkout item through a nested rollback boundary.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales.\"}},\"notice\":\"Delegatecall-only settlement module for the ERC1155 marketplace.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155Settlement.sol\":\"RareERC1155Settlement\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350\",\"dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K\"]},\"src/marketplace/IRareERC1155Settlement.sol\":{\"keccak256\":\"0x7ba101acc638ecd2eb5c780e625d6d82d6d00e36aa392f7a60a131cbf25d9d1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33355c9a7d70f3e97c076c71344a088a8a00cf79f5b52f017508cc442903b06c\",\"dweb:/ipfs/QmYowpKw4Y9LJUCeQhSRaLf6LkCTKbwJcTX3pU8hjbaaqA\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155MarketplacePayments.sol\":{\"keccak256\":\"0x53d345e5b50ecbede9f57d71ea952279c61a3a68dbdc3e5437311d26af6385c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6456557338e5ad27b23a06dd75c8e91b024caf7002d57873c12b0419466feae\",\"dweb:/ipfs/QmYTenZhNjk4dMHbU25pphtUueaWQBvdVHU37pPFdj2h5v\"]},\"src/marketplace/RareERC1155MarketplaceStorage.sol\":{\"keccak256\":\"0xe7b315f4c7e8da495637acec91648113ad26cf6cf37a783632baaf81998e012e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f83d84dfbe0c43d476c137eb6c4b63ca88dff555c37123a8fc0e17884885cd5\",\"dweb:/ipfs/QmNT27NUUzmawaa8kpGXFepvBTiRiZtwdt3ozRFCbiEuPp\"]},\"src/marketplace/RareERC1155Settlement.sol\":{\"keccak256\":\"0x3ec005b767a047b10916dadcbba01f65955dee27bd72668818d190d52e0c357e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://95b9482d0e3ea228d945a4ba4807dd34088caf2bf81a03e01316b8203830a1eb\",\"dweb:/ipfs/QmQrRP9mA1oeZWyb6YGsNFXciQSWv3SCJZgnqhJHV4CMpF\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e\",\"dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[],"type":"error","name":"DirectSettlementCallUnsupported"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[],"type":"error","name":"SettlementCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"SettlementDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CHECKOUT_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"acceptOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","name":"_items","type":"tuple[]","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"checkout","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","name":"execution","type":"tuple","components":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","name":"summary","type":"tuple","components":[{"internalType":"uint256","name":"filledCount","type":"uint256"},{"internalType":"uint256","name":"skippedCount","type":"uint256"},{"internalType":"uint256","name":"ethSpent","type":"uint256"},{"internalType":"uint256","name":"ethRefunded","type":"uint256"}]},{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","name":"items","type":"tuple[]","components":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bool","name":"filled","type":"bool"},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8"},{"internalType":"bytes4","name":"reason","type":"bytes4"},{"internalType":"bytes","name":"failureData","type":"bytes"},{"internalType":"uint256","name":"totalPaid","type":"uint256"}]}]}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","name":"_item","type":"tuple","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]},{"internalType":"uint256","name":"_remainingEth","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_grossAmount","type":"uint256"},{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"payable","type":"function","name":"executeCheckoutItem","outputs":[{"internalType":"uint256","name":"totalPaid","type":"uint256"},{"internalType":"uint256","name":"newRemainingEth","type":"uint256"}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","name":"_item","type":"tuple","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_grossAmount","type":"uint256"},{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"payable","type":"function","name":"executeCheckoutPayout"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"}],"devdoc":{"kind":"dev","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert."},"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":{"details":"Settlement-only entrypoint; the marketplace proxy does not expose this selector."},"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":{"details":"Settlement-only entrypoint; the marketplace proxy does not expose this selector."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"notice":"Accepts all or part of an ERC1155 token offer."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"notice":"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases."},"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":{"notice":"Executes one already validated checkout item through a nested delegatecall rollback boundary."},"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":{"notice":"Executes payout for a checkout item through a nested rollback boundary."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155Settlement.sol":"RareERC1155Settlement"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x7f3b516b4970efbadaa9dd53ce1c39837a9465cc44fee78f5991f290e29cfff9","urls":["bzz-raw://8592e5cfa9acae47b608657839f72b26a018eb9131ff8a2becaa8cb046c80350","dweb:/ipfs/QmcaYtCg52fkaU4sPUQq8zBn2LrNn4F1Wu6GzifPAssn1K"],"license":"MIT"},"src/marketplace/IRareERC1155Settlement.sol":{"keccak256":"0x7ba101acc638ecd2eb5c780e625d6d82d6d00e36aa392f7a60a131cbf25d9d1b","urls":["bzz-raw://33355c9a7d70f3e97c076c71344a088a8a00cf79f5b52f017508cc442903b06c","dweb:/ipfs/QmYowpKw4Y9LJUCeQhSRaLf6LkCTKbwJcTX3pU8hjbaaqA"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155MarketplacePayments.sol":{"keccak256":"0x53d345e5b50ecbede9f57d71ea952279c61a3a68dbdc3e5437311d26af6385c8","urls":["bzz-raw://c6456557338e5ad27b23a06dd75c8e91b024caf7002d57873c12b0419466feae","dweb:/ipfs/QmYTenZhNjk4dMHbU25pphtUueaWQBvdVHU37pPFdj2h5v"],"license":"MIT"},"src/marketplace/RareERC1155MarketplaceStorage.sol":{"keccak256":"0xe7b315f4c7e8da495637acec91648113ad26cf6cf37a783632baaf81998e012e","urls":["bzz-raw://4f83d84dfbe0c43d476c137eb6c4b63ca88dff555c37123a8fc0e17884885cd5","dweb:/ipfs/QmNT27NUUzmawaa8kpGXFepvBTiRiZtwdt3ozRFCbiEuPp"],"license":"MIT"},"src/marketplace/RareERC1155Settlement.sol":{"keccak256":"0x3ec005b767a047b10916dadcbba01f65955dee27bd72668818d190d52e0c357e","urls":["bzz-raw://95b9482d0e3ea228d945a4ba4807dd34088caf2bf81a03e01316b8203830a1eb","dweb:/ipfs/QmQrRP9mA1oeZWyb6YGsNFXciQSWv3SCJZgnqhJHV4CMpF"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2e7c584f3ad3b385251c1e048e5d4b619ac1516453efb29765416a9cd9792052","urls":["bzz-raw://c47b9c5c5e9ef6e563a639dd11f07bcdecf68a77c412586ea6e80095615eaa7e","dweb:/ipfs/QmVsT1vB1BL36ntnJyW92UDg9SUqZwNDz9qTHAUk4HH5GC"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":75} \ No newline at end of file diff --git a/abis/RareERC1155TradeExecutionModule.json b/abis/RareERC1155TradeExecutionModule.json new file mode 100644 index 0000000..825f53f --- /dev/null +++ b/abis/RareERC1155TradeExecutionModule.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_CHECKOUT_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"acceptOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x60a080604052346100235730608052613cc99081610029823960805181610c390152f35b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c9081630a6ce3131461006a575080637777e6d714610065578063a3eaf4d914610060578063b8e6b50f1461005b5763cfdbf2541461005657600080fd5b610737565b6106ad565b610691565b610132565b60803660031901126100e957600435610082816100ec565b60243561008e816100ec565b6044359161009b836100ec565b606435926001600160401b03928385116100e557366023860112156100e55784600401359384116100e55736602460608602870101116100e55760246100e2950192611ea6565b80f35b8580fd5b80fd5b6001600160a01b038116036100fd57565b600080fd5b9181601f840112156100fd578235916001600160401b0383116100fd576020808501948460051b0101116100fd57565b60603660031901126100fd57600461014a81356100ec565b6101556024356100ec565b6044356001600160401b0381116100fd576101739036908301610102565b9161017c610c36565b6101868383613b44565b73__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd57604051635e157ccf60e11b8152600081806101c060243586830161080e565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561042157610673575b506101ef8135611cc2565b6101f883610858565b61020184610858565b61020a856108c5565b916000805b8781106104f5575073__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd5760006102549160405180938192635ea509b560e01b83526024358a84016109ab565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af48015610421576104e2575b5060005b86811061042657509061029191338535613976565b60005b84811061029d57005b60206102a98284610952565b510151610346575b806102be60019284610952565b51516102de60806102cf8487610952565b5101516001600160a01b031690565b9060406102ec848a8a61092b565b01357f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c61033d602061031f878d8d61092b565b013560405191829133978a8060a01b038d3516966024359185610c0b565b0390a401610294565b60206103528284610952565b5101519060406103628285610952565b5101519161037560806102cf8487610952565b9260a06103828487610952565b5101519160c06103928588610952565b5101519273__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd576000936103d8916040519788958695631872482b60e31b87526024358d8035908901610ba4565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af491821561042157600192610408575b5090506102b1565b8061041561041b92610769565b80610686565b38610400565b610835565b80610434600192898961092b565b356104528161044389356109da565b90600052602052604060002090565b546104af575b610466816104438935610a4c565b54610473575b500161027c565b61049d9061048633916104438a35610a85565b9060018060a01b0316600052602052604060002090565b6104a7815461098b565b90553861046c565b60406104bc838b8b61092b565b01356104db6104d333610486856104438d35610a13565b91825461099e565b9055610458565b806104156104ef92610769565b38610278565b61050e610503828a8a61092b565b336024358935610c7a565b6105188287610952565b526105238186610952565b506020806105318388610952565b510151610574575b508061054760019287610952565b51516105538286610952565b526040610561828b8b61092b565b013561056d8287610952565b520161020f565b90916105e990826105ba6105ae7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5015460018060a01b031690565b6001600160a01b031690565b816105c5878b610952565b5101516040516361fe24a960e11b8152808c01918252948592918391829160200190565b03915afa9182156104215760019361063f9361063992600091610646575b506040610614888c610952565b510152610621868a610952565b5101516040610630878b610952565b5101519061099e565b9061099e565b9190610539565b6106669150823d841161066c575b61065e81836107ed565b810190610966565b38610607565b503d610654565b8061041561068092610769565b386101e4565b60009103126100fd57565b346100fd5760003660031901126100fd57602060405160328152f35b346100fd576101003660031901126100fd576004356106cb816100ec565b604435906106d8826100ec565b6064356106e4816100ec565b6001600160401b039260c4358481116100fd57610705903690600401610102565b9160e4359586116100fd57610721610735963690600401610102565b95909460a435926084359260243590612990565b005b346100fd5760003660031901126100fd576020604051604b8152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161077c57604052565b610753565b60e081019081106001600160401b0382111761077c57604052565b60c081019081106001600160401b0382111761077c57604052565b604081019081106001600160401b0382111761077c57604052565b606081019081106001600160401b0382111761077c57604052565b90601f801991011681019081106001600160401b0382111761077c57604052565b600080516020613c5483398151915281526001600160a01b03909116602082015260400190565b6040513d6000823e3d90fd5b6001600160401b03811161077c5760051b60200190565b9061086282610841565b61086f60405191826107ed565b8281528092610880601f1991610841565b0190602036910137565b6040519061089782610781565b606060c083600081526000602082015260006040820152600083820152600060808201528260a08201520152565b906108cf82610841565b6108dc60405191826107ed565b82815280926108ed601f1991610841565b019060005b8281106108fe57505050565b60209061090961088a565b828285010152016108f2565b634e487b7160e01b600052603260045260246000fd5b919081101561094d5760051b81013590607e19813603018212156100fd570190565b610915565b805182101561094d5760209160051b010190565b908160209103126100fd575190565b634e487b7160e01b600052601160045260246000fd5b906001820180921161099957565b610975565b9190820180921161099957565b600080516020613c5483398151915281526001600160a01b039091166020820152604081019190915260600190565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5106020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5116020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5126020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5136020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d6020526040902090565b90815180825260208080930193019160005b828110610b50575050505090565b83516001600160a01b031685529381019392810192600101610b42565b90815180825260208080930193019160005b828110610b8d575050505090565b835160ff1685529381019392810192600101610b7f565b959293610bfa94610c08989692600080516020613c54833981519152895260018060a01b03948580921660208b0152166040890152606088015260808701521660a08501526101008060c0860152840190610b30565b9160e0818403910152610b6d565b90565b6001600160a01b03918216815260208101929092529091166040820152606081019190915260800190565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610c6857565b60405163197ba25b60e01b8152600490fd5b9291610c8461088a565b50823590602084013592604085013594606081013590601e19813603018212156100fd57018035906001600160401b0382116100fd57602001908060051b360382136100fd57610cd99187878787878d6114d8565b979115610cea575050505050505090565b610cf49750611977565b602081519101fd5b9060405191828154918282526020928383019160005283600020936000905b828210610d3357505050610d31925003836107ed565b565b85546001600160a01b031684526001958601958895509381019390910190610d1b565b90604080518093805492610d7d610d71858560209181520190565b92600052602060002090565b9360005b81601f82011061119957610d31955492828210611183575b828210611169575b82821061114f575b828210611135575b82821061111b575b828210611101575b8282106110e7575b8282106110cd575b8282106110b6575b5081811061109e575b818110611086575b81811061106e575b818110611056575b81811061103e575b818110611026575b81811061100e575b818110610ff6575b818110610fde575b818110610fc6575b818110610fae575b818110610f96575b818110610f7e575b818110610f66575b818110610f4e575b818110610f36575b818110610f1e575b818110610f06575b818110610eee575b818110610ed6575b818110610ebe575b818110610ea6575b10610e98575b5003836107ed565b60f81c815260200138610e90565b60f083901c60ff168452926001906020019301610e8a565b60e883901c60ff168452926001906020019301610e82565b60e083901c60ff168452926001906020019301610e7a565b60d883901c60ff168452926001906020019301610e72565b60d083901c60ff168452926001906020019301610e6a565b60c883901c60ff168452926001906020019301610e62565b60c083901c60ff168452926001906020019301610e5a565b60b883901c60ff168452926001906020019301610e52565b60b083901c60ff168452926001906020019301610e4a565b60a883901c60ff168452926001906020019301610e42565b60a083901c60ff168452926001906020019301610e3a565b609883901c60ff168452926001906020019301610e32565b609083901c60ff168452926001906020019301610e2a565b608883901c60ff168452926001906020019301610e22565b608083901c60ff168452926001906020019301610e1a565b607883901c60ff168452926001906020019301610e12565b607083901c60ff168452926001906020019301610e0a565b606883901c60ff168452926001906020019301610e02565b606083901c60ff168452926001906020019301610dfa565b605883901c60ff168452926001906020019301610df2565b605083901c60ff168452926001906020019301610dea565b604883901c60ff168452926001906020019301610de2565b83901c60ff16845292600190602001930138610dd9565b603884901c60ff1685529093600190602001940190610dd1565b603084901c60ff1685529093600190602001940190610dc9565b602884901c60ff1685529093600190602001940190610dc1565b602084811c60ff1686529194909160019101940190610db9565b601884901c60ff1685529093600190602001940190610db1565b601084901c60ff1685529093600190602001940190610da9565b600884901c60ff1685529093600190602001940190610da1565b60ff841685529093600190602001940190610d99565b919350916001610400602092611437885461142c60ff6111bd8582851660ff169052565b61140561126a6113b58d611365896113158e6111e28184018a8d60081c1660ff169052565b6111f58584018a8d60101c1660ff169052565b888b610200606095611210878201858560181c1660ff169052565b6112256080958585888501921c1660ff169052565b6112cb60a09761123e898401878760281c1660ff169052565b61127b60c09b6112578d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b6112906101208401878760481c1660ff169052565b6112a56101408401878760501c1660ff169052565b6112ba6101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b6112e06101a08201858560681c1660ff169052565b6112f56101c08201858560701c1660ff169052565b61130a6101e08201858560781c1660ff169052565b01921c1660ff169052565b61132a6102208c01888b60881c1660ff169052565b61133f6102408c01888b60901c1660ff169052565b6113546102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b61137a6102a08a01868960a81c1660ff169052565b61138f6102c08a01868960b01c1660ff169052565b6113a46102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b6113ca6103208801848760c81c1660ff169052565b6113df6103408801848760d01c1660ff169052565b6113f46103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b61141a6103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b0195019101918693919492610d81565b9060405161145481610781565b60c06114aa6006839560018060a01b03808254168652600182015416602086015260028101546040860152600381015460608601526004810154608086015261149f60058201610cfc565b60a086015201610d56565b910152565b908160011b918083046002149015171561099957565b8181029291811591840414171561099957565b9690929695919493956114e961088a565b976114ff6114fa8261044385610af7565b611447565b818a5280516001600160a01b031660808b01529660808801805160608c015288516001600160a01b039691959190871680156117525761153f90866117c1565b901561173657156117185761155e9161155a91848688611867565b1590565b6116ff5786156116e65761157582610443856109da565b54611587826104868561044388610a13565b54908881151592836116d2575b5050506116b957610486826104436115b26115b99561044388610a4c565b5495610a85565b549080151591826116a6575b505061169057518015159081611686575b50611671576060840151421061165c576040840151850361164757602084015191811691166001600160a01b0316036116345760c092611615916114c5565b602084015260a081015160a0840152015160c082015260019160009190565b50600093632e834cbf60e11b9392509050565b50600095631d6bbb8d60e11b95945092505050565b5060009563456afd0b60e01b95945092505050565b50600095635bdd08f560e01b95945092505050565b90508311386115d6565b5060009663ae3586c560e01b9695509350505050565b6116b191925061098b565b1138806115c5565b50600099636d03a2e560e01b9998509650505050505050565b6116dd92935061099e565b11388881611594565b5060009963c6b949a960e01b9998509650505050505050565b5060009963e2cf60cb60e01b9998509650505050505050565b5060009b600162bed83560e01b03199b9a5098505050505050505050565b5060009c63915b8f1d60e01b9c9b509950505050505050505050565b5060009c634ed1072f60e11b9c9b509950505050505050505050565b6001600160401b03811161077c57601f01601f191660200190565b60405190602082018281106001600160401b0382111761077c5760405260008252565b908160209103126100fd5751610c08816100ec565b604051638da5cb5b60e01b6020820190815260048252929392906117e4816107b7565b6000928392839251915afa903d1561185f573d916118018361176e565b9261180f60405194856107ed565b83523d82602085013e5b158015611854575b61184d575080602080611839935183010191016117ac565b6001926001600160a01b0391821691161490565b9250508190565b506020825110611821565b606091611819565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e602052604090209193929190600052602052604060002060405190604082018281106001600160401b0382111761077c57604052600181549182845201549081602084015215908115611937575b5061192e5760405160609490941b6bffffffffffffffffffffffff191660208501908152610c089461192381603481015b03601f1981018352826107ed565b519020905190611e1a565b50505050600190565b9050421015386118e4565b6001600160a01b039091168152602081019190915260400190565b6001600160a01b0391821681529116602082015260400190565b94929395919561198a8161044384610af7565b956001600160e01b03191694634ed1072f60e11b808714611c9d575063915b8f1d60e01b868114611c685750600162bed83560e01b0319868114611c4a575063e2cf60cb60e01b868114611c16575063c6b949a960e01b868114611bf75750636d03a2e560e01b868114611b81575063ae3586c560e01b91868314611b125750635bdd08f560e01b92505050838114611ae1575063456afd0b60e01b9050828114611ab85750631d6bbb8d60e11b828114611a895750632e834cbf60e11b9182149050611a5c57505050610c08611789565b611915611a756001610c0894015460018060a01b031690565b60405194859360208501526024840161195d565b60029390930154604051602081019490945260248401919091526044830152509050610c088160648101611915565b935050506003610c08910154916119156040519384926020840152602483019190602083019252565b92509350506119156004610c0893015460405194859360208501526024840160209093929193604081019481520152565b92975092509350610c0894506119159250611b308161044388610a4c565b5491611b4381610486846104438b610a85565b5491604051978896602088015260248701919594939060809360a084019760018060a01b038093168552602085015216604083015260608201520152565b95509290919650610c0895506119159350611b9f82610443896109da565b5492611bb281610486856104438c610a13565b5492604051988997602089015260248801929060a09491979695929760c0850198600180881b0380931686526020860152166040840152606083015260808201520152565b97505050505050505060405190602082015260048152610c08816107b7565b60405160208101919091526001600160a01b0390911660248201529650610c08955086945050604484019250611915915050565b9550505094505050611915611a75610c08935460018060a01b031690565b60405160208101919091526001600160a01b03909316602484015250909550610c089450859350506044830191506119159050565b95505091509450610c0893506119159150604051948593602085015260248401611942565b803b158015611cf5575b611cd35750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b808352602482015260248152611d1e816107d2565b519084617530fa6000513d82611d72575b5081611d68575b5080611d58575b80611d49575b15611ccc565b50611d5381611ddb565b611d43565b50611d6281611d7e565b15611d3d565b9050151538611d36565b60201115915038611d2f565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b602482015260248152611dae816107d2565b5191617530fa6000513d82611dcf575b5081611dc8575090565b9050151590565b60201115915038611dbe565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152611dae816107d2565b60001981146109995760010190565b9291909291600080925b828410611e3357505050501490565b90919293611e76908560051b83013580821115600014611e7e57604080516020810193845290810191909152611e6c8160608101611915565b5190205b94611e0b565b929190611e24565b60408051602081019283529081019290925290611e9e8160608101611915565b519020611e70565b9293611eb0610c36565b611eba8186613c0c565b6001600160a01b039233838516146124a65773__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd57604051635e157ccf60e11b815260008180611f05856004830161080e565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561042157612493575b50611f3385611cc2565b600080516020613c7483398151915254611f7790602090611f5c906001600160a01b03166105ae565b6040518093819263e985e9c560e01b8352886004840161195d565b0381888a165afa90811561042157600091612464575b501561244857611f9c82610858565b90611fa683610858565b611faf8461251c565b92600080611fe66105ae7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5015460018060a01b031690565b878c888d898d85881061229457505050505050505073__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd5760006120379160405180938192635ea509b560e01b835288600484016109ab565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561042157612281575b5090859160005b89878c8184106121ed575050505061207d925033878a613613565b60005b838110612091575050505050505050565b61209b8184610952565b51519060206120aa8286610952565b51015160406120b98387610952565b5101519260606120c98488610952565b5101519160806120d98589610952565b5101519473__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd5786956000948b61211f938f956040519a8b98899863981e8fc560e01b8a5260048a01612642565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af49182156104215786867f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d7886948a8c6121d18f604061219d8a6121858f829060019f9d8a9e6121da575b50610952565b515198602061219583838861256c565b01359461256c565b604080519889526001600160a01b038e1660208a015288019290925201356060860152911694339416929081906080820190565b0390a401612080565b806104156121e792610769565b3861217f565b958391600195969761221f8361048661220588610abe565b61221088878761256c565b35600052602052604060002090565b61223d6002604061223188878761256c565b013592019182546125ae565b80915515612255575b50505050500190869291612062565b612210612272946104869361226c61227798610abe565b9361256c565b6125d2565b898189898e612246565b8061041561228e92610769565b3861205b565b926122c1886122bb88958895839d9b9c986122b58560409d6122e99d61256c565b926126ad565b92610952565b526122cc838d610952565b506122d883838361256c565b356122e3848b610952565b5261256c565b01356122f58487610952565b5261232560208b8d8c612308888a610952565b5192604051809681958294627eeac760e11b845260048401611942565b0392165afa90811561042157600091612429575b506123448487610952565b5181106123ee575061237e60208061235c868b610952565b510151604051809381926361fe24a960e11b8352600483019190602083019252565b0381865afa918215610421576001926123c7926000916123cf575b5060406123a6878c610952565b51015261063960206123b8878c610952565b5101516040610630888d610952565b920190611fe6565b6123e8915060203d60201161066c5761065e81836107ed565b38612399565b896124258d928861240a88612403818c610952565b5192610952565b5190604051958695636906ef1760e11b87526004870161257c565b0390fd5b612442915060203d60201161066c5761065e81836107ed565b38612339565b60405163d65b0d6960e01b81528061242587866004840161195d565b612486915060203d60201161248c575b61247e81836107ed565b8101906124c7565b38611f8d565b503d612474565b806104156124a092610769565b38611f29565b60405163aac1ae8b60e01b81526001600160a01b0384166004820152602490fd5b908160209103126100fd575180151581036100fd5790565b6040519060a082018281106001600160401b0382111761077c57604052606060808360008152600060208201526000604082015282808201520152565b9061252682610841565b61253360405191826107ed565b8281528092612544601f1991610841565b019060005b82811061255557505050565b6020906125606124df565b82828501015201612549565b919081101561094d576060020190565b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b9190820391821161099957565b8181106125c6575050565b600081556001016125bb565b600560009182815582600182015582600282015582600382015560048101805484825580612628575b505001908154908083558161260f57505050565b602081610d3194601f935220910160051c8101906125bb565b61263b91855260208520908101906125bb565b38806125fb565b969361269e9591610c0899979394600080516020613c548339815191528a5260018060a01b03958680931660208c015260408b0152166060890152608088015260a08701521660c08501526101208060e0860152840190610b30565b91610100818403910152610b6d565b9290916126b86124df565b5081359060406020840135930135936126d585858585858b6126f0565b9791156126e6575050505050505090565b610cf4975061281b565b949392906126fc6124df565b958287528515612805576127169261044361048692610abe565b9060028201549081156127f057600383015480151590816127e5575b506127d05782546001600160a01b039182169116036127bc57826001830154036127a85783116127955761276b600592612787946114c5565b602085015261277c60048201610cfc565b606085015201610d56565b608082015260019160009190565b506000936364b7fccd60e11b9392509050565b50600094631d6bbb8d60e11b949350915050565b50600094632e834cbf60e11b949350915050565b50600095635493bdef60e11b95945092505050565b905042101538612732565b50600095630bac95f560e21b95945092505050565b5060009663c6b949a960e01b9695509350505050565b94929161282f816104868761044386610abe565b956001600160e01b0319169463c6b949a960e01b808714611bf75750630bac95f560e21b8681146129505750635493bdef60e11b918683146129275750632e834cbf60e11b925050508381146129095750631d6bbb8d60e11b90508281146128da57506364b7fccd60e11b91821490506128ae57505050610c08611789565b6119156002610c0893015460405194859360208501526024840160209093929193604081019481520152565b60019390930154604051602081019490945260248401919091526044830152509050610c088160648101611915565b9354909450610c0893925061191591506001600160a01b0316611a75565b9297509250935061191592506003610c0895015491604051968795602087015260248601610c0b565b60405160208101919091526001600160a01b0393841660248201526044810191909152911660648201529450610c08935084925050608482019050611915565b94919592969093976129a0610c36565b60409384519a6129af8c61079c565b6001600160a01b039788168c5260208c01968752978716858c0181815299881660608d0190815260808d019b8c5260a08d01958652999890338114612ce857508b51612a03906001600160a01b0316611cc2565b895173__$11854c5905aa23948096e0e4d7059bb9de$__93906001600160a01b031694843b156100fd578751635e157ccf60e11b8152600096879082908190612a4f906004830161080e565b0381895af4801561042157612cd5575b50843b156100e55787516376fb859760e01b8152868180612a868787878b60048601612d9a565b0381895af4801561042157612cc2575b50865115612cb157918d93916105ae9897969593612b0e6020612ad06105ae612abe8a612e62565b9a519a9e909a6001600160a01b031690565b600080516020613c7483398151915254612af2906001600160a01b03166105ae565b908c51808095819463e985e9c560e01b8352336004840161195d565b03915afa908115610421578891612c93575b5015612c6b57908f91612b718f94938f612b64908f8d90612b58612b4a865160018060a01b031690565b93516001600160a01b031690565b9051915192339061323e565b516001600160a01b031690565b8c5194516001600160a01b03169590873b15612c675790612bad949392918c519d8e9a8b998a9963981e8fc560e01b8b52339460048c01612dc1565b03915af4801561042157612c19612c09612bfb7fd6c105ec24ddd771e44ffc25e8a8603b6b78ba980a72645a26740b3d8437388599612c4f978a95612c54575b50516001600160a01b031690565b9b516001600160a01b031690565b955198516001600160a01b031690565b9851915192519788526001600160a01b039098166020880152604087015260608601529116949093169233929081906080820190565b0390a4565b80610415612c6192610769565b38612bed565b8980fd5b8f51895163d65b0d6960e01b8152908190612425906001600160a01b0316336004840161195d565b612cab915060203d811161248c5761247e81836107ed565b38612b20565b875163c6b949a960e01b8152600490fd5b80610415612ccf92610769565b38612a96565b80610415612ce292610769565b38612a5f565b8651630bfa508960e41b81526001600160a01b03919091166004820152602490fd5b91908082526020809201929160005b828110612d27575050505090565b9091929382806001928735612d3b816100ec565b848060a01b03168152019501910192919092612d19565b9190808252602080920192916000805b838210612d7157505050505090565b9091929394853560ff8116809103612d96578152830194830193929160010190612d62565b8280fd5b9290612db390610c089593604086526040860191612d0a565b926020818503910152612d52565b9896949093610c089a9894602094612e219894600080516020613c548339815191528d528c60018060a01b03978880951691015260408d01521660608b015260808a015260a08901521660c08701526101208060e0880152860191612d0a565b92610100818503910152612d52565b6001600160a01b0391821681526020810192909252918216604082015291166060820152608081019190915260a00190565b80516001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5146020526040902090919091612eb660208201938451600052602052604060002090565b90604093612ee785830193612ed1855160018060a01b031690565b60018060a01b0316600052602052604060002090565b6060830180519091612f01916001600160a01b0316612ed1565b93600285015492831561304057600686015480151580613036575b612ff25750508454612f4191506001600160a01b03165b91516001600160a01b031690565b6001600160a01b0381811690831603612fd757505060018301549160808101928351808203612fb657505060a00194855190828211612f965750505090612f8e610c0892518551906114c5565b9351906130a8565b5163587ced0f60e01b815260048101919091526024810191909152604490fd5b8751631d6bbb8d60e11b815260048101919091526024810191909152604490fd5b6124258751928392632e834cbf60e11b84526004840161195d565b61242590898561301e612f3361300e8b5160018060a01b031690565b965197516001600160a01b031690565b915163581fa6b560e01b815295869560048701612e30565b5042811115612f1c565b612425888461306b612f3361305b8a5160018060a01b031690565b955196516001600160a01b031690565b915163b9c59b5760e01b81526001600160a01b03948516600482015260248101959095528316604485015291909116606483015281906084820190565b919091600281019081549081851461311757908160056131139301549361310c6131046003840154966130ff60046130e98c6130e48a8d6125ae565b61099e565b9601988954966130f988856125ae565b936131b6565b6125ae565b9788946125ae565b90556125ae565b9055565b91929350506006600482019182549360018060a01b031982541682556000938480928160018601555581600384015555826005820155015590565b811561315c570490565b634e487b7160e01b600052601260045260246000fd5b1561317957565b60405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606490fd5b90916000198383099280830292838086109503948086039514613231579082916131e1868411613172565b096001821901821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b505090610c089250613152565b60408051627eeac760e11b8082529296600496909594939092916001600160a01b03891691602091828180613276898b8f8401611942565b0381875afa9081156104215760009161349d575b5088811061347e57908291869493898c6132ae895198899384938885528401611942565b0381875afa9485156104215760009561345f575b50600080516020613c74833981519152546132e5906001600160a01b03166105ae565b803b156100fd57865163eb46c45b60e01b81526001600160a01b03808f16828f01908152818c166020820152908c166040820152606081018a9052608081018d905260c060a0820181905260009082018190529192839182908490829060e00103925af180156104215761344c575b508683898d61336d8a5194859384938985528401611942565b0381885afa9283156104215788958d8c92879460009761342d575b5061339e8b51998a958694859485528401611942565b03915afa938415610421578a93600095613408575b5050826133bf916125ae565b14928315936133f3575b5050506133d95750505050505050565b51638791019960e01b815296508695612425958701612e30565b6133fe92935061099e565b14153886816133c9565b6133bf92955084918161342692903d1061066c5761065e81836107ed565b94916133b3565b613445919750853d871161066c5761065e81836107ed565b9538613388565b8061041561345992610769565b38613354565b613477919550833d851161066c5761065e81836107ed565b93386132c2565b8961242588928b898f8a51968796636906ef1760e11b8852870161257c565b6134b49150833d851161066c5761065e81836107ed565b3861328a565b60209081818403126100fd578051906001600160401b0382116100fd57019180601f840112156100fd5782516134ef81610841565b936134fd60405195866107ed565b818552838086019260051b8201019283116100fd578301905b828210613524575050505090565b81518152908301908301613516565b90815180825260208080930193019160005b828110613553575050505090565b835185529381019392810192600101613545565b9092916040820191604081528451809352606081019260208096019060005b8181106135a057505050610c089394818403910152613533565b82516001600160a01b031686529487019491870191600101613586565b9360209592613602946135f49360018060a01b0392838092168952168888015216604086015260c0606086015260c0850190613533565b908382036080850152613533565b9060a0818303910152600081520190565b835190949093926001600160a01b038616929091613638613633876114af565b610858565b94613645613633886114af565b809660005b8981106138c257506040968751916313849cfd60e21b918284528084808460049e8f83019161367892613567565b03815a93600094fa938415610421576000946138a7575b5060005b8c81106138375750600080516020613c74833981519152546136bd906001600160a01b03166105ae565b92833b156100fd576000898f958c968f8f906136ef8e8e8894519c8d9889978896637ee7f69b60e01b885287016135bd565b03925af1908115610421576000948d92613824575b5061371a8c519788958694859485528401613567565b03915afa91821561042157600092613801575b5060005b898110613745575050505050505050505050565b61374e816114af565b6137588185610952565b516137786137668386610952565b51613771858a610952565b51906125ae565b14908115916137bd575b5061378f57600101613731565b61242598995080925061240391506137a693610952565b519351638791019960e01b81529687968701612e30565b90506137f96137e76137e16137da6137d48561098b565b88610952565b519361098b565b85610952565b516137f28489610952565b519061099e565b141538613782565b61381d91923d8091833e61381581836107ed565b8101906134ba565b903861372d565b8061041561383192610769565b38613704565b613840816114af565b61384a8187610952565b51613855838b610952565b51116138645750600101613693565b8c8f8d888c612425938f96613890908f8a6138828161388993610952565b5195610952565b5194610952565b519351636906ef1760e11b8152968796870161257c565b6138bb91943d8091833e61381581836107ed565b923861368f565b60019192506138d0816114af565b6138ed876138de8387610952565b6001600160a01b039091169052565b613903886138de6138fd8461098b565b87610952565b61390d8286610952565b51613918828c610952565b526139366139306139298488610952565b519261098b565b8b610952565b520190879161364a565b6001600160a01b039091168152606060208201819052610c0893919261396891840190613533565b916040818403910152613533565b909260018060a01b0382169261398d815186613a8a565b94604051936313849cfd60e21b958686526000978887806139b2888560048401613567565b0381855afa968715610421578997613a6e575b50813b15613a6a57604051630d4498e760e21b8152918983806139ed8a8a8a60048501613940565b038183855af191821561042157613a1d998b948894613a57575b506040519a8b9485938493845260048401613567565b03915afa9586156104215787610d319897613a3a575b5050613ac2565b613a4f9297503d8091833e61381581836107ed565b943880613a33565b80610415613a6492610769565b38613a07565b8880fd5b613a839197503d808b833e61381581836107ed565b95386139c5565b9190613a9581610858565b9260005b828110613aa557505050565b80613ab260019287610952565b828060a01b038416905201613a99565b939092959460005b8351811015613b3a57613add8183610952565b51613ae88285610952565b5190613af4838b610952565b5182018092116109995703613b0b57600101613aca565b8561242586613b1f846138828d968a610952565b5190604051948594631b3c965960e21b865260048601610c0b565b5050505050509050565b613b4d82613b98565b60015b828110613b5c57505050565b60001981019080821161099957613b8e613b7a613b9393868661092b565b35613b8683878761092b565b359083613bda565b611e0b565b613b50565b8015613bc857604b8111613ba95750565b6044906040519063f80a484560e01b82526004820152604b6024820152fd5b60405163c2e5347d60e01b8152600490fd5b919080821115613be957505050565b606493506040519263f48f718f60e01b8452600484015260248301526044820152fd5b613c1582613b98565b60015b828110613c2457505050565b60001981019080821161099957613b8e613c42613c4e93868661256c565b35613b8683878761256c565b613c1856fe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5005e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50aa26469706673582212204142d73195bc2cde54f6ce7e87564da4f5a2a92d884ce3782b9531bf38e5d7a064736f6c63430008120033","sourceMap":"929:15850:172:-:0;;;;;;;509:4:168;501:13;;929:15850:172;;;;;;501:13:168;929:15850:172;;;;;;;;;","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":433,"length":20},{"start":493,"length":20},{"start":578,"length":20},{"start":641,"length":20},{"start":961,"length":20},{"start":1029,"length":20},{"start":7927,"length":20},{"start":7986,"length":20},{"start":8230,"length":20},{"start":8292,"length":20},{"start":8456,"length":20},{"start":8524,"length":20},{"start":10800,"length":20}]}}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b6000803560e01c9081630a6ce3131461006a575080637777e6d714610065578063a3eaf4d914610060578063b8e6b50f1461005b5763cfdbf2541461005657600080fd5b610737565b6106ad565b610691565b610132565b60803660031901126100e957600435610082816100ec565b60243561008e816100ec565b6044359161009b836100ec565b606435926001600160401b03928385116100e557366023860112156100e55784600401359384116100e55736602460608602870101116100e55760246100e2950192611ea6565b80f35b8580fd5b80fd5b6001600160a01b038116036100fd57565b600080fd5b9181601f840112156100fd578235916001600160401b0383116100fd576020808501948460051b0101116100fd57565b60603660031901126100fd57600461014a81356100ec565b6101556024356100ec565b6044356001600160401b0381116100fd576101739036908301610102565b9161017c610c36565b6101868383613b44565b73__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd57604051635e157ccf60e11b8152600081806101c060243586830161080e565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561042157610673575b506101ef8135611cc2565b6101f883610858565b61020184610858565b61020a856108c5565b916000805b8781106104f5575073__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd5760006102549160405180938192635ea509b560e01b83526024358a84016109ab565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af48015610421576104e2575b5060005b86811061042657509061029191338535613976565b60005b84811061029d57005b60206102a98284610952565b510151610346575b806102be60019284610952565b51516102de60806102cf8487610952565b5101516001600160a01b031690565b9060406102ec848a8a61092b565b01357f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c61033d602061031f878d8d61092b565b013560405191829133978a8060a01b038d3516966024359185610c0b565b0390a401610294565b60206103528284610952565b5101519060406103628285610952565b5101519161037560806102cf8487610952565b9260a06103828487610952565b5101519160c06103928588610952565b5101519273__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd576000936103d8916040519788958695631872482b60e31b87526024358d8035908901610ba4565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af491821561042157600192610408575b5090506102b1565b8061041561041b92610769565b80610686565b38610400565b610835565b80610434600192898961092b565b356104528161044389356109da565b90600052602052604060002090565b546104af575b610466816104438935610a4c565b54610473575b500161027c565b61049d9061048633916104438a35610a85565b9060018060a01b0316600052602052604060002090565b6104a7815461098b565b90553861046c565b60406104bc838b8b61092b565b01356104db6104d333610486856104438d35610a13565b91825461099e565b9055610458565b806104156104ef92610769565b38610278565b61050e610503828a8a61092b565b336024358935610c7a565b6105188287610952565b526105238186610952565b506020806105318388610952565b510151610574575b508061054760019287610952565b51516105538286610952565b526040610561828b8b61092b565b013561056d8287610952565b520161020f565b90916105e990826105ba6105ae7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5015460018060a01b031690565b6001600160a01b031690565b816105c5878b610952565b5101516040516361fe24a960e11b8152808c01918252948592918391829160200190565b03915afa9182156104215760019361063f9361063992600091610646575b506040610614888c610952565b510152610621868a610952565b5101516040610630878b610952565b5101519061099e565b9061099e565b9190610539565b6106669150823d841161066c575b61065e81836107ed565b810190610966565b38610607565b503d610654565b8061041561068092610769565b386101e4565b60009103126100fd57565b346100fd5760003660031901126100fd57602060405160328152f35b346100fd576101003660031901126100fd576004356106cb816100ec565b604435906106d8826100ec565b6064356106e4816100ec565b6001600160401b039260c4358481116100fd57610705903690600401610102565b9160e4359586116100fd57610721610735963690600401610102565b95909460a435926084359260243590612990565b005b346100fd5760003660031901126100fd576020604051604b8152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161077c57604052565b610753565b60e081019081106001600160401b0382111761077c57604052565b60c081019081106001600160401b0382111761077c57604052565b604081019081106001600160401b0382111761077c57604052565b606081019081106001600160401b0382111761077c57604052565b90601f801991011681019081106001600160401b0382111761077c57604052565b600080516020613c5483398151915281526001600160a01b03909116602082015260400190565b6040513d6000823e3d90fd5b6001600160401b03811161077c5760051b60200190565b9061086282610841565b61086f60405191826107ed565b8281528092610880601f1991610841565b0190602036910137565b6040519061089782610781565b606060c083600081526000602082015260006040820152600083820152600060808201528260a08201520152565b906108cf82610841565b6108dc60405191826107ed565b82815280926108ed601f1991610841565b019060005b8281106108fe57505050565b60209061090961088a565b828285010152016108f2565b634e487b7160e01b600052603260045260246000fd5b919081101561094d5760051b81013590607e19813603018212156100fd570190565b610915565b805182101561094d5760209160051b010190565b908160209103126100fd575190565b634e487b7160e01b600052601160045260246000fd5b906001820180921161099957565b610975565b9190820180921161099957565b600080516020613c5483398151915281526001600160a01b039091166020820152604081019190915260600190565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5106020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5116020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5126020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5136020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d6020526040902090565b90815180825260208080930193019160005b828110610b50575050505090565b83516001600160a01b031685529381019392810192600101610b42565b90815180825260208080930193019160005b828110610b8d575050505090565b835160ff1685529381019392810192600101610b7f565b959293610bfa94610c08989692600080516020613c54833981519152895260018060a01b03948580921660208b0152166040890152606088015260808701521660a08501526101008060c0860152840190610b30565b9160e0818403910152610b6d565b90565b6001600160a01b03918216815260208101929092529091166040820152606081019190915260800190565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610c6857565b60405163197ba25b60e01b8152600490fd5b9291610c8461088a565b50823590602084013592604085013594606081013590601e19813603018212156100fd57018035906001600160401b0382116100fd57602001908060051b360382136100fd57610cd99187878787878d6114d8565b979115610cea575050505050505090565b610cf49750611977565b602081519101fd5b9060405191828154918282526020928383019160005283600020936000905b828210610d3357505050610d31925003836107ed565b565b85546001600160a01b031684526001958601958895509381019390910190610d1b565b90604080518093805492610d7d610d71858560209181520190565b92600052602060002090565b9360005b81601f82011061119957610d31955492828210611183575b828210611169575b82821061114f575b828210611135575b82821061111b575b828210611101575b8282106110e7575b8282106110cd575b8282106110b6575b5081811061109e575b818110611086575b81811061106e575b818110611056575b81811061103e575b818110611026575b81811061100e575b818110610ff6575b818110610fde575b818110610fc6575b818110610fae575b818110610f96575b818110610f7e575b818110610f66575b818110610f4e575b818110610f36575b818110610f1e575b818110610f06575b818110610eee575b818110610ed6575b818110610ebe575b818110610ea6575b10610e98575b5003836107ed565b60f81c815260200138610e90565b60f083901c60ff168452926001906020019301610e8a565b60e883901c60ff168452926001906020019301610e82565b60e083901c60ff168452926001906020019301610e7a565b60d883901c60ff168452926001906020019301610e72565b60d083901c60ff168452926001906020019301610e6a565b60c883901c60ff168452926001906020019301610e62565b60c083901c60ff168452926001906020019301610e5a565b60b883901c60ff168452926001906020019301610e52565b60b083901c60ff168452926001906020019301610e4a565b60a883901c60ff168452926001906020019301610e42565b60a083901c60ff168452926001906020019301610e3a565b609883901c60ff168452926001906020019301610e32565b609083901c60ff168452926001906020019301610e2a565b608883901c60ff168452926001906020019301610e22565b608083901c60ff168452926001906020019301610e1a565b607883901c60ff168452926001906020019301610e12565b607083901c60ff168452926001906020019301610e0a565b606883901c60ff168452926001906020019301610e02565b606083901c60ff168452926001906020019301610dfa565b605883901c60ff168452926001906020019301610df2565b605083901c60ff168452926001906020019301610dea565b604883901c60ff168452926001906020019301610de2565b83901c60ff16845292600190602001930138610dd9565b603884901c60ff1685529093600190602001940190610dd1565b603084901c60ff1685529093600190602001940190610dc9565b602884901c60ff1685529093600190602001940190610dc1565b602084811c60ff1686529194909160019101940190610db9565b601884901c60ff1685529093600190602001940190610db1565b601084901c60ff1685529093600190602001940190610da9565b600884901c60ff1685529093600190602001940190610da1565b60ff841685529093600190602001940190610d99565b919350916001610400602092611437885461142c60ff6111bd8582851660ff169052565b61140561126a6113b58d611365896113158e6111e28184018a8d60081c1660ff169052565b6111f58584018a8d60101c1660ff169052565b888b610200606095611210878201858560181c1660ff169052565b6112256080958585888501921c1660ff169052565b6112cb60a09761123e898401878760281c1660ff169052565b61127b60c09b6112578d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b6112906101208401878760481c1660ff169052565b6112a56101408401878760501c1660ff169052565b6112ba6101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b6112e06101a08201858560681c1660ff169052565b6112f56101c08201858560701c1660ff169052565b61130a6101e08201858560781c1660ff169052565b01921c1660ff169052565b61132a6102208c01888b60881c1660ff169052565b61133f6102408c01888b60901c1660ff169052565b6113546102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b61137a6102a08a01868960a81c1660ff169052565b61138f6102c08a01868960b01c1660ff169052565b6113a46102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b6113ca6103208801848760c81c1660ff169052565b6113df6103408801848760d01c1660ff169052565b6113f46103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b61141a6103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b0195019101918693919492610d81565b9060405161145481610781565b60c06114aa6006839560018060a01b03808254168652600182015416602086015260028101546040860152600381015460608601526004810154608086015261149f60058201610cfc565b60a086015201610d56565b910152565b908160011b918083046002149015171561099957565b8181029291811591840414171561099957565b9690929695919493956114e961088a565b976114ff6114fa8261044385610af7565b611447565b818a5280516001600160a01b031660808b01529660808801805160608c015288516001600160a01b039691959190871680156117525761153f90866117c1565b901561173657156117185761155e9161155a91848688611867565b1590565b6116ff5786156116e65761157582610443856109da565b54611587826104868561044388610a13565b54908881151592836116d2575b5050506116b957610486826104436115b26115b99561044388610a4c565b5495610a85565b549080151591826116a6575b505061169057518015159081611686575b50611671576060840151421061165c576040840151850361164757602084015191811691166001600160a01b0316036116345760c092611615916114c5565b602084015260a081015160a0840152015160c082015260019160009190565b50600093632e834cbf60e11b9392509050565b50600095631d6bbb8d60e11b95945092505050565b5060009563456afd0b60e01b95945092505050565b50600095635bdd08f560e01b95945092505050565b90508311386115d6565b5060009663ae3586c560e01b9695509350505050565b6116b191925061098b565b1138806115c5565b50600099636d03a2e560e01b9998509650505050505050565b6116dd92935061099e565b11388881611594565b5060009963c6b949a960e01b9998509650505050505050565b5060009963e2cf60cb60e01b9998509650505050505050565b5060009b600162bed83560e01b03199b9a5098505050505050505050565b5060009c63915b8f1d60e01b9c9b509950505050505050505050565b5060009c634ed1072f60e11b9c9b509950505050505050505050565b6001600160401b03811161077c57601f01601f191660200190565b60405190602082018281106001600160401b0382111761077c5760405260008252565b908160209103126100fd5751610c08816100ec565b604051638da5cb5b60e01b6020820190815260048252929392906117e4816107b7565b6000928392839251915afa903d1561185f573d916118018361176e565b9261180f60405194856107ed565b83523d82602085013e5b158015611854575b61184d575080602080611839935183010191016117ac565b6001926001600160a01b0391821691161490565b9250508190565b506020825110611821565b606091611819565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e602052604090209193929190600052602052604060002060405190604082018281106001600160401b0382111761077c57604052600181549182845201549081602084015215908115611937575b5061192e5760405160609490941b6bffffffffffffffffffffffff191660208501908152610c089461192381603481015b03601f1981018352826107ed565b519020905190611e1a565b50505050600190565b9050421015386118e4565b6001600160a01b039091168152602081019190915260400190565b6001600160a01b0391821681529116602082015260400190565b94929395919561198a8161044384610af7565b956001600160e01b03191694634ed1072f60e11b808714611c9d575063915b8f1d60e01b868114611c685750600162bed83560e01b0319868114611c4a575063e2cf60cb60e01b868114611c16575063c6b949a960e01b868114611bf75750636d03a2e560e01b868114611b81575063ae3586c560e01b91868314611b125750635bdd08f560e01b92505050838114611ae1575063456afd0b60e01b9050828114611ab85750631d6bbb8d60e11b828114611a895750632e834cbf60e11b9182149050611a5c57505050610c08611789565b611915611a756001610c0894015460018060a01b031690565b60405194859360208501526024840161195d565b60029390930154604051602081019490945260248401919091526044830152509050610c088160648101611915565b935050506003610c08910154916119156040519384926020840152602483019190602083019252565b92509350506119156004610c0893015460405194859360208501526024840160209093929193604081019481520152565b92975092509350610c0894506119159250611b308161044388610a4c565b5491611b4381610486846104438b610a85565b5491604051978896602088015260248701919594939060809360a084019760018060a01b038093168552602085015216604083015260608201520152565b95509290919650610c0895506119159350611b9f82610443896109da565b5492611bb281610486856104438c610a13565b5492604051988997602089015260248801929060a09491979695929760c0850198600180881b0380931686526020860152166040840152606083015260808201520152565b97505050505050505060405190602082015260048152610c08816107b7565b60405160208101919091526001600160a01b0390911660248201529650610c08955086945050604484019250611915915050565b9550505094505050611915611a75610c08935460018060a01b031690565b60405160208101919091526001600160a01b03909316602484015250909550610c089450859350506044830191506119159050565b95505091509450610c0893506119159150604051948593602085015260248401611942565b803b158015611cf5575b611cd35750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b808352602482015260248152611d1e816107d2565b519084617530fa6000513d82611d72575b5081611d68575b5080611d58575b80611d49575b15611ccc565b50611d5381611ddb565b611d43565b50611d6281611d7e565b15611d3d565b9050151538611d36565b60201115915038611d2f565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b602482015260248152611dae816107d2565b5191617530fa6000513d82611dcf575b5081611dc8575090565b9050151590565b60201115915038611dbe565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152611dae816107d2565b60001981146109995760010190565b9291909291600080925b828410611e3357505050501490565b90919293611e76908560051b83013580821115600014611e7e57604080516020810193845290810191909152611e6c8160608101611915565b5190205b94611e0b565b929190611e24565b60408051602081019283529081019290925290611e9e8160608101611915565b519020611e70565b9293611eb0610c36565b611eba8186613c0c565b6001600160a01b039233838516146124a65773__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd57604051635e157ccf60e11b815260008180611f05856004830161080e565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561042157612493575b50611f3385611cc2565b600080516020613c7483398151915254611f7790602090611f5c906001600160a01b03166105ae565b6040518093819263e985e9c560e01b8352886004840161195d565b0381888a165afa90811561042157600091612464575b501561244857611f9c82610858565b90611fa683610858565b611faf8461251c565b92600080611fe66105ae7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5015460018060a01b031690565b878c888d898d85881061229457505050505050505073__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd5760006120379160405180938192635ea509b560e01b835288600484016109ab565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561042157612281575b5090859160005b89878c8184106121ed575050505061207d925033878a613613565b60005b838110612091575050505050505050565b61209b8184610952565b51519060206120aa8286610952565b51015160406120b98387610952565b5101519260606120c98488610952565b5101519160806120d98589610952565b5101519473__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd5786956000948b61211f938f956040519a8b98899863981e8fc560e01b8a5260048a01612642565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af49182156104215786867f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d7886948a8c6121d18f604061219d8a6121858f829060019f9d8a9e6121da575b50610952565b515198602061219583838861256c565b01359461256c565b604080519889526001600160a01b038e1660208a015288019290925201356060860152911694339416929081906080820190565b0390a401612080565b806104156121e792610769565b3861217f565b958391600195969761221f8361048661220588610abe565b61221088878761256c565b35600052602052604060002090565b61223d6002604061223188878761256c565b013592019182546125ae565b80915515612255575b50505050500190869291612062565b612210612272946104869361226c61227798610abe565b9361256c565b6125d2565b898189898e612246565b8061041561228e92610769565b3861205b565b926122c1886122bb88958895839d9b9c986122b58560409d6122e99d61256c565b926126ad565b92610952565b526122cc838d610952565b506122d883838361256c565b356122e3848b610952565b5261256c565b01356122f58487610952565b5261232560208b8d8c612308888a610952565b5192604051809681958294627eeac760e11b845260048401611942565b0392165afa90811561042157600091612429575b506123448487610952565b5181106123ee575061237e60208061235c868b610952565b510151604051809381926361fe24a960e11b8352600483019190602083019252565b0381865afa918215610421576001926123c7926000916123cf575b5060406123a6878c610952565b51015261063960206123b8878c610952565b5101516040610630888d610952565b920190611fe6565b6123e8915060203d60201161066c5761065e81836107ed565b38612399565b896124258d928861240a88612403818c610952565b5192610952565b5190604051958695636906ef1760e11b87526004870161257c565b0390fd5b612442915060203d60201161066c5761065e81836107ed565b38612339565b60405163d65b0d6960e01b81528061242587866004840161195d565b612486915060203d60201161248c575b61247e81836107ed565b8101906124c7565b38611f8d565b503d612474565b806104156124a092610769565b38611f29565b60405163aac1ae8b60e01b81526001600160a01b0384166004820152602490fd5b908160209103126100fd575180151581036100fd5790565b6040519060a082018281106001600160401b0382111761077c57604052606060808360008152600060208201526000604082015282808201520152565b9061252682610841565b61253360405191826107ed565b8281528092612544601f1991610841565b019060005b82811061255557505050565b6020906125606124df565b82828501015201612549565b919081101561094d576060020190565b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b9190820391821161099957565b8181106125c6575050565b600081556001016125bb565b600560009182815582600182015582600282015582600382015560048101805484825580612628575b505001908154908083558161260f57505050565b602081610d3194601f935220910160051c8101906125bb565b61263b91855260208520908101906125bb565b38806125fb565b969361269e9591610c0899979394600080516020613c548339815191528a5260018060a01b03958680931660208c015260408b0152166060890152608088015260a08701521660c08501526101208060e0860152840190610b30565b91610100818403910152610b6d565b9290916126b86124df565b5081359060406020840135930135936126d585858585858b6126f0565b9791156126e6575050505050505090565b610cf4975061281b565b949392906126fc6124df565b958287528515612805576127169261044361048692610abe565b9060028201549081156127f057600383015480151590816127e5575b506127d05782546001600160a01b039182169116036127bc57826001830154036127a85783116127955761276b600592612787946114c5565b602085015261277c60048201610cfc565b606085015201610d56565b608082015260019160009190565b506000936364b7fccd60e11b9392509050565b50600094631d6bbb8d60e11b949350915050565b50600094632e834cbf60e11b949350915050565b50600095635493bdef60e11b95945092505050565b905042101538612732565b50600095630bac95f560e21b95945092505050565b5060009663c6b949a960e01b9695509350505050565b94929161282f816104868761044386610abe565b956001600160e01b0319169463c6b949a960e01b808714611bf75750630bac95f560e21b8681146129505750635493bdef60e11b918683146129275750632e834cbf60e11b925050508381146129095750631d6bbb8d60e11b90508281146128da57506364b7fccd60e11b91821490506128ae57505050610c08611789565b6119156002610c0893015460405194859360208501526024840160209093929193604081019481520152565b60019390930154604051602081019490945260248401919091526044830152509050610c088160648101611915565b9354909450610c0893925061191591506001600160a01b0316611a75565b9297509250935061191592506003610c0895015491604051968795602087015260248601610c0b565b60405160208101919091526001600160a01b0393841660248201526044810191909152911660648201529450610c08935084925050608482019050611915565b94919592969093976129a0610c36565b60409384519a6129af8c61079c565b6001600160a01b039788168c5260208c01968752978716858c0181815299881660608d0190815260808d019b8c5260a08d01958652999890338114612ce857508b51612a03906001600160a01b0316611cc2565b895173__$11854c5905aa23948096e0e4d7059bb9de$__93906001600160a01b031694843b156100fd578751635e157ccf60e11b8152600096879082908190612a4f906004830161080e565b0381895af4801561042157612cd5575b50843b156100e55787516376fb859760e01b8152868180612a868787878b60048601612d9a565b0381895af4801561042157612cc2575b50865115612cb157918d93916105ae9897969593612b0e6020612ad06105ae612abe8a612e62565b9a519a9e909a6001600160a01b031690565b600080516020613c7483398151915254612af2906001600160a01b03166105ae565b908c51808095819463e985e9c560e01b8352336004840161195d565b03915afa908115610421578891612c93575b5015612c6b57908f91612b718f94938f612b64908f8d90612b58612b4a865160018060a01b031690565b93516001600160a01b031690565b9051915192339061323e565b516001600160a01b031690565b8c5194516001600160a01b03169590873b15612c675790612bad949392918c519d8e9a8b998a9963981e8fc560e01b8b52339460048c01612dc1565b03915af4801561042157612c19612c09612bfb7fd6c105ec24ddd771e44ffc25e8a8603b6b78ba980a72645a26740b3d8437388599612c4f978a95612c54575b50516001600160a01b031690565b9b516001600160a01b031690565b955198516001600160a01b031690565b9851915192519788526001600160a01b039098166020880152604087015260608601529116949093169233929081906080820190565b0390a4565b80610415612c6192610769565b38612bed565b8980fd5b8f51895163d65b0d6960e01b8152908190612425906001600160a01b0316336004840161195d565b612cab915060203d811161248c5761247e81836107ed565b38612b20565b875163c6b949a960e01b8152600490fd5b80610415612ccf92610769565b38612a96565b80610415612ce292610769565b38612a5f565b8651630bfa508960e41b81526001600160a01b03919091166004820152602490fd5b91908082526020809201929160005b828110612d27575050505090565b9091929382806001928735612d3b816100ec565b848060a01b03168152019501910192919092612d19565b9190808252602080920192916000805b838210612d7157505050505090565b9091929394853560ff8116809103612d96578152830194830193929160010190612d62565b8280fd5b9290612db390610c089593604086526040860191612d0a565b926020818503910152612d52565b9896949093610c089a9894602094612e219894600080516020613c548339815191528d528c60018060a01b03978880951691015260408d01521660608b015260808a015260a08901521660c08701526101208060e0880152860191612d0a565b92610100818503910152612d52565b6001600160a01b0391821681526020810192909252918216604082015291166060820152608081019190915260a00190565b80516001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5146020526040902090919091612eb660208201938451600052602052604060002090565b90604093612ee785830193612ed1855160018060a01b031690565b60018060a01b0316600052602052604060002090565b6060830180519091612f01916001600160a01b0316612ed1565b93600285015492831561304057600686015480151580613036575b612ff25750508454612f4191506001600160a01b03165b91516001600160a01b031690565b6001600160a01b0381811690831603612fd757505060018301549160808101928351808203612fb657505060a00194855190828211612f965750505090612f8e610c0892518551906114c5565b9351906130a8565b5163587ced0f60e01b815260048101919091526024810191909152604490fd5b8751631d6bbb8d60e11b815260048101919091526024810191909152604490fd5b6124258751928392632e834cbf60e11b84526004840161195d565b61242590898561301e612f3361300e8b5160018060a01b031690565b965197516001600160a01b031690565b915163581fa6b560e01b815295869560048701612e30565b5042811115612f1c565b612425888461306b612f3361305b8a5160018060a01b031690565b955196516001600160a01b031690565b915163b9c59b5760e01b81526001600160a01b03948516600482015260248101959095528316604485015291909116606483015281906084820190565b919091600281019081549081851461311757908160056131139301549361310c6131046003840154966130ff60046130e98c6130e48a8d6125ae565b61099e565b9601988954966130f988856125ae565b936131b6565b6125ae565b9788946125ae565b90556125ae565b9055565b91929350506006600482019182549360018060a01b031982541682556000938480928160018601555581600384015555826005820155015590565b811561315c570490565b634e487b7160e01b600052601260045260246000fd5b1561317957565b60405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606490fd5b90916000198383099280830292838086109503948086039514613231579082916131e1868411613172565b096001821901821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b505090610c089250613152565b60408051627eeac760e11b8082529296600496909594939092916001600160a01b03891691602091828180613276898b8f8401611942565b0381875afa9081156104215760009161349d575b5088811061347e57908291869493898c6132ae895198899384938885528401611942565b0381875afa9485156104215760009561345f575b50600080516020613c74833981519152546132e5906001600160a01b03166105ae565b803b156100fd57865163eb46c45b60e01b81526001600160a01b03808f16828f01908152818c166020820152908c166040820152606081018a9052608081018d905260c060a0820181905260009082018190529192839182908490829060e00103925af180156104215761344c575b508683898d61336d8a5194859384938985528401611942565b0381885afa9283156104215788958d8c92879460009761342d575b5061339e8b51998a958694859485528401611942565b03915afa938415610421578a93600095613408575b5050826133bf916125ae565b14928315936133f3575b5050506133d95750505050505050565b51638791019960e01b815296508695612425958701612e30565b6133fe92935061099e565b14153886816133c9565b6133bf92955084918161342692903d1061066c5761065e81836107ed565b94916133b3565b613445919750853d871161066c5761065e81836107ed565b9538613388565b8061041561345992610769565b38613354565b613477919550833d851161066c5761065e81836107ed565b93386132c2565b8961242588928b898f8a51968796636906ef1760e11b8852870161257c565b6134b49150833d851161066c5761065e81836107ed565b3861328a565b60209081818403126100fd578051906001600160401b0382116100fd57019180601f840112156100fd5782516134ef81610841565b936134fd60405195866107ed565b818552838086019260051b8201019283116100fd578301905b828210613524575050505090565b81518152908301908301613516565b90815180825260208080930193019160005b828110613553575050505090565b835185529381019392810192600101613545565b9092916040820191604081528451809352606081019260208096019060005b8181106135a057505050610c089394818403910152613533565b82516001600160a01b031686529487019491870191600101613586565b9360209592613602946135f49360018060a01b0392838092168952168888015216604086015260c0606086015260c0850190613533565b908382036080850152613533565b9060a0818303910152600081520190565b835190949093926001600160a01b038616929091613638613633876114af565b610858565b94613645613633886114af565b809660005b8981106138c257506040968751916313849cfd60e21b918284528084808460049e8f83019161367892613567565b03815a93600094fa938415610421576000946138a7575b5060005b8c81106138375750600080516020613c74833981519152546136bd906001600160a01b03166105ae565b92833b156100fd576000898f958c968f8f906136ef8e8e8894519c8d9889978896637ee7f69b60e01b885287016135bd565b03925af1908115610421576000948d92613824575b5061371a8c519788958694859485528401613567565b03915afa91821561042157600092613801575b5060005b898110613745575050505050505050505050565b61374e816114af565b6137588185610952565b516137786137668386610952565b51613771858a610952565b51906125ae565b14908115916137bd575b5061378f57600101613731565b61242598995080925061240391506137a693610952565b519351638791019960e01b81529687968701612e30565b90506137f96137e76137e16137da6137d48561098b565b88610952565b519361098b565b85610952565b516137f28489610952565b519061099e565b141538613782565b61381d91923d8091833e61381581836107ed565b8101906134ba565b903861372d565b8061041561383192610769565b38613704565b613840816114af565b61384a8187610952565b51613855838b610952565b51116138645750600101613693565b8c8f8d888c612425938f96613890908f8a6138828161388993610952565b5195610952565b5194610952565b519351636906ef1760e11b8152968796870161257c565b6138bb91943d8091833e61381581836107ed565b923861368f565b60019192506138d0816114af565b6138ed876138de8387610952565b6001600160a01b039091169052565b613903886138de6138fd8461098b565b87610952565b61390d8286610952565b51613918828c610952565b526139366139306139298488610952565b519261098b565b8b610952565b520190879161364a565b6001600160a01b039091168152606060208201819052610c0893919261396891840190613533565b916040818403910152613533565b909260018060a01b0382169261398d815186613a8a565b94604051936313849cfd60e21b958686526000978887806139b2888560048401613567565b0381855afa968715610421578997613a6e575b50813b15613a6a57604051630d4498e760e21b8152918983806139ed8a8a8a60048501613940565b038183855af191821561042157613a1d998b948894613a57575b506040519a8b9485938493845260048401613567565b03915afa9586156104215787610d319897613a3a575b5050613ac2565b613a4f9297503d8091833e61381581836107ed565b943880613a33565b80610415613a6492610769565b38613a07565b8880fd5b613a839197503d808b833e61381581836107ed565b95386139c5565b9190613a9581610858565b9260005b828110613aa557505050565b80613ab260019287610952565b828060a01b038416905201613a99565b939092959460005b8351811015613b3a57613add8183610952565b51613ae88285610952565b5190613af4838b610952565b5182018092116109995703613b0b57600101613aca565b8561242586613b1f846138828d968a610952565b5190604051948594631b3c965960e21b865260048601610c0b565b5050505050509050565b613b4d82613b98565b60015b828110613b5c57505050565b60001981019080821161099957613b8e613b7a613b9393868661092b565b35613b8683878761092b565b359083613bda565b611e0b565b613b50565b8015613bc857604b8111613ba95750565b6044906040519063f80a484560e01b82526004820152604b6024820152fd5b60405163c2e5347d60e01b8152600490fd5b919080821115613be957505050565b606493506040519263f48f718f60e01b8452600484015260248301526044820152fd5b613c1582613b98565b60015b828110613c2457505050565b60001981019080821161099957613b8e613c42613c4e93868661256c565b35613b8683878761256c565b613c1856fe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5005e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50aa26469706673582212204142d73195bc2cde54f6ce7e87564da4f5a2a92d884ce3782b9531bf38e5d7a064736f6c63430008120033","sourceMap":"929:15850:172:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;929:15850:172;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4348:3318;929:15850;;4348:3318;;:::i;:::-;929:15850;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;929:15850:172;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;:::i;:::-;971:75:168;;;:::i;:::-;1522:9:172;;;;:::i;:::-;1604:40;:58;;;;929:15850;;-1:-1:-1;;;1604:58:172;;-1:-1:-1;929:15850:172;;1604:58;929:15850;;1604:58;;;;:::i;:::-;;:40;;:58;;;;;;;;929:15850;;1697:16;929:15850;;1697:16;:::i;:::-;1802:27;;;:::i;:::-;1866;;;:::i;:::-;1950:40;;;:::i;:::-;2000:22;-1:-1:-1;;2053:16:172;;;;;;1604:40;;2723:62;;;;-1:-1:-1;2723:62:172;929:15850;;;;;;;;;;2723:62;;929:15850;;2723:62;;;;:::i;:::-;;1604:40;;2723:62;;;;;;;;2033:680;2801:13;-1:-1:-1;2816:16:172;;;;;;2189:10;;3385:7;2189:10;;929:15850;;3385:7;:::i;:::-;-1:-1:-1;3424:16:172;;;;;;929:15850;3409:13;929:15850;3461:17;;;;:::i;:::-;;:29;929:15850;3457:505;;3409:13;4047:17;;929:15850;4047:17;;;:::i;:::-;;929:15850;4118:24;;:17;;;;:::i;:::-;;:24;929:15850;-1:-1:-1;;;;;929:15850:172;;;4118:24;4160:12;929:15850;4160:12;;;;;:::i;:::-;:21;929:15850;3981:284;;929:15850;4233:12;;;;;:::i;:::-;:18;929:15850;;;2189:10;;;;929:15850;;;;;;;;;;;;3981:284;;;:::i;:::-;;;;929:15850;3409:13;;3457:505;929:15850;3674:17;;;;:::i;:::-;;:29;929:15850;3729:17;929:15850;3729:17;;;;:::i;:::-;;:32;929:15850;3787:17;:24;4118;3787:17;;;;:::i;:24::-;3837:17;929:15850;3837:17;;;;:::i;:::-;;:33;;3896:17;:29;:17;;;;:::i;:::-;;:29;;1604:40;;3515:432;;;;-1:-1:-1;929:15850:172;3515:432;929:15850;;;;;;;;;;;3515:432;;929:15850;;;;;3515:432;;;;:::i;:::-;;1604:40;;3515:432;;;;;;;929:15850;3515:432;;;3457:505;;;;;;3515:432;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;2801:13::-;2867:12;;929:15850;2867:12;;;;:::i;:::-;929:15850;2906:43;929:15850;2906:34;929:15850;;2906:34;:::i;:::-;929:15850;;;;;;;;;;2906:43;929:15850;2902:172;;2801:13;3092:41;929:15850;3092:32;929:15850;;3092:32;:::i;:41::-;929:15850;3088:148;;2801:13;929:15850;;2801:13;;3088:148;3157:59;2189:10;3157:47;2189:10;929:15850;3157:38;929:15850;;3157:38;:::i;:47::-;929:15850;;;;;;;;;;;;;;;;3157:59;:64;929:15850;;3157:64;:::i;:::-;929:15850;;3088:148;;;2902:172;929:15850;3038:12;;;;;:::i;:::-;:21;929:15850;2973:86;:61;2189:10;2973:49;929:15850;2973:40;929:15850;;2973:40;:::i;:61::-;929:15850;;;2973:86;:::i;:::-;929:15850;;2902:172;;2723:62;;;;;;:::i;:::-;;;;2038:13;2122:92;2201:12;;;;;:::i;:::-;2189:10;929:15850;;;;2122:92;:::i;:::-;2086:128;;;;:::i;:::-;;;;;;:::i;:::-;;929:15850;2232:17;;;;;:::i;:::-;;:29;929:15850;2228:313;;2038:13;2569:17;;;929:15850;2569:17;;;:::i;:::-;;929:15850;2555:39;;;;:::i;:::-;929:15850;;2621:12;;;;;:::i;:::-;:21;929:15850;2608:34;;;;:::i;:::-;929:15850;;2038:13;;2228:313;929:15850;;2341:89;929:15850;;2341:58;929:15850;2341:34;929:15850;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;2341:58;2400:17;;;;;:::i;:::-;;:29;929:15850;;;-1:-1:-1;;;2341:89:172;;;;;929:15850;;;;;;;;;;;;;;;2341:89;;;;;;;;;;929:15850;2341:89;2448:78;2341:89;2462:64;2341:89;-1:-1:-1;2341:89:172;;;2228:313;2286:17;929:15850;2286:17;;;;:::i;:::-;;:32;929:15850;2462:17;;;;:::i;:::-;;:29;929:15850;;2494:17;;;;:::i;:::-;;:32;929:15850;2462:64;;:::i;:::-;2448:78;;:::i;:::-;2228:313;;;;2341:89;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;1604:58;;;;;;:::i;:::-;;;;929:15850;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;929:15850:172;;;;;;;1084:2:171;929:15850:172;;;;;;;;;-1:-1:-1;;929:15850:172;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7672:664;929:15850;;;;;;:::i;:::-;;;;;;;;;;;;7672:664;;:::i;:::-;929:15850;;;;;;;-1:-1:-1;;929:15850:172;;;;;;;1032:2:171;929:15850:172;;;;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;929:15850:172;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;929:15850:172;;-1:-1:-1;929:15850:172;;;;-1:-1:-1;929:15850:172;;;;-1:-1:-1;929:15850:172;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;929:15850:172;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;3220:1;929:15850;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;929:15850:172;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;2906:16;929:15850;;;;;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;2973:22;929:15850;;;;;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;3092:14;929:15850;;;;;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;3157:20;929:15850;;;;;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;6398:12;929:15850;;;;;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;8838:19:168;929:15850:172;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1052:123:168:-;1117:4;1126;-1:-1:-1;;;;;929:15850:172;1109:21:168;1105:63;;1052:123::o;1105:63::-;929:15850:172;;-1:-1:-1;;;1139:29:168;;;;;6854:832;;;929:15850:172;;:::i;:::-;;;;7409:14:168;;;;929:15850:172;7437:17:168;;;;929:15850:172;7468:14:168;;;;929:15850:172;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;7409:14:168;929:15850:172;;;;;;;;;;;7243:290:168;;;;;;;;;:::i;:::-;7547:6;;;7543:105;;7658:21;;;;;;;6854:832;:::o;7543:105::-;12828:267;;;;:::i;:::-;7409:14;6761:81;;;;;929:15850:172;;;;;;;;;;;;;;;;;;-1:-1:-1;929:15850:172;;-1:-1:-1;929:15850:172;;-1:-1:-1;929:15850:172;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;12705:1;929:15850;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;8365:2733:168:-;;;;;;;;;;929:15850:172;;:::i;:::-;8838:37:168;929:15850:172;8838:47:168;:37;;;;:::i;:47::-;929:15850:172;:::i;:::-;;;;;;-1:-1:-1;;;;;929:15850:172;8937:20:168;;;929:15850:172;;8937:20:168;9018:25;;929:15850:172;;8993:22:168;;;929:15850:172;;;-1:-1:-1;;;;;929:15850:172;9018:25:168;;;929:15850:172;;;9058:37:168;;9054:106;;9208:62;;;;:::i;:::-;9284:14;;9280:76;;9370:8;9366:70;;9450:68;9451:67;;;;;;;:::i;:::-;9450:68;;929:15850:172;9450:68:168;9446:160;;9619:14;;9615:80;;9726:44;:34;;;;:::i;:44::-;929:15850:172;9803:58:168;:40;:50;:40;;;;:::i;:58::-;929:15850:172;9875:14:168;;;;;:54;;;;8365:2733;9871:142;;;;;10114:48;10041:32;10114:38;10041:42;10114:56;10041:32;;;;:::i;:42::-;929:15850:172;10114:38:168;;:::i;:56::-;929:15850:172;10184:12:168;;;;:40;;;;8365:2733;10180:135;;;;929:15850:172;10329:30:168;;;:71;;;;8365:2733;10325:157;;;8993:22;10495:26;;929:15850:172;10524:15:168;-1:-1:-1;10491:104:168;;10619:22;;;929:15850:172;10609:32:168;;10605:91;;10710:32;;;929:15850:172;;;;;;-1:-1:-1;;;;;929:15850:172;10710:52:168;10706:139;;11013:28;10883:18;;;;:::i;:::-;10710:32;10855:25;;929:15850:172;;10943:32:168;;;929:15850:172;10911:29:168;;:64;11013:28;;;10985:25;;:56;929:15850:172;11052:39:168;-1:-1:-1;11052:39:168;8365:2733;:::o;10706:139::-;-1:-1:-1;;;;;;10793:25:168;10778:56;-1:-1:-1;10793:25:168;-1:-1:-1;10778:56:168:o;10605:91::-;-1:-1:-1;;;;;;10658:22:168;10643:53;-1:-1:-1;10658:22:168;-1:-1:-1;;;10643:53:168:o;10491:104::-;-1:-1:-1;;;;;;10556:23:168;10541:54;-1:-1:-1;10556:23:168;-1:-1:-1;;;10541:54:168:o;10325:157::-;-1:-1:-1;;;;;;10431:24:168;10416:55;-1:-1:-1;10431:24:168;-1:-1:-1;;;10416:55:168:o;10329:71::-;10363:37;;;;10329:71;;;10180:135;-1:-1:-1;;;;;;10255:33:168;10240:64;-1:-1:-1;10255:33:168;-1:-1:-1;;;;10240:64:168:o;10184:40::-;10200:14;;;;;:::i;:::-;:24;10184:40;;;;9871:142;-1:-1:-1;;;;;;9960:26:168;9945:57;-1:-1:-1;9960:26:168;-1:-1:-1;;;;;;;9945:57:168:o;9875:54::-;9893:24;;;;;:::i;:::-;:36;9875:54;;;;;9615:80;-1:-1:-1;;;;;;9650:29:168;9635:60;-1:-1:-1;9650:29:168;-1:-1:-1;;;;;;;9635:60:168:o;9446:160::-;-1:-1:-1;;;;;;9549:30:168;9534:61;-1:-1:-1;9549:30:168;-1:-1:-1;;;;;;;9534:61:168:o;9366:70::-;-1:-1:-1;;;;;;;;;9395:25:168;9380:56;-1:-1:-1;9395:25:168;-1:-1:-1;;;;;;;;;9380:56:168:o;9280:76::-;-1:-1:-1;;;;;;7496:27:168;9300:56;-1:-1:-1;7496:27:168;-1:-1:-1;;;;;;;;;;9300:56:168:o;9054:106::-;-1:-1:-1;;;;;;9112:32:168;9097:63;-1:-1:-1;9112:32:168;-1:-1:-1;;;;;;;;;;9097:63:168:o;929:15850:172:-;-1:-1:-1;;;;;929:15850:172;;;;;;-1:-1:-1;;929:15850:172;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;5332:398:168:-;929:15850:172;;-1:-1:-1;;;5559:34:168;;;;;;;;;5332:398;;;5559:34;;929:15850:172;5559:34:168;:::i;:::-;;5531:63;;;;;;;;;;929:15850:172;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;5559:34:168;929:15850:172;;;;5608:8:168;929:15850:172;;5608:28:168;;929:15850:172;5604:55:168;;929:15850:172;;5559:34:168;929:15850:172;5683:27:168;929:15850:172;;5683:27:168;;;;;;:::i;:::-;929:15850:172;;-1:-1:-1;;;;;929:15850:172;;;;;5683:39:168;;5332:398::o;5604:55::-;5638:21;;;;;:::o;5608:28::-;929:15850:172;5559:34:168;929:15850:172;;5620:16:168;5608:28;;929:15850:172;;;;;5736:541:168;-1:-1:-1;;;;;929:15850:172;;;;;6011:21:168;929:15850:172;;;;;5736:541:168;;;;929:15850:172;-1:-1:-1;929:15850:172;;;;-1:-1:-1;929:15850:172;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;6074:34:168;:85;;;;;5736:541;6070:102;;;929:15850:172;;;;;;;-1:-1:-1;;929:15850:172;;6212:26:168;;929:15850:172;;;6189:81:168;;6212:26;929:15850:172;;;;6212:26:168;;929:15850:172;;6212:26:168;;;;;;:::i;:::-;929:15850:172;6202:37:168;;929:15850:172;;6189:81:168;;:::i;6070:102::-;6161:11;;;;929:15850:172;6161:11:168;:::o;6074:85::-;6112:15;;;:47;;6074:85;;;929:15850:172;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;:::o;1181:2673:168:-;;;;;;;1535:47;:37;;;;:::i;:47::-;929:15850:172;-1:-1:-1;;;;;;929:15850:172;;-1:-1:-1;;;1597:43:168;;;1593:165;;-1:-1:-1;;;;1771:38:168;;;1767:145;;-1:-1:-1;;;;;;;1925:36:168;;;1921:166;;-1:-1:-1;;;;2100:41:168;;;2096:141;;-1:-1:-1;;;;2250:40:168;;;2246:106;;-1:-1:-1;;;;2366:37:168;;;2362:400;;-1:-1:-1;;;;10255:33:168;2775:44;;;2771:391;;-1:-1:-1;;;;10431:24:168;-1:-1:-1;;;3175:35:168;;;3171:159;;-1:-1:-1;;;;10556:23:168;-1:-1:-1;3343:34:168;;;3339:147;;-1:-1:-1;;;;3499:33:168;;;3495:149;;-1:-1:-1;;;;10793:25:168;3657:36;;;-1:-1:-1;3653:175:168;;929:15850:172;;;;;:::i;3653:175:168:-;3716:101;929:15850:172;3784:32:168;3716:101;3784:32;;929:15850:172;;;;;;;;;;;;3716:101:168;;;;;;;;;;;:::i;3495:149::-;3610:22;;;;;929:15850:172;;;3555:78:168;;;;;;;;;;929:15850:172;;;;;;;;-1:-1:-1;929:15850:172;-1:-1:-1;3555:78:168;929:15850:172;;;;3555:78:168;929:15850:172;3339:147:168;3448:26;;;;;3400:75;3448:26;;929:15850:172;;3400:75:168;929:15850:172;;3400:75:168;;;;;;;;;;929:15850:172;;;;;;;;3171:159:168;3293:25;;;;;3233:86;3293:25;3233:86;3293:25;;929:15850:172;;;3233:86:168;;;;;;;;;;929:15850:172;;;;;;;;;;;;;;;2771:391:168;2853:32;;;;;;;3007:144;2853:32;;3007:144;2853:32;;:42;:32;;;;:::i;:42::-;929:15850:172;2930:38:168;:56;:38;:48;:38;;;;:::i;:56::-;929:15850:172;;;;3007:144:168;;;;;;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2362:400:168;2439:34;;;;;;;2599:152;2439:34;;2599:152;2439:34;;:44;:34;;;;:::i;:44::-;929:15850:172;2520:40:168;:58;:40;:50;:40;;;;:::i;:58::-;929:15850:172;;;;2599:152:168;;;;;;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2246:106:168;929:15850:172;;;;;;;;;;;2299:53:168;;;;;;;;;;;:::i;2096:141::-;929:15850:172;;2164:62:168;;;;;;;-1:-1:-1;;;;;929:15850:172;;;2164:62:168;;;929:15850:172;;-1:-1:-1;2164:62:168;;-1:-1:-1;929:15850:172;;-1:-1:-1;;929:15850:172;;;;-1:-1:-1;2164:62:168;;-1:-1:-1;;929:15850:172;1921:166:168;929:15850:172;;;;;;;;1984:92:168;929:15850:172;1984:92:168;929:15850:172;;;;;;;;;;1767:145:168;929:15850:172;;1832:69:168;;;;;;;-1:-1:-1;;;;;929:15850:172;;;1832:69:168;;;929:15850:172;-1:-1:-1;929:15850:172;;-1:-1:-1;1832:69:168;;-1:-1:-1;929:15850:172;;-1:-1:-1;;929:15850:172;;;;-1:-1:-1;1832:69:168;;-1:-1:-1;929:15850:172;1593:165:168;929:15850:172;;;;;;;1663:84:168;929:15850:172;;1663:84:168;929:15850:172;;;;1663:84:168;;;;;;;;;;;:::i;5387:321:171:-;5488:28;;:33;:131;;;;5387:321;5471:231;;5387:321;:::o;5471:231::-;929:15850:172;;-1:-1:-1;;;5651:40:171;;-1:-1:-1;;;;;929:15850:172;;;5651:40:171;;;929:15850:172;;;5651:40:171;5488:131;929:15850:172;4592:71:119;-1:-1:-1;929:15850:172;;4592:71:119;;;1017:25;;;;4592:71;;;;;;929:15850:172;4592:71:119;;;;;;:::i;:::-;4784:212;;;;;-1:-1:-1;4784:212:119;;5013:29;;;5488:131:171;5013:48:119;;;;5488:131:171;975:149:119;;;;5488:131:171;1543:81:119;;;5488:131:171;5541:78;5488:131;;1543:81:119;1570:54;;;;:::i;:::-;1543:81;;975:149;1060:64;;;;:::i;:::-;1059:65;975:149;;5013:48;5046:15;;;;5013:48;;;:29;4592:71;-1:-1:-1;5024:18:119;;-1:-1:-1;5013:29:119;;;4421:647;-1:-1:-1;4592:71:119;4421:647;929:15850:172;;4592:71:119;;;1017:25;;;;4592:71;;929:15850:172;;;4592:71:119;;;929:15850:172;4592:71:119;;;;;;:::i;:::-;4784:212;;;;-1:-1:-1;4784:212:119;;5013:29;;;4421:647;5013:48;;;;5006:55;4421:647;:::o;5013:48::-;5046:15;;;;4421:647;:::o;5013:29::-;4592:71;-1:-1:-1;5024:18:119;;-1:-1:-1;5013:29:119;;;4421:647;-1:-1:-1;4592:71:119;4421:647;929:15850:172;;4592:71:119;;;1017:25;;;;4592:71;;5592:26:171;;;4592:71:119;;;929:15850:172;4592:71:119;;;;;;:::i;929:15850:172:-;-1:-1:-1;;929:15850:172;;;;;;;:::o;7368:318:171:-;;;;;7529:13;7541:1;7529:13;7524:118;7544:17;;;;;;7659:20;;;;;7368:318;:::o;7563:3::-;929:15850:172;;;;7563:3:171;929:15850:172;;;;;;;7784:6:171;;;;:78;:6;;;929:15850:172;;;7803:22:171;;;929:15850:172;;;;;;;;;;7803:22:171;929:15850:172;;;;7803:22:171;929:15850:172;7803:22:171;929:15850:172;7793:33:171;;7784:78;7563:3;;:::i;:::-;7529:13;;;;;7784:78;929:15850:172;;;7839:22:171;;;929:15850:172;;;;;;;;;;7839:22:171;;929:15850:172;;;;7839:22:171;929:15850:172;7839:22:171;929:15850:172;7829:33:171;;7784:78;;971:75:168;;;;;:::i;:::-;4571:9:172;;;;:::i;:::-;-1:-1:-1;;;;;929:15850:172;4595:10;929:15850;;;4595:21;4591:66;;4730:40;:58;;;;929:15850;;-1:-1:-1;;;4730:58:172;;:14;929:15850;;4730:58;;;;;;:::i;:::-;;:40;;:58;;;;;;;;971:75:168;4823:16:172;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;929:15850:172;4911:68;;;;4945:33;;-1:-1:-1;;;;;929:15850:172;;;4945:33;929:15850;;;;;;;;;4911:68;;;4730:58;4911:68;;;:::i;:::-;;929:15850;;;;4911:68;;;;;;;4730:14;4911:68;;;971:75:168;4910:69:172;;4906:156;;5149:27;;;:::i;:::-;5213;;;;:::i;:::-;5299:42;;;:::i;:::-;5351:22;4730:14;;5980:58;929:15850;5980:34;929:15850;;;;;;;;;5980:58;5404:16;;;;;;;;;;;4730:40;;;;;;;;;6242:62;;;;4730:14;6242:62;929:15850;;;;;;;;;;6242:62;;;4730:58;6242:62;;;:::i;:::-;;4730:40;;6242:62;;;;;;;;5384:848;6320:13;;;;4730:14;6335:16;;;;;;;;;4595:10;;;;6812:7;4595:10;;;6812:7;;;:::i;:::-;4730:14;6851:16;;;;;;971:75:168;;;;;;;;:::o;6836:13:172:-;6991:17;;;;:::i;:::-;;929:15850;7076:17;4911:68;7076:17;;;;:::i;:::-;;:29;929:15850;;7127:17;;;;:::i;:::-;;:32;929:15850;7210:17;:33;:17;;;;:::i;:::-;;:33;;7265:17;:29;:17;;;;:::i;:::-;;:29;;4730:40;;6884:428;;;;929:15850;;4730:14;929:15850;;6884:428;929:15850;;;;;;;;;;;;;6884:428;;4730:58;6884:428;;;:::i;:::-;;4730:40;;6884:428;;;;;;;;;7332:257;6884:428;;7332:257;6884:428;929:15850;7554:12;6884:428;7441:17;6884:428;;;929:15850;6884:428;;;;;;6836:13;7441:17;;:::i;:::-;;929:15850;7518:12;4911:68;7518:12;;;;;:::i;:::-;:18;929:15850;7554:12;;:::i;:::-;929:15850;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;7554:21;929:15850;;;;;;;;4595:10;;929:15850;;;;;;;;;;7332:257;;;;929:15850;6836:13;;6884:428;;;;;;:::i;:::-;;;;6320:13;6398:30;;;929:15850;6398:30;;;:61;:30;:52;:30;;;:::i;:::-;6429:12;;;;;:::i;:::-;929:15850;;;;;;;;;;6398:61;6473:43;:18;929:15850;6495:12;;;;;:::i;:::-;:21;929:15850;6473:18;;929:15850;;;6473:43;:::i;:::-;929:15850;;;6534:23;6530:130;;6320:13;929:15850;;;;;;6320:13;;;;;;6530:130;6615:12;6584:61;:30;:52;:30;;6577:68;6584:30;;:::i;:::-;6615:12;;:::i;6584:61::-;6577:68;:::i;:::-;6530:130;;;;;;;6242:62;;;;;;:::i;:::-;;;;5389:13;5550:12;5437:126;5550:12;5473:90;5550:12;;;;;;;;;;;929:15850;5550:12;5639;5550;;:::i;:::-;5473:90;;:::i;:::-;5437:126;;:::i;:::-;;;;;;:::i;:::-;;5592:12;;;;;:::i;:::-;929:15850;5578:34;;;;:::i;:::-;929:15850;5639:12;:::i;:::-;:21;929:15850;5626:34;;;;:::i;:::-;929:15850;5699:39;4911:68;5726:11;;;;;;;:::i;:::-;929:15850;;;;;;;;;;;;;5699:39;;4730:58;5699:39;;;:::i;:::-;;929:15850;;5699:39;;;;;;;4730:14;5699:39;;;5389:13;5772:10;;;;;:::i;:::-;929:15850;5756:26;;5752:163;;6039:17;5980:89;4911:68;6039:17;;;;;:::i;:::-;;:29;929:15850;;;;;;;;;;5980:89;;4730:58;5980:89;;929:15850;;;;;;;;5980:89;;;;;;;;;;;929:15850;5980:89;6083:78;5980:89;4730:14;5980:89;;;5389:13;5929:17;929:15850;5929:17;;;;:::i;:::-;;:32;929:15850;6097:64;4911:68;6097:17;;;;:::i;:::-;;:29;929:15850;;6129:17;;;;:::i;6083:78::-;929:15850;;5389:13;;;5980:89;;;;4911:68;5980:89;4911:68;5980:89;;;;;;;:::i;:::-;;;;5752:163;5861:11;5809:91;5861:11;;;5874:10;5861:11;;;;;:::i;:::-;929:15850;5874:10;;:::i;:::-;929:15850;;;;5809:91;;;;;;;;4730:58;5809:91;;;:::i;:::-;;;;5699:39;;;;4911:68;5699:39;4911:68;5699:39;;;;;;;:::i;:::-;;;;4906:156;929:15850;;-1:-1:-1;;;5002:49:172;;929:15850;5002:49;929:15850;;4730:58;5002:49;;;:::i;4911:68::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;4730:58;;;;;;:::i;:::-;;;;4591:66;929:15850;;-1:-1:-1;;;4625:32:172;;-1:-1:-1;;;;;929:15850:172;;4625:32;;;929:15850;;;5809:91;929:15850;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;-1:-1:-1;929:15850:172;;-1:-1:-1;929:15850:172;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;929:15850:172;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;4730:14;929:15850;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;7692:667:168:-;;;;929:15850:172;;:::i;:::-;;;;8164:14:168;8180:17;8164:14;;;929:15850:172;8180:17:168;;929:15850:172;8059:148:168;;;;;;;;;:::i;:::-;8221:6;;;8217:104;;8331:21;;;;;;;7692:667;:::o;8217:104::-;13403:273;;;;:::i;11104:1431::-;;;;;929:15850:172;;:::i;:::-;;;;;11504:14:168;;11500:80;;11621:49;:30;;:40;:30;;:::i;:49::-;11684:18;;;;929:15850:172;11684:23:168;;;11680:90;;11784:24;;;929:15850:172;11784:29:168;;;:76;;;;11104:1431;11780:163;;;929:15850:172;;-1:-1:-1;;;;;929:15850:172;;;;;11956:45:168;11952:107;;12073:15;929:15850:172;12073:15:168;;929:15850:172;12073:25:168;12069:84;;12167:30;-1:-1:-1;12163:133:168;;12334:18;12457:21;12334:18;929:15850:172;12334:18:168;;:::i;:::-;12306:25;;;929:15850:172;;12394:25:168;;;929:15850:172;:::i;:::-;12362:29:168;;;:57;12457:21;929:15850:172;:::i;:::-;12429:25:168;;;:49;929:15850:172;12489:39:168;11458:21;12489:39;11104:1431;:::o;12163:133::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;12228:41:168;12213:72;-1:-1:-1;12228:41:168;-1:-1:-1;12213:72:168:o;12069:84::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;10658:22:168;12100:53;-1:-1:-1;10658:22:168;-1:-1:-1;;12100:53:168:o;11952:107::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;10793:25:168;12003:56;-1:-1:-1;10793:25:168;-1:-1:-1;;12003:56:168:o;11780:163::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;11891:25:168;11876:56;-1:-1:-1;11891:25:168;-1:-1:-1;;;11876:56:168:o;11784:76::-;11845:15;;;-1:-1:-1;11817:43:168;11784:76;;;11680:90;-1:-1:-1;11458:21:168;;-1:-1:-1;;;11724:30:168;11709:61;-1:-1:-1;11724:30:168;-1:-1:-1;;;11709:61:168:o;11500:80::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;9650:29:168;11520:60;-1:-1:-1;9650:29:168;-1:-1:-1;;;;11520:60:168:o;3860:1466::-;;;;4206:49;:30;:40;:30;;;;:::i;:49::-;929:15850:172;-1:-1:-1;;;;;;929:15850:172;;-1:-1:-1;;;4270:40:168;;;4266:106;;-1:-1:-1;;;;4386:41:168;;;4382:170;;-1:-1:-1;;;;11891:25:168;4565:36;;;4561:216;;-1:-1:-1;;;;10793:25:168;-1:-1:-1;;;4790:36:168;;;4786:168;;-1:-1:-1;;;;10658:22:168;-1:-1:-1;4967:33:168;;;4963:142;;-1:-1:-1;;;;12228:41:168;5118:52;;;-1:-1:-1;5114:186:168;;929:15850:172;;;;;:::i;5114:186:168:-;5193:96;5270:18;5193:96;5270:18;;929:15850:172;;;5193:96:168;;;;;;;;;;929:15850:172;;;;;;;;;;;;;;;4963:142:168;5078:15;;;;;929:15850:172;;;5023:71:168;;;;;;;;;;929:15850:172;;;;;;;;-1:-1:-1;929:15850:172;-1:-1:-1;5023:71:168;929:15850:172;;;;5023:71:168;929:15850:172;4786:168:168;929:15850:172;;;;-1:-1:-1;4849:94:168;;929:15850:172;-1:-1:-1;4849:94:168;;-1:-1:-1;;;;;;929:15850:172;;;4561:216:168;4728:24;;;;;;;4624:142;4728:24;;;4624:142;4728:24;;929:15850:172;;;;4624:142:168;;;;;;;;;;;:::i;4382:170::-;929:15850:172;;4450:91:168;;;;;;;-1:-1:-1;;;;;929:15850:172;;;4450:91:168;;;929:15850:172;;;;;;;;;;;;;;;-1:-1:-1;4450:91:168;;-1:-1:-1;929:15850:172;;-1:-1:-1;;929:15850:172;;;;-1:-1:-1;4450:91:168;929:15850:172;971:75:168;;;;;;;;;;;:::i;:::-;929:15850:172;;;;;;;;:::i;:::-;-1:-1:-1;;;;;929:15850:172;;;;;8028:240;;;929:15850;;;;;;8028:240;;;929:15850;;;;;;8028:240;;;929:15850;;;8028:240;;;929:15850;;;;8028:240;;929:15850;;;8028:240;;-1:-1:-1;8525:10:172;:26;;8521:108;;-1:-1:-1;929:15850:172;;8663:22;;-1:-1:-1;;;;;929:15850:172;8663:22;:::i;:::-;929:15850;;8696:60;;929:15850;-1:-1:-1;;;;;929:15850:172;8696:84;;;;;;929:15850;;-1:-1:-1;;;8696:84:172;;-1:-1:-1;;;;929:15850:172;;;;8696:84;;;;;;:::i;:::-;;;;;;;;;;;;971:75:168;8790:74:172;;;;;;929:15850;;-1:-1:-1;;;8790:74:172;;;929:15850;;8790:74;;;;;8696:84;8790:74;;;:::i;:::-;;;;;;;;;;;;971:75:168;929:15850:172;;;8878:20;8874:55;;8988:34;;;;929:15850;8988:34;;;;;9161:71;8028:240;9161:24;9114:32;8988:34;;;:::i;:::-;929:15850;;;;;;-1:-1:-1;;;;;929:15850:172;;;9161:24;-1:-1:-1;;;;;;;;;;;929:15850:172;9198:33;;-1:-1:-1;;;;;929:15850:172;;;9198:33;929:15850;;;;;;;;;;;9161:71;;8525:10;8696:84;9161:71;;;:::i;:::-;;;;;;;;;;;;;;971:75:168;9160:72:172;;9156:168;;929:15850;;;;;;;;9418:15;929:15850;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;8525:10;;9418:15;;:::i;:::-;929:15850;-1:-1:-1;;;;;929:15850:172;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;9445:322;;;;;929:15850;9445:322;929:15850;;;;;;;;;;;;;;;;9445:322;;8525:10;9445:322;8696:84;9445:322;;;:::i;:::-;;;;;;;;;929:15850;;;9783:228;9445:322;9783:228;9445:322;;;;;971:75:168;-1:-1:-1;929:15850:172;-1:-1:-1;;;;;929:15850:172;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;8525:10;;929:15850;;;;;;;;9783:228;;;;971:75:168:o;9445:322:172:-;;;;;;:::i;:::-;;;;;929:15850;;;9156:168;929:15850;;;;-1:-1:-1;;;9255:58:172;;929:15850;;;9255:58;;-1:-1:-1;;;;;929:15850:172;8525:10;8696:84;9255:58;;;:::i;9161:71::-;;;;8028:240;9161:71;;;;;;;;;:::i;:::-;;;;8874:55;929:15850;;-1:-1:-1;;;8907:22:172;;8696:84;;8907:22;8790:74;;;;;;:::i;:::-;;;;8696:84;;;;;;:::i;:::-;;;;8521:108;929:15850;;-1:-1:-1;;;8574:44:172;;-1:-1:-1;;;;;929:15850:172;;;;8574:44;;;929:15850;;;5809:91;929:15850;;;;;;;;;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10024:1216::-;929:15850;;-1:-1:-1;;;;;929:15850:172;;;;;10207:37;929:15850;;;;;;;10024:1216;10269:14;10207:77;10269:14;;;929:15850;;;;;;;;;;;;10207:77;10285:12;;;10207:91;10285:12;;;929:15850;;;;;;;;;;;;;;;;;;;;;;;;;;;;10207:91;10299:22;;;929:15850;;10299:22;;10207:115;;-1:-1:-1;;;;;929:15850:172;;;10207:115;10337:14;;;;929:15850;10337:19;;;10333:152;;10498:20;;;929:15850;10498:25;;;:68;;;10024:1216;10494:248;;-1:-1:-1;;929:15850:172;;;;-1:-1:-1;;;;;;929:15850:172;;;;-1:-1:-1;;;;;929:15850:172;;;;-1:-1:-1;;;;;929:15850:172;;;;;;10755:47;10751:148;;10912:11;;929:15850;10912:11;;929:15850;10927:12;;;;929:15850;;;10912:27;;;10908:80;;11002:15;;929:15850;11002:15;929:15850;;;11002:32;;;;10998:106;;929:15850;;;;11129:30;11186:47;929:15850;;;;11129:30;;:::i;:::-;929:15850;;11186:47;;:::i;10998:106::-;929:15850;-1:-1:-1;;;11043:61:172;;;;;929:15850;;;;;;;;;;;;;5809:91;10908:80;929:15850;;-1:-1:-1;;;10948:40:172;;;;;929:15850;;;;;;;;;;;;;5809:91;10751:148;10825:63;929:15850;;10793:25:168;;;;;;10825:63:172;;;;;;:::i;10494:248::-;10589:142;929:15850;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;-1:-1:-1;;;10589:142:172;;929:15850;;;10589:142;;;;:::i;10498:68::-;10551:15;;10527:39;;;10498:68;;10333:152;10379:95;929:15850;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;-1:-1:-1;;;10379:95:172;;-1:-1:-1;;;;;929:15850:172;;;10379:95;;;929:15850;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13699:1318:168;;;;13873:15;;;929:15850:172;;;13902:30:168;;;;13898:438;;14376:26;;;14962:48;14376:26;;929:15850:172;14438:22:168;14923:29;14846:49;14438:22;;;929:15850:172;14501:35:168;14748:70;14675:30;14576:32;14501:35;;;;;:::i;:::-;14576:32;:::i;:::-;14675:30;;929:15850:172;;;14653:52:168;;;;;:::i;:::-;14748:70;;:::i;:::-;14846:49;:::i;:::-;14923:29;;;;:::i;:::-;929:15850:172;;14962:48:168;:::i;:::-;929:15850:172;;13699:1318:168:o;13898:438::-;13965:30;;;;;14269:21;13965:30;;;929:15850:172;;;;;;;;;;;;;;;14016:22:168;14059:12;;;;;929:15850:172;14059:12:168;;929:15850:172;;14128:22:168;929:15850:172;14128:22:168;;929:15850:172;;14222:26:168;;;;929:15850:172;14269:21:168;929:15850:172;14304:21:168;:::o;929:15850:172:-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;929:15850:172;;;;;;;;;;;;-1:-1:-1;;;929:15850:172;;;;;;;1667:4213:121;;;-1:-1:-1;;1667:4213:121;;2239:166;;;;;;;;;;;;;;;;2486:10;;2482:368;;2960:19;;;2952:53;2960:19;;;2952:53;:::i;:::-;3292:300;3944:1;3929:12;;929:15850:172;3914:32:121;;3960:371;;;4774:1;929:15850:172;;4755:1:121;929:15850:172;4754:21:121;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3960:371:121;3944:1;3960:371;;929:15850:172;3960:371:121;;;3292:300;;;;;;929:15850:172;3292:300:121;;3960:371;4397:21;929:15850:172;1667:4213:121;:::o;2482:368::-;2816:19;;;;;;;:::i;11246:1074:172:-;929:15850;;;-1:-1:-1;;;11517:36:172;;;11246:1074;;11517:36;;11246:1074;;;;;;929:15850;-1:-1:-1;;;;;929:15850:172;;;11517:36;;;929:15850;;11517:36;11246:1074;;11517:36;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;11517:36:172;;;11246:1074;11567:29;;;;11563:158;;929:15850;;;;;;;;11759:35;929:15850;;11759:35;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;11759:35:172;;;11246:1074;-1:-1:-1;;;;;;;;;;;;929:15850:172;11805:74;;-1:-1:-1;;;;;929:15850:172;;;11805:74;:132;;;;;929:15850;;-1:-1:-1;;;11805:132:172;;-1:-1:-1;;;;;929:15850:172;;;11805:132;;;929:15850;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;;-1:-1:-1;;929:15850:172;;;;11805:132;;;;;;;;;;11246:1074;929:15850;;;;;11977:36;929:15850;;11977:36;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;11977:36:172;;;11246:1074;929:15850;12051:35;929:15850;;12051:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;12051:35:172;;;11246:1074;12122:29;;;;;;:::i;:::-;12100:51;;;;:104;;;11246:1074;12096:218;;;;;11246:1074;;;;;;;:::o;12096:218::-;929:15850;-1:-1:-1;;;12227:76:172;;929:15850;-1:-1:-1;929:15850:172;;12227:76;;;;;:::i;12100:104::-;12176:28;;;;;:::i;:::-;12155:49;;12100:104;;;;;12051:35;12122:29;12051:35;;;;;;;;;;-1:-1:-1;12051:35:172;;;;;;:::i;:::-;;;;;11977:36;;;;;;;;;;;;;;;:::i;:::-;;;;;11805:132;;;;;;:::i;:::-;;;;11759:35;;;;;;;;;;;;;;;:::i;:::-;;;;;11563:158;929:15850;11619:91;929:15850;;;;;;;5809:91;;;;;;11619;;;;;:::i;11517:36::-;;;;;;;;;;;;;;:::i;:::-;;;;929:15850;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;12326:2208::-;929:15850;;12326:2208;;929:15850;;12326:2208;-1:-1:-1;;;;;929:15850:172;;;12326:2208;;12676:31;12690:16;929:15850;12690:16;:::i;:::-;12676:31;:::i;:::-;12766:16;12752:31;12766:16;;;:::i;12752:31::-;12799:13;;12811:1;12814:16;;;;;;929:15850;;;;;;;;;13227:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;12811:1;13227:56;;;;;;;12811:1;13227:56;;;12794:381;13298:13;12811:1;13313:16;;;;;;-1:-1:-1;;;;;;;;;;;;929:15850:172;13736:79;;-1:-1:-1;;;;;929:15850:172;;;13736:79;:139;;;;;;12811:1;929:15850;;;;;;;;13736:139;929:15850;;;;;;;;;;;;;;;13736:139;;;;;:::i;:::-;;;;;;;;;;12811:1;13736:139;;;;;13293:433;929:15850;13927:56;929:15850;;13927:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;;12811:1;13927:56;;;13293:433;13998:13;12811:1;14013:16;;;;;;12326:2208;;;;;;;;;;;:::o;13998:13::-;14069:5;;;:::i;:::-;14109:35;;;;:::i;:::-;929:15850;14148:50;:36;;;;:::i;:::-;929:15850;14187:11;;;;:::i;:::-;929:15850;14148:50;;:::i;:::-;14109:89;;;;:210;;;13998:13;14088:370;;;929:15850;;13998:13;;14088:370;14359:84;14400:12;;;;;;;;;14431:11;14400:12;;:::i;14431:11::-;929:15850;;;-1:-1:-1;;;14359:84:172;;929:15850;;;14359:84;;;:::i;14109:210::-;14244:16;;14265:54;:40;14288:16;14222:39;14244:16;;;:::i;:::-;14222:39;;:::i;:::-;929:15850;14288:16;;:::i;:::-;14265:40;;:::i;:::-;929:15850;14308:11;;;;:::i;:::-;929:15850;14265:54;;:::i;:::-;14222:97;;14109:210;;;13927:56;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;13736:139;;;;;;:::i;:::-;;;;13298:13;13375:5;;;:::i;:::-;13398:42;;;;:::i;:::-;929:15850;13443:11;;;;:::i;:::-;929:15850;-1:-1:-1;13394:262:172;;929:15850;;;13298:13;;13394:262;13554:12;;;;;13481:160;13554:12;;;13581:42;13554:12;;;;;13568:11;13554:12;;:::i;:::-;929:15850;13568:11;;:::i;:::-;929:15850;13581:42;;:::i;:::-;929:15850;;;-1:-1:-1;;;13481:160:172;;929:15850;;;13481:160;;;:::i;13227:56::-;;;;;;;;;;;;;:::i;:::-;;;;;12799:13;929:15850;12870:5;;;;;;:::i;:::-;12889:39;;;;;;:::i;:::-;-1:-1:-1;;;;;929:15850:172;;;;;;12889:39;12942:42;12958:16;12942:42;12958:16;;;:::i;:::-;12942:42;;:::i;:::-;13030:12;;;;:::i;:::-;929:15850;12998:44;;;;:::i;:::-;929:15850;13056:48;13072:16;13092:12;;;;:::i;:::-;929:15850;13072:16;;:::i;:::-;13056:48;;:::i;:::-;929:15850;;12799:13;;;;;929:15850;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;14540:731::-;;;929:15850;;;;;;;;14822:42;929:15850;;14822:42;;:::i;:::-;929:15850;;;;;;;14912:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;14540:731;14973:71;;;;;;929:15850;;-1:-1:-1;;;14973:71:172;;929:15850;14973:71;929:15850;;14973:71;;;;14912:50;14973:71;;;:::i;:::-;;;;;;;;;;;;15092:50;14973:71;;;;;;;14540:731;929:15850;;;15092:50;;;;;;;;;14912;15092;;;:::i;:::-;;;;;;;;;;;15246:17;15092:50;;;;14540:731;15246:17;;;:::i;15092:50::-;;;;;;;;;;;;;;:::i;:::-;;;;;;14973:71;;;;;;:::i;:::-;;;;;929:15850;;;14912:50;;;;;;;;;;;;;;:::i;:::-;;;;;15277:311;;;15409:22;;;:::i;:::-;15446:13;15458:1;15461:11;;;;;;15277:311;;;:::o;15446:13::-;15489:22;;929:15850;15489:22;;;:::i;:::-;929:15850;;;;;;;;;;15446:13;;15594:597;;;;;;15897:1;15885:13;929:15850;;15900:20;;;;;15941:21;;;;:::i;:::-;929:15850;15966:22;;;;:::i;:::-;929:15850;15991:11;;;;;:::i;:::-;929:15850;;;;;;;;15941:61;15937:178;;929:15850;;15885:13;;15937:178;16066:12;16029:71;16066:12;16088:11;16066:12;;;;;;:::i;16088:11::-;929:15850;;;;16029:71;;;;;;;;;;;;:::i;15900:20::-;;;;;;;;;15594:597::o;16197:288::-;16305:16;;;:::i;:::-;16349:1;16352:20;;;;;;16197:288;;;:::o;16374:3::-;-1:-1:-1;;929:15850:172;;;;;;;;16447:20;16421:16;16374:3;16421:16;;;;:::i;:::-;929:15850;16447:12;;;;;:::i;:::-;929:15850;16447:20;;;:::i;:::-;16374:3;:::i;:::-;16337:13;;6683:202:171;6756:12;;6752:37;;1032:2;6803:24;;6799:79;;6683:202;:::o;6799:79::-;929:15850:172;;;;6836:42:171;;;;;;;;;929:15850:172;1032:2:171;929:15850:172;;;;6836:42:171;6752:37;929:15850:172;;-1:-1:-1;;;6777:12:171;;;;;7108:254;;;7230:28;;;;7226:130;;7108:254;;;:::o;7226:130::-;929:15850:172;;;;;7281:64:171;;;;;;;;;929:15850:172;;;;;;;;;7281:64:171;16491:286:172;16597:16;;;:::i;:::-;16641:1;16644:20;;;;;;16491:286;;;:::o;16666:3::-;-1:-1:-1;;929:15850:172;;;;;;;;16739:20;16713:16;16666:3;16713:16;;;;:::i;:::-;929:15850;16739:12;;;;;:::i;16666:3::-;16629:13;","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":392,"length":20},{"start":452,"length":20},{"start":537,"length":20},{"start":600,"length":20},{"start":920,"length":20},{"start":988,"length":20},{"start":7886,"length":20},{"start":7945,"length":20},{"start":8189,"length":20},{"start":8251,"length":20},{"start":8415,"length":20},{"start":8483,"length":20},{"start":10759,"length":20}]}},"immutableReferences":{"67918":[{"start":3129,"length":32}]}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","MAX_CHECKOUT_SIZE()":"a3eaf4d9","acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":"b8e6b50f","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CHECKOUT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"acceptOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Direct calls revert because this contract has no standalone marketplace state or escrow. It must run through `RareERC1155Marketplace` so `address(this)`, `msg.sender`, `msg.value`, and storage all resolve to the marketplace proxy.\",\"kind\":\"dev\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert.\"}},\"title\":\"RareERC1155TradeExecutionModule\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Accepts all or part of an ERC1155 token offer.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales.\"}},\"notice\":\"Delegatecall-only direct trade execution module for the ERC1155 marketplace.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155TradeExecutionModule.sol\":\"RareERC1155TradeExecutionModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4\",\"dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9\",\"dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN\"]},\"src/marketplace/IRareERC1155TradeExecutionModule.sol\":{\"keccak256\":\"0xeac5a1dcc35c87ba1867c2754e12ab54dfb00112f0392d0be073b3a381df8fb1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f74c949b2d3b3f4f01ce37e1990370a476ea7b7fb1692b5ac96606c0303dd89\",\"dweb:/ipfs/QmbsX9rW7r8trT2jRhF34LkwNPwqNQZMv32WwoBswNVTFH\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155ExecutionModuleBase.sol\":{\"keccak256\":\"0x7ef2133c307dde9b4de4470cc9f410496fec223376d9b3ebf44d61b1d51d7862\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d30a82a811e717056e78d14a85eb242353bfac401046d76c41b090cebb28a3d1\",\"dweb:/ipfs/QmZMSNTSh62mDm8Q7AYyRYhJiiPFpmjftktyVSzXnjrKgp\"]},\"src/marketplace/RareERC1155MarketplacePayments.sol\":{\"keccak256\":\"0x063bfec0e8cf831a2abf94595c25714fb5daddc26263960f38d9e4951772332c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1580164159928504b7b8ef73fab3a4d70d6771f8ed85ebdd41d5a9c602104099\",\"dweb:/ipfs/QmQRVWPsWmDAkNRrECPNrGkejwZJ1QspPcfXbJ673bcyhG\"]},\"src/marketplace/RareERC1155MarketplaceStorage.sol\":{\"keccak256\":\"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a\",\"dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV\"]},\"src/marketplace/RareERC1155TradeExecutionModule.sol\":{\"keccak256\":\"0x6d7912414d812a640e1747e6b2a4f700f1f011de8fb01a4999e8513dc2406691\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c178a735ce176ba1376ee9c184ac779ab1fd2062fbdb860bc8be8d58d4914d6c\",\"dweb:/ipfs/QmUj1nW1SjZQ2EXPedEgt1NCqefFSmneL9PZicUAHTD95S\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89\",\"dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CHECKOUT_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"acceptOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"}],"devdoc":{"kind":"dev","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"notice":"Accepts all or part of an ERC1155 token offer."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155TradeExecutionModule.sol":"RareERC1155TradeExecutionModule"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858","urls":["bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4","dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9","urls":["bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9","dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN"],"license":"MIT"},"src/marketplace/IRareERC1155TradeExecutionModule.sol":{"keccak256":"0xeac5a1dcc35c87ba1867c2754e12ab54dfb00112f0392d0be073b3a381df8fb1","urls":["bzz-raw://9f74c949b2d3b3f4f01ce37e1990370a476ea7b7fb1692b5ac96606c0303dd89","dweb:/ipfs/QmbsX9rW7r8trT2jRhF34LkwNPwqNQZMv32WwoBswNVTFH"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155ExecutionModuleBase.sol":{"keccak256":"0x7ef2133c307dde9b4de4470cc9f410496fec223376d9b3ebf44d61b1d51d7862","urls":["bzz-raw://d30a82a811e717056e78d14a85eb242353bfac401046d76c41b090cebb28a3d1","dweb:/ipfs/QmZMSNTSh62mDm8Q7AYyRYhJiiPFpmjftktyVSzXnjrKgp"],"license":"MIT"},"src/marketplace/RareERC1155MarketplacePayments.sol":{"keccak256":"0x063bfec0e8cf831a2abf94595c25714fb5daddc26263960f38d9e4951772332c","urls":["bzz-raw://1580164159928504b7b8ef73fab3a4d70d6771f8ed85ebdd41d5a9c602104099","dweb:/ipfs/QmQRVWPsWmDAkNRrECPNrGkejwZJ1QspPcfXbJ673bcyhG"],"license":"MIT"},"src/marketplace/RareERC1155MarketplaceStorage.sol":{"keccak256":"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1","urls":["bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a","dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV"],"license":"MIT"},"src/marketplace/RareERC1155TradeExecutionModule.sol":{"keccak256":"0x6d7912414d812a640e1747e6b2a4f700f1f011de8fb01a4999e8513dc2406691","urls":["bzz-raw://c178a735ce176ba1376ee9c184ac779ab1fd2062fbdb860bc8be8d58d4914d6c","dweb:/ipfs/QmUj1nW1SjZQ2EXPedEgt1NCqefFSmneL9PZicUAHTD95S"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd","urls":["bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89","dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":172} \ No newline at end of file diff --git a/script/NetworkConfig.s.sol b/script/NetworkConfig.s.sol index 31745c7..3939f42 100644 --- a/script/NetworkConfig.s.sol +++ b/script/NetworkConfig.s.sol @@ -63,7 +63,8 @@ library NetworkConfig { address erc20ApprovalManager; address erc721ApprovalManager; address erc1155ApprovalManager; - address rareErc1155Settlement; + address rareErc1155TradeExecutionModule; + address rareErc1155CheckoutExecutionModule; address rareErc1155MarketplaceImplementation; address rareErc1155MarketplaceProxy; address rareErc1155ContractFactory; @@ -220,13 +221,14 @@ library NetworkConfig { config.erc20ApprovalManager = _addr(0x4619eB29e84392CE91C27FC936A5c94d1D14b93f); config.erc721ApprovalManager = _addr(0x5fa0a461d3a2Ea3bFDf03e8BD37CAbB4ae84205E); config.erc1155ApprovalManager = _addr(0x6Fe80fd6Dba387D757729853d20B5E3fb77dF6f6); - config.rareErc1155Settlement = _addr(0xACF9874d609B63dEFd9e76f7AAAfe64917F35591); - config.rareErc1155MarketplaceImplementation = _addr(0xD828415C588503B60CcE4d2d20838DbD01c0DbAE); - config.rareErc1155MarketplaceProxy = _addr(0x92f80E8ED2D6ec5501069739Fb26405a31833a0b); - config.rareErc1155ContractFactory = _addr(0xEa895C8D6C53AEe862Dbb65EE04Af80781B53a85); - config.rareErc1155Implementation = _addr(0xbd4F2218bd8fF4A00a615547a338aBFda9cd2528); + config.rareErc1155TradeExecutionModule = _addr(0xC0E10eB14a6049ff7c2526F328850A9692c1780C); + config.rareErc1155CheckoutExecutionModule = _addr(0x32bfa0038618B9b182e0E468cAe8eAE45D5e77A5); + config.rareErc1155MarketplaceImplementation = _addr(0x396edB49c290e159168d8d4d1262D3DC8027213a); + config.rareErc1155MarketplaceProxy = _addr(0x8416851Cc48901E5dDfC7A75Faf015F06C166d51); + config.rareErc1155ContractFactory = _addr(0x1c6468dBf0BD8C56226cD4ADa70850bB5329FF18); + config.rareErc1155Implementation = _addr(0xC46c6e978E504AFe258E7Dec26cf84145157BA70); config.rareErc1155ContractFactoryOwner = _addr(0x3B9C3C5EA16E7d3c9C0bb293a549aFa4066dc162); - config.rareErc1155ContractFactoryDefaultMinter = _addr(0x92f80E8ED2D6ec5501069739Fb26405a31833a0b); + config.rareErc1155ContractFactoryDefaultMinter = _addr(0x8416851Cc48901E5dDfC7A75Faf015F06C166d51); config.approvalManagerAdmin = _addr(0x3B9C3C5EA16E7d3c9C0bb293a549aFa4066dc162); config.rareBatchAuctionHouseProxy = _addr(0x293AE7701A7830B1d38A7608EdF86A106d9E2645); config.rareBatchAuctionHouseLogic = _addr(0xc0D9CB069d7CfFb963A1527968bF28370A978BB6); diff --git a/script/marketplace/RareERC1155CheckoutExecutionModuleUpdate.s.sol b/script/marketplace/RareERC1155CheckoutExecutionModuleUpdate.s.sol new file mode 100644 index 0000000..4f75f30 --- /dev/null +++ b/script/marketplace/RareERC1155CheckoutExecutionModuleUpdate.s.sol @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {console} from "forge-std/Script.sol"; + +import {RareERC1155CheckoutExecutionModule} from "../../src/marketplace/RareERC1155CheckoutExecutionModule.sol"; +import {RareERC1155Marketplace} from "../../src/marketplace/RareERC1155Marketplace.sol"; +import {RareERC1155ExecutionModuleScriptGuard} from "./RareERC1155ExecutionModuleScriptGuard.s.sol"; + +/// @title RareERC1155CheckoutExecutionModuleUpdate +/// @notice Deploys a new checkout execution module and points an existing marketplace proxy at it. +contract RareERC1155CheckoutExecutionModuleUpdate is RareERC1155ExecutionModuleScriptGuard { + function run() external { + vm.startBroadcast(vm.envUint("PRIVATE_KEY")); + + address marketplaceProxy = vm.envAddress("RARE_ERC1155_MARKETPLACE"); + RareERC1155CheckoutExecutionModule checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); + _validateExecutionModuleForScript(address(checkoutExecutionModule)); + + RareERC1155Marketplace(marketplaceProxy).setCheckoutExecutionModule(address(checkoutExecutionModule)); + + console.log("RareERC1155CheckoutExecutionModule deployed at:", address(checkoutExecutionModule)); + console.log("RareERC1155Marketplace proxy updated at:", marketplaceProxy); + + vm.stopBroadcast(); + } +} diff --git a/script/marketplace/RareERC1155ExecutionModuleScriptGuard.s.sol b/script/marketplace/RareERC1155ExecutionModuleScriptGuard.s.sol new file mode 100644 index 0000000..a5f3ce0 --- /dev/null +++ b/script/marketplace/RareERC1155ExecutionModuleScriptGuard.s.sol @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {Script} from "forge-std/Script.sol"; + +/// @notice Shared safety checks for scripts that configure ERC1155 marketplace execution modules. +abstract contract RareERC1155ExecutionModuleScriptGuard is Script { + bytes32 private constant ERC1967_IMPLEMENTATION_SLOT = + 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; + bytes32 private constant ERC1967_BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50; + bytes32 private constant ERC1967_ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103; + + error ExecutionModuleHasNoCode(address _module); + error ExecutionModuleCannotBeUpgradeableProxy(address _module, bytes32 _slot, bytes32 _value); + + function _validateExecutionModuleForScript(address _module) internal view { + if (_module.code.length == 0) revert ExecutionModuleHasNoCode(_module); + _revertIfSlotSet(_module, ERC1967_IMPLEMENTATION_SLOT); + _revertIfSlotSet(_module, ERC1967_BEACON_SLOT); + _revertIfSlotSet(_module, ERC1967_ADMIN_SLOT); + } + + function _revertIfSlotSet(address _module, bytes32 _slot) private view { + bytes32 slotValue = vm.load(_module, _slot); + if (slotValue != bytes32(0)) { + revert ExecutionModuleCannotBeUpgradeableProxy(_module, _slot, slotValue); + } + } +} diff --git a/script/marketplace/RareERC1155MarketplaceDeploy.s.sol b/script/marketplace/RareERC1155MarketplaceDeploy.s.sol index 00533c4..b16a015 100644 --- a/script/marketplace/RareERC1155MarketplaceDeploy.s.sol +++ b/script/marketplace/RareERC1155MarketplaceDeploy.s.sol @@ -6,15 +6,18 @@ import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.so import {ERC20ApprovalManager} from "../../src/v2/approver/ERC20/ERC20ApprovalManager.sol"; import {ERC1155ApprovalManager} from "../../src/v2/approver/ERC1155/ERC1155ApprovalManager.sol"; +import {RareERC1155CheckoutExecutionModule} from "../../src/marketplace/RareERC1155CheckoutExecutionModule.sol"; import {RareERC1155Marketplace} from "../../src/marketplace/RareERC1155Marketplace.sol"; -import {RareERC1155Settlement} from "../../src/marketplace/RareERC1155Settlement.sol"; -import {RareERC1155SettlementScriptGuard} from "./RareERC1155SettlementScriptGuard.s.sol"; +import {RareERC1155TradeExecutionModule} from "../../src/marketplace/RareERC1155TradeExecutionModule.sol"; +import {RareERC1155ExecutionModuleScriptGuard} from "./RareERC1155ExecutionModuleScriptGuard.s.sol"; import {NetworkConfig} from "../NetworkConfig.s.sol"; /// @title RareERC1155MarketplaceDeploy -/// @notice Deploys the ERC1155 marketplace implementation, settlement module, and ERC1967 marketplace proxy. -contract RareERC1155MarketplaceDeploy is RareERC1155SettlementScriptGuard { +/// @notice Deploys the ERC1155 marketplace implementation, execution modules, and ERC1967 marketplace proxy. +contract RareERC1155MarketplaceDeploy is RareERC1155ExecutionModuleScriptGuard { error NetworkAddressNotConfigured(string name, uint256 chainId); + error ApprovalManagerOperatorGrantUnauthorized(string name, address manager, address deployer, address operator); + error ApprovalManagerOperatorRoleMissing(string name, address manager, address operator); function run() external { uint256 privateKey = vm.envUint("PRIVATE_KEY"); @@ -35,8 +38,10 @@ contract RareERC1155MarketplaceDeploy is RareERC1155SettlementScriptGuard { address erc721ApprovalManager = _required(config.erc721ApprovalManager, "erc721ApprovalManager"); address erc1155ApprovalManager = _required(config.erc1155ApprovalManager, "erc1155ApprovalManager"); - RareERC1155Settlement settlement = new RareERC1155Settlement(); - _validateSettlementModuleForScript(address(settlement)); + RareERC1155TradeExecutionModule tradeExecutionModule = new RareERC1155TradeExecutionModule(); + _validateExecutionModuleForScript(address(tradeExecutionModule)); + RareERC1155CheckoutExecutionModule checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); + _validateExecutionModuleForScript(address(checkoutExecutionModule)); RareERC1155Marketplace marketplaceImplementation = new RareERC1155Marketplace(); bytes memory initData = abi.encodeWithSelector( @@ -52,13 +57,14 @@ contract RareERC1155MarketplaceDeploy is RareERC1155SettlementScriptGuard { erc20ApprovalManager, erc721ApprovalManager, erc1155ApprovalManager, - address(settlement) + address(tradeExecutionModule), + address(checkoutExecutionModule) ); ERC1967Proxy marketplaceProxy = new ERC1967Proxy(address(marketplaceImplementation), initData); - _grantErc20OperatorIfAuthorized(erc20ApprovalManager, address(marketplaceProxy), deployer); - _grantErc1155OperatorIfAuthorized(erc1155ApprovalManager, address(marketplaceProxy), deployer); + _grantErc20OperatorOrRevert(erc20ApprovalManager, address(marketplaceProxy), deployer); + _grantErc1155OperatorOrRevert(erc1155ApprovalManager, address(marketplaceProxy), deployer); console.log("Network:", NetworkConfig.chainName(block.chainid)); console.log("Chain ID:", block.chainid); @@ -73,7 +79,8 @@ contract RareERC1155MarketplaceDeploy is RareERC1155SettlementScriptGuard { console.log("ERC20ApprovalManager:", erc20ApprovalManager); console.log("ERC721ApprovalManager:", erc721ApprovalManager); console.log("ERC1155ApprovalManager:", erc1155ApprovalManager); - console.log("RareERC1155Settlement deployed at:", address(settlement)); + console.log("RareERC1155TradeExecutionModule deployed at:", address(tradeExecutionModule)); + console.log("RareERC1155CheckoutExecutionModule deployed at:", address(checkoutExecutionModule)); console.log("RareERC1155Marketplace implementation deployed at:", address(marketplaceImplementation)); console.log("RareERC1155Marketplace proxy deployed at:", address(marketplaceProxy)); @@ -85,7 +92,7 @@ contract RareERC1155MarketplaceDeploy is RareERC1155SettlementScriptGuard { return value; } - function _grantErc20OperatorIfAuthorized(address manager, address operator, address deployer) private { + function _grantErc20OperatorOrRevert(address manager, address operator, address deployer) private { ERC20ApprovalManager approvalManager = ERC20ApprovalManager(manager); bytes32 operatorRole = approvalManager.OPERATOR_ROLE(); if (approvalManager.hasRole(operatorRole, operator)) { @@ -94,17 +101,17 @@ contract RareERC1155MarketplaceDeploy is RareERC1155SettlementScriptGuard { } if (!approvalManager.hasRole(approvalManager.MANAGER_ROLE(), deployer)) { - console.log("ERC20ApprovalManager operator role not granted; deployer lacks MANAGER_ROLE"); - console.log("ERC20ApprovalManager:", manager); - console.log("Missing operator:", operator); - return; + revert ApprovalManagerOperatorGrantUnauthorized("ERC20ApprovalManager", manager, deployer, operator); } approvalManager.grantOperatorRole(operator); + if (!approvalManager.hasRole(operatorRole, operator)) { + revert ApprovalManagerOperatorRoleMissing("ERC20ApprovalManager", manager, operator); + } console.log("ERC20ApprovalManager operator role granted:", operator); } - function _grantErc1155OperatorIfAuthorized(address manager, address operator, address deployer) private { + function _grantErc1155OperatorOrRevert(address manager, address operator, address deployer) private { ERC1155ApprovalManager approvalManager = ERC1155ApprovalManager(manager); bytes32 operatorRole = approvalManager.OPERATOR_ROLE(); if (approvalManager.hasRole(operatorRole, operator)) { @@ -113,13 +120,13 @@ contract RareERC1155MarketplaceDeploy is RareERC1155SettlementScriptGuard { } if (!approvalManager.hasRole(approvalManager.MANAGER_ROLE(), deployer)) { - console.log("ERC1155ApprovalManager operator role not granted; deployer lacks MANAGER_ROLE"); - console.log("ERC1155ApprovalManager:", manager); - console.log("Missing operator:", operator); - return; + revert ApprovalManagerOperatorGrantUnauthorized("ERC1155ApprovalManager", manager, deployer, operator); } approvalManager.grantOperatorRole(operator); + if (!approvalManager.hasRole(operatorRole, operator)) { + revert ApprovalManagerOperatorRoleMissing("ERC1155ApprovalManager", manager, operator); + } console.log("ERC1155ApprovalManager operator role granted:", operator); } } diff --git a/script/marketplace/RareERC1155SettlementScriptGuard.s.sol b/script/marketplace/RareERC1155SettlementScriptGuard.s.sol deleted file mode 100644 index e796a0c..0000000 --- a/script/marketplace/RareERC1155SettlementScriptGuard.s.sol +++ /dev/null @@ -1,29 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {Script} from "forge-std/Script.sol"; - -/// @notice Shared safety checks for scripts that configure the ERC1155 marketplace settlement module. -abstract contract RareERC1155SettlementScriptGuard is Script { - bytes32 private constant ERC1967_IMPLEMENTATION_SLOT = - 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; - bytes32 private constant ERC1967_BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50; - bytes32 private constant ERC1967_ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103; - - error SettlementHasNoCode(address _settlement); - error SettlementCannotBeUpgradeableProxy(address _settlement, bytes32 _slot, bytes32 _value); - - function _validateSettlementModuleForScript(address _settlement) internal view { - if (_settlement.code.length == 0) revert SettlementHasNoCode(_settlement); - _revertIfSlotSet(_settlement, ERC1967_IMPLEMENTATION_SLOT); - _revertIfSlotSet(_settlement, ERC1967_BEACON_SLOT); - _revertIfSlotSet(_settlement, ERC1967_ADMIN_SLOT); - } - - function _revertIfSlotSet(address _settlement, bytes32 _slot) private view { - bytes32 slotValue = vm.load(_settlement, _slot); - if (slotValue != bytes32(0)) { - revert SettlementCannotBeUpgradeableProxy(_settlement, _slot, slotValue); - } - } -} diff --git a/script/marketplace/RareERC1155SettlementUpdate.s.sol b/script/marketplace/RareERC1155SettlementUpdate.s.sol deleted file mode 100644 index f672d54..0000000 --- a/script/marketplace/RareERC1155SettlementUpdate.s.sol +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import {console} from "forge-std/Script.sol"; - -import {RareERC1155Marketplace} from "../../src/marketplace/RareERC1155Marketplace.sol"; -import {RareERC1155Settlement} from "../../src/marketplace/RareERC1155Settlement.sol"; -import {RareERC1155SettlementScriptGuard} from "./RareERC1155SettlementScriptGuard.s.sol"; - -/// @title RareERC1155SettlementUpdate -/// @notice Deploys a new settlement module and points an existing marketplace proxy at it. -contract RareERC1155SettlementUpdate is RareERC1155SettlementScriptGuard { - function run() external { - vm.startBroadcast(vm.envUint("PRIVATE_KEY")); - - address marketplaceProxy = vm.envAddress("RARE_ERC1155_MARKETPLACE"); - RareERC1155Settlement settlement = new RareERC1155Settlement(); - _validateSettlementModuleForScript(address(settlement)); - - RareERC1155Marketplace(marketplaceProxy).setSettlement(address(settlement)); - - console.log("RareERC1155Settlement deployed at:", address(settlement)); - console.log("RareERC1155Marketplace proxy updated at:", marketplaceProxy); - - vm.stopBroadcast(); - } -} diff --git a/script/marketplace/RareERC1155TradeExecutionModuleUpdate.s.sol b/script/marketplace/RareERC1155TradeExecutionModuleUpdate.s.sol new file mode 100644 index 0000000..22382fc --- /dev/null +++ b/script/marketplace/RareERC1155TradeExecutionModuleUpdate.s.sol @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {console} from "forge-std/Script.sol"; + +import {RareERC1155Marketplace} from "../../src/marketplace/RareERC1155Marketplace.sol"; +import {RareERC1155TradeExecutionModule} from "../../src/marketplace/RareERC1155TradeExecutionModule.sol"; +import {RareERC1155ExecutionModuleScriptGuard} from "./RareERC1155ExecutionModuleScriptGuard.s.sol"; + +/// @title RareERC1155TradeExecutionModuleUpdate +/// @notice Deploys a new trade execution module and points an existing marketplace proxy at it. +contract RareERC1155TradeExecutionModuleUpdate is RareERC1155ExecutionModuleScriptGuard { + function run() external { + vm.startBroadcast(vm.envUint("PRIVATE_KEY")); + + address marketplaceProxy = vm.envAddress("RARE_ERC1155_MARKETPLACE"); + RareERC1155TradeExecutionModule tradeExecutionModule = new RareERC1155TradeExecutionModule(); + _validateExecutionModuleForScript(address(tradeExecutionModule)); + + RareERC1155Marketplace(marketplaceProxy).setTradeExecutionModule(address(tradeExecutionModule)); + + console.log("RareERC1155TradeExecutionModule deployed at:", address(tradeExecutionModule)); + console.log("RareERC1155Marketplace proxy updated at:", marketplaceProxy); + + vm.stopBroadcast(); + } +} diff --git a/script/marketplace/check-erc1155-storage-layout.sh b/script/marketplace/check-erc1155-storage-layout.sh new file mode 100755 index 0000000..e230d59 --- /dev/null +++ b/script/marketplace/check-erc1155-storage-layout.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +set -euo pipefail + +build_log="$(mktemp)" +trap 'rm -f "$build_log"' EXIT + +if ! forge build --extra-output storageLayout --skip test --skip script >"$build_log" 2>&1; then + cat "$build_log" >&2 + exit 1 +fi + +check_storage_less_module() { + local contract="$1" + local layout + layout="$(forge inspect "$contract" storage-layout --json | tr -d '[:space:]')" + + if [[ "$layout" != '{"storage":[],"types":{}}' ]]; then + echo "$contract must remain storage-less except for immutables." >&2 + forge inspect "$contract" storage-layout --json >&2 + exit 1 + fi +} + +marketplace_layout="$(forge inspect RareERC1155Marketplace storage-layout --json)" +unexpected_marketplace_labels="$( + printf "%s\n" "$marketplace_layout" \ + | sed '/"types"/,$d' \ + | grep '"label"' \ + | grep -Ev '"label": "(_initialized|_initializing|_owner|_status|__gap)"' \ + || true +)" + +if [[ -n "$unexpected_marketplace_labels" ]]; then + echo "RareERC1155Marketplace has unexpected non-namespaced storage labels:" >&2 + printf "%s\n" "$unexpected_marketplace_labels" >&2 + exit 1 +fi + +check_storage_less_module RareERC1155TradeExecutionModule +check_storage_less_module RareERC1155CheckoutExecutionModule + +echo "ERC1155 marketplace storage layout guard passed." diff --git a/script/token/ERC1155/RareERC1155SystemDeploy.s.sol b/script/token/ERC1155/RareERC1155SystemDeploy.s.sol index a83522a..2eaf80c 100644 --- a/script/token/ERC1155/RareERC1155SystemDeploy.s.sol +++ b/script/token/ERC1155/RareERC1155SystemDeploy.s.sol @@ -4,19 +4,22 @@ pragma solidity ^0.8.0; import {console} from "forge-std/Script.sol"; import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import {RareERC1155CheckoutExecutionModule} from "../../../src/marketplace/RareERC1155CheckoutExecutionModule.sol"; import {RareERC1155Marketplace} from "../../../src/marketplace/RareERC1155Marketplace.sol"; -import {RareERC1155Settlement} from "../../../src/marketplace/RareERC1155Settlement.sol"; +import {RareERC1155TradeExecutionModule} from "../../../src/marketplace/RareERC1155TradeExecutionModule.sol"; import {ERC20ApprovalManager} from "../../../src/v2/approver/ERC20/ERC20ApprovalManager.sol"; import {ERC1155ApprovalManager} from "../../../src/v2/approver/ERC1155/ERC1155ApprovalManager.sol"; import {RareERC1155ContractFactory} from "../../../src/token/ERC1155/RareERC1155ContractFactory.sol"; -import {RareERC1155SettlementScriptGuard} from "../../marketplace/RareERC1155SettlementScriptGuard.s.sol"; +import {RareERC1155ExecutionModuleScriptGuard} from "../../marketplace/RareERC1155ExecutionModuleScriptGuard.s.sol"; import {NetworkConfig} from "../../NetworkConfig.s.sol"; /// @title RareERC1155SystemDeploy -/// @notice Deploys and wires the ERC1155 marketplace, approval managers, settlement module, and collection factory. +/// @notice Deploys and wires the ERC1155 marketplace, approval managers, execution modules, and collection factory. /// @dev Shared marketplace dependency addresses are selected from NetworkConfig using block.chainid. -contract RareERC1155SystemDeploy is RareERC1155SettlementScriptGuard { +contract RareERC1155SystemDeploy is RareERC1155ExecutionModuleScriptGuard { error NetworkAddressNotConfigured(string name, uint256 chainId); + error ApprovalManagerOperatorGrantUnauthorized(string name, address manager, address deployer, address operator); + error ApprovalManagerOperatorRoleMissing(string name, address manager, address operator); function run() external { uint256 privateKey = vm.envUint("PRIVATE_KEY"); @@ -38,8 +41,10 @@ contract RareERC1155SystemDeploy is RareERC1155SettlementScriptGuard { address erc721ApprovalManager = _required(config.erc721ApprovalManager, "erc721ApprovalManager"); address erc1155ApprovalManager = _required(config.erc1155ApprovalManager, "erc1155ApprovalManager"); - RareERC1155Settlement settlement = new RareERC1155Settlement(); - _validateSettlementModuleForScript(address(settlement)); + RareERC1155TradeExecutionModule tradeExecutionModule = new RareERC1155TradeExecutionModule(); + _validateExecutionModuleForScript(address(tradeExecutionModule)); + RareERC1155CheckoutExecutionModule checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); + _validateExecutionModuleForScript(address(checkoutExecutionModule)); RareERC1155Marketplace marketplaceImplementation = new RareERC1155Marketplace(); bytes memory initData = abi.encodeWithSelector( @@ -55,13 +60,14 @@ contract RareERC1155SystemDeploy is RareERC1155SettlementScriptGuard { erc20ApprovalManager, erc721ApprovalManager, erc1155ApprovalManager, - address(settlement) + address(tradeExecutionModule), + address(checkoutExecutionModule) ); ERC1967Proxy marketplaceProxy = new ERC1967Proxy(address(marketplaceImplementation), initData); - _grantErc20OperatorIfAuthorized(erc20ApprovalManager, address(marketplaceProxy), deployer); - _grantErc1155OperatorIfAuthorized(erc1155ApprovalManager, address(marketplaceProxy), deployer); + _grantErc20OperatorOrRevert(erc20ApprovalManager, address(marketplaceProxy), deployer); + _grantErc1155OperatorOrRevert(erc1155ApprovalManager, address(marketplaceProxy), deployer); RareERC1155ContractFactory factory = new RareERC1155ContractFactory(); factory.setDefaultMinter(address(marketplaceProxy)); @@ -80,7 +86,8 @@ contract RareERC1155SystemDeploy is RareERC1155SettlementScriptGuard { console.log("ERC20ApprovalManager:", erc20ApprovalManager); console.log("ERC721ApprovalManager:", erc721ApprovalManager); console.log("ERC1155ApprovalManager:", erc1155ApprovalManager); - console.log("RareERC1155Settlement:", address(settlement)); + console.log("RareERC1155TradeExecutionModule:", address(tradeExecutionModule)); + console.log("RareERC1155CheckoutExecutionModule:", address(checkoutExecutionModule)); console.log("RareERC1155Marketplace implementation:", address(marketplaceImplementation)); console.log("RareERC1155Marketplace proxy:", address(marketplaceProxy)); console.log("RareERC1155ContractFactory:", address(factory)); @@ -96,7 +103,7 @@ contract RareERC1155SystemDeploy is RareERC1155SettlementScriptGuard { return value; } - function _grantErc20OperatorIfAuthorized(address manager, address operator, address deployer) private { + function _grantErc20OperatorOrRevert(address manager, address operator, address deployer) private { ERC20ApprovalManager approvalManager = ERC20ApprovalManager(manager); bytes32 operatorRole = approvalManager.OPERATOR_ROLE(); if (approvalManager.hasRole(operatorRole, operator)) { @@ -105,17 +112,17 @@ contract RareERC1155SystemDeploy is RareERC1155SettlementScriptGuard { } if (!approvalManager.hasRole(approvalManager.MANAGER_ROLE(), deployer)) { - console.log("ERC20ApprovalManager operator role not granted; deployer lacks MANAGER_ROLE"); - console.log("ERC20ApprovalManager:", manager); - console.log("Missing operator:", operator); - return; + revert ApprovalManagerOperatorGrantUnauthorized("ERC20ApprovalManager", manager, deployer, operator); } approvalManager.grantOperatorRole(operator); + if (!approvalManager.hasRole(operatorRole, operator)) { + revert ApprovalManagerOperatorRoleMissing("ERC20ApprovalManager", manager, operator); + } console.log("ERC20ApprovalManager operator role granted:", operator); } - function _grantErc1155OperatorIfAuthorized(address manager, address operator, address deployer) private { + function _grantErc1155OperatorOrRevert(address manager, address operator, address deployer) private { ERC1155ApprovalManager approvalManager = ERC1155ApprovalManager(manager); bytes32 operatorRole = approvalManager.OPERATOR_ROLE(); if (approvalManager.hasRole(operatorRole, operator)) { @@ -124,13 +131,13 @@ contract RareERC1155SystemDeploy is RareERC1155SettlementScriptGuard { } if (!approvalManager.hasRole(approvalManager.MANAGER_ROLE(), deployer)) { - console.log("ERC1155ApprovalManager operator role not granted; deployer lacks MANAGER_ROLE"); - console.log("ERC1155ApprovalManager:", manager); - console.log("Missing operator:", operator); - return; + revert ApprovalManagerOperatorGrantUnauthorized("ERC1155ApprovalManager", manager, deployer, operator); } approvalManager.grantOperatorRole(operator); + if (!approvalManager.hasRole(operatorRole, operator)) { + revert ApprovalManagerOperatorRoleMissing("ERC1155ApprovalManager", manager, operator); + } console.log("ERC1155ApprovalManager operator role granted:", operator); } } diff --git a/src/marketplace/IRareERC1155CheckoutExecutionModule.sol b/src/marketplace/IRareERC1155CheckoutExecutionModule.sol new file mode 100644 index 0000000..2320560 --- /dev/null +++ b/src/marketplace/IRareERC1155CheckoutExecutionModule.sol @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; + +/// @author SuperRare Labs Inc. +/// @title IRareERC1155CheckoutExecutionModule +/// @notice Checkout entrypoints executed through `RareERC1155Marketplace` delegatecalls. +interface IRareERC1155CheckoutExecutionModule is IRareERC1155MarketplaceTypes { + /// @notice Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases. + /// @dev Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert. + function checkout(CheckoutItem[] calldata _items) external payable returns (CheckoutExecution memory); + + /// @notice Executes one already validated checkout item through a nested delegatecall rollback boundary. + /// @dev Module-only entrypoint; the marketplace proxy does not expose this selector. + function executeCheckoutItem( + CheckoutItem calldata _item, + uint256 _remainingEth, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external payable returns (uint256 totalPaid, uint256 newRemainingEth); + + /// @notice Executes payout for a checkout item through a nested rollback boundary. + /// @dev Module-only entrypoint; the marketplace proxy does not expose this selector. + function executeCheckoutPayout( + CheckoutItem calldata _item, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external payable; +} diff --git a/src/marketplace/IRareERC1155Marketplace.sol b/src/marketplace/IRareERC1155Marketplace.sol index 845a3aa..246cd84 100644 --- a/src/marketplace/IRareERC1155Marketplace.sol +++ b/src/marketplace/IRareERC1155Marketplace.sol @@ -6,7 +6,7 @@ import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; /// @author SuperRare Labs Inc. /// @title IRareERC1155Marketplace -/// @notice Interface for ERC1155 marketplace state creation, escrow, configuration, and settlement proxying. +/// @notice Interface for ERC1155 marketplace state creation, escrow, configuration, and execution module routing. interface IRareERC1155Marketplace is IRareERC1155MarketplaceTypes { /// @notice Initializes the UUPS marketplace proxy. function initialize( @@ -21,7 +21,8 @@ interface IRareERC1155Marketplace is IRareERC1155MarketplaceTypes { address _erc20ApprovalManager, address _erc721ApprovalManager, address _erc1155ApprovalManager, - address _settlement + address _tradeExecutionModule, + address _checkoutExecutionModule ) external; /// @notice Configures or replaces primary mint sales for token ids. @@ -34,6 +35,10 @@ interface IRareERC1155Marketplace is IRareERC1155MarketplaceTypes { uint8[] calldata _splitRatios ) external; + /// @notice Cancels configured primary mint sales for token ids. + /// @dev Token ids must be strictly ascending. + function cancelMintDirectSales(address _contractAddress, uint256[] calldata _tokenIds) external; + /// @notice Sets token id allowlist configurations. /// @dev Request token ids must be strictly ascending. function setTokenAllowListConfigs(address _contractAddress, AllowListConfigRequest[] calldata _requests) external; @@ -73,12 +78,12 @@ interface IRareERC1155Marketplace is IRareERC1155MarketplaceTypes { /// @notice Cancels the caller's offer for one token id and currency. function cancelOffer(address _contractAddress, uint256 _tokenId, address _currencyAddress) external; - /// @notice Mints tokens from configured primary sales through the settlement module. + /// @notice Mints tokens from configured primary sales through the trade execution module. function mintDirectSaleBatch(address _contractAddress, address _currencyAddress, MintRequest[] calldata _requests) external payable; - /// @notice Buys tokens from a seller's secondary fixed-price listings through the settlement module. + /// @notice Buys tokens from a seller's secondary fixed-price listings through the trade execution module. function buyBatch( address _contractAddress, address _seller, @@ -86,7 +91,7 @@ interface IRareERC1155Marketplace is IRareERC1155MarketplaceTypes { BuyRequest[] calldata _requests ) external payable; - /// @notice Accepts all or part of an ERC1155 token offer through the settlement module. + /// @notice Accepts all or part of an ERC1155 token offer through the trade execution module. function acceptOffer( address _contractAddress, uint256 _tokenId, @@ -138,7 +143,8 @@ interface IRareERC1155Marketplace is IRareERC1155MarketplaceTypes { function getMarketConfig() external view returns (MarketConfigV2.Config memory); function getERC1155ApprovalManager() external view returns (address); - function getSettlement() external view returns (address); + function getTradeExecutionModule() external view returns (address); + function getCheckoutExecutionModule() external view returns (address); function isPaused() external view returns (bool); function setNetworkBeneficiary(address _networkBeneficiary) external; @@ -152,6 +158,7 @@ interface IRareERC1155Marketplace is IRareERC1155MarketplaceTypes { function setERC20ApprovalManager(address _erc20ApprovalManager) external; function setERC721ApprovalManager(address _erc721ApprovalManager) external; function setERC1155ApprovalManager(address _erc1155ApprovalManager) external; - function setSettlement(address _settlement) external; + function setTradeExecutionModule(address _tradeExecutionModule) external; + function setCheckoutExecutionModule(address _checkoutExecutionModule) external; function setContractPaused(bool _isPaused) external; } diff --git a/src/marketplace/IRareERC1155MarketplaceTypes.sol b/src/marketplace/IRareERC1155MarketplaceTypes.sol index 22360ef..717f39c 100644 --- a/src/marketplace/IRareERC1155MarketplaceTypes.sol +++ b/src/marketplace/IRareERC1155MarketplaceTypes.sol @@ -43,6 +43,8 @@ interface IRareERC1155MarketplaceTypes { uint256 initialQuantity; uint256 marketplaceFeeRemaining; uint256 marketplaceFeeTotal; + uint256 stakingFeeRemaining; + uint256 stakingFeeTotal; uint256 expirationTime; } @@ -102,7 +104,8 @@ interface IRareERC1155MarketplaceTypes { PAYMENT_COLLECTION, MINT, TRANSFER, - PAYOUT + PAYOUT, + UNKNOWN } /// @notice Buyer cart item for primary mint sales and secondary fixed-price listings. @@ -172,6 +175,8 @@ interface IRareERC1155MarketplaceTypes { uint256 price ); + event MintDirectSaleCancelled(address indexed contractAddress, uint256 indexed tokenId); + event SetTokenAllowListConfig( address indexed contractAddress, uint256 indexed tokenId, bytes32 root, uint256 endTimestamp ); @@ -301,9 +306,9 @@ interface IRareERC1155MarketplaceTypes { error ContractHasNoOwner(address _contractAddress); error ApprovalManagerCannotBeZero(); error MarketConfigAddressCannotBeZero(bytes32 _field); - error SettlementCannotBeZero(); - error DirectSettlementCallUnsupported(); - error SettlementDelegateCallFailed(bytes _revertData); + error InvalidExecutionModule(); + error DirectModuleCallUnsupported(); + error ExecutionModuleDelegateCallFailed(bytes _revertData); error UnsupportedCheckoutItemKind(uint8 _itemKind); error CheckoutItemExecutionFailed(CheckoutFailureStage _stage, bytes _failureData); error InsufficientCheckoutETH(uint256 _requiredAmount, uint256 _availableAmount); @@ -326,6 +331,7 @@ interface IRareERC1155MarketplaceTypes { error ERC20FeeOnTransferUnsupported(address _currencyAddress, uint256 _expectedAmount, uint256 _receivedAmount); error MsgValueMustBeZero(); error RoyaltiesExceedSaleAmount(uint256 _royalties, uint256 _saleAmount); + error RoyaltyRecipientCannotBeZero(uint256 _index); error StakingFeeExceedsMarketplaceFee(uint256 _marketplaceFee, uint256 _stakingFee); error PlatformCommissionExceeded(uint256 _platformCommission, uint256 _maxPlatformCommission); error SplitRecipientsRequired(); diff --git a/src/marketplace/IRareERC1155Settlement.sol b/src/marketplace/IRareERC1155Settlement.sol deleted file mode 100644 index de998dc..0000000 --- a/src/marketplace/IRareERC1155Settlement.sol +++ /dev/null @@ -1,64 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.18; - -import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; - -/// @author SuperRare Labs Inc. -/// @title IRareERC1155Settlement -/// @notice Settlement entrypoints executed through `RareERC1155Marketplace` delegatecalls. -interface IRareERC1155Settlement is IRareERC1155MarketplaceTypes { - /// @notice Mints tokens from configured primary sales. - /// @dev Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert. - function mintDirectSaleBatch(address _contractAddress, address _currencyAddress, MintRequest[] calldata _requests) - external - payable; - - /// @notice Buys tokens from a seller's secondary fixed-price listings. - /// @dev Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert. - function buyBatch( - address _contractAddress, - address _seller, - address _currencyAddress, - BuyRequest[] calldata _requests - ) external payable; - - /// @notice Accepts all or part of an ERC1155 token offer. - /// @dev Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert. - function acceptOffer( - address _contractAddress, - uint256 _tokenId, - address _buyer, - address _currencyAddress, - uint256 _price, - uint256 _quantity, - address payable[] calldata _splitRecipients, - uint8[] calldata _splitRatios - ) external; - - /// @notice Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases. - /// @dev Intended for delegatecall from the marketplace proxy. Direct calls to the settlement implementation revert. - function checkout(CheckoutItem[] calldata _items) external payable returns (CheckoutExecution memory); - - /// @notice Executes one already validated checkout item through a nested delegatecall rollback boundary. - /// @dev Settlement-only entrypoint; the marketplace proxy does not expose this selector. - function executeCheckoutItem( - CheckoutItem calldata _item, - uint256 _remainingEth, - address _seller, - uint256 _grossAmount, - uint256 _marketplaceFee, - address payable[] calldata _splitRecipients, - uint8[] calldata _splitRatios - ) external payable returns (uint256 totalPaid, uint256 newRemainingEth); - - /// @notice Executes payout for a checkout item through a nested rollback boundary. - /// @dev Settlement-only entrypoint; the marketplace proxy does not expose this selector. - function executeCheckoutPayout( - CheckoutItem calldata _item, - address _seller, - uint256 _grossAmount, - uint256 _marketplaceFee, - address payable[] calldata _splitRecipients, - uint8[] calldata _splitRatios - ) external payable; -} diff --git a/src/marketplace/IRareERC1155TradeExecutionModule.sol b/src/marketplace/IRareERC1155TradeExecutionModule.sol new file mode 100644 index 0000000..8f310a3 --- /dev/null +++ b/src/marketplace/IRareERC1155TradeExecutionModule.sol @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; + +/// @author SuperRare Labs Inc. +/// @title IRareERC1155TradeExecutionModule +/// @notice Direct trade entrypoints executed through `RareERC1155Marketplace` delegatecalls. +interface IRareERC1155TradeExecutionModule is IRareERC1155MarketplaceTypes { + /// @notice Mints tokens from configured primary sales. + /// @dev Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert. + function mintDirectSaleBatch(address _contractAddress, address _currencyAddress, MintRequest[] calldata _requests) + external + payable; + + /// @notice Buys tokens from a seller's secondary fixed-price listings. + /// @dev Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert. + function buyBatch( + address _contractAddress, + address _seller, + address _currencyAddress, + BuyRequest[] calldata _requests + ) external payable; + + /// @notice Accepts all or part of an ERC1155 token offer. + /// @dev Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert. + function acceptOffer( + address _contractAddress, + uint256 _tokenId, + address _buyer, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external; +} diff --git a/src/marketplace/RareERC1155CheckoutExecutionModule.sol b/src/marketplace/RareERC1155CheckoutExecutionModule.sol new file mode 100644 index 0000000..3b03db5 --- /dev/null +++ b/src/marketplace/RareERC1155CheckoutExecutionModule.sol @@ -0,0 +1,891 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; +import {IERC20} from "openzeppelin-contracts/token/ERC20/IERC20.sol"; +import {ERC165Checker} from "openzeppelin-contracts/utils/introspection/ERC165Checker.sol"; + +import {IRareERC1155} from "../token/ERC1155/IRareERC1155.sol"; +import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; +import {IERC1155ApprovalManager} from "../v2/approver/ERC1155/IERC1155ApprovalManager.sol"; +import {IRareERC1155CheckoutExecutionModule} from "./IRareERC1155CheckoutExecutionModule.sol"; +import {RareERC1155ExecutionModuleBase} from "./RareERC1155ExecutionModuleBase.sol"; +import {RareERC1155MarketplacePayments} from "./RareERC1155MarketplacePayments.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155CheckoutExecutionModule +/// @notice Delegatecall-only multi-item checkout execution module for the ERC1155 marketplace. +/// @dev Direct calls revert because this contract has no standalone marketplace state or escrow. It must run through +/// `RareERC1155Marketplace` so `address(this)`, `msg.sender`, `msg.value`, and storage all resolve to the marketplace proxy. +contract RareERC1155CheckoutExecutionModule is IRareERC1155CheckoutExecutionModule, RareERC1155ExecutionModuleBase { + using RareERC1155MarketplacePayments for MarketConfigV2.Config; + + struct CheckoutFillContext { + address seller; + uint256 grossAmount; + uint256 marketplaceFee; + uint256 maxMints; + address payable[] splitRecipients; + uint8[] splitRatios; + } + + struct CheckoutDirectSaleMintAggregate { + address contractAddress; + uint256 tokenId; + uint256 quantity; + } + + function checkout(CheckoutItem[] calldata _items) + external + payable + onlyDelegateCall + returns (CheckoutExecution memory execution) + { + _validateCheckoutSize(_items.length); + + execution.items = new CheckoutItemResult[](_items.length); + MarketplaceStorage storage $ = _marketplaceStorage(); + CheckoutDirectSaleMintAggregate[] memory directSaleMintAggregates = + new CheckoutDirectSaleMintAggregate[](_items.length); + uint256 directSaleMintAggregateCount = 0; + uint256 remainingEth = msg.value; + for (uint256 i = 0; i < _items.length;) { + (CheckoutItemResult memory result, bool filled, uint256 newRemainingEth) = _processCheckoutItem( + $, _items[i], i, remainingEth, directSaleMintAggregates, directSaleMintAggregateCount + ); + if (filled) { + remainingEth = newRemainingEth; + _recordCheckoutDirectSaleMintTx($, _items[i], directSaleMintAggregates, directSaleMintAggregateCount); + directSaleMintAggregateCount = + _recordCheckoutDirectSaleMint(directSaleMintAggregates, directSaleMintAggregateCount, _items[i]); + execution.summary.filledCount += 1; + if (_items[i].currencyAddress == address(0)) execution.summary.ethSpent += result.totalPaid; + } else { + execution.summary.skippedCount += 1; + } + + execution.items[i] = result; + _emitCheckoutItemProcessed(result); + + unchecked { + ++i; + } + } + + execution.summary.ethRefunded = remainingEth; + if (remainingEth != 0) { + $.marketConfig.refund(address(0), payable(msg.sender), remainingEth); + } + + emit CheckoutCompleted( + msg.sender, + execution.summary.filledCount, + execution.summary.skippedCount, + execution.summary.ethSpent, + execution.summary.ethRefunded + ); + } + + function executeCheckoutItem( + CheckoutItem calldata _item, + uint256 _remainingEth, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external payable onlyDelegateCall returns (uint256 totalPaid, uint256 newRemainingEth) { + if (_item.itemKind == uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { + return _executeCheckoutDirectSaleMint( + _item, _remainingEth, _seller, _grossAmount, _marketplaceFee, _splitRecipients, _splitRatios + ); + } + if (_item.itemKind == uint8(CheckoutItemKind.LISTING_BUY)) { + return _executeCheckoutListingBuy( + _item, _remainingEth, _seller, _grossAmount, _marketplaceFee, _splitRecipients, _splitRatios + ); + } + + revert CheckoutItemExecutionFailed( + CheckoutFailureStage.VALIDATION, + abi.encodeWithSelector(UnsupportedCheckoutItemKind.selector, _item.itemKind) + ); + } + + function executeCheckoutPayout( + CheckoutItem calldata _item, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external payable onlyDelegateCall { + MarketplaceStorage storage $ = _marketplaceStorage(); + if (_item.itemKind == uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { + $.marketConfig + .payoutPrimary( + _item.contractAddress, + _item.currencyAddress, + _grossAmount, + _marketplaceFee, + _seller, + _splitRecipients, + _splitRatios + ); + return; + } + if (_item.itemKind == uint8(CheckoutItemKind.LISTING_BUY)) { + $.marketConfig + .payoutSecondary( + _item.contractAddress, + _item.tokenId, + _item.currencyAddress, + _grossAmount, + _marketplaceFee, + _seller, + _splitRecipients, + _splitRatios + ); + return; + } + + revert UnsupportedCheckoutItemKind(_item.itemKind); + } + + function _processCheckoutItem( + MarketplaceStorage storage $, + CheckoutItem calldata _item, + uint256 _itemIndex, + uint256 _remainingEth, + CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, + uint256 _directSaleMintAggregateCount + ) internal returns (CheckoutItemResult memory result, bool filled, uint256 newRemainingEth) { + result = _baseCheckoutItemResult(_itemIndex, _item); + newRemainingEth = _remainingEth; + + bool directSaleMintTxAlreadyRecorded = _checkoutDirectSaleMintAggregateQuantity( + _directSaleMintAggregates, _directSaleMintAggregateCount, _item.contractAddress, _item.tokenId + ) != 0; + (bool valid, bytes memory failureData, CheckoutFillContext memory context) = + _validateCheckoutItem($, _item, directSaleMintTxAlreadyRecorded); + if (context.seller != address(0)) result.seller = context.seller; + if (!valid) { + _setCheckoutItemFailure(result, CheckoutFailureStage.VALIDATION, failureData); + return (result, false, newRemainingEth); + } + + bytes memory aggregateFailureData = _checkoutDirectSaleMintAggregateFailureData( + _item, _directSaleMintAggregates, _directSaleMintAggregateCount, context.maxMints + ); + if (aggregateFailureData.length != 0) { + _setCheckoutItemFailure(result, CheckoutFailureStage.VALIDATION, aggregateFailureData); + return (result, false, newRemainingEth); + } + + (bool success, bytes memory data) = + $.checkoutExecutionModule.delegatecall(_checkoutItemCallData(_item, _remainingEth, context)); + if (!success) { + (CheckoutFailureStage stage, bytes memory executionFailureData) = _checkoutExecutionFailure(data); + _setCheckoutItemFailure(result, stage, executionFailureData); + return (result, false, newRemainingEth); + } + + (uint256 totalPaid, uint256 nextRemainingEth) = abi.decode(data, (uint256, uint256)); + result.filled = true; + result.totalPaid = totalPaid; + return (result, true, nextRemainingEth); + } + + function _checkoutItemCallData( + CheckoutItem calldata _item, + uint256 _remainingEth, + CheckoutFillContext memory _context + ) internal pure returns (bytes memory) { + return abi.encodeWithSelector( + IRareERC1155CheckoutExecutionModule.executeCheckoutItem.selector, + _item, + _remainingEth, + _context.seller, + _context.grossAmount, + _context.marketplaceFee, + _context.splitRecipients, + _context.splitRatios + ); + } + + function _executeCheckoutDirectSaleMint( + CheckoutItem calldata _item, + uint256 _remainingEth, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) internal returns (uint256 totalPaid, uint256 newRemainingEth) { + newRemainingEth = _remainingEth; + MarketplaceStorage storage $ = _marketplaceStorage(); + + totalPaid = _grossAmount + _marketplaceFee; + bytes memory paymentFailureData = + _checkoutPaymentFailureData($.marketConfig, _item.currencyAddress, totalPaid, _remainingEth); + if (paymentFailureData.length != 0) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYMENT_COLLECTION, paymentFailureData); + } + + bool mintLimitEnabled = $.tokenMintLimit[_item.contractAddress][_item.tokenId] > 0; + if (mintLimitEnabled) { + $.tokenMintsPerAddress[_item.contractAddress][_item.tokenId][msg.sender] += _item.quantity; + } + + if (_item.currencyAddress == address(0)) { + newRemainingEth = _remainingEth - totalPaid; + } else { + _collectCheckoutErc20($.marketConfig, _item.currencyAddress, totalPaid); + } + + _checkoutMintBatchToWithBalanceCheck( + _item.contractAddress, msg.sender, _singleUintArray(_item.tokenId), _singleUintArray(_item.quantity) + ); + + if (_grossAmount != 0) { + _executeCheckoutPayout($, _item, _seller, _grossAmount, _marketplaceFee, _splitRecipients, _splitRatios); + } + + emit MintDirectSale( + _item.contractAddress, + _item.tokenId, + msg.sender, + _seller, + _item.quantity, + _item.currencyAddress, + _item.price + ); + } + + function _executeCheckoutListingBuy( + CheckoutItem calldata _item, + uint256 _remainingEth, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) internal returns (uint256 totalPaid, uint256 newRemainingEth) { + newRemainingEth = _remainingEth; + MarketplaceStorage storage $ = _marketplaceStorage(); + + totalPaid = _grossAmount + _marketplaceFee; + bytes memory paymentFailureData = + _checkoutPaymentFailureData($.marketConfig, _item.currencyAddress, totalPaid, _remainingEth); + if (paymentFailureData.length != 0) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYMENT_COLLECTION, paymentFailureData); + } + + if (_item.currencyAddress == address(0)) { + newRemainingEth = _remainingEth - totalPaid; + } else { + _collectCheckoutErc20($.marketConfig, _item.currencyAddress, totalPaid); + } + + SalePrice storage salePrice = $.salePrices[_item.contractAddress][_item.tokenId][_seller]; + salePrice.quantity -= _item.quantity; + if (salePrice.quantity == 0) { + delete $.salePrices[_item.contractAddress][_item.tokenId][_seller]; + } + + _checkoutSafeTransferFrom( + $.erc1155ApprovalManager, _item.contractAddress, _seller, msg.sender, _item.tokenId, _item.quantity + ); + + _executeCheckoutPayout($, _item, _seller, _grossAmount, _marketplaceFee, _splitRecipients, _splitRatios); + + emit Sold( + _seller, + msg.sender, + _item.contractAddress, + _item.tokenId, + _item.currencyAddress, + _item.price, + _item.quantity + ); + } + + function _validateCheckoutItem( + MarketplaceStorage storage $, + CheckoutItem calldata _item, + bool _directSaleMintTxAlreadyRecorded + ) + internal + view + returns (bool valid, bytes memory failureData, CheckoutFillContext memory context) + { + if (_item.itemKind == uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { + return _validateCheckoutDirectSaleMint($, _item, _directSaleMintTxAlreadyRecorded); + } + if (_item.itemKind == uint8(CheckoutItemKind.LISTING_BUY)) { + return _validateCheckoutListingBuy($, _item); + } + + return (false, abi.encodeWithSelector(UnsupportedCheckoutItemKind.selector, _item.itemKind), context); + } + + function _validateCheckoutDirectSaleMint( + MarketplaceStorage storage $, + CheckoutItem calldata _item, + bool _txLimitAlreadyConsumed + ) + internal + view + returns (bool valid, bytes memory failureData, CheckoutFillContext memory context) + { + if (!_checkoutCurrencyApproved($.marketConfig, _item.currencyAddress)) { + return (false, abi.encodeWithSelector(CurrencyNotApproved.selector, _item.currencyAddress), context); + } + if (!_checkoutValidErc1155Contract(_item.contractAddress)) { + return (false, abi.encodeWithSelector(InvalidERC1155Contract.selector, _item.contractAddress), context); + } + + (bool requestValid, bytes4 reason, PrimaryPayoutContext memory payoutContext) = _checkMintDirectSaleRequest( + $, + _item.contractAddress, + _item.currencyAddress, + msg.sender, + _item.tokenId, + _item.price, + _item.quantity, + _item.proof, + ContractHasNoOwner.selector, + _txLimitAlreadyConsumed + ); + context.seller = payoutContext.seller; + if (!requestValid) { + return ( + false, + _mintFailureData( + reason, + $, + _item.contractAddress, + _item.currencyAddress, + msg.sender, + _item.tokenId, + _item.price, + _item.quantity + ), + context + ); + } + + context.grossAmount = payoutContext.grossAmount; + if (context.grossAmount != 0) { + context.marketplaceFee = $.marketConfig.marketplaceSettings.calculateMarketplaceFee(context.grossAmount); + } + context.splitRecipients = payoutContext.splitRecipients; + context.splitRatios = payoutContext.splitRatios; + context.maxMints = payoutContext.maxMints; + + return (true, "", context); + } + + function _validateCheckoutListingBuy(MarketplaceStorage storage $, CheckoutItem calldata _item) + internal + view + returns (bool valid, bytes memory failureData, CheckoutFillContext memory context) + { + context.seller = _item.seller; + if (msg.sender == _item.seller) { + return (false, abi.encodeWithSelector(SelfPurchaseUnsupported.selector, _item.seller), context); + } + if (!_checkoutCurrencyApproved($.marketConfig, _item.currencyAddress)) { + return (false, abi.encodeWithSelector(CurrencyNotApproved.selector, _item.currencyAddress), context); + } + if (!_checkoutValidErc1155Contract(_item.contractAddress)) { + return (false, abi.encodeWithSelector(InvalidERC1155Contract.selector, _item.contractAddress), context); + } + + SecondaryPayoutContext memory payoutContext; + bytes4 reason; + (valid, reason, payoutContext) = _checkSecondaryBuyRequest( + $, _item.contractAddress, _item.seller, _item.currencyAddress, _item.tokenId, _item.price, _item.quantity + ); + if (!valid) { + return ( + false, + _secondaryFailureData( + reason, + $, + _item.contractAddress, + _item.seller, + _item.currencyAddress, + _item.tokenId, + _item.price, + _item.quantity + ), + context + ); + } + + IERC1155 erc1155 = IERC1155(_item.contractAddress); + try erc1155.isApprovedForAll(_item.seller, address($.erc1155ApprovalManager)) returns (bool isApproved) { + if (!isApproved) { + return ( + false, + abi.encodeWithSelector(MarketplaceNotApproved.selector, _item.seller, _item.contractAddress), + context + ); + } + } catch { + return ( + false, + abi.encodeWithSelector(MarketplaceNotApproved.selector, _item.seller, _item.contractAddress), + context + ); + } + + try erc1155.balanceOf(_item.seller, _item.tokenId) returns (uint256 sellerBalance) { + if (sellerBalance < _item.quantity) { + return ( + false, + abi.encodeWithSelector( + InsufficientTokenBalance.selector, + _item.seller, + _item.contractAddress, + _item.tokenId, + _item.quantity, + sellerBalance + ), + context + ); + } + } catch { + return ( + false, + abi.encodeWithSelector( + InsufficientTokenBalance.selector, + _item.seller, + _item.contractAddress, + _item.tokenId, + _item.quantity, + 0 + ), + context + ); + } + + context.grossAmount = payoutContext.grossAmount; + context.marketplaceFee = $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContext.grossAmount); + context.splitRecipients = payoutContext.splitRecipients; + context.splitRatios = payoutContext.splitRatios; + + return (true, "", context); + } + + function _executeCheckoutPayout( + MarketplaceStorage storage $, + CheckoutItem calldata _item, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) internal { + (bool success, bytes memory data) = $.checkoutExecutionModule + .delegatecall( + abi.encodeWithSelector( + IRareERC1155CheckoutExecutionModule.executeCheckoutPayout.selector, + _item, + _seller, + _grossAmount, + _marketplaceFee, + _splitRecipients, + _splitRatios + ) + ); + if (!success) revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYOUT, data); + } + + function _baseCheckoutItemResult(uint256 _itemIndex, CheckoutItem calldata _item) + internal + pure + returns (CheckoutItemResult memory result) + { + result = CheckoutItemResult({ + itemIndex: _itemIndex, + itemKind: _item.itemKind, + contractAddress: _item.contractAddress, + tokenId: _item.tokenId, + seller: _item.seller, + currencyAddress: _item.currencyAddress, + price: _item.price, + quantity: _item.quantity, + filled: false, + failureStage: CheckoutFailureStage.NONE, + reason: bytes4(0), + failureData: new bytes(0), + totalPaid: 0 + }); + } + + function _setCheckoutItemFailure( + CheckoutItemResult memory _result, + CheckoutFailureStage _stage, + bytes memory _failureData + ) internal pure { + _result.failureStage = _stage; + _result.reason = _revertSelector(_failureData); + _result.failureData = _failureData; + } + + function _emitCheckoutItemProcessed(CheckoutItemResult memory _result) internal { + emit CheckoutItemProcessed( + _result.itemIndex, + _result.itemKind, + _result.contractAddress, + _result.tokenId, + _result.seller, + _result.currencyAddress, + _result.price, + _result.quantity, + _result.filled, + _result.failureStage, + _result.reason, + _result.failureData, + _result.totalPaid + ); + } + + function _checkoutExecutionFailure(bytes memory _revertData) + internal + pure + returns (CheckoutFailureStage stage, bytes memory failureData) + { + (bool decoded, CheckoutFailureStage decodedStage, bytes memory decodedFailureData) = + _decodeCheckoutItemExecutionFailed(_revertData); + if (decoded) return (decodedStage, decodedFailureData); + return (CheckoutFailureStage.UNKNOWN, _revertData); + } + + function _decodeCheckoutItemExecutionFailed(bytes memory _revertData) + internal + pure + returns (bool decoded, CheckoutFailureStage stage, bytes memory failureData) + { + // CheckoutItemExecutionFailed(CheckoutFailureStage,bytes): + // selector | stage | offset | bytes length | bytes data + if (_revertSelector(_revertData) != CheckoutItemExecutionFailed.selector || _revertData.length < 100) { + return (false, CheckoutFailureStage.NONE, ""); + } + + uint256 stageValue; + uint256 failureDataOffset; + uint256 failureDataLength; + assembly { + stageValue := mload(add(_revertData, 36)) + failureDataOffset := mload(add(_revertData, 68)) + failureDataLength := mload(add(_revertData, 100)) + } + if (stageValue > uint256(uint8(CheckoutFailureStage.UNKNOWN)) || failureDataOffset != 64) { + return (false, CheckoutFailureStage.NONE, ""); + } + + if (failureDataLength > _revertData.length - 100) return (false, CheckoutFailureStage.NONE, ""); + + assembly { + failureData := add(_revertData, 100) + } + return (true, CheckoutFailureStage(stageValue), failureData); + } + + function _checkoutDirectSaleMintAggregateFailureData( + CheckoutItem calldata _item, + CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, + uint256 _directSaleMintAggregateCount, + uint256 _maxMints + ) internal pure returns (bytes memory) { + if (_item.itemKind != uint8(CheckoutItemKind.DIRECT_SALE_MINT) || _maxMints == 0) return ""; + + uint256 filledQuantity = _checkoutDirectSaleMintAggregateQuantity( + _directSaleMintAggregates, _directSaleMintAggregateCount, _item.contractAddress, _item.tokenId + ); + uint256 aggregateQuantity = filledQuantity + _item.quantity; + if (aggregateQuantity <= _maxMints) return ""; + + return abi.encodeWithSelector(MaxMintExceeded.selector, aggregateQuantity, _maxMints); + } + + function _checkoutDirectSaleMintAggregateQuantity( + CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, + uint256 _directSaleMintAggregateCount, + address _contractAddress, + uint256 _tokenId + ) internal pure returns (uint256) { + for (uint256 i = 0; i < _directSaleMintAggregateCount;) { + if ( + _directSaleMintAggregates[i].contractAddress == _contractAddress + && _directSaleMintAggregates[i].tokenId == _tokenId + ) { + return _directSaleMintAggregates[i].quantity; + } + + unchecked { + ++i; + } + } + + return 0; + } + + function _recordCheckoutDirectSaleMintTx( + MarketplaceStorage storage $, + CheckoutItem calldata _item, + CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, + uint256 _directSaleMintAggregateCount + ) internal { + if (_item.itemKind != uint8(CheckoutItemKind.DIRECT_SALE_MINT)) return; + if ($.tokenTxLimit[_item.contractAddress][_item.tokenId] == 0) return; + if ( + _checkoutDirectSaleMintAggregateQuantity( + _directSaleMintAggregates, _directSaleMintAggregateCount, _item.contractAddress, _item.tokenId + ) != 0 + ) { + return; + } + + $.tokenTxsPerAddress[_item.contractAddress][_item.tokenId][msg.sender] += 1; + } + + function _recordCheckoutDirectSaleMint( + CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, + uint256 _directSaleMintAggregateCount, + CheckoutItem calldata _item + ) internal pure returns (uint256) { + if (_item.itemKind != uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { + return _directSaleMintAggregateCount; + } + + for (uint256 i = 0; i < _directSaleMintAggregateCount;) { + if ( + _directSaleMintAggregates[i].contractAddress == _item.contractAddress + && _directSaleMintAggregates[i].tokenId == _item.tokenId + ) { + _directSaleMintAggregates[i].quantity += _item.quantity; + return _directSaleMintAggregateCount; + } + + unchecked { + ++i; + } + } + + _directSaleMintAggregates[_directSaleMintAggregateCount] = CheckoutDirectSaleMintAggregate({ + contractAddress: _item.contractAddress, tokenId: _item.tokenId, quantity: _item.quantity + }); + return _directSaleMintAggregateCount + 1; + } + + function _checkoutCurrencyApproved(MarketConfigV2.Config storage _config, address _currencyAddress) + internal + view + returns (bool) + { + if (_currencyAddress == address(0)) return true; + + try _config.approvedTokenRegistry.isApprovedToken(_currencyAddress) returns (bool approved) { + return approved; + } catch { + return false; + } + } + + function _checkoutValidErc1155Contract(address _contractAddress) internal view returns (bool) { + return _contractAddress.code.length != 0 + && ERC165Checker.supportsInterface(_contractAddress, type(IERC1155).interfaceId); + } + + function _checkoutPaymentFailureData( + MarketConfigV2.Config storage _config, + address _currencyAddress, + uint256 _amount, + uint256 _remainingEth + ) internal view returns (bytes memory failureData) { + if (_amount == 0) return ""; + if (_currencyAddress == address(0)) { + if (_remainingEth >= _amount) return ""; + return abi.encodeWithSelector(InsufficientCheckoutETH.selector, _amount, _remainingEth); + } + + IERC20 erc20 = IERC20(_currencyAddress); + try erc20.balanceOf(msg.sender) returns (uint256 balance) { + if (balance < _amount) { + return + abi.encodeWithSelector( + InsufficientCheckoutERC20Balance.selector, _currencyAddress, _amount, balance + ); + } + } catch { + return abi.encodeWithSelector(InsufficientCheckoutERC20Balance.selector, _currencyAddress, _amount, 0); + } + + try erc20.allowance(msg.sender, address(_config.erc20ApprovalManager)) returns (uint256 allowance) { + if (allowance < _amount) { + return abi.encodeWithSelector( + InsufficientCheckoutERC20Allowance.selector, _currencyAddress, _amount, allowance + ); + } + } catch { + return abi.encodeWithSelector(InsufficientCheckoutERC20Allowance.selector, _currencyAddress, _amount, 0); + } + + return ""; + } + + function _collectCheckoutErc20(MarketConfigV2.Config storage _config, address _currencyAddress, uint256 _amount) + internal + { + if (_amount == 0) return; + + IERC20 erc20 = IERC20(_currencyAddress); + uint256 balanceBefore; + try erc20.balanceOf(address(this)) returns (uint256 balance) { + balanceBefore = balance; + } catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYMENT_COLLECTION, revertData); + } + + try _config.erc20ApprovalManager.transferFrom(_currencyAddress, msg.sender, address(this), _amount) {} + catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYMENT_COLLECTION, revertData); + } + + uint256 balanceAfter; + try erc20.balanceOf(address(this)) returns (uint256 balance) { + balanceAfter = balance; + } catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYMENT_COLLECTION, revertData); + } + + uint256 receivedAmount = balanceAfter >= balanceBefore ? balanceAfter - balanceBefore : 0; + if (receivedAmount != _amount) { + revert CheckoutItemExecutionFailed( + CheckoutFailureStage.PAYMENT_COLLECTION, + abi.encodeWithSelector( + ERC20FeeOnTransferUnsupported.selector, _currencyAddress, _amount, receivedAmount + ) + ); + } + } + + function _checkoutSafeTransferFrom( + IERC1155ApprovalManager _erc1155ApprovalManager, + address _contractAddress, + address _seller, + address _buyer, + uint256 _tokenId, + uint256 _amount + ) internal { + IERC1155 erc1155 = IERC1155(_contractAddress); + uint256 sellerBalanceBefore; + try erc1155.balanceOf(_seller, _tokenId) returns (uint256 balance) { + sellerBalanceBefore = balance; + } catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.TRANSFER, revertData); + } + if (sellerBalanceBefore < _amount) { + revert CheckoutItemExecutionFailed( + CheckoutFailureStage.TRANSFER, + abi.encodeWithSelector( + InsufficientTokenBalance.selector, _seller, _contractAddress, _tokenId, _amount, sellerBalanceBefore + ) + ); + } + + uint256 buyerBalanceBefore; + try erc1155.balanceOf(_buyer, _tokenId) returns (uint256 balance) { + buyerBalanceBefore = balance; + } catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.TRANSFER, revertData); + } + + try _erc1155ApprovalManager.safeTransferFrom(_contractAddress, _seller, _buyer, _tokenId, _amount, "") {} + catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.TRANSFER, revertData); + } + + uint256 sellerBalanceAfter; + try erc1155.balanceOf(_seller, _tokenId) returns (uint256 balance) { + sellerBalanceAfter = balance; + } catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.TRANSFER, revertData); + } + + uint256 buyerBalanceAfter; + try erc1155.balanceOf(_buyer, _tokenId) returns (uint256 balance) { + buyerBalanceAfter = balance; + } catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.TRANSFER, revertData); + } + + if (sellerBalanceAfter != sellerBalanceBefore - _amount || buyerBalanceAfter != buyerBalanceBefore + _amount) { + revert CheckoutItemExecutionFailed( + CheckoutFailureStage.TRANSFER, + abi.encodeWithSelector( + InvalidERC1155Transfer.selector, _contractAddress, _tokenId, _seller, _buyer, _amount + ) + ); + } + } + + function _checkoutMintBatchToWithBalanceCheck( + address _contractAddress, + address _buyer, + uint256[] memory _tokenIds, + uint256[] memory _amounts + ) internal { + IERC1155 erc1155 = IERC1155(_contractAddress); + address[] memory balanceAccounts = _balanceAccounts(_buyer, _tokenIds.length); + uint256[] memory balancesBeforeMint; + + try erc1155.balanceOfBatch(balanceAccounts, _tokenIds) returns (uint256[] memory balances) { + balancesBeforeMint = balances; + } catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.MINT, revertData); + } + + try IRareERC1155(_contractAddress).mintBatchTo(_buyer, _tokenIds, _amounts) {} + catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.MINT, revertData); + } + + uint256[] memory balancesAfterMint; + try erc1155.balanceOfBatch(balanceAccounts, _tokenIds) returns (uint256[] memory balances) { + balancesAfterMint = balances; + } catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.MINT, revertData); + } + + for (uint256 i = 0; i < _tokenIds.length;) { + if (balancesAfterMint[i] != balancesBeforeMint[i] + _amounts[i]) { + revert CheckoutItemExecutionFailed( + CheckoutFailureStage.MINT, + abi.encodeWithSelector( + InvalidERC1155Mint.selector, _contractAddress, _tokenIds[i], _buyer, _amounts[i] + ) + ); + } + + unchecked { + ++i; + } + } + } + + function _balanceAccounts(address _account, uint256 _length) internal pure returns (address[] memory accounts) { + accounts = new address[](_length); + for (uint256 i = 0; i < _length;) { + accounts[i] = _account; + + unchecked { + ++i; + } + } + } +} diff --git a/src/marketplace/RareERC1155ExecutionModuleBase.sol b/src/marketplace/RareERC1155ExecutionModuleBase.sol new file mode 100644 index 0000000..8b72b21 --- /dev/null +++ b/src/marketplace/RareERC1155ExecutionModuleBase.sol @@ -0,0 +1,381 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {Math} from "openzeppelin-contracts/utils/math/Math.sol"; + +import {RareERC1155MarketplaceStorage} from "./RareERC1155MarketplaceStorage.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155ExecutionModuleBase +/// @notice Shared validation helpers for delegatecall-only ERC1155 marketplace execution modules. +/// @dev Storage invariant: execution modules must remain storage-less except for immutables. Any persistent state added +/// to a module would be written into the marketplace proxy during delegatecall; add persistent fields to the ERC-7201 +/// `MarketplaceStorage` namespace instead. +abstract contract RareERC1155ExecutionModuleBase is RareERC1155MarketplaceStorage { + address private immutable SELF = address(this); + + struct PrimaryPayoutContext { + uint256 tokenId; + uint256 grossAmount; + uint256 marketplaceFee; + uint256 maxMints; + address seller; + address payable[] splitRecipients; + uint8[] splitRatios; + } + + struct SecondaryPayoutContext { + uint256 tokenId; + uint256 grossAmount; + uint256 marketplaceFee; + address payable[] splitRecipients; + uint8[] splitRatios; + } + + modifier onlyDelegateCall() { + _onlyDelegateCall(); + _; + } + + function _onlyDelegateCall() internal view { + if (address(this) == SELF) revert DirectModuleCallUnsupported(); + } + + function _mintFailureData( + bytes4 _reason, + MarketplaceStorage storage $, + address _contractAddress, + address _currencyAddress, + address _buyer, + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) internal view returns (bytes memory) { + DirectSaleConfig storage directSaleConfig = $.directSaleConfigs[_contractAddress][_tokenId]; + + if (_reason == DirectSaleNotConfigured.selector) { + return abi.encodeWithSelector(DirectSaleNotConfigured.selector, _contractAddress, _tokenId); + } + if (_reason == ContractHasNoOwner.selector) { + return abi.encodeWithSelector(ContractHasNoOwner.selector, _contractAddress); + } + if (_reason == NotContractOwner.selector) { + return abi.encodeWithSelector(NotContractOwner.selector, _contractAddress, directSaleConfig.seller); + } + if (_reason == AddressNotAllowlisted.selector) { + return abi.encodeWithSelector(AddressNotAllowlisted.selector, _buyer); + } + if (_reason == QuantityCannotBeZero.selector) return abi.encodeWithSelector(QuantityCannotBeZero.selector); + if (_reason == MintLimitExceeded.selector) { + uint256 mintLimit = $.tokenMintLimit[_contractAddress][_tokenId]; + uint256 currentMints = $.tokenMintsPerAddress[_contractAddress][_tokenId][_buyer]; + return abi.encodeWithSelector( + MintLimitExceeded.selector, _contractAddress, _tokenId, _buyer, _quantity, currentMints, mintLimit + ); + } + if (_reason == TransactionLimitExceeded.selector) { + uint256 txLimit = $.tokenTxLimit[_contractAddress][_tokenId]; + uint256 currentTxs = $.tokenTxsPerAddress[_contractAddress][_tokenId][_buyer]; + return abi.encodeWithSelector( + TransactionLimitExceeded.selector, _contractAddress, _tokenId, _buyer, currentTxs, txLimit + ); + } + if (_reason == MaxMintExceeded.selector) { + return abi.encodeWithSelector(MaxMintExceeded.selector, _quantity, directSaleConfig.maxMints); + } + if (_reason == SaleNotStarted.selector) { + return abi.encodeWithSelector(SaleNotStarted.selector, directSaleConfig.startTime); + } + if (_reason == PriceMismatch.selector) { + return abi.encodeWithSelector(PriceMismatch.selector, _price, directSaleConfig.price); + } + if (_reason == CurrencyMismatch.selector) { + return abi.encodeWithSelector(CurrencyMismatch.selector, _currencyAddress, directSaleConfig.currencyAddress); + } + + return ""; + } + + function _secondaryFailureData( + bytes4 _reason, + MarketplaceStorage storage $, + address _contractAddress, + address _seller, + address _currencyAddress, + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) internal view returns (bytes memory) { + SalePrice storage salePrice = $.salePrices[_contractAddress][_tokenId][_seller]; + + if (_reason == QuantityCannotBeZero.selector) return abi.encodeWithSelector(QuantityCannotBeZero.selector); + if (_reason == SalePriceDoesNotExist.selector) { + return abi.encodeWithSelector(SalePriceDoesNotExist.selector, _contractAddress, _tokenId, _seller); + } + if (_reason == SalePriceExpired.selector) { + return abi.encodeWithSelector( + SalePriceExpired.selector, _contractAddress, _tokenId, _seller, salePrice.expirationTime + ); + } + if (_reason == CurrencyMismatch.selector) { + return abi.encodeWithSelector(CurrencyMismatch.selector, _currencyAddress, salePrice.currencyAddress); + } + if (_reason == PriceMismatch.selector) { + return abi.encodeWithSelector(PriceMismatch.selector, _price, salePrice.price); + } + if (_reason == QuantityExceedsSalePriceQuantity.selector) { + return abi.encodeWithSelector(QuantityExceedsSalePriceQuantity.selector, _quantity, salePrice.quantity); + } + + return ""; + } + + function _checkContractOwner(address _contractAddress, address _account) + internal + view + returns (bool readable, bool isOwner) + { + (bool success, bytes memory data) = _contractAddress.staticcall(abi.encodeWithSignature("owner()")); + if (!success || data.length < 32) return (false, false); + return (true, abi.decode(data, (address)) == _account); + } + + function _checkTokenAllowList( + MarketplaceStorage storage $, + address _contractAddress, + uint256 _tokenId, + address _account, + bytes32[] calldata _proof + ) internal view returns (bool) { + AllowListConfig memory allowListConfig = $.tokenAllowlistRoots[_contractAddress][_tokenId]; + if (allowListConfig.root == bytes32(0) || block.timestamp >= allowListConfig.endTimestamp) return true; + return _verifyProof(keccak256(abi.encodePacked(_account)), allowListConfig.root, _proof); + } + + function _singleUintArray(uint256 _value) internal pure returns (uint256[] memory values) { + values = new uint256[](1); + values[0] = _value; + } + + function _revertSelector(bytes memory _revertData) internal pure returns (bytes4 selector) { + if (_revertData.length < 4) return bytes4(0); + + assembly { + selector := mload(add(_revertData, 32)) + } + } + + function _revertBytes(bytes memory _revertData) internal pure { + assembly { + revert(add(_revertData, 32), mload(_revertData)) + } + } + + function _validateMintDirectSaleRequest( + address _contractAddress, + address _currencyAddress, + address _buyer, + MintRequest calldata _request + ) internal view returns (PrimaryPayoutContext memory payoutContext) { + MarketplaceStorage storage $ = _marketplaceStorage(); + (bool valid, bytes4 reason, PrimaryPayoutContext memory checkedContext) = _checkMintDirectSaleRequest( + $, + _contractAddress, + _currencyAddress, + _buyer, + _request.tokenId, + _request.price, + _request.quantity, + _request.proof, + ContractHasNoOwner.selector, + false + ); + if (!valid) _revertMintDirectSaleRequest(reason, $, _contractAddress, _currencyAddress, _buyer, _request); + return checkedContext; + } + + function _validateSecondaryBuyRequest( + MarketplaceStorage storage $, + address _contractAddress, + address _seller, + address _currencyAddress, + BuyRequest calldata _request + ) internal view returns (SecondaryPayoutContext memory payoutContext) { + (bool valid, bytes4 reason, SecondaryPayoutContext memory checkedContext) = _checkSecondaryBuyRequest( + $, _contractAddress, _seller, _currencyAddress, _request.tokenId, _request.price, _request.quantity + ); + if (!valid) _revertSecondaryBuyRequest(reason, $, _contractAddress, _seller, _currencyAddress, _request); + return checkedContext; + } + + function _checkMintDirectSaleRequest( + MarketplaceStorage storage $, + address _contractAddress, + address _currencyAddress, + address _buyer, + uint256 _tokenId, + uint256 _price, + uint256 _quantity, + bytes32[] calldata _proof, + bytes4 _ownerLookupFailureReason, + bool _skipTxLimitCheck + ) internal view returns (bool valid, bytes4 reason, PrimaryPayoutContext memory payoutContext) { + DirectSaleConfig memory directSaleConfig = $.directSaleConfigs[_contractAddress][_tokenId]; + payoutContext.tokenId = _tokenId; + payoutContext.seller = directSaleConfig.seller; + payoutContext.maxMints = directSaleConfig.maxMints; + + if (directSaleConfig.seller == address(0)) return (false, DirectSaleNotConfigured.selector, payoutContext); + + (bool ownerReadable, bool isOwner) = _checkContractOwner(_contractAddress, directSaleConfig.seller); + if (!ownerReadable) return (false, _ownerLookupFailureReason, payoutContext); + if (!isOwner) return (false, NotContractOwner.selector, payoutContext); + if (!_checkTokenAllowList($, _contractAddress, _tokenId, _buyer, _proof)) { + return (false, AddressNotAllowlisted.selector, payoutContext); + } + if (_quantity == 0) return (false, QuantityCannotBeZero.selector, payoutContext); + + uint256 mintLimit = $.tokenMintLimit[_contractAddress][_tokenId]; + uint256 currentMints = $.tokenMintsPerAddress[_contractAddress][_tokenId][_buyer]; + if (mintLimit != 0 && currentMints + _quantity > mintLimit) { + return (false, MintLimitExceeded.selector, payoutContext); + } + + if (!_skipTxLimitCheck) { + uint256 txLimit = $.tokenTxLimit[_contractAddress][_tokenId]; + uint256 currentTxs = $.tokenTxsPerAddress[_contractAddress][_tokenId][_buyer]; + if (txLimit != 0 && currentTxs + 1 > txLimit) { + return (false, TransactionLimitExceeded.selector, payoutContext); + } + } + + if (directSaleConfig.maxMints != 0 && _quantity > directSaleConfig.maxMints) { + return (false, MaxMintExceeded.selector, payoutContext); + } + if (directSaleConfig.startTime > block.timestamp) return (false, SaleNotStarted.selector, payoutContext); + if (_price != directSaleConfig.price) return (false, PriceMismatch.selector, payoutContext); + if (directSaleConfig.currencyAddress != _currencyAddress) { + return (false, CurrencyMismatch.selector, payoutContext); + } + + payoutContext.grossAmount = _quantity * _price; + payoutContext.splitRecipients = directSaleConfig.splitRecipients; + payoutContext.splitRatios = directSaleConfig.splitRatios; + + return (true, bytes4(0), payoutContext); + } + + function _checkSecondaryBuyRequest( + MarketplaceStorage storage $, + address _contractAddress, + address _seller, + address _currencyAddress, + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) internal view returns (bool valid, bytes4 reason, SecondaryPayoutContext memory payoutContext) { + payoutContext.tokenId = _tokenId; + if (_quantity == 0) return (false, QuantityCannotBeZero.selector, payoutContext); + + SalePrice storage salePrice = $.salePrices[_contractAddress][_tokenId][_seller]; + if (salePrice.quantity == 0) return (false, SalePriceDoesNotExist.selector, payoutContext); + if (salePrice.expirationTime != 0 && salePrice.expirationTime <= block.timestamp) { + return (false, SalePriceExpired.selector, payoutContext); + } + if (salePrice.currencyAddress != _currencyAddress) return (false, CurrencyMismatch.selector, payoutContext); + if (salePrice.price != _price) return (false, PriceMismatch.selector, payoutContext); + if (salePrice.quantity < _quantity) { + return (false, QuantityExceedsSalePriceQuantity.selector, payoutContext); + } + + payoutContext.grossAmount = _quantity * _price; + payoutContext.splitRecipients = salePrice.splitRecipients; + payoutContext.splitRatios = salePrice.splitRatios; + + return (true, bytes4(0), payoutContext); + } + + function _revertMintDirectSaleRequest( + bytes4 _reason, + MarketplaceStorage storage $, + address _contractAddress, + address _currencyAddress, + address _buyer, + MintRequest calldata _request + ) internal view { + _revertBytes( + _mintFailureData( + _reason, + $, + _contractAddress, + _currencyAddress, + _buyer, + _request.tokenId, + _request.price, + _request.quantity + ) + ); + } + + function _revertSecondaryBuyRequest( + bytes4 _reason, + MarketplaceStorage storage $, + address _contractAddress, + address _seller, + address _currencyAddress, + BuyRequest calldata _request + ) internal view { + _revertBytes( + _secondaryFailureData( + _reason, + $, + _contractAddress, + _seller, + _currencyAddress, + _request.tokenId, + _request.price, + _request.quantity + ) + ); + } + + function _allocateOfferFees(Offer storage _offer, uint256 _quantity) + internal + returns (uint256 marketplaceFee, uint256 stakingFee) + { + uint256 remainingQuantity = _offer.quantity; + if (_quantity == remainingQuantity) { + marketplaceFee = _offer.marketplaceFeeRemaining; + stakingFee = _offer.stakingFeeRemaining; + delete _offer.currencyAddress; + delete _offer.price; + delete _offer.quantity; + delete _offer.initialQuantity; + delete _offer.marketplaceFeeRemaining; + delete _offer.marketplaceFeeTotal; + delete _offer.stakingFeeRemaining; + delete _offer.stakingFeeTotal; + delete _offer.expirationTime; + return (marketplaceFee, stakingFee); + } + + uint256 marketplaceFeeTotal = _offer.marketplaceFeeTotal; + uint256 initialQuantity = _offer.initialQuantity; + uint256 filledQuantityBefore = initialQuantity - remainingQuantity; + uint256 filledQuantityAfter = filledQuantityBefore + _quantity; + uint256 marketplaceFeePaidBefore = marketplaceFeeTotal - _offer.marketplaceFeeRemaining; + uint256 marketplaceFeeDueAfter = Math.mulDiv(marketplaceFeeTotal, filledQuantityAfter, initialQuantity); + + marketplaceFee = marketplaceFeeDueAfter - marketplaceFeePaidBefore; + uint256 stakingFeeTotal = _offer.stakingFeeTotal; + if (stakingFeeTotal != 0) { + uint256 stakingFeePaidBefore = stakingFeeTotal - _offer.stakingFeeRemaining; + uint256 stakingFeeDueAfter = Math.mulDiv(stakingFeeTotal, marketplaceFeeDueAfter, marketplaceFeeTotal); + stakingFee = stakingFeeDueAfter - stakingFeePaidBefore; + } + + _offer.quantity = remainingQuantity - _quantity; + _offer.marketplaceFeeRemaining -= marketplaceFee; + _offer.stakingFeeRemaining -= stakingFee; + } +} diff --git a/src/marketplace/RareERC1155Marketplace.sol b/src/marketplace/RareERC1155Marketplace.sol index 6b66311..79214c2 100644 --- a/src/marketplace/RareERC1155Marketplace.sol +++ b/src/marketplace/RareERC1155Marketplace.sol @@ -8,16 +8,17 @@ import {UUPSUpgradeable} from "openzeppelin-contracts-upgradeable/proxy/utils/UU import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; import {IERC1155ApprovalManager} from "../v2/approver/ERC1155/IERC1155ApprovalManager.sol"; +import {IRareERC1155CheckoutExecutionModule} from "./IRareERC1155CheckoutExecutionModule.sol"; import {IRareERC1155Marketplace} from "./IRareERC1155Marketplace.sol"; -import {IRareERC1155Settlement} from "./IRareERC1155Settlement.sol"; +import {IRareERC1155TradeExecutionModule} from "./IRareERC1155TradeExecutionModule.sol"; import {RareERC1155MarketplacePayments} from "./RareERC1155MarketplacePayments.sol"; import {RareERC1155MarketplaceStorage} from "./RareERC1155MarketplaceStorage.sol"; /// @author SuperRare Labs Inc. /// @title RareERC1155Marketplace -/// @notice ERC1155 marketplace state, escrow, configuration, and settlement entrypoint. -/// @dev The marketplace is the UUPS proxy-facing contract and owns all marketplace storage. Settlement execution is -/// routed through delegatecall so settlement reads and writes the marketplace proxy's ERC-7201 storage namespace. +/// @notice ERC1155 marketplace state, escrow, configuration, and execution module router. +/// @dev The marketplace is the UUPS proxy-facing contract and owns all marketplace storage. Trade and checkout +/// execution are routed through delegatecall so modules read and write the marketplace proxy's ERC-7201 namespace. contract RareERC1155Marketplace is IRareERC1155Marketplace, RareERC1155MarketplaceStorage, @@ -50,7 +51,8 @@ contract RareERC1155Marketplace is address _erc20ApprovalManager, address _erc721ApprovalManager, address _erc1155ApprovalManager, - address _settlement + address _tradeExecutionModule, + address _checkoutExecutionModule ) external initializer { _validateMarketConfigAddress(_networkBeneficiary, NETWORK_BENEFICIARY_FIELD); _validateMarketConfigAddress(_marketplaceSettings, MARKETPLACE_SETTINGS_FIELD); @@ -63,7 +65,8 @@ contract RareERC1155Marketplace is _validateApprovalManager(_erc20ApprovalManager); _validateApprovalManager(_erc721ApprovalManager); _validateApprovalManager(_erc1155ApprovalManager); - _validateSettlement(_settlement); + _validateExecutionModule(_tradeExecutionModule); + _validateExecutionModule(_checkoutExecutionModule); MarketplaceStorage storage $ = _marketplaceStorage(); $.marketConfig = MarketConfigV2.generateMarketConfig( @@ -79,7 +82,8 @@ contract RareERC1155Marketplace is _erc721ApprovalManager ); $.erc1155ApprovalManager = IERC1155ApprovalManager(_erc1155ApprovalManager); - $.settlement = _settlement; + $.tradeExecutionModule = _tradeExecutionModule; + $.checkoutExecutionModule = _checkoutExecutionModule; __Ownable_init(); __ReentrancyGuard_init(); @@ -133,6 +137,24 @@ contract RareERC1155Marketplace is } } + function cancelMintDirectSales(address _contractAddress, uint256[] calldata _tokenIds) external nonReentrant { + if (!_isContractOwner(_contractAddress, msg.sender)) { + revert NotContractOwner(_contractAddress, msg.sender); + } + _validateTokenIds(_tokenIds); + + MarketplaceStorage storage $ = _marketplaceStorage(); + for (uint256 i = 0; i < _tokenIds.length; i++) { + uint256 tokenId = _tokenIds[i]; + if ($.directSaleConfigs[_contractAddress][tokenId].seller == address(0)) { + continue; + } + + delete $.directSaleConfigs[_contractAddress][tokenId]; + emit MintDirectSaleCancelled(_contractAddress, tokenId); + } + } + function setTokenAllowListConfigs(address _contractAddress, AllowListConfigRequest[] calldata _requests) external nonReentrant @@ -285,6 +307,10 @@ contract RareERC1155Marketplace is uint256 grossAmount = _price * _quantity; uint256 marketplaceFee = $.marketConfig.marketplaceSettings.calculateMarketplaceFee(grossAmount); + uint256 stakingFee = $.marketConfig.stakingSettings.calculateStakingFee(grossAmount); + if (stakingFee > marketplaceFee) { + revert StakingFeeExceedsMarketplaceFee(marketplaceFee, stakingFee); + } $.marketConfig.checkAmountAndTransfer(_currencyAddress, grossAmount + marketplaceFee); Offer memory previousOffer = $.offers[_contractAddress][_tokenId][msg.sender][_currencyAddress]; @@ -295,6 +321,8 @@ contract RareERC1155Marketplace is initialQuantity: _quantity, marketplaceFeeRemaining: marketplaceFee, marketplaceFeeTotal: marketplaceFee, + stakingFeeRemaining: stakingFee, + stakingFeeTotal: stakingFee, expirationTime: _expirationTime }); @@ -341,9 +369,13 @@ contract RareERC1155Marketplace is nonReentrant notPaused { - _delegateToSettlement( + _delegateToModule( + _marketplaceStorage().tradeExecutionModule, abi.encodeWithSelector( - IRareERC1155Settlement.mintDirectSaleBatch.selector, _contractAddress, _currencyAddress, _requests + IRareERC1155TradeExecutionModule.mintDirectSaleBatch.selector, + _contractAddress, + _currencyAddress, + _requests ) ); } @@ -354,9 +386,14 @@ contract RareERC1155Marketplace is address _currencyAddress, BuyRequest[] calldata _requests ) external payable nonReentrant notPaused { - _delegateToSettlement( + _delegateToModule( + _marketplaceStorage().tradeExecutionModule, abi.encodeWithSelector( - IRareERC1155Settlement.buyBatch.selector, _contractAddress, _seller, _currencyAddress, _requests + IRareERC1155TradeExecutionModule.buyBatch.selector, + _contractAddress, + _seller, + _currencyAddress, + _requests ) ); } @@ -371,9 +408,10 @@ contract RareERC1155Marketplace is address payable[] calldata _splitRecipients, uint8[] calldata _splitRatios ) external nonReentrant notPaused { - _delegateToSettlement( + _delegateToModule( + _marketplaceStorage().tradeExecutionModule, abi.encodeWithSelector( - IRareERC1155Settlement.acceptOffer.selector, + IRareERC1155TradeExecutionModule.acceptOffer.selector, _contractAddress, _tokenId, _buyer, @@ -394,7 +432,10 @@ contract RareERC1155Marketplace is returns (CheckoutExecution memory) { return abi.decode( - _delegateToSettlement(abi.encodeWithSelector(IRareERC1155Settlement.checkout.selector, _items)), + _delegateToModule( + _marketplaceStorage().checkoutExecutionModule, + abi.encodeWithSelector(IRareERC1155CheckoutExecutionModule.checkout.selector, _items) + ), (CheckoutExecution) ); } @@ -463,8 +504,12 @@ contract RareERC1155Marketplace is return address(_marketplaceStorage().erc1155ApprovalManager); } - function getSettlement() external view returns (address) { - return _marketplaceStorage().settlement; + function getTradeExecutionModule() external view returns (address) { + return _marketplaceStorage().tradeExecutionModule; + } + + function getCheckoutExecutionModule() external view returns (address) { + return _marketplaceStorage().checkoutExecutionModule; } function isPaused() external view returns (bool) { @@ -537,10 +582,16 @@ contract RareERC1155Marketplace is emit MarketplaceDependencyUpdated(ERC1155_APPROVAL_MANAGER_FIELD, _erc1155ApprovalManager); } - function setSettlement(address _settlement) external onlyOwner { - _validateSettlement(_settlement); - _marketplaceStorage().settlement = _settlement; - emit MarketplaceDependencyUpdated(SETTLEMENT_FIELD, _settlement); + function setTradeExecutionModule(address _tradeExecutionModule) external onlyOwner { + _validateExecutionModule(_tradeExecutionModule); + _marketplaceStorage().tradeExecutionModule = _tradeExecutionModule; + emit MarketplaceDependencyUpdated(TRADE_EXECUTION_MODULE_FIELD, _tradeExecutionModule); + } + + function setCheckoutExecutionModule(address _checkoutExecutionModule) external onlyOwner { + _validateExecutionModule(_checkoutExecutionModule); + _marketplaceStorage().checkoutExecutionModule = _checkoutExecutionModule; + emit MarketplaceDependencyUpdated(CHECKOUT_EXECUTION_MODULE_FIELD, _checkoutExecutionModule); } function setContractPaused(bool _isPaused) external onlyOwner { @@ -548,10 +599,10 @@ contract RareERC1155Marketplace is emit ContractPausedUpdated(_isPaused); } - function _delegateToSettlement(bytes memory _callData) private returns (bytes memory) { - (bool success, bytes memory data) = _marketplaceStorage().settlement.delegatecall(_callData); + function _delegateToModule(address _module, bytes memory _callData) private returns (bytes memory) { + (bool success, bytes memory data) = _module.delegatecall(_callData); if (!success) { - if (data.length == 0) revert SettlementDelegateCallFailed(data); + if (data.length == 0) revert ExecutionModuleDelegateCallFailed(data); assembly { revert(add(data, 32), mload(data)) } diff --git a/src/marketplace/RareERC1155MarketplacePayments.sol b/src/marketplace/RareERC1155MarketplacePayments.sol index 3020e86..7802459 100644 --- a/src/marketplace/RareERC1155MarketplacePayments.sol +++ b/src/marketplace/RareERC1155MarketplacePayments.sol @@ -13,6 +13,8 @@ import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; library RareERC1155MarketplacePayments { using SafeERC20 for IERC20; + uint256 private constant MAX_ROYALTY_RECIPIENTS = 5; + function checkIfCurrencyIsApproved(MarketConfigV2.Config storage _config, address _currencyAddress) public view { if (_currencyAddress != address(0) && !_config.approvedTokenRegistry.isApprovedToken(_currencyAddress)) { revert IRareERC1155MarketplaceTypes.CurrencyNotApproved(_currencyAddress); @@ -118,13 +120,41 @@ library RareERC1155MarketplacePayments { address _seller, address payable[] memory _splitRecipients, uint8[] memory _splitRatios + ) public { + uint256 stakingFee = _marketplaceFee == 0 ? 0 : _config.stakingSettings.calculateStakingFee(_amount); + payoutSecondaryWithStakingFee( + _config, + _contractAddress, + _tokenId, + _currencyAddress, + _amount, + _marketplaceFee, + stakingFee, + _seller, + _splitRecipients, + _splitRatios + ); + } + + function payoutSecondaryWithStakingFee( + MarketConfigV2.Config storage _config, + address _contractAddress, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + uint256 _marketplaceFee, + uint256 _stakingFee, + address _seller, + address payable[] memory _splitRecipients, + uint8[] memory _splitRatios ) public { uint256 remainingAmount = _amount; - payoutMarketplaceFee(_config, _currencyAddress, _amount, _marketplaceFee, _seller); + payoutMarketplaceFeeWithStakingFee(_config, _currencyAddress, _marketplaceFee, _stakingFee, _seller); (address payable[] memory receivers, uint256[] memory royalties) = _config.royaltyEngine.getRoyalty(_contractAddress, _tokenId, _amount); + (receivers, royalties) = _truncateRoyaltyRecipients(receivers, royalties); uint256 totalRoyalties = 0; for (uint256 i = 0; i < royalties.length; i++) { @@ -155,8 +185,22 @@ library RareERC1155MarketplacePayments { } uint256 stakingFee = _config.stakingSettings.calculateStakingFee(_amount); - if (stakingFee > _marketplaceFee) { - revert IRareERC1155MarketplaceTypes.StakingFeeExceedsMarketplaceFee(_marketplaceFee, stakingFee); + payoutMarketplaceFeeWithStakingFee(_config, _currencyAddress, _marketplaceFee, stakingFee, _seller); + } + + function payoutMarketplaceFeeWithStakingFee( + MarketConfigV2.Config storage _config, + address _currencyAddress, + uint256 _marketplaceFee, + uint256 _stakingFee, + address _seller + ) public { + if (_marketplaceFee == 0) { + return; + } + + if (_stakingFee > _marketplaceFee) { + revert IRareERC1155MarketplaceTypes.StakingFeeExceedsMarketplaceFee(_marketplaceFee, _stakingFee); } address payable[] memory recipients = new address payable[](2); @@ -165,8 +209,8 @@ library RareERC1155MarketplacePayments { recipients[1] = recipients[1] == address(0) ? payable(_config.networkBeneficiary) : recipients[1]; uint256[] memory amounts = new uint256[](2); - amounts[0] = _marketplaceFee - stakingFee; - amounts[1] = stakingFee; + amounts[0] = _marketplaceFee - _stakingFee; + amounts[1] = _stakingFee; if (amounts[0] == 0) { address payable[] memory stakingRecipients = new address payable[](1); @@ -225,6 +269,35 @@ library RareERC1155MarketplacePayments { IERC20(_currencyAddress).safeTransfer(_recipient, _amount); } + function _truncateRoyaltyRecipients(address payable[] memory _receivers, uint256[] memory _royalties) + private + pure + returns (address payable[] memory receivers, uint256[] memory royalties) + { + if (_receivers.length != _royalties.length) { + revert IRareERC1155MarketplaceTypes.PayoutLengthMismatch(_receivers.length, _royalties.length); + } + + uint256 royaltyRecipientCount = + _receivers.length > MAX_ROYALTY_RECIPIENTS ? MAX_ROYALTY_RECIPIENTS : _receivers.length; + for (uint256 i = 0; i < royaltyRecipientCount; i++) { + if (_receivers[i] == address(0) && _royalties[i] != 0) { + revert IRareERC1155MarketplaceTypes.RoyaltyRecipientCannotBeZero(i); + } + } + + if (_receivers.length <= MAX_ROYALTY_RECIPIENTS) { + return (_receivers, _royalties); + } + + receivers = new address payable[](MAX_ROYALTY_RECIPIENTS); + royalties = new uint256[](MAX_ROYALTY_RECIPIENTS); + for (uint256 i = 0; i < MAX_ROYALTY_RECIPIENTS; i++) { + receivers[i] = _receivers[i]; + royalties[i] = _royalties[i]; + } + } + function payoutSplits( MarketConfigV2.Config storage _config, address _currencyAddress, diff --git a/src/marketplace/RareERC1155MarketplaceStorage.sol b/src/marketplace/RareERC1155MarketplaceStorage.sol index e5090f5..5a66b91 100644 --- a/src/marketplace/RareERC1155MarketplaceStorage.sol +++ b/src/marketplace/RareERC1155MarketplaceStorage.sol @@ -13,7 +13,7 @@ import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; /// @title RareERC1155MarketplaceStorage /// @notice ERC-7201 storage namespace and validation helpers for the ERC1155 marketplace. /// @dev This is not a deployable marketplace. `RareERC1155Marketplace` owns this storage behind the proxy, and -/// `RareERC1155Settlement` uses the same namespace when executed through delegatecall from the marketplace. +/// execution modules use the same namespace when executed through delegatecall from the marketplace. abstract contract RareERC1155MarketplaceStorage is IRareERC1155MarketplaceTypes { uint256 public constant MAX_BATCH_SIZE = 75; uint256 public constant MAX_CHECKOUT_SIZE = 50; @@ -29,18 +29,22 @@ abstract contract RareERC1155MarketplaceStorage is IRareERC1155MarketplaceTypes bytes32 internal constant ERC20_APPROVAL_MANAGER_FIELD = "ERC20_APPROVAL_MANAGER"; bytes32 internal constant ERC721_APPROVAL_MANAGER_FIELD = "ERC721_APPROVAL_MANAGER"; bytes32 internal constant ERC1155_APPROVAL_MANAGER_FIELD = "ERC1155_APPROVAL_MANAGER"; - bytes32 internal constant SETTLEMENT_FIELD = "SETTLEMENT"; + bytes32 internal constant TRADE_EXECUTION_MODULE_FIELD = "TRADE_EXECUTION_MODULE"; + bytes32 internal constant CHECKOUT_EXECUTION_MODULE_FIELD = "CHECKOUT_EXECUTION_MODULE"; /// @custom:storage-location erc7201:superrare.storage.RareERC1155Marketplace - /// @dev Append new fields to the end. Marketplace and settlement implementations must share this exact layout because - /// settlement runs against marketplace proxy storage through delegatecall. + /// @dev Append new persistent marketplace fields to this struct only. Marketplace and execution modules must share + /// this exact layout because modules run against marketplace proxy storage through delegatecall. Do not add ordinary + /// contract-level state variables to the marketplace or execution modules; use this namespace instead. struct MarketplaceStorage { /// @notice Shared V2 marketplace dependency bundle. MarketConfigV2.Config marketConfig; /// @notice ERC1155 approval manager used for seller token transfers. IERC1155ApprovalManager erc1155ApprovalManager; - /// @notice Delegatecall target used for settlement entrypoints. - address settlement; + /// @notice Delegatecall target used for direct sale mint, listing buy, and offer acceptance. + address tradeExecutionModule; + /// @notice Delegatecall target used for multi-item checkout. + address checkoutExecutionModule; /// @notice Primary mint sale configs keyed by collection and token id. mapping(address => mapping(uint256 => DirectSaleConfig)) directSaleConfigs; /// @notice Active mint allowlist configs keyed by collection and token id. @@ -57,7 +61,7 @@ abstract contract RareERC1155MarketplaceStorage is IRareERC1155MarketplaceTypes mapping(address => mapping(uint256 => mapping(address => SalePrice))) salePrices; /// @notice Escrowed offers keyed by collection, token id, buyer, and currency. mapping(address => mapping(uint256 => mapping(address => mapping(address => Offer)))) offers; - /// @notice Pauses marketplace writes and settlement entrypoints. + /// @notice Pauses marketplace writes and execution module entrypoints. bool paused; } @@ -79,8 +83,8 @@ abstract contract RareERC1155MarketplaceStorage is IRareERC1155MarketplaceTypes if (_approvalManager == address(0)) revert ApprovalManagerCannotBeZero(); } - function _validateSettlement(address _settlement) internal pure { - if (_settlement == address(0)) revert SettlementCannotBeZero(); + function _validateExecutionModule(address _module) internal view { + if (_module == address(0) || _module.code.length == 0) revert InvalidExecutionModule(); } function _validateERC1155Contract(address _contractAddress) internal view { diff --git a/src/marketplace/RareERC1155Settlement.sol b/src/marketplace/RareERC1155Settlement.sol deleted file mode 100644 index b50b13a..0000000 --- a/src/marketplace/RareERC1155Settlement.sol +++ /dev/null @@ -1,1443 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.18; - -import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; -import {ERC165Checker} from "openzeppelin-contracts/utils/introspection/ERC165Checker.sol"; -import {Math} from "openzeppelin-contracts/utils/math/Math.sol"; - -import {IRareERC1155} from "../token/ERC1155/IRareERC1155.sol"; -import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; -import {IRareERC1155Settlement} from "./IRareERC1155Settlement.sol"; -import {RareERC1155MarketplacePayments} from "./RareERC1155MarketplacePayments.sol"; -import {RareERC1155MarketplaceStorage} from "./RareERC1155MarketplaceStorage.sol"; -import {RareERC1155SettlementCheckoutUtils} from "./RareERC1155SettlementCheckoutUtils.sol"; - -/// @author SuperRare Labs Inc. -/// @title RareERC1155Settlement -/// @notice Delegatecall-only settlement module for the ERC1155 marketplace. -/// @dev Direct calls revert because this contract has no standalone marketplace state or escrow. It must run through -/// `RareERC1155Marketplace` so `address(this)`, `msg.sender`, `msg.value`, and storage all resolve to the marketplace proxy. -contract RareERC1155Settlement is IRareERC1155Settlement, RareERC1155MarketplaceStorage { - using RareERC1155MarketplacePayments for MarketConfigV2.Config; - - address private immutable SELF = address(this); - - struct PrimaryPayoutContext { - uint256 tokenId; - uint256 grossAmount; - uint256 marketplaceFee; - uint256 maxMints; - address seller; - address payable[] splitRecipients; - uint8[] splitRatios; - } - - struct SecondaryPayoutContext { - uint256 tokenId; - uint256 grossAmount; - uint256 marketplaceFee; - address payable[] splitRecipients; - uint8[] splitRatios; - } - - struct AcceptOfferInput { - address contractAddress; - uint256 tokenId; - address buyer; - address currencyAddress; - uint256 price; - uint256 quantity; - } - - struct CheckoutFillContext { - address seller; - uint256 grossAmount; - uint256 marketplaceFee; - uint256 maxMints; - address payable[] splitRecipients; - uint8[] splitRatios; - } - - struct CheckoutDirectSaleMintAggregate { - address contractAddress; - uint256 tokenId; - uint256 quantity; - } - - modifier onlyDelegateCall() { - _onlyDelegateCall(); - _; - } - - function _onlyDelegateCall() internal view { - if (address(this) == SELF) revert DirectSettlementCallUnsupported(); - } - - function mintDirectSaleBatch(address _contractAddress, address _currencyAddress, MintRequest[] calldata _requests) - external - payable - onlyDelegateCall - { - _validateMintRequests(_requests); - MarketplaceStorage storage $ = _marketplaceStorage(); - $.marketConfig.checkIfCurrencyIsApproved(_currencyAddress); - _validateERC1155Contract(_contractAddress); - - uint256 requestCount = _requests.length; - uint256[] memory tokenIds = new uint256[](requestCount); - uint256[] memory amounts = new uint256[](requestCount); - PrimaryPayoutContext[] memory payoutContexts = new PrimaryPayoutContext[](requestCount); - uint256 buyerTotal = 0; - - for (uint256 i = 0; i < requestCount;) { - payoutContexts[i] = - _validateMintDirectSaleRequest(_contractAddress, _currencyAddress, msg.sender, _requests[i]); - if (payoutContexts[i].grossAmount != 0) { - payoutContexts[i].marketplaceFee = - $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContexts[i].grossAmount); - buyerTotal += payoutContexts[i].grossAmount + payoutContexts[i].marketplaceFee; - } - - tokenIds[i] = payoutContexts[i].tokenId; - amounts[i] = _requests[i].quantity; - - unchecked { - ++i; - } - } - - $.marketConfig.checkBatchPayment(_currencyAddress, buyerTotal); - - for (uint256 i = 0; i < requestCount;) { - uint256 tokenId = _requests[i].tokenId; - - if ($.tokenMintLimit[_contractAddress][tokenId] > 0) { - $.tokenMintsPerAddress[_contractAddress][tokenId][msg.sender] += _requests[i].quantity; - } - - if ($.tokenTxLimit[_contractAddress][tokenId] > 0) { - $.tokenTxsPerAddress[_contractAddress][tokenId][msg.sender] += 1; - } - - unchecked { - ++i; - } - } - - _mintBatchToWithBalanceCheck(_contractAddress, msg.sender, tokenIds, amounts); - - for (uint256 i = 0; i < requestCount;) { - if (payoutContexts[i].grossAmount != 0) { - $.marketConfig - .payoutPrimary( - _contractAddress, - _currencyAddress, - payoutContexts[i].grossAmount, - payoutContexts[i].marketplaceFee, - payoutContexts[i].seller, - payoutContexts[i].splitRecipients, - payoutContexts[i].splitRatios - ); - } - - emit MintDirectSale( - _contractAddress, - payoutContexts[i].tokenId, - msg.sender, - payoutContexts[i].seller, - _requests[i].quantity, - _currencyAddress, - _requests[i].price - ); - - unchecked { - ++i; - } - } - } - - function buyBatch( - address _contractAddress, - address _seller, - address _currencyAddress, - BuyRequest[] calldata _requests - ) external payable onlyDelegateCall { - _validateBuyRequests(_requests); - if (msg.sender == _seller) revert SelfPurchaseUnsupported(_seller); - - MarketplaceStorage storage $ = _marketplaceStorage(); - $.marketConfig.checkIfCurrencyIsApproved(_currencyAddress); - _validateERC1155Contract(_contractAddress); - - IERC1155 erc1155 = IERC1155(_contractAddress); - if (!erc1155.isApprovedForAll(_seller, address($.erc1155ApprovalManager))) { - revert MarketplaceNotApproved(_seller, _contractAddress); - } - - uint256 requestCount = _requests.length; - uint256[] memory tokenIds = new uint256[](requestCount); - uint256[] memory amounts = new uint256[](requestCount); - SecondaryPayoutContext[] memory payoutContexts = new SecondaryPayoutContext[](requestCount); - uint256 buyerTotal = 0; - - for (uint256 i = 0; i < requestCount;) { - payoutContexts[i] = - _validateSecondaryBuyRequest($, _contractAddress, _seller, _currencyAddress, _requests[i]); - - tokenIds[i] = _requests[i].tokenId; - amounts[i] = _requests[i].quantity; - - uint256 sellerBalance = erc1155.balanceOf(_seller, tokenIds[i]); - if (sellerBalance < amounts[i]) { - revert InsufficientTokenBalance(_seller, _contractAddress, tokenIds[i], amounts[i], sellerBalance); - } - - payoutContexts[i].marketplaceFee = - $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContexts[i].grossAmount); - buyerTotal += payoutContexts[i].grossAmount + payoutContexts[i].marketplaceFee; - - unchecked { - ++i; - } - } - - $.marketConfig.checkBatchPayment(_currencyAddress, buyerTotal); - - for (uint256 i = 0; i < requestCount;) { - SalePrice storage salePrice = $.salePrices[_contractAddress][_requests[i].tokenId][_seller]; - salePrice.quantity -= _requests[i].quantity; - if (salePrice.quantity == 0) { - delete $.salePrices[_contractAddress][_requests[i].tokenId][_seller]; - } - - unchecked { - ++i; - } - } - - _safeBatchTransferFrom(_contractAddress, _seller, msg.sender, tokenIds, amounts); - - for (uint256 i = 0; i < requestCount;) { - $.marketConfig - .payoutSecondary( - _contractAddress, - payoutContexts[i].tokenId, - _currencyAddress, - payoutContexts[i].grossAmount, - payoutContexts[i].marketplaceFee, - _seller, - payoutContexts[i].splitRecipients, - payoutContexts[i].splitRatios - ); - - emit Sold( - _seller, - msg.sender, - _contractAddress, - payoutContexts[i].tokenId, - _currencyAddress, - _requests[i].price, - _requests[i].quantity - ); - - unchecked { - ++i; - } - } - } - - function acceptOffer( - address _contractAddress, - uint256 _tokenId, - address _buyer, - address _currencyAddress, - uint256 _price, - uint256 _quantity, - address payable[] calldata _splitRecipients, - uint8[] calldata _splitRatios - ) external onlyDelegateCall { - AcceptOfferInput memory input = AcceptOfferInput({ - contractAddress: _contractAddress, - tokenId: _tokenId, - buyer: _buyer, - currencyAddress: _currencyAddress, - price: _price, - quantity: _quantity - }); - _acceptOffer(input, _splitRecipients, _splitRatios); - } - - function checkout(CheckoutItem[] calldata _items) - external - payable - onlyDelegateCall - returns (CheckoutExecution memory execution) - { - _validateCheckoutSize(_items.length); - - execution.items = new CheckoutItemResult[](_items.length); - MarketplaceStorage storage $ = _marketplaceStorage(); - CheckoutDirectSaleMintAggregate[] memory directSaleMintAggregates = - new CheckoutDirectSaleMintAggregate[](_items.length); - uint256 directSaleMintAggregateCount = 0; - uint256 remainingEth = msg.value; - for (uint256 i = 0; i < _items.length;) { - (CheckoutItemResult memory result, bool filled, uint256 newRemainingEth) = _processCheckoutItem( - $, _items[i], i, remainingEth, directSaleMintAggregates, directSaleMintAggregateCount - ); - if (filled) { - remainingEth = newRemainingEth; - directSaleMintAggregateCount = - _recordCheckoutDirectSaleMint(directSaleMintAggregates, directSaleMintAggregateCount, _items[i]); - execution.summary.filledCount += 1; - if (_items[i].currencyAddress == address(0)) execution.summary.ethSpent += result.totalPaid; - } else { - execution.summary.skippedCount += 1; - } - - execution.items[i] = result; - _emitCheckoutItemProcessed(result); - - unchecked { - ++i; - } - } - - execution.summary.ethRefunded = remainingEth; - if (remainingEth != 0) { - $.marketConfig.refund(address(0), payable(msg.sender), remainingEth); - } - - emit CheckoutCompleted( - msg.sender, - execution.summary.filledCount, - execution.summary.skippedCount, - execution.summary.ethSpent, - execution.summary.ethRefunded - ); - } - - function _processCheckoutItem( - MarketplaceStorage storage $, - CheckoutItem calldata _item, - uint256 _itemIndex, - uint256 _remainingEth, - CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, - uint256 _directSaleMintAggregateCount - ) internal returns (CheckoutItemResult memory result, bool filled, uint256 newRemainingEth) { - result = _baseCheckoutItemResult(_itemIndex, _item); - newRemainingEth = _remainingEth; - - (bool valid, bytes memory failureData, CheckoutFillContext memory context) = _validateCheckoutItem($, _item); - if (context.seller != address(0)) result.seller = context.seller; - if (!valid) { - _setCheckoutItemFailure(result, CheckoutFailureStage.VALIDATION, failureData); - return (result, false, newRemainingEth); - } - - bytes memory aggregateFailureData = _checkoutDirectSaleMintAggregateFailureData( - _item, _directSaleMintAggregates, _directSaleMintAggregateCount, context.maxMints - ); - if (aggregateFailureData.length != 0) { - _setCheckoutItemFailure(result, CheckoutFailureStage.VALIDATION, aggregateFailureData); - return (result, false, newRemainingEth); - } - - (bool success, bytes memory data) = - $.settlement.delegatecall(_checkoutItemCallData(_item, _remainingEth, context)); - if (!success) { - (CheckoutFailureStage stage, bytes memory executionFailureData) = _checkoutExecutionFailure(data); - _setCheckoutItemFailure(result, stage, executionFailureData); - return (result, false, newRemainingEth); - } - - (uint256 totalPaid, uint256 nextRemainingEth) = abi.decode(data, (uint256, uint256)); - result.filled = true; - result.totalPaid = totalPaid; - return (result, true, nextRemainingEth); - } - - function _checkoutItemCallData( - CheckoutItem calldata _item, - uint256 _remainingEth, - CheckoutFillContext memory _context - ) internal pure returns (bytes memory) { - return abi.encodeWithSelector( - IRareERC1155Settlement.executeCheckoutItem.selector, - _item, - _remainingEth, - _context.seller, - _context.grossAmount, - _context.marketplaceFee, - _context.splitRecipients, - _context.splitRatios - ); - } - - function executeCheckoutItem( - CheckoutItem calldata _item, - uint256 _remainingEth, - address _seller, - uint256 _grossAmount, - uint256 _marketplaceFee, - address payable[] calldata _splitRecipients, - uint8[] calldata _splitRatios - ) external payable onlyDelegateCall returns (uint256 totalPaid, uint256 newRemainingEth) { - if (_item.itemKind == uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { - return _executeCheckoutDirectSaleMint( - _item, _remainingEth, _seller, _grossAmount, _marketplaceFee, _splitRecipients, _splitRatios - ); - } - if (_item.itemKind == uint8(CheckoutItemKind.LISTING_BUY)) { - return _executeCheckoutListingBuy( - _item, _remainingEth, _seller, _grossAmount, _marketplaceFee, _splitRecipients, _splitRatios - ); - } - - revert CheckoutItemExecutionFailed( - CheckoutFailureStage.VALIDATION, - abi.encodeWithSelector(UnsupportedCheckoutItemKind.selector, _item.itemKind) - ); - } - - function executeCheckoutPayout( - CheckoutItem calldata _item, - address _seller, - uint256 _grossAmount, - uint256 _marketplaceFee, - address payable[] calldata _splitRecipients, - uint8[] calldata _splitRatios - ) external payable onlyDelegateCall { - MarketplaceStorage storage $ = _marketplaceStorage(); - if (_item.itemKind == uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { - $.marketConfig - .payoutPrimary( - _item.contractAddress, - _item.currencyAddress, - _grossAmount, - _marketplaceFee, - _seller, - _splitRecipients, - _splitRatios - ); - return; - } - if (_item.itemKind == uint8(CheckoutItemKind.LISTING_BUY)) { - $.marketConfig - .payoutSecondary( - _item.contractAddress, - _item.tokenId, - _item.currencyAddress, - _grossAmount, - _marketplaceFee, - _seller, - _splitRecipients, - _splitRatios - ); - return; - } - - revert UnsupportedCheckoutItemKind(_item.itemKind); - } - - function _acceptOffer( - AcceptOfferInput memory _input, - address payable[] calldata _splitRecipients, - uint8[] calldata _splitRatios - ) internal { - if (msg.sender == _input.buyer) { - revert SelfOfferAcceptanceUnsupported(_input.buyer); - } - _validateERC1155Contract(_input.contractAddress); - _marketplaceStorage().marketConfig.checkIfCurrencyIsApproved(_input.currencyAddress); - RareERC1155MarketplacePayments.checkSplits(_splitRecipients, _splitRatios); - if (_input.quantity == 0) revert QuantityCannotBeZero(); - - (uint256 grossAmount, uint256 marketplaceFee) = _validateAndApplyOfferFill(_input); - - MarketplaceStorage storage $ = _marketplaceStorage(); - IERC1155 erc1155 = IERC1155(_input.contractAddress); - if (!erc1155.isApprovedForAll(msg.sender, address($.erc1155ApprovalManager))) { - revert MarketplaceNotApproved(msg.sender, _input.contractAddress); - } - - _safeTransferFrom(_input.contractAddress, msg.sender, _input.buyer, _input.tokenId, _input.quantity); - - $.marketConfig - .payoutSecondary( - _input.contractAddress, - _input.tokenId, - _input.currencyAddress, - grossAmount, - marketplaceFee, - msg.sender, - _splitRecipients, - _splitRatios - ); - - emit OfferAccepted( - msg.sender, - _input.buyer, - _input.contractAddress, - _input.tokenId, - _input.currencyAddress, - _input.price, - _input.quantity - ); - } - - function _executeCheckoutDirectSaleMint( - CheckoutItem calldata _item, - uint256 _remainingEth, - address _seller, - uint256 _grossAmount, - uint256 _marketplaceFee, - address payable[] calldata _splitRecipients, - uint8[] calldata _splitRatios - ) internal returns (uint256 totalPaid, uint256 newRemainingEth) { - newRemainingEth = _remainingEth; - MarketplaceStorage storage $ = _marketplaceStorage(); - - totalPaid = _grossAmount + _marketplaceFee; - bytes memory paymentFailureData = RareERC1155SettlementCheckoutUtils.checkoutPaymentFailureData( - $.marketConfig, _item.currencyAddress, totalPaid, _remainingEth - ); - if (paymentFailureData.length != 0) { - revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYMENT_COLLECTION, paymentFailureData); - } - - bool mintLimitEnabled = $.tokenMintLimit[_item.contractAddress][_item.tokenId] > 0; - bool txLimitEnabled = $.tokenTxLimit[_item.contractAddress][_item.tokenId] > 0; - if (mintLimitEnabled) { - $.tokenMintsPerAddress[_item.contractAddress][_item.tokenId][msg.sender] += _item.quantity; - } - if (txLimitEnabled) { - $.tokenTxsPerAddress[_item.contractAddress][_item.tokenId][msg.sender] += 1; - } - - if (_item.currencyAddress == address(0)) { - newRemainingEth = _remainingEth - totalPaid; - } else { - RareERC1155SettlementCheckoutUtils.collectCheckoutErc20($.marketConfig, _item.currencyAddress, totalPaid); - } - - RareERC1155SettlementCheckoutUtils.checkoutMintBatchToWithBalanceCheck( - _item.contractAddress, msg.sender, _singleUintArray(_item.tokenId), _singleUintArray(_item.quantity) - ); - - if (_grossAmount != 0) { - _executeCheckoutPayout($, _item, _seller, _grossAmount, _marketplaceFee, _splitRecipients, _splitRatios); - } - - emit MintDirectSale( - _item.contractAddress, - _item.tokenId, - msg.sender, - _seller, - _item.quantity, - _item.currencyAddress, - _item.price - ); - } - - function _executeCheckoutListingBuy( - CheckoutItem calldata _item, - uint256 _remainingEth, - address _seller, - uint256 _grossAmount, - uint256 _marketplaceFee, - address payable[] calldata _splitRecipients, - uint8[] calldata _splitRatios - ) internal returns (uint256 totalPaid, uint256 newRemainingEth) { - newRemainingEth = _remainingEth; - MarketplaceStorage storage $ = _marketplaceStorage(); - - totalPaid = _grossAmount + _marketplaceFee; - bytes memory paymentFailureData = RareERC1155SettlementCheckoutUtils.checkoutPaymentFailureData( - $.marketConfig, _item.currencyAddress, totalPaid, _remainingEth - ); - if (paymentFailureData.length != 0) { - revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYMENT_COLLECTION, paymentFailureData); - } - - if (_item.currencyAddress == address(0)) { - newRemainingEth = _remainingEth - totalPaid; - } else { - RareERC1155SettlementCheckoutUtils.collectCheckoutErc20($.marketConfig, _item.currencyAddress, totalPaid); - } - - SalePrice storage salePrice = $.salePrices[_item.contractAddress][_item.tokenId][_seller]; - salePrice.quantity -= _item.quantity; - if (salePrice.quantity == 0) { - delete $.salePrices[_item.contractAddress][_item.tokenId][_seller]; - } - - RareERC1155SettlementCheckoutUtils.checkoutSafeTransferFrom( - $.erc1155ApprovalManager, _item.contractAddress, _seller, msg.sender, _item.tokenId, _item.quantity - ); - - _executeCheckoutPayout($, _item, _seller, _grossAmount, _marketplaceFee, _splitRecipients, _splitRatios); - - emit Sold( - _seller, - msg.sender, - _item.contractAddress, - _item.tokenId, - _item.currencyAddress, - _item.price, - _item.quantity - ); - } - - function _validateCheckoutItem(MarketplaceStorage storage $, CheckoutItem calldata _item) - internal - view - returns (bool valid, bytes memory failureData, CheckoutFillContext memory context) - { - if (_item.itemKind == uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { - return _validateCheckoutDirectSaleMint($, _item); - } - if (_item.itemKind == uint8(CheckoutItemKind.LISTING_BUY)) { - return _validateCheckoutListingBuy($, _item); - } - - return (false, abi.encodeWithSelector(UnsupportedCheckoutItemKind.selector, _item.itemKind), context); - } - - function _validateCheckoutDirectSaleMint(MarketplaceStorage storage $, CheckoutItem calldata _item) - internal - view - returns (bool valid, bytes memory failureData, CheckoutFillContext memory context) - { - if (!_checkoutCurrencyApproved($.marketConfig, _item.currencyAddress)) { - return (false, abi.encodeWithSelector(CurrencyNotApproved.selector, _item.currencyAddress), context); - } - if (!_checkoutValidErc1155Contract(_item.contractAddress)) { - return (false, abi.encodeWithSelector(InvalidERC1155Contract.selector, _item.contractAddress), context); - } - - (bool requestValid, bytes4 reason, PrimaryPayoutContext memory payoutContext) = _checkMintDirectSaleRequest( - $, - _item.contractAddress, - _item.currencyAddress, - msg.sender, - _item.tokenId, - _item.price, - _item.quantity, - _item.proof, - ContractHasNoOwner.selector - ); - context.seller = payoutContext.seller; - if (!requestValid) { - return ( - false, - _mintFailureData( - reason, - $, - _item.contractAddress, - _item.currencyAddress, - msg.sender, - _item.tokenId, - _item.price, - _item.quantity - ), - context - ); - } - - context.grossAmount = payoutContext.grossAmount; - if (context.grossAmount != 0) { - context.marketplaceFee = $.marketConfig.marketplaceSettings.calculateMarketplaceFee(context.grossAmount); - } - context.splitRecipients = payoutContext.splitRecipients; - context.splitRatios = payoutContext.splitRatios; - context.maxMints = payoutContext.maxMints; - - return (true, "", context); - } - - function _validateCheckoutListingBuy(MarketplaceStorage storage $, CheckoutItem calldata _item) - internal - view - returns (bool valid, bytes memory failureData, CheckoutFillContext memory context) - { - context.seller = _item.seller; - if (msg.sender == _item.seller) { - return (false, abi.encodeWithSelector(SelfPurchaseUnsupported.selector, _item.seller), context); - } - if (!_checkoutCurrencyApproved($.marketConfig, _item.currencyAddress)) { - return (false, abi.encodeWithSelector(CurrencyNotApproved.selector, _item.currencyAddress), context); - } - if (!_checkoutValidErc1155Contract(_item.contractAddress)) { - return (false, abi.encodeWithSelector(InvalidERC1155Contract.selector, _item.contractAddress), context); - } - - SecondaryPayoutContext memory payoutContext; - bytes4 reason; - (valid, reason, payoutContext) = _checkSecondaryBuyRequest( - $, _item.contractAddress, _item.seller, _item.currencyAddress, _item.tokenId, _item.price, _item.quantity - ); - if (!valid) { - return ( - false, - _secondaryFailureData( - reason, - $, - _item.contractAddress, - _item.seller, - _item.currencyAddress, - _item.tokenId, - _item.price, - _item.quantity - ), - context - ); - } - - IERC1155 erc1155 = IERC1155(_item.contractAddress); - try erc1155.isApprovedForAll(_item.seller, address($.erc1155ApprovalManager)) returns (bool isApproved) { - if (!isApproved) { - return ( - false, - abi.encodeWithSelector(MarketplaceNotApproved.selector, _item.seller, _item.contractAddress), - context - ); - } - } catch { - return ( - false, - abi.encodeWithSelector(MarketplaceNotApproved.selector, _item.seller, _item.contractAddress), - context - ); - } - - try erc1155.balanceOf(_item.seller, _item.tokenId) returns (uint256 sellerBalance) { - if (sellerBalance < _item.quantity) { - return ( - false, - abi.encodeWithSelector( - InsufficientTokenBalance.selector, - _item.seller, - _item.contractAddress, - _item.tokenId, - _item.quantity, - sellerBalance - ), - context - ); - } - } catch { - return ( - false, - abi.encodeWithSelector( - InsufficientTokenBalance.selector, - _item.seller, - _item.contractAddress, - _item.tokenId, - _item.quantity, - 0 - ), - context - ); - } - - context.grossAmount = payoutContext.grossAmount; - context.marketplaceFee = $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContext.grossAmount); - context.splitRecipients = payoutContext.splitRecipients; - context.splitRatios = payoutContext.splitRatios; - - return (true, "", context); - } - - function _executeCheckoutPayout( - MarketplaceStorage storage $, - CheckoutItem calldata _item, - address _seller, - uint256 _grossAmount, - uint256 _marketplaceFee, - address payable[] calldata _splitRecipients, - uint8[] calldata _splitRatios - ) internal { - (bool success, bytes memory data) = $.settlement - .delegatecall( - abi.encodeWithSelector( - IRareERC1155Settlement.executeCheckoutPayout.selector, - _item, - _seller, - _grossAmount, - _marketplaceFee, - _splitRecipients, - _splitRatios - ) - ); - if (!success) revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYOUT, data); - } - - function _baseCheckoutItemResult(uint256 _itemIndex, CheckoutItem calldata _item) - internal - pure - returns (CheckoutItemResult memory result) - { - result = CheckoutItemResult({ - itemIndex: _itemIndex, - itemKind: _item.itemKind, - contractAddress: _item.contractAddress, - tokenId: _item.tokenId, - seller: _item.seller, - currencyAddress: _item.currencyAddress, - price: _item.price, - quantity: _item.quantity, - filled: false, - failureStage: CheckoutFailureStage.NONE, - reason: bytes4(0), - failureData: new bytes(0), - totalPaid: 0 - }); - } - - function _setCheckoutItemFailure( - CheckoutItemResult memory _result, - CheckoutFailureStage _stage, - bytes memory _failureData - ) internal pure { - _result.failureStage = _stage; - _result.reason = _revertSelector(_failureData); - _result.failureData = _failureData; - } - - function _emitCheckoutItemProcessed(CheckoutItemResult memory _result) internal { - emit CheckoutItemProcessed( - _result.itemIndex, - _result.itemKind, - _result.contractAddress, - _result.tokenId, - _result.seller, - _result.currencyAddress, - _result.price, - _result.quantity, - _result.filled, - _result.failureStage, - _result.reason, - _result.failureData, - _result.totalPaid - ); - } - - function _checkoutExecutionFailure(bytes memory _revertData) - internal - pure - returns (CheckoutFailureStage stage, bytes memory failureData) - { - (bool decoded, CheckoutFailureStage decodedStage, bytes memory decodedFailureData) = - _decodeCheckoutItemExecutionFailed(_revertData); - if (decoded) return (decodedStage, decodedFailureData); - return (CheckoutFailureStage.PAYOUT, _revertData); - } - - function _decodeCheckoutItemExecutionFailed(bytes memory _revertData) - internal - pure - returns (bool decoded, CheckoutFailureStage stage, bytes memory failureData) - { - // CheckoutItemExecutionFailed(CheckoutFailureStage,bytes): - // selector | stage | offset | bytes length | bytes data - if (_revertSelector(_revertData) != CheckoutItemExecutionFailed.selector || _revertData.length < 100) { - return (false, CheckoutFailureStage.NONE, ""); - } - - uint256 stageValue; - uint256 failureDataOffset; - uint256 failureDataLength; - assembly { - stageValue := mload(add(_revertData, 36)) - failureDataOffset := mload(add(_revertData, 68)) - failureDataLength := mload(add(_revertData, 100)) - } - if (stageValue > uint256(uint8(CheckoutFailureStage.PAYOUT)) || failureDataOffset != 64) { - return (false, CheckoutFailureStage.NONE, ""); - } - - if (failureDataLength > _revertData.length - 100) return (false, CheckoutFailureStage.NONE, ""); - - assembly { - failureData := add(_revertData, 100) - } - return (true, CheckoutFailureStage(stageValue), failureData); - } - - function _checkoutDirectSaleMintAggregateFailureData( - CheckoutItem calldata _item, - CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, - uint256 _directSaleMintAggregateCount, - uint256 _maxMints - ) internal pure returns (bytes memory) { - if (_item.itemKind != uint8(CheckoutItemKind.DIRECT_SALE_MINT) || _maxMints == 0) return ""; - - uint256 filledQuantity = _checkoutDirectSaleMintAggregateQuantity( - _directSaleMintAggregates, _directSaleMintAggregateCount, _item.contractAddress, _item.tokenId - ); - uint256 aggregateQuantity = filledQuantity + _item.quantity; - if (aggregateQuantity <= _maxMints) return ""; - - return abi.encodeWithSelector(MaxMintExceeded.selector, aggregateQuantity, _maxMints); - } - - function _checkoutDirectSaleMintAggregateQuantity( - CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, - uint256 _directSaleMintAggregateCount, - address _contractAddress, - uint256 _tokenId - ) internal pure returns (uint256) { - for (uint256 i = 0; i < _directSaleMintAggregateCount;) { - if ( - _directSaleMintAggregates[i].contractAddress == _contractAddress - && _directSaleMintAggregates[i].tokenId == _tokenId - ) { - return _directSaleMintAggregates[i].quantity; - } - - unchecked { - ++i; - } - } - - return 0; - } - - function _recordCheckoutDirectSaleMint( - CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, - uint256 _directSaleMintAggregateCount, - CheckoutItem calldata _item - ) internal pure returns (uint256) { - if (_item.itemKind != uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { - return _directSaleMintAggregateCount; - } - - for (uint256 i = 0; i < _directSaleMintAggregateCount;) { - if ( - _directSaleMintAggregates[i].contractAddress == _item.contractAddress - && _directSaleMintAggregates[i].tokenId == _item.tokenId - ) { - _directSaleMintAggregates[i].quantity += _item.quantity; - return _directSaleMintAggregateCount; - } - - unchecked { - ++i; - } - } - - _directSaleMintAggregates[_directSaleMintAggregateCount] = CheckoutDirectSaleMintAggregate({ - contractAddress: _item.contractAddress, tokenId: _item.tokenId, quantity: _item.quantity - }); - return _directSaleMintAggregateCount + 1; - } - - function _mintFailureData( - bytes4 _reason, - MarketplaceStorage storage $, - address _contractAddress, - address _currencyAddress, - address _buyer, - uint256 _tokenId, - uint256 _price, - uint256 _quantity - ) internal view returns (bytes memory) { - DirectSaleConfig storage directSaleConfig = $.directSaleConfigs[_contractAddress][_tokenId]; - - if (_reason == DirectSaleNotConfigured.selector) { - return abi.encodeWithSelector(DirectSaleNotConfigured.selector, _contractAddress, _tokenId); - } - if (_reason == ContractHasNoOwner.selector) { - return abi.encodeWithSelector(ContractHasNoOwner.selector, _contractAddress); - } - if (_reason == NotContractOwner.selector) { - return abi.encodeWithSelector(NotContractOwner.selector, _contractAddress, directSaleConfig.seller); - } - if (_reason == AddressNotAllowlisted.selector) { - return abi.encodeWithSelector(AddressNotAllowlisted.selector, _buyer); - } - if (_reason == QuantityCannotBeZero.selector) return abi.encodeWithSelector(QuantityCannotBeZero.selector); - if (_reason == MintLimitExceeded.selector) { - uint256 mintLimit = $.tokenMintLimit[_contractAddress][_tokenId]; - uint256 currentMints = $.tokenMintsPerAddress[_contractAddress][_tokenId][_buyer]; - return abi.encodeWithSelector( - MintLimitExceeded.selector, _contractAddress, _tokenId, _buyer, _quantity, currentMints, mintLimit - ); - } - if (_reason == TransactionLimitExceeded.selector) { - uint256 txLimit = $.tokenTxLimit[_contractAddress][_tokenId]; - uint256 currentTxs = $.tokenTxsPerAddress[_contractAddress][_tokenId][_buyer]; - return abi.encodeWithSelector( - TransactionLimitExceeded.selector, _contractAddress, _tokenId, _buyer, currentTxs, txLimit - ); - } - if (_reason == MaxMintExceeded.selector) { - return abi.encodeWithSelector(MaxMintExceeded.selector, _quantity, directSaleConfig.maxMints); - } - if (_reason == SaleNotStarted.selector) { - return abi.encodeWithSelector(SaleNotStarted.selector, directSaleConfig.startTime); - } - if (_reason == PriceMismatch.selector) { - return abi.encodeWithSelector(PriceMismatch.selector, _price, directSaleConfig.price); - } - if (_reason == CurrencyMismatch.selector) { - return abi.encodeWithSelector(CurrencyMismatch.selector, _currencyAddress, directSaleConfig.currencyAddress); - } - - return ""; - } - - function _secondaryFailureData( - bytes4 _reason, - MarketplaceStorage storage $, - address _contractAddress, - address _seller, - address _currencyAddress, - uint256 _tokenId, - uint256 _price, - uint256 _quantity - ) internal view returns (bytes memory) { - SalePrice storage salePrice = $.salePrices[_contractAddress][_tokenId][_seller]; - - if (_reason == QuantityCannotBeZero.selector) return abi.encodeWithSelector(QuantityCannotBeZero.selector); - if (_reason == SalePriceDoesNotExist.selector) { - return abi.encodeWithSelector(SalePriceDoesNotExist.selector, _contractAddress, _tokenId, _seller); - } - if (_reason == SalePriceExpired.selector) { - return abi.encodeWithSelector( - SalePriceExpired.selector, _contractAddress, _tokenId, _seller, salePrice.expirationTime - ); - } - if (_reason == CurrencyMismatch.selector) { - return abi.encodeWithSelector(CurrencyMismatch.selector, _currencyAddress, salePrice.currencyAddress); - } - if (_reason == PriceMismatch.selector) { - return abi.encodeWithSelector(PriceMismatch.selector, _price, salePrice.price); - } - if (_reason == QuantityExceedsSalePriceQuantity.selector) { - return abi.encodeWithSelector(QuantityExceedsSalePriceQuantity.selector, _quantity, salePrice.quantity); - } - - return ""; - } - - function _checkoutCurrencyApproved(MarketConfigV2.Config storage _config, address _currencyAddress) - internal - view - returns (bool) - { - if (_currencyAddress == address(0)) return true; - - try _config.approvedTokenRegistry.isApprovedToken(_currencyAddress) returns (bool approved) { - return approved; - } catch { - return false; - } - } - - function _checkoutValidErc1155Contract(address _contractAddress) internal view returns (bool) { - return _contractAddress.code.length != 0 - && ERC165Checker.supportsInterface(_contractAddress, type(IERC1155).interfaceId); - } - - function _checkContractOwner(address _contractAddress, address _account) - internal - view - returns (bool readable, bool isOwner) - { - (bool success, bytes memory data) = _contractAddress.staticcall(abi.encodeWithSignature("owner()")); - if (!success || data.length < 32) return (false, false); - return (true, abi.decode(data, (address)) == _account); - } - - function _checkTokenAllowList( - MarketplaceStorage storage $, - address _contractAddress, - uint256 _tokenId, - address _account, - bytes32[] calldata _proof - ) internal view returns (bool) { - AllowListConfig memory allowListConfig = $.tokenAllowlistRoots[_contractAddress][_tokenId]; - if (allowListConfig.root == bytes32(0) || block.timestamp >= allowListConfig.endTimestamp) return true; - return _verifyProof(keccak256(abi.encodePacked(_account)), allowListConfig.root, _proof); - } - - function _singleUintArray(uint256 _value) internal pure returns (uint256[] memory values) { - values = new uint256[](1); - values[0] = _value; - } - - function _revertSelector(bytes memory _revertData) internal pure returns (bytes4 selector) { - if (_revertData.length < 4) return bytes4(0); - - assembly { - selector := mload(add(_revertData, 32)) - } - } - - function _revertBytes(bytes memory _revertData) internal pure { - assembly { - revert(add(_revertData, 32), mload(_revertData)) - } - } - - function _validateMintDirectSaleRequest( - address _contractAddress, - address _currencyAddress, - address _buyer, - MintRequest calldata _request - ) internal view returns (PrimaryPayoutContext memory payoutContext) { - MarketplaceStorage storage $ = _marketplaceStorage(); - (bool valid, bytes4 reason, PrimaryPayoutContext memory checkedContext) = _checkMintDirectSaleRequest( - $, - _contractAddress, - _currencyAddress, - _buyer, - _request.tokenId, - _request.price, - _request.quantity, - _request.proof, - ContractHasNoOwner.selector - ); - if (!valid) _revertMintDirectSaleRequest(reason, $, _contractAddress, _currencyAddress, _buyer, _request); - return checkedContext; - } - - function _validateSecondaryBuyRequest( - MarketplaceStorage storage $, - address _contractAddress, - address _seller, - address _currencyAddress, - BuyRequest calldata _request - ) internal view returns (SecondaryPayoutContext memory payoutContext) { - (bool valid, bytes4 reason, SecondaryPayoutContext memory checkedContext) = _checkSecondaryBuyRequest( - $, _contractAddress, _seller, _currencyAddress, _request.tokenId, _request.price, _request.quantity - ); - if (!valid) _revertSecondaryBuyRequest(reason, $, _contractAddress, _seller, _currencyAddress, _request); - return checkedContext; - } - - function _checkMintDirectSaleRequest( - MarketplaceStorage storage $, - address _contractAddress, - address _currencyAddress, - address _buyer, - uint256 _tokenId, - uint256 _price, - uint256 _quantity, - bytes32[] calldata _proof, - bytes4 _ownerLookupFailureReason - ) internal view returns (bool valid, bytes4 reason, PrimaryPayoutContext memory payoutContext) { - DirectSaleConfig memory directSaleConfig = $.directSaleConfigs[_contractAddress][_tokenId]; - payoutContext.tokenId = _tokenId; - payoutContext.seller = directSaleConfig.seller; - payoutContext.maxMints = directSaleConfig.maxMints; - - if (directSaleConfig.seller == address(0)) return (false, DirectSaleNotConfigured.selector, payoutContext); - - (bool ownerReadable, bool isOwner) = _checkContractOwner(_contractAddress, directSaleConfig.seller); - if (!ownerReadable) return (false, _ownerLookupFailureReason, payoutContext); - if (!isOwner) return (false, NotContractOwner.selector, payoutContext); - if (!_checkTokenAllowList($, _contractAddress, _tokenId, _buyer, _proof)) { - return (false, AddressNotAllowlisted.selector, payoutContext); - } - if (_quantity == 0) return (false, QuantityCannotBeZero.selector, payoutContext); - - uint256 mintLimit = $.tokenMintLimit[_contractAddress][_tokenId]; - uint256 currentMints = $.tokenMintsPerAddress[_contractAddress][_tokenId][_buyer]; - if (mintLimit != 0 && currentMints + _quantity > mintLimit) { - return (false, MintLimitExceeded.selector, payoutContext); - } - - uint256 txLimit = $.tokenTxLimit[_contractAddress][_tokenId]; - uint256 currentTxs = $.tokenTxsPerAddress[_contractAddress][_tokenId][_buyer]; - if (txLimit != 0 && currentTxs + 1 > txLimit) { - return (false, TransactionLimitExceeded.selector, payoutContext); - } - - if (directSaleConfig.maxMints != 0 && _quantity > directSaleConfig.maxMints) { - return (false, MaxMintExceeded.selector, payoutContext); - } - if (directSaleConfig.startTime > block.timestamp) return (false, SaleNotStarted.selector, payoutContext); - if (_price != directSaleConfig.price) return (false, PriceMismatch.selector, payoutContext); - if (directSaleConfig.currencyAddress != _currencyAddress) { - return (false, CurrencyMismatch.selector, payoutContext); - } - - payoutContext.grossAmount = _quantity * _price; - payoutContext.splitRecipients = directSaleConfig.splitRecipients; - payoutContext.splitRatios = directSaleConfig.splitRatios; - - return (true, bytes4(0), payoutContext); - } - - function _checkSecondaryBuyRequest( - MarketplaceStorage storage $, - address _contractAddress, - address _seller, - address _currencyAddress, - uint256 _tokenId, - uint256 _price, - uint256 _quantity - ) internal view returns (bool valid, bytes4 reason, SecondaryPayoutContext memory payoutContext) { - payoutContext.tokenId = _tokenId; - if (_quantity == 0) return (false, QuantityCannotBeZero.selector, payoutContext); - - SalePrice storage salePrice = $.salePrices[_contractAddress][_tokenId][_seller]; - if (salePrice.quantity == 0) return (false, SalePriceDoesNotExist.selector, payoutContext); - if (salePrice.expirationTime != 0 && salePrice.expirationTime <= block.timestamp) { - return (false, SalePriceExpired.selector, payoutContext); - } - if (salePrice.currencyAddress != _currencyAddress) return (false, CurrencyMismatch.selector, payoutContext); - if (salePrice.price != _price) return (false, PriceMismatch.selector, payoutContext); - if (salePrice.quantity < _quantity) { - return (false, QuantityExceedsSalePriceQuantity.selector, payoutContext); - } - - payoutContext.grossAmount = _quantity * _price; - payoutContext.splitRecipients = salePrice.splitRecipients; - payoutContext.splitRatios = salePrice.splitRatios; - - return (true, bytes4(0), payoutContext); - } - - function _revertMintDirectSaleRequest( - bytes4 _reason, - MarketplaceStorage storage $, - address _contractAddress, - address _currencyAddress, - address _buyer, - MintRequest calldata _request - ) internal view { - _revertBytes( - _mintFailureData( - _reason, - $, - _contractAddress, - _currencyAddress, - _buyer, - _request.tokenId, - _request.price, - _request.quantity - ) - ); - } - - function _revertSecondaryBuyRequest( - bytes4 _reason, - MarketplaceStorage storage $, - address _contractAddress, - address _seller, - address _currencyAddress, - BuyRequest calldata _request - ) internal view { - _revertBytes( - _secondaryFailureData( - _reason, - $, - _contractAddress, - _seller, - _currencyAddress, - _request.tokenId, - _request.price, - _request.quantity - ) - ); - } - - function _validateAndApplyOfferFill(AcceptOfferInput memory _input) - internal - returns (uint256 grossAmount, uint256 marketplaceFee) - { - Offer storage offer = _marketplaceStorage() - .offers[_input.contractAddress][_input.tokenId][_input.buyer][_input.currencyAddress]; - - if (offer.quantity == 0) { - revert OfferDoesNotExist(_input.contractAddress, _input.tokenId, _input.buyer, _input.currencyAddress); - } - if (offer.expirationTime != 0 && offer.expirationTime <= block.timestamp) { - revert OfferExpired( - _input.contractAddress, _input.tokenId, _input.buyer, _input.currencyAddress, offer.expirationTime - ); - } - if (offer.currencyAddress != _input.currencyAddress) { - revert CurrencyMismatch(_input.currencyAddress, offer.currencyAddress); - } - if (offer.price != _input.price) revert PriceMismatch(_input.price, offer.price); - if (_input.quantity > offer.quantity) revert QuantityExceedsOfferQuantity(_input.quantity, offer.quantity); - - grossAmount = _input.price * _input.quantity; - marketplaceFee = _allocateMarketplaceFee(offer, _input.quantity); - } - - function _allocateMarketplaceFee(Offer storage _offer, uint256 _quantity) - internal - returns (uint256 marketplaceFee) - { - uint256 remainingQuantity = _offer.quantity; - if (_quantity == remainingQuantity) { - marketplaceFee = _offer.marketplaceFeeRemaining; - delete _offer.currencyAddress; - delete _offer.price; - delete _offer.quantity; - delete _offer.initialQuantity; - delete _offer.marketplaceFeeRemaining; - delete _offer.marketplaceFeeTotal; - delete _offer.expirationTime; - return marketplaceFee; - } - - uint256 marketplaceFeeTotal = _offer.marketplaceFeeTotal; - uint256 initialQuantity = _offer.initialQuantity; - uint256 filledQuantityBefore = initialQuantity - remainingQuantity; - uint256 filledQuantityAfter = filledQuantityBefore + _quantity; - uint256 marketplaceFeePaidBefore = marketplaceFeeTotal - _offer.marketplaceFeeRemaining; - uint256 marketplaceFeeDueAfter = Math.mulDiv(marketplaceFeeTotal, filledQuantityAfter, initialQuantity); - - marketplaceFee = marketplaceFeeDueAfter - marketplaceFeePaidBefore; - _offer.quantity = remainingQuantity - _quantity; - _offer.marketplaceFeeRemaining -= marketplaceFee; - } - - function _safeTransferFrom( - address _contractAddress, - address _seller, - address _buyer, - uint256 _tokenId, - uint256 _amount - ) internal { - IERC1155 erc1155 = IERC1155(_contractAddress); - uint256 sellerBalanceBefore = erc1155.balanceOf(_seller, _tokenId); - if (sellerBalanceBefore < _amount) { - revert InsufficientTokenBalance(_seller, _contractAddress, _tokenId, _amount, sellerBalanceBefore); - } - uint256 buyerBalanceBefore = erc1155.balanceOf(_buyer, _tokenId); - - _marketplaceStorage().erc1155ApprovalManager - .safeTransferFrom(_contractAddress, _seller, _buyer, _tokenId, _amount, ""); - - uint256 sellerBalanceAfter = erc1155.balanceOf(_seller, _tokenId); - uint256 buyerBalanceAfter = erc1155.balanceOf(_buyer, _tokenId); - if (sellerBalanceAfter != sellerBalanceBefore - _amount || buyerBalanceAfter != buyerBalanceBefore + _amount) { - revert InvalidERC1155Transfer(_contractAddress, _tokenId, _seller, _buyer, _amount); - } - } - - function _safeBatchTransferFrom( - address _contractAddress, - address _seller, - address _buyer, - uint256[] memory _tokenIds, - uint256[] memory _amounts - ) internal { - IERC1155 erc1155 = IERC1155(_contractAddress); - uint256 requestCount = _tokenIds.length; - address[] memory balanceAccounts = new address[](requestCount * 2); - uint256[] memory balanceTokenIds = new uint256[](requestCount * 2); - - for (uint256 i = 0; i < requestCount;) { - uint256 balanceIndex = i * 2; - balanceAccounts[balanceIndex] = _seller; - balanceAccounts[balanceIndex + 1] = _buyer; - balanceTokenIds[balanceIndex] = _tokenIds[i]; - balanceTokenIds[balanceIndex + 1] = _tokenIds[i]; - - unchecked { - ++i; - } - } - - uint256[] memory balancesBeforeTransfer = erc1155.balanceOfBatch(balanceAccounts, balanceTokenIds); - for (uint256 i = 0; i < requestCount;) { - uint256 sellerBalanceIndex = i * 2; - if (balancesBeforeTransfer[sellerBalanceIndex] < _amounts[i]) { - revert InsufficientTokenBalance( - _seller, _contractAddress, _tokenIds[i], _amounts[i], balancesBeforeTransfer[sellerBalanceIndex] - ); - } - - unchecked { - ++i; - } - } - - _marketplaceStorage().erc1155ApprovalManager - .safeBatchTransferFrom(_contractAddress, _seller, _buyer, _tokenIds, _amounts, ""); - - uint256[] memory balancesAfterTransfer = erc1155.balanceOfBatch(balanceAccounts, balanceTokenIds); - for (uint256 i = 0; i < requestCount;) { - uint256 balanceIndex = i * 2; - if ( - balancesAfterTransfer[balanceIndex] != balancesBeforeTransfer[balanceIndex] - _amounts[i] - || balancesAfterTransfer[balanceIndex + 1] != balancesBeforeTransfer[balanceIndex + 1] + _amounts[i] - ) { - revert InvalidERC1155Transfer(_contractAddress, _tokenIds[i], _seller, _buyer, _amounts[i]); - } - - unchecked { - ++i; - } - } - } - - function _mintBatchToWithBalanceCheck( - address _contractAddress, - address _buyer, - uint256[] memory _tokenIds, - uint256[] memory _amounts - ) internal { - IERC1155 erc1155 = IERC1155(_contractAddress); - address[] memory balanceAccounts = _balanceAccounts(_buyer, _tokenIds.length); - uint256[] memory balancesBeforeMint = erc1155.balanceOfBatch(balanceAccounts, _tokenIds); - - IRareERC1155(_contractAddress).mintBatchTo(_buyer, _tokenIds, _amounts); - - uint256[] memory balancesAfterMint = erc1155.balanceOfBatch(balanceAccounts, _tokenIds); - _validateMintBalanceDeltas(_contractAddress, _buyer, _tokenIds, _amounts, balancesBeforeMint, balancesAfterMint); - } - - function _balanceAccounts(address _account, uint256 _length) internal pure returns (address[] memory accounts) { - accounts = new address[](_length); - for (uint256 i = 0; i < _length;) { - accounts[i] = _account; - - unchecked { - ++i; - } - } - } - - function _validateMintBalanceDeltas( - address _contractAddress, - address _buyer, - uint256[] memory _tokenIds, - uint256[] memory _amounts, - uint256[] memory _balancesBeforeMint, - uint256[] memory _balancesAfterMint - ) internal pure { - for (uint256 i = 0; i < _tokenIds.length;) { - if (_balancesAfterMint[i] != _balancesBeforeMint[i] + _amounts[i]) { - revert InvalidERC1155Mint(_contractAddress, _tokenIds[i], _buyer, _amounts[i]); - } - - unchecked { - ++i; - } - } - } - - function _validateMintRequests(MintRequest[] calldata _requests) internal pure { - _validateBatchSize(_requests.length); - for (uint256 i = 1; i < _requests.length; i++) { - _validateStrictAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); - } - } - - function _validateBuyRequests(BuyRequest[] calldata _requests) internal pure { - _validateBatchSize(_requests.length); - for (uint256 i = 1; i < _requests.length; i++) { - _validateStrictAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); - } - } -} diff --git a/src/marketplace/RareERC1155SettlementCheckoutUtils.sol b/src/marketplace/RareERC1155SettlementCheckoutUtils.sol deleted file mode 100644 index bd717c9..0000000 --- a/src/marketplace/RareERC1155SettlementCheckoutUtils.sol +++ /dev/null @@ -1,253 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.18; - -import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; -import {IERC20} from "openzeppelin-contracts/token/ERC20/IERC20.sol"; - -import {IRareERC1155} from "../token/ERC1155/IRareERC1155.sol"; -import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; -import {IERC1155ApprovalManager} from "../v2/approver/ERC1155/IERC1155ApprovalManager.sol"; -import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; - -/// @author SuperRare Labs Inc. -/// @title RareERC1155SettlementCheckoutUtils -/// @notice Externalized checkout helpers for RareERC1155Settlement. -library RareERC1155SettlementCheckoutUtils { - function checkoutPaymentFailureData( - MarketConfigV2.Config storage _config, - address _currencyAddress, - uint256 _amount, - uint256 _remainingEth - ) public view returns (bytes memory failureData) { - if (_amount == 0) return ""; - if (_currencyAddress == address(0)) { - if (_remainingEth >= _amount) return ""; - return abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.InsufficientCheckoutETH.selector, _amount, _remainingEth - ); - } - - IERC20 erc20 = IERC20(_currencyAddress); - try erc20.balanceOf(msg.sender) returns (uint256 balance) { - if (balance < _amount) { - return abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.InsufficientCheckoutERC20Balance.selector, - _currencyAddress, - _amount, - balance - ); - } - } catch { - return abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.InsufficientCheckoutERC20Balance.selector, _currencyAddress, _amount, 0 - ); - } - - try erc20.allowance(msg.sender, address(_config.erc20ApprovalManager)) returns (uint256 allowance) { - if (allowance < _amount) { - return abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.InsufficientCheckoutERC20Allowance.selector, - _currencyAddress, - _amount, - allowance - ); - } - } catch { - return abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.InsufficientCheckoutERC20Allowance.selector, _currencyAddress, _amount, 0 - ); - } - - return ""; - } - - function collectCheckoutErc20(MarketConfigV2.Config storage _config, address _currencyAddress, uint256 _amount) - public - { - if (_amount == 0) return; - - IERC20 erc20 = IERC20(_currencyAddress); - uint256 balanceBefore; - try erc20.balanceOf(address(this)) returns (uint256 balance) { - balanceBefore = balance; - } catch (bytes memory revertData) { - revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( - IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYMENT_COLLECTION, revertData - ); - } - - try _config.erc20ApprovalManager.transferFrom(_currencyAddress, msg.sender, address(this), _amount) {} - catch (bytes memory revertData) { - revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( - IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYMENT_COLLECTION, revertData - ); - } - - uint256 balanceAfter; - try erc20.balanceOf(address(this)) returns (uint256 balance) { - balanceAfter = balance; - } catch (bytes memory revertData) { - revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( - IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYMENT_COLLECTION, revertData - ); - } - - uint256 receivedAmount = balanceAfter >= balanceBefore ? balanceAfter - balanceBefore : 0; - if (receivedAmount != _amount) { - revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( - IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYMENT_COLLECTION, - abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.ERC20FeeOnTransferUnsupported.selector, - _currencyAddress, - _amount, - receivedAmount - ) - ); - } - } - - function checkoutSafeTransferFrom( - IERC1155ApprovalManager _erc1155ApprovalManager, - address _contractAddress, - address _seller, - address _buyer, - uint256 _tokenId, - uint256 _amount - ) public { - IERC1155 erc1155 = IERC1155(_contractAddress); - uint256 sellerBalanceBefore; - try erc1155.balanceOf(_seller, _tokenId) returns (uint256 balance) { - sellerBalanceBefore = balance; - } catch (bytes memory revertData) { - revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( - IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER, revertData - ); - } - if (sellerBalanceBefore < _amount) { - revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( - IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER, - abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.InsufficientTokenBalance.selector, - _seller, - _contractAddress, - _tokenId, - _amount, - sellerBalanceBefore - ) - ); - } - - uint256 buyerBalanceBefore; - try erc1155.balanceOf(_buyer, _tokenId) returns (uint256 balance) { - buyerBalanceBefore = balance; - } catch (bytes memory revertData) { - revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( - IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER, revertData - ); - } - - try _erc1155ApprovalManager.safeTransferFrom(_contractAddress, _seller, _buyer, _tokenId, _amount, "") {} - catch (bytes memory revertData) { - revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( - IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER, revertData - ); - } - - uint256 sellerBalanceAfter; - try erc1155.balanceOf(_seller, _tokenId) returns (uint256 balance) { - sellerBalanceAfter = balance; - } catch (bytes memory revertData) { - revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( - IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER, revertData - ); - } - - uint256 buyerBalanceAfter; - try erc1155.balanceOf(_buyer, _tokenId) returns (uint256 balance) { - buyerBalanceAfter = balance; - } catch (bytes memory revertData) { - revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( - IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER, revertData - ); - } - - if (sellerBalanceAfter != sellerBalanceBefore - _amount || buyerBalanceAfter != buyerBalanceBefore + _amount) { - revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( - IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER, - abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.InvalidERC1155Transfer.selector, - _contractAddress, - _tokenId, - _seller, - _buyer, - _amount - ) - ); - } - } - - function checkoutMintBatchToWithBalanceCheck( - address _contractAddress, - address _buyer, - uint256[] memory _tokenIds, - uint256[] memory _amounts - ) public { - IERC1155 erc1155 = IERC1155(_contractAddress); - address[] memory balanceAccounts = _balanceAccounts(_buyer, _tokenIds.length); - uint256[] memory balancesBeforeMint; - - try erc1155.balanceOfBatch(balanceAccounts, _tokenIds) returns (uint256[] memory balances) { - balancesBeforeMint = balances; - } catch (bytes memory revertData) { - revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( - IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT, revertData - ); - } - - try IRareERC1155(_contractAddress).mintBatchTo(_buyer, _tokenIds, _amounts) {} - catch (bytes memory revertData) { - revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( - IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT, revertData - ); - } - - uint256[] memory balancesAfterMint; - try erc1155.balanceOfBatch(balanceAccounts, _tokenIds) returns (uint256[] memory balances) { - balancesAfterMint = balances; - } catch (bytes memory revertData) { - revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( - IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT, revertData - ); - } - - for (uint256 i = 0; i < _tokenIds.length;) { - if (balancesAfterMint[i] != balancesBeforeMint[i] + _amounts[i]) { - revert IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed( - IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT, - abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector, - _contractAddress, - _tokenIds[i], - _buyer, - _amounts[i] - ) - ); - } - - unchecked { - ++i; - } - } - } - - function _balanceAccounts(address _account, uint256 _length) private pure returns (address[] memory accounts) { - accounts = new address[](_length); - for (uint256 i = 0; i < _length;) { - accounts[i] = _account; - - unchecked { - ++i; - } - } - } -} diff --git a/src/marketplace/RareERC1155TradeExecutionModule.sol b/src/marketplace/RareERC1155TradeExecutionModule.sol new file mode 100644 index 0000000..236a456 --- /dev/null +++ b/src/marketplace/RareERC1155TradeExecutionModule.sol @@ -0,0 +1,435 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; + +import {IRareERC1155} from "../token/ERC1155/IRareERC1155.sol"; +import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; +import {IRareERC1155TradeExecutionModule} from "./IRareERC1155TradeExecutionModule.sol"; +import {RareERC1155ExecutionModuleBase} from "./RareERC1155ExecutionModuleBase.sol"; +import {RareERC1155MarketplacePayments} from "./RareERC1155MarketplacePayments.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155TradeExecutionModule +/// @notice Delegatecall-only direct trade execution module for the ERC1155 marketplace. +/// @dev Direct calls revert because this contract has no standalone marketplace state or escrow. It must run through +/// `RareERC1155Marketplace` so `address(this)`, `msg.sender`, `msg.value`, and storage all resolve to the marketplace proxy. +contract RareERC1155TradeExecutionModule is IRareERC1155TradeExecutionModule, RareERC1155ExecutionModuleBase { + using RareERC1155MarketplacePayments for MarketConfigV2.Config; + + struct AcceptOfferInput { + address contractAddress; + uint256 tokenId; + address buyer; + address currencyAddress; + uint256 price; + uint256 quantity; + } + + function mintDirectSaleBatch(address _contractAddress, address _currencyAddress, MintRequest[] calldata _requests) + external + payable + onlyDelegateCall + { + _validateMintRequests(_requests); + MarketplaceStorage storage $ = _marketplaceStorage(); + $.marketConfig.checkIfCurrencyIsApproved(_currencyAddress); + _validateERC1155Contract(_contractAddress); + + uint256 requestCount = _requests.length; + uint256[] memory tokenIds = new uint256[](requestCount); + uint256[] memory amounts = new uint256[](requestCount); + PrimaryPayoutContext[] memory payoutContexts = new PrimaryPayoutContext[](requestCount); + uint256 buyerTotal = 0; + + for (uint256 i = 0; i < requestCount;) { + payoutContexts[i] = + _validateMintDirectSaleRequest(_contractAddress, _currencyAddress, msg.sender, _requests[i]); + if (payoutContexts[i].grossAmount != 0) { + payoutContexts[i].marketplaceFee = + $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContexts[i].grossAmount); + buyerTotal += payoutContexts[i].grossAmount + payoutContexts[i].marketplaceFee; + } + + tokenIds[i] = payoutContexts[i].tokenId; + amounts[i] = _requests[i].quantity; + + unchecked { + ++i; + } + } + + $.marketConfig.checkBatchPayment(_currencyAddress, buyerTotal); + + for (uint256 i = 0; i < requestCount;) { + uint256 tokenId = _requests[i].tokenId; + + if ($.tokenMintLimit[_contractAddress][tokenId] > 0) { + $.tokenMintsPerAddress[_contractAddress][tokenId][msg.sender] += _requests[i].quantity; + } + + if ($.tokenTxLimit[_contractAddress][tokenId] > 0) { + $.tokenTxsPerAddress[_contractAddress][tokenId][msg.sender] += 1; + } + + unchecked { + ++i; + } + } + + _mintBatchToWithBalanceCheck(_contractAddress, msg.sender, tokenIds, amounts); + + for (uint256 i = 0; i < requestCount;) { + if (payoutContexts[i].grossAmount != 0) { + $.marketConfig + .payoutPrimary( + _contractAddress, + _currencyAddress, + payoutContexts[i].grossAmount, + payoutContexts[i].marketplaceFee, + payoutContexts[i].seller, + payoutContexts[i].splitRecipients, + payoutContexts[i].splitRatios + ); + } + + emit MintDirectSale( + _contractAddress, + payoutContexts[i].tokenId, + msg.sender, + payoutContexts[i].seller, + _requests[i].quantity, + _currencyAddress, + _requests[i].price + ); + + unchecked { + ++i; + } + } + } + + function buyBatch( + address _contractAddress, + address _seller, + address _currencyAddress, + BuyRequest[] calldata _requests + ) external payable onlyDelegateCall { + _validateBuyRequests(_requests); + if (msg.sender == _seller) revert SelfPurchaseUnsupported(_seller); + + MarketplaceStorage storage $ = _marketplaceStorage(); + $.marketConfig.checkIfCurrencyIsApproved(_currencyAddress); + _validateERC1155Contract(_contractAddress); + + IERC1155 erc1155 = IERC1155(_contractAddress); + if (!erc1155.isApprovedForAll(_seller, address($.erc1155ApprovalManager))) { + revert MarketplaceNotApproved(_seller, _contractAddress); + } + + uint256 requestCount = _requests.length; + uint256[] memory tokenIds = new uint256[](requestCount); + uint256[] memory amounts = new uint256[](requestCount); + SecondaryPayoutContext[] memory payoutContexts = new SecondaryPayoutContext[](requestCount); + uint256 buyerTotal = 0; + + for (uint256 i = 0; i < requestCount;) { + payoutContexts[i] = + _validateSecondaryBuyRequest($, _contractAddress, _seller, _currencyAddress, _requests[i]); + + tokenIds[i] = _requests[i].tokenId; + amounts[i] = _requests[i].quantity; + + uint256 sellerBalance = erc1155.balanceOf(_seller, tokenIds[i]); + if (sellerBalance < amounts[i]) { + revert InsufficientTokenBalance(_seller, _contractAddress, tokenIds[i], amounts[i], sellerBalance); + } + + payoutContexts[i].marketplaceFee = + $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContexts[i].grossAmount); + buyerTotal += payoutContexts[i].grossAmount + payoutContexts[i].marketplaceFee; + + unchecked { + ++i; + } + } + + $.marketConfig.checkBatchPayment(_currencyAddress, buyerTotal); + + for (uint256 i = 0; i < requestCount;) { + SalePrice storage salePrice = $.salePrices[_contractAddress][_requests[i].tokenId][_seller]; + salePrice.quantity -= _requests[i].quantity; + if (salePrice.quantity == 0) { + delete $.salePrices[_contractAddress][_requests[i].tokenId][_seller]; + } + + unchecked { + ++i; + } + } + + _safeBatchTransferFrom(_contractAddress, _seller, msg.sender, tokenIds, amounts); + + for (uint256 i = 0; i < requestCount;) { + $.marketConfig + .payoutSecondary( + _contractAddress, + payoutContexts[i].tokenId, + _currencyAddress, + payoutContexts[i].grossAmount, + payoutContexts[i].marketplaceFee, + _seller, + payoutContexts[i].splitRecipients, + payoutContexts[i].splitRatios + ); + + emit Sold( + _seller, + msg.sender, + _contractAddress, + payoutContexts[i].tokenId, + _currencyAddress, + _requests[i].price, + _requests[i].quantity + ); + + unchecked { + ++i; + } + } + } + + function acceptOffer( + address _contractAddress, + uint256 _tokenId, + address _buyer, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external onlyDelegateCall { + AcceptOfferInput memory input = AcceptOfferInput({ + contractAddress: _contractAddress, + tokenId: _tokenId, + buyer: _buyer, + currencyAddress: _currencyAddress, + price: _price, + quantity: _quantity + }); + _acceptOffer(input, _splitRecipients, _splitRatios); + } + + function _acceptOffer( + AcceptOfferInput memory _input, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) internal { + if (msg.sender == _input.buyer) { + revert SelfOfferAcceptanceUnsupported(_input.buyer); + } + _validateERC1155Contract(_input.contractAddress); + _marketplaceStorage().marketConfig.checkIfCurrencyIsApproved(_input.currencyAddress); + RareERC1155MarketplacePayments.checkSplits(_splitRecipients, _splitRatios); + if (_input.quantity == 0) revert QuantityCannotBeZero(); + + (uint256 grossAmount, uint256 marketplaceFee, uint256 stakingFee) = _validateAndApplyOfferFill(_input); + + MarketplaceStorage storage $ = _marketplaceStorage(); + IERC1155 erc1155 = IERC1155(_input.contractAddress); + if (!erc1155.isApprovedForAll(msg.sender, address($.erc1155ApprovalManager))) { + revert MarketplaceNotApproved(msg.sender, _input.contractAddress); + } + + _safeTransferFrom(_input.contractAddress, msg.sender, _input.buyer, _input.tokenId, _input.quantity); + + $.marketConfig + .payoutSecondaryWithStakingFee( + _input.contractAddress, + _input.tokenId, + _input.currencyAddress, + grossAmount, + marketplaceFee, + stakingFee, + msg.sender, + _splitRecipients, + _splitRatios + ); + + emit OfferAccepted( + msg.sender, + _input.buyer, + _input.contractAddress, + _input.tokenId, + _input.currencyAddress, + _input.price, + _input.quantity + ); + } + + function _validateAndApplyOfferFill(AcceptOfferInput memory _input) + internal + returns (uint256 grossAmount, uint256 marketplaceFee, uint256 stakingFee) + { + Offer storage offer = _marketplaceStorage() + .offers[_input.contractAddress][_input.tokenId][_input.buyer][_input.currencyAddress]; + + if (offer.quantity == 0) { + revert OfferDoesNotExist(_input.contractAddress, _input.tokenId, _input.buyer, _input.currencyAddress); + } + if (offer.expirationTime != 0 && offer.expirationTime <= block.timestamp) { + revert OfferExpired( + _input.contractAddress, _input.tokenId, _input.buyer, _input.currencyAddress, offer.expirationTime + ); + } + if (offer.currencyAddress != _input.currencyAddress) { + revert CurrencyMismatch(_input.currencyAddress, offer.currencyAddress); + } + if (offer.price != _input.price) revert PriceMismatch(_input.price, offer.price); + if (_input.quantity > offer.quantity) revert QuantityExceedsOfferQuantity(_input.quantity, offer.quantity); + + grossAmount = _input.price * _input.quantity; + (marketplaceFee, stakingFee) = _allocateOfferFees(offer, _input.quantity); + } + + function _safeTransferFrom( + address _contractAddress, + address _seller, + address _buyer, + uint256 _tokenId, + uint256 _amount + ) internal { + IERC1155 erc1155 = IERC1155(_contractAddress); + uint256 sellerBalanceBefore = erc1155.balanceOf(_seller, _tokenId); + if (sellerBalanceBefore < _amount) { + revert InsufficientTokenBalance(_seller, _contractAddress, _tokenId, _amount, sellerBalanceBefore); + } + uint256 buyerBalanceBefore = erc1155.balanceOf(_buyer, _tokenId); + + _marketplaceStorage().erc1155ApprovalManager + .safeTransferFrom(_contractAddress, _seller, _buyer, _tokenId, _amount, ""); + + uint256 sellerBalanceAfter = erc1155.balanceOf(_seller, _tokenId); + uint256 buyerBalanceAfter = erc1155.balanceOf(_buyer, _tokenId); + if (sellerBalanceAfter != sellerBalanceBefore - _amount || buyerBalanceAfter != buyerBalanceBefore + _amount) { + revert InvalidERC1155Transfer(_contractAddress, _tokenId, _seller, _buyer, _amount); + } + } + + function _safeBatchTransferFrom( + address _contractAddress, + address _seller, + address _buyer, + uint256[] memory _tokenIds, + uint256[] memory _amounts + ) internal { + IERC1155 erc1155 = IERC1155(_contractAddress); + uint256 requestCount = _tokenIds.length; + address[] memory balanceAccounts = new address[](requestCount * 2); + uint256[] memory balanceTokenIds = new uint256[](requestCount * 2); + + for (uint256 i = 0; i < requestCount;) { + uint256 balanceIndex = i * 2; + balanceAccounts[balanceIndex] = _seller; + balanceAccounts[balanceIndex + 1] = _buyer; + balanceTokenIds[balanceIndex] = _tokenIds[i]; + balanceTokenIds[balanceIndex + 1] = _tokenIds[i]; + + unchecked { + ++i; + } + } + + uint256[] memory balancesBeforeTransfer = erc1155.balanceOfBatch(balanceAccounts, balanceTokenIds); + for (uint256 i = 0; i < requestCount;) { + uint256 sellerBalanceIndex = i * 2; + if (balancesBeforeTransfer[sellerBalanceIndex] < _amounts[i]) { + revert InsufficientTokenBalance( + _seller, _contractAddress, _tokenIds[i], _amounts[i], balancesBeforeTransfer[sellerBalanceIndex] + ); + } + + unchecked { + ++i; + } + } + + _marketplaceStorage().erc1155ApprovalManager + .safeBatchTransferFrom(_contractAddress, _seller, _buyer, _tokenIds, _amounts, ""); + + uint256[] memory balancesAfterTransfer = erc1155.balanceOfBatch(balanceAccounts, balanceTokenIds); + for (uint256 i = 0; i < requestCount;) { + uint256 balanceIndex = i * 2; + if ( + balancesAfterTransfer[balanceIndex] != balancesBeforeTransfer[balanceIndex] - _amounts[i] + || balancesAfterTransfer[balanceIndex + 1] != balancesBeforeTransfer[balanceIndex + 1] + _amounts[i] + ) { + revert InvalidERC1155Transfer(_contractAddress, _tokenIds[i], _seller, _buyer, _amounts[i]); + } + + unchecked { + ++i; + } + } + } + + function _mintBatchToWithBalanceCheck( + address _contractAddress, + address _buyer, + uint256[] memory _tokenIds, + uint256[] memory _amounts + ) internal { + IERC1155 erc1155 = IERC1155(_contractAddress); + address[] memory balanceAccounts = _balanceAccounts(_buyer, _tokenIds.length); + uint256[] memory balancesBeforeMint = erc1155.balanceOfBatch(balanceAccounts, _tokenIds); + + IRareERC1155(_contractAddress).mintBatchTo(_buyer, _tokenIds, _amounts); + + uint256[] memory balancesAfterMint = erc1155.balanceOfBatch(balanceAccounts, _tokenIds); + _validateMintBalanceDeltas(_contractAddress, _buyer, _tokenIds, _amounts, balancesBeforeMint, balancesAfterMint); + } + + function _balanceAccounts(address _account, uint256 _length) internal pure returns (address[] memory accounts) { + accounts = new address[](_length); + for (uint256 i = 0; i < _length;) { + accounts[i] = _account; + + unchecked { + ++i; + } + } + } + + function _validateMintBalanceDeltas( + address _contractAddress, + address _buyer, + uint256[] memory _tokenIds, + uint256[] memory _amounts, + uint256[] memory _balancesBeforeMint, + uint256[] memory _balancesAfterMint + ) internal pure { + for (uint256 i = 0; i < _tokenIds.length;) { + if (_balancesAfterMint[i] != _balancesBeforeMint[i] + _amounts[i]) { + revert InvalidERC1155Mint(_contractAddress, _tokenIds[i], _buyer, _amounts[i]); + } + + unchecked { + ++i; + } + } + } + + function _validateMintRequests(MintRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + _validateStrictAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } + + function _validateBuyRequests(BuyRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + _validateStrictAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } +} diff --git a/src/test/marketplace/RareERC1155MarketplaceGas.t.sol b/src/test/marketplace/RareERC1155MarketplaceGas.t.sol index 989bd10..dde64dc 100644 --- a/src/test/marketplace/RareERC1155MarketplaceGas.t.sol +++ b/src/test/marketplace/RareERC1155MarketplaceGas.t.sol @@ -14,8 +14,9 @@ import {ERC20ApprovalManager} from "../../v2/approver/ERC20/ERC20ApprovalManager import {ERC721ApprovalManager} from "../../v2/approver/ERC721/ERC721ApprovalManager.sol"; import {ERC1155ApprovalManager} from "../../v2/approver/ERC1155/ERC1155ApprovalManager.sol"; import {IRareERC1155MarketplaceTypes} from "../../marketplace/IRareERC1155MarketplaceTypes.sol"; +import {RareERC1155CheckoutExecutionModule} from "../../marketplace/RareERC1155CheckoutExecutionModule.sol"; import {RareERC1155Marketplace} from "../../marketplace/RareERC1155Marketplace.sol"; -import {RareERC1155Settlement} from "../../marketplace/RareERC1155Settlement.sol"; +import {RareERC1155TradeExecutionModule} from "../../marketplace/RareERC1155TradeExecutionModule.sol"; import {IRoyaltyEngineV1} from "royalty-registry/IRoyaltyEngineV1.sol"; contract CheckoutGasCurrency is ERC20 { @@ -246,7 +247,8 @@ contract RareERC1155MarketplaceGasTest is Test { erc20ApprovalManager = new ERC20ApprovalManager(); erc721ApprovalManager = new ERC721ApprovalManager(); erc1155ApprovalManager = new ERC1155ApprovalManager(); - RareERC1155Settlement settlement = new RareERC1155Settlement(); + RareERC1155TradeExecutionModule tradeExecutionModule = new RareERC1155TradeExecutionModule(); + RareERC1155CheckoutExecutionModule checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); address marketplaceSettings = address(new CheckoutGasMarketplaceSettings()); address stakingSettings = address(new CheckoutGasStakingSettings()); @@ -272,7 +274,8 @@ contract RareERC1155MarketplaceGasTest is Test { address(erc20ApprovalManager), address(erc721ApprovalManager), address(erc1155ApprovalManager), - address(settlement) + address(tradeExecutionModule), + address(checkoutExecutionModule) ) ) ) diff --git a/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol b/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol index e6b2da0..d5c3459 100644 --- a/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol +++ b/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol @@ -18,10 +18,11 @@ import {RareERC1155ContractFactory} from "../../token/ERC1155/RareERC1155Contrac import {ERC20ApprovalManager} from "../../v2/approver/ERC20/ERC20ApprovalManager.sol"; import {ERC721ApprovalManager} from "../../v2/approver/ERC721/ERC721ApprovalManager.sol"; import {ERC1155ApprovalManager} from "../../v2/approver/ERC1155/ERC1155ApprovalManager.sol"; +import {IRareERC1155CheckoutExecutionModule} from "../../marketplace/IRareERC1155CheckoutExecutionModule.sol"; import {IRareERC1155MarketplaceTypes} from "../../marketplace/IRareERC1155MarketplaceTypes.sol"; -import {IRareERC1155Settlement} from "../../marketplace/IRareERC1155Settlement.sol"; +import {RareERC1155CheckoutExecutionModule} from "../../marketplace/RareERC1155CheckoutExecutionModule.sol"; import {RareERC1155Marketplace} from "../../marketplace/RareERC1155Marketplace.sol"; -import {RareERC1155Settlement} from "../../marketplace/RareERC1155Settlement.sol"; +import {RareERC1155TradeExecutionModule} from "../../marketplace/RareERC1155TradeExecutionModule.sol"; import {IRoyaltyEngineV1} from "royalty-registry/IRoyaltyEngineV1.sol"; contract CheckoutCurrency is ERC20 { @@ -241,9 +242,22 @@ contract RejectETH { } } +contract CheckoutFailureDecoderHarness is RareERC1155CheckoutExecutionModule { + function checkoutExecutionFailure(bytes memory _revertData) + external + pure + returns (IRareERC1155MarketplaceTypes.CheckoutFailureStage stage, bytes memory failureData) + { + return _checkoutExecutionFailure(_revertData); + } +} + contract RareERC1155MarketplaceSettlementTest is Test { + event MintDirectSaleCancelled(address indexed contractAddress, uint256 indexed tokenId); + RareERC1155Marketplace private marketplace; - RareERC1155Settlement private settlement; + RareERC1155TradeExecutionModule private tradeExecutionModule; + RareERC1155CheckoutExecutionModule private checkoutExecutionModule; Payments private payments; RareERC1155 private token; CheckoutCurrency private currency; @@ -281,12 +295,14 @@ contract RareERC1155MarketplaceSettlementTest is Test { erc20ApprovalManager = new ERC20ApprovalManager(); erc721ApprovalManager = new ERC721ApprovalManager(); erc1155ApprovalManager = new ERC1155ApprovalManager(); - settlement = new RareERC1155Settlement(); + tradeExecutionModule = new RareERC1155TradeExecutionModule(); + checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); payments = new Payments(); marketplace = RareERC1155Marketplace( address( new ERC1967Proxy( - address(new RareERC1155Marketplace()), _initData(address(payments), address(settlement)) + address(new RareERC1155Marketplace()), + _initData(address(payments), address(tradeExecutionModule), address(checkoutExecutionModule)) ) ) ); @@ -311,7 +327,7 @@ contract RareERC1155MarketplaceSettlementTest is Test { vm.etch(approvedTokenRegistry, address(marketplace).code); } - function testBuyListingThroughSettlementModule() public { + function testBuyListingThroughTradeExecutionModule() public { uint256 price = 1 ether; uint256 quantity = 2; @@ -342,6 +358,154 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 0); } + function testBuyListingAcceptsMaxRoyaltyRecipients() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockSecondaryPayoutWithRoyalties( + address(token), tokenId, price, seller, _royaltyReceivers(5), _royaltyAmounts(price, 5) + ); + + uint256 sellerBalanceBefore = seller.balance; + uint256 firstRoyaltyBalanceBefore = address(0x4101).balance; + + vm.prank(buyer); + marketplace.buyBatch{value: _withFee(price)}( + address(token), seller, address(0), _singleBuyRequest(tokenId, price, 1) + ); + + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(seller.balance, sellerBalanceBefore + ((price * 85) / 100)); + assertEq(address(0x4101).balance, firstRoyaltyBalanceBefore + ((price * 1) / 100)); + } + + function testCheckoutListingTruncatesRoyaltyRecipientsAndFills() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockSecondaryPayoutWithRoyalties( + address(token), tokenId, price, seller, _royaltyReceivers(6), _royaltyAmounts(price, 6) + ); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + uint256 sellerBalanceBefore = seller.balance; + uint256 firstRoyaltyBalanceBefore = address(0x4101).balance; + uint256 fifthRoyaltyBalanceBefore = address(0x4105).balance; + uint256 sixthRoyaltyBalanceBefore = address(0x4106).balance; + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = + marketplace.checkout{value: _withFee(price)}(items); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 0); + assertTrue(execution.items[0].filled); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(seller.balance, sellerBalanceBefore + ((price * 85) / 100)); + assertEq(address(0x4101).balance, firstRoyaltyBalanceBefore + ((price * 1) / 100)); + assertEq(address(0x4105).balance, fifthRoyaltyBalanceBefore + ((price * 5) / 100)); + assertEq(address(0x4106).balance, sixthRoyaltyBalanceBefore); + } + + function testBuyListingRejectsZeroAddressEthRoyaltyRecipient() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockSecondaryPayoutWithRoyalties( + address(token), tokenId, price, seller, _zeroAddressRoyaltyReceivers(), _singleRoyaltyAmounts(price) + ); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.RoyaltyRecipientCannotBeZero.selector, 0)); + marketplace.buyBatch{value: _withFee(price)}( + address(token), seller, address(0), _singleBuyRequest(tokenId, price, 1) + ); + + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(address(payments).balance, 0); + } + + function testBuyListingRejectsZeroAddressERC20RoyaltyRecipient() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockApprovedCurrency(address(currency)); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(currency), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockSecondaryPayoutWithRoyalties( + address(token), tokenId, price, seller, _zeroAddressRoyaltyReceivers(), _singleRoyaltyAmounts(price) + ); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), _withFee(price)); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.RoyaltyRecipientCannotBeZero.selector, 0)); + marketplace.buyBatch(address(token), seller, address(currency), _singleBuyRequest(tokenId, price, 1)); + + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(currency.balanceOf(address(marketplace)), 0); + } + function testBuyListingSkipsZeroValueERC20MarketplaceFeeRecipient() public { CheckoutRejectZeroTransferCurrency rejectingCurrency = new CheckoutRejectZeroTransferCurrency(); uint256 price = 100; @@ -394,7 +558,7 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(rejectingCurrency.balanceOf(rewardAccumulator), 0); } - function testAcceptOfferThroughSettlementModule() public { + function testAcceptOfferThroughTradeExecutionModule() public { uint256 price = 1 ether; uint256 offerQuantity = 2; @@ -422,6 +586,51 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(offer.initialQuantity, offerQuantity); assertEq(offer.marketplaceFeeRemaining, _fee(price)); assertEq(offer.marketplaceFeeTotal, _fee(price * offerQuantity)); + assertEq(offer.stakingFeeRemaining, _stakingFee(price)); + assertEq(offer.stakingFeeTotal, _stakingFee(price * offerQuantity)); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(seller, tokenId), 1); + } + + function testAcceptOfferUsesOfferTimeStakingFeeAfterSettingsRotation() public { + uint256 price = 1 ether; + uint256 offerQuantity = 2; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(offerQuantity)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockMarketplaceFee(price * offerQuantity, seller); + vm.prank(buyer); + marketplace.makeOffer{value: _withFee(price * offerQuantity)}( + address(token), tokenId, address(0), price, offerQuantity, 0 + ); + + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, price), + abi.encode(_fee(price) + 1) + ); + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), + abi.encode(new address payable[](0), new uint256[](0)) + ); + + vm.prank(seller); + marketplace.acceptOffer( + address(token), tokenId, buyer, address(0), price, 1, _singleSplitRecipients(seller), _singleSplitRatios() + ); + + IRareERC1155MarketplaceTypes.Offer memory offer = + marketplace.getOffer(address(token), tokenId, buyer, address(0)); + assertEq(offer.quantity, 1); + assertEq(offer.marketplaceFeeRemaining, _fee(price)); + assertEq(offer.stakingFeeRemaining, _stakingFee(price)); + assertEq(networkBeneficiary.balance, _fee(price) - _stakingFee(price)); + assertEq(rewardAccumulator.balance, _stakingFee(price)); assertEq(token.balanceOf(buyer, tokenId), 1); assertEq(token.balanceOf(seller, tokenId), 1); } @@ -467,7 +676,10 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(offer.initialQuantity, offerQuantity); assertEq(offer.marketplaceFeeRemaining, _fee(price * offerQuantity) - 1); assertEq(offer.marketplaceFeeTotal, _fee(price * offerQuantity)); + assertEq(offer.stakingFeeRemaining, _stakingFee(price * offerQuantity)); + assertEq(offer.stakingFeeTotal, _stakingFee(price * offerQuantity)); assertEq(networkBeneficiary.balance, 1); + assertEq(rewardAccumulator.balance, 0); vm.prank(buyer); marketplace.cancelOffer(address(token), highQuantityTokenId, address(0)); @@ -477,7 +689,7 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(marketplace.getOffer(address(token), highQuantityTokenId, buyer, address(0)).quantity, 0); } - function testMintDirectSaleThroughSettlementModule() public { + function testMintDirectSaleThroughTradeExecutionModule() public { uint256 price = 1 ether; uint256 quantity = 2; @@ -518,6 +730,62 @@ contract RareERC1155MarketplaceSettlementTest is Test { ); } + function testCancelMintDirectSalesClearsDirectSaleConfig() public { + uint256 price = 1 ether; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.expectEmit(true, true, false, false); + emit MintDirectSaleCancelled(address(token), tokenId); + + vm.prank(seller); + marketplace.cancelMintDirectSales(address(token), _singleTokenIds(tokenId)); + + IRareERC1155MarketplaceTypes.DirectSaleConfig memory config = + marketplace.getDirectSaleConfig(address(token), tokenId); + assertEq(config.seller, address(0)); + assertEq(config.currencyAddress, address(0)); + assertEq(config.price, 0); + assertEq(config.startTime, 0); + assertEq(config.maxMints, 0); + assertEq(config.splitRecipients.length, 0); + assertEq(config.splitRatios.length, 0); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.DirectSaleNotConfigured.selector, address(token), tokenId + ) + ); + marketplace.mintDirectSaleBatch(address(token), address(0), _singleMintRequest(tokenId, price, 1)); + } + + function testCancelMintDirectSalesRejectsNonContractOwner() public { + uint256 price = 1 ether; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.NotContractOwner.selector, address(token), buyer) + ); + marketplace.cancelMintDirectSales(address(token), _singleTokenIds(tokenId)); + } + function testMintDirectSaleRevertsWhenMintDoesNotIncreaseBuyerBalance() public { uint256 price = 1 ether; uint256 noOpTokenId = 91; @@ -740,6 +1008,42 @@ contract RareERC1155MarketplaceSettlementTest is Test { ); } + function testCheckoutCountsDuplicateDirectSaleItemsAsOneTransactionLimitUse() public { + uint256 price = 1 ether; + + vm.startPrank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.setTokenMintLimits(address(token), _singleTokenLimitRequest(tokenId, 2)); + marketplace.setTokenTxLimits(address(token), _singleTokenLimitRequest(tokenId, 1)); + vm.stopPrank(); + _mockPrimaryPayoutFor(address(token), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = + marketplace.checkout{value: _withFee(price) * 2}(items); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 2); + assertEq(summary.skippedCount, 0); + assertEq(summary.ethSpent, _withFee(price) * 2); + assertEq(summary.ethRefunded, 0); + assertEq(token.balanceOf(buyer, tokenId), 2); + assertTrue(execution.items[0].filled); + assertTrue(execution.items[1].filled); + assertEq(marketplace.getTokenMintsPerAddress(address(token), tokenId, buyer), 2); + assertEq(marketplace.getTokenTxsPerAddress(address(token), tokenId, buyer), 1); + } + function testCheckoutSkipsInvalidItemsAndRefundsUnusedETH() public { uint256 mintPrice = 1 ether; uint256 listingPrice = 2 ether; @@ -1356,6 +1660,59 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(execution.items[0].failureData, spoofedPayoutRevertData); } + function testCheckoutExecutionFailureDecodesStructuredStage() public { + CheckoutFailureDecoderHarness harness = new CheckoutFailureDecoderHarness(); + bytes memory mintFailureData = abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector, address(token), tokenId, buyer, 1 + ); + bytes memory revertData = abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, + IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT, + mintFailureData + ); + + (IRareERC1155MarketplaceTypes.CheckoutFailureStage stage, bytes memory failureData) = + harness.checkoutExecutionFailure(revertData); + + assertEq(uint8(stage), uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT)); + assertEq(failureData, mintFailureData); + } + + function testCheckoutExecutionFailureFallsBackToUnknownForRawRevertData() public { + bytes memory revertData = abi.encodeWithSignature("Error(string)", "unexpected failure"); + + _assertUnknownCheckoutFailure(revertData); + } + + function testCheckoutExecutionFailureFallsBackToUnknownForMalformedStructuredPayloads() public { + bytes memory shortPayload = abi.encodePacked( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, + bytes32(uint256(uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT))) + ); + _assertUnknownCheckoutFailure(shortPayload); + + bytes memory invalidStagePayload = abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, uint256(255), bytes("stage") + ); + _assertUnknownCheckoutFailure(invalidStagePayload); + + bytes memory invalidOffsetPayload = abi.encodePacked( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, + bytes32(uint256(uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT))), + bytes32(uint256(96)), + bytes32(uint256(0)) + ); + _assertUnknownCheckoutFailure(invalidOffsetPayload); + + bytes memory invalidLengthPayload = abi.encodePacked( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, + bytes32(uint256(uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT))), + bytes32(uint256(64)), + bytes32(uint256(1)) + ); + _assertUnknownCheckoutFailure(invalidLengthPayload); + } + function testCheckoutEthRecipientRejectionEscrowsInPayments() public { uint256 price = 1 ether; RejectETH rejectRecipient = new RejectETH(); @@ -1445,32 +1802,32 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(currency.balanceOf(address(marketplace)), 0); } - function testDirectCallsToSettlementRevert() public { + function testDirectCallsToExecutionModulesRevert() public { IRareERC1155MarketplaceTypes.BuyRequest[] memory requests = new IRareERC1155MarketplaceTypes.BuyRequest[](1); requests[0] = IRareERC1155MarketplaceTypes.BuyRequest(tokenId, 1 ether, 1); - vm.expectRevert(IRareERC1155MarketplaceTypes.DirectSettlementCallUnsupported.selector); - settlement.buyBatch(address(token), seller, address(0), requests); + vm.expectRevert(IRareERC1155MarketplaceTypes.DirectModuleCallUnsupported.selector); + tradeExecutionModule.buyBatch(address(token), seller, address(0), requests); IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](0); - vm.expectRevert(IRareERC1155MarketplaceTypes.DirectSettlementCallUnsupported.selector); - settlement.checkout(items); + vm.expectRevert(IRareERC1155MarketplaceTypes.DirectModuleCallUnsupported.selector); + checkoutExecutionModule.checkout(items); - vm.expectRevert(IRareERC1155MarketplaceTypes.DirectSettlementCallUnsupported.selector); - settlement.executeCheckoutItem( + vm.expectRevert(IRareERC1155MarketplaceTypes.DirectModuleCallUnsupported.selector); + checkoutExecutionModule.executeCheckoutItem( _unsupportedCheckoutItem(), 0, address(0), 0, 0, new address payable[](0), new uint8[](0) ); - vm.expectRevert(IRareERC1155MarketplaceTypes.DirectSettlementCallUnsupported.selector); - settlement.executeCheckoutPayout( + vm.expectRevert(IRareERC1155MarketplaceTypes.DirectModuleCallUnsupported.selector); + checkoutExecutionModule.executeCheckoutPayout( _unsupportedCheckoutItem(), seller, 0, 0, new address payable[](0), new uint8[](0) ); (bool success,) = address(marketplace) .call( abi.encodeWithSelector( - IRareERC1155Settlement.executeCheckoutItem.selector, + IRareERC1155CheckoutExecutionModule.executeCheckoutItem.selector, _unsupportedCheckoutItem(), 0, address(0), @@ -1483,14 +1840,24 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertFalse(success); } - function testOwnerCanUpdateSettlementModule() public { + function testOwnerCanUpdateTradeExecutionModule() public { vm.prank(deployer); - RareERC1155Settlement newSettlement = new RareERC1155Settlement(); + RareERC1155TradeExecutionModule newTradeExecutionModule = new RareERC1155TradeExecutionModule(); vm.prank(deployer); - marketplace.setSettlement(address(newSettlement)); + marketplace.setTradeExecutionModule(address(newTradeExecutionModule)); - assertEq(marketplace.getSettlement(), address(newSettlement)); + assertEq(marketplace.getTradeExecutionModule(), address(newTradeExecutionModule)); + } + + function testOwnerCanUpdateCheckoutExecutionModule() public { + vm.prank(deployer); + RareERC1155CheckoutExecutionModule newCheckoutExecutionModule = new RareERC1155CheckoutExecutionModule(); + + vm.prank(deployer); + marketplace.setCheckoutExecutionModule(address(newCheckoutExecutionModule)); + + assertEq(marketplace.getCheckoutExecutionModule(), address(newCheckoutExecutionModule)); } function testSetTokenAllowListConfigsRevertsWhenPaused() public { @@ -1552,7 +1919,11 @@ contract RareERC1155MarketplaceSettlementTest is Test { marketplace.setTokenTxLimits(address(token), _singleTokenLimitRequest(tokenId, 5)); } - function _initData(address _payments, address _settlement) private view returns (bytes memory) { + function _initData(address _payments, address _tradeExecutionModule, address _checkoutExecutionModule) + private + view + returns (bytes memory) + { return abi.encodeWithSelector( RareERC1155Marketplace.initialize.selector, networkBeneficiary, @@ -1566,7 +1937,8 @@ contract RareERC1155MarketplaceSettlementTest is Test { address(erc20ApprovalManager), address(erc721ApprovalManager), address(erc1155ApprovalManager), - _settlement + _tradeExecutionModule, + _checkoutExecutionModule ); } @@ -1725,6 +2097,16 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(_result.reason, _reason); } + function _assertUnknownCheckoutFailure(bytes memory _revertData) private { + CheckoutFailureDecoderHarness harness = new CheckoutFailureDecoderHarness(); + + (IRareERC1155MarketplaceTypes.CheckoutFailureStage stage, bytes memory failureData) = + harness.checkoutExecutionFailure(_revertData); + + assertEq(uint8(stage), uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.UNKNOWN)); + assertEq(failureData, _revertData); + } + function _singleSplitRecipients(address _recipient) private pure returns (address payable[] memory recipients) { recipients = new address payable[](1); recipients[0] = payable(_recipient); @@ -1774,18 +2156,60 @@ contract RareERC1155MarketplaceSettlementTest is Test { function _mockSecondaryPayoutFor(address _contractAddress, uint256 _tokenId, uint256 _amount, address _seller) private { - _mockMarketplaceFee(_amount, _seller); - address payable[] memory receivers = new address payable[](1); uint256[] memory royalties = new uint256[](1); receivers[0] = payable(royaltyReceiver); royalties[0] = (_amount * 10) / 100; + _mockSecondaryPayoutWithRoyalties(_contractAddress, _tokenId, _amount, _seller, receivers, royalties); + } + + function _mockSecondaryPayoutWithRoyalties( + address _contractAddress, + uint256 _tokenId, + uint256 _amount, + address _seller, + address payable[] memory _receivers, + uint256[] memory _royalties + ) private { + _mockMarketplaceFee(_amount, _seller); vm.mockCall( royaltyEngine, abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, _contractAddress, _tokenId, _amount), - abi.encode(receivers, royalties) - ); + abi.encode(_receivers, _royalties) + ); + } + + function _royaltyReceivers(uint256 _count) private pure returns (address payable[] memory receivers) { + address payable[6] memory allReceivers = [ + payable(address(0x4101)), + payable(address(0x4102)), + payable(address(0x4103)), + payable(address(0x4104)), + payable(address(0x4105)), + payable(address(0x4106)) + ]; + receivers = new address payable[](_count); + for (uint256 i = 0; i < _count; i++) { + receivers[i] = allReceivers[i]; + } + } + + function _royaltyAmounts(uint256 _amount, uint256 _count) private pure returns (uint256[] memory royalties) { + royalties = new uint256[](_count); + for (uint256 i = 0; i < _count; i++) { + royalties[i] = (_amount * (i + 1)) / 100; + } + } + + function _zeroAddressRoyaltyReceivers() private pure returns (address payable[] memory receivers) { + receivers = new address payable[](1); + receivers[0] = payable(address(0)); + } + + function _singleRoyaltyAmounts(uint256 _amount) private pure returns (uint256[] memory royalties) { + royalties = new uint256[](1); + royalties[0] = (_amount * 10) / 100; } function _mockApprovedCurrency(address _currencyAddress) private { @@ -1840,4 +2264,8 @@ contract RareERC1155MarketplaceSettlementTest is Test { function _fee(uint256 _amount) private pure returns (uint256) { return (_amount * 3) / 100; } + + function _stakingFee(uint256 _amount) private pure returns (uint256) { + return (_amount * 1) / 100; + } } diff --git a/src/test/token/ERC1155/RareERC1155.t.sol b/src/test/token/ERC1155/RareERC1155.t.sol index 7e59d26..e1178dc 100644 --- a/src/test/token/ERC1155/RareERC1155.t.sol +++ b/src/test/token/ERC1155/RareERC1155.t.sol @@ -105,7 +105,7 @@ contract RareERC1155Test is Test { assertEq(token.tokenCreator(1), owner); } - function testDefaultRoyaltyUpdatesDoNotOverrideExistingTokenRoyalty() public { + function testDefaultRoyaltyReceiverUpdatesExistingTokensButPercentageDoesNot() public { vm.prank(owner); uint256 tokenId = token.createToken("ipfs://token/1.json", 10, owner); @@ -113,7 +113,7 @@ contract RareERC1155Test is Test { token.setDefaultRoyaltyReceiver(royaltyReceiver); (address receiverAfterReceiverUpdate, uint256 amountAfterReceiverUpdate) = token.royaltyInfo(tokenId, 1 ether); - assertEq(receiverAfterReceiverUpdate, owner); + assertEq(receiverAfterReceiverUpdate, royaltyReceiver); assertEq(amountAfterReceiverUpdate, 0.1 ether); vm.prank(owner); @@ -121,7 +121,7 @@ contract RareERC1155Test is Test { (address receiverAfterPercentageUpdate, uint256 amountAfterPercentageUpdate) = token.royaltyInfo(tokenId, 1 ether); - assertEq(receiverAfterPercentageUpdate, owner); + assertEq(receiverAfterPercentageUpdate, royaltyReceiver); assertEq(amountAfterPercentageUpdate, 0.1 ether); (address fallbackReceiver, uint256 fallbackAmount) = token.royaltyInfo(999, 1 ether); @@ -134,6 +134,19 @@ contract RareERC1155Test is Test { (address secondTokenReceiver, uint256 secondTokenAmount) = token.royaltyInfo(secondTokenId, 1 ether); assertEq(secondTokenReceiver, owner); assertEq(secondTokenAmount, 0.15 ether); + + vm.prank(owner); + token.setDefaultRoyaltyReceiver(collector); + + (address firstTokenReceiverAfterSecondReceiverUpdate, uint256 firstTokenAmountAfterSecondReceiverUpdate) = + token.royaltyInfo(tokenId, 1 ether); + assertEq(firstTokenReceiverAfterSecondReceiverUpdate, collector); + assertEq(firstTokenAmountAfterSecondReceiverUpdate, 0.1 ether); + + (address secondTokenReceiverAfterSecondReceiverUpdate, uint256 secondTokenAmountAfterSecondReceiverUpdate) = + token.royaltyInfo(secondTokenId, 1 ether); + assertEq(secondTokenReceiverAfterSecondReceiverUpdate, collector); + assertEq(secondTokenAmountAfterSecondReceiverUpdate, 0.15 ether); } function testOwnerCanUpdateTokenRoyaltyReceiver() public { diff --git a/src/token/ERC1155/IRareERC1155.sol b/src/token/ERC1155/IRareERC1155.sol index e7680cd..3ceb84b 100644 --- a/src/token/ERC1155/IRareERC1155.sol +++ b/src/token/ERC1155/IRareERC1155.sol @@ -156,9 +156,9 @@ interface IRareERC1155 is ITokenCreator, IERC2981Upgradeable { /// @param _isMinter Whether the address should be allowed to mint. function setMinterApproval(address _minter, bool _isMinter) external; - /// @notice Updates the fallback ERC2981 royalty receiver. - /// @dev Token-specific royalty receivers take precedence over this value. - /// @param _receiver New default royalty receiver. + /// @notice Updates the ERC2981 royalty receiver for the fallback config and all existing token ids. + /// @dev Existing token-specific royalty percentages are preserved. + /// @param _receiver New collection-wide royalty receiver. function setDefaultRoyaltyReceiver(address _receiver) external; /// @notice Updates the fallback ERC2981 royalty percentage. @@ -167,7 +167,7 @@ interface IRareERC1155 is ITokenCreator, IERC2981Upgradeable { function setDefaultRoyaltyPercentage(uint256 _percentage) external; /// @notice Updates the ERC2981 royalty receiver for one token id. - /// @dev The token's existing royalty percentage is preserved. + /// @dev The token's existing royalty percentage is preserved until a later collection-wide receiver update. /// @param _tokenId Token id whose royalty receiver is updated. /// @param _receiver New token-specific royalty receiver. function setRoyaltyReceiverForToken(uint256 _tokenId, address _receiver) external; diff --git a/src/token/ERC1155/RareERC1155.sol b/src/token/ERC1155/RareERC1155.sol index 560ae0d..7285292 100644 --- a/src/token/ERC1155/RareERC1155.sol +++ b/src/token/ERC1155/RareERC1155.sol @@ -10,6 +10,7 @@ import { ERC1155SupplyUpgradeable } from "openzeppelin-contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol"; import {ERC2981Upgradeable} from "openzeppelin-contracts-upgradeable/token/common/ERC2981Upgradeable.sol"; +import {IERC2981Upgradeable} from "openzeppelin-contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; import {IERC165Upgradeable} from "openzeppelin-contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol"; import {ITokenCreator} from "../extensions/ITokenCreator.sol"; @@ -55,7 +56,7 @@ contract RareERC1155 is /// @notice Lifetime minted quantity by token id. mapping(uint256 => uint256) private tokenTotalMinted; - /// @notice Fallback ERC2981 royalty receiver. + /// @notice Collection-wide ERC2981 royalty receiver and fallback receiver for unknown token ids. address private defaultRoyaltyReceiver; /// @notice Fallback ERC2981 royalty percentage, expressed as whole percentage points. @@ -64,6 +65,15 @@ contract RareERC1155 is /// @notice Token-specific ERC2981 royalty percentage, expressed as whole percentage points. mapping(uint256 => uint256) private tokenRoyaltyPercentages; + /// @notice Token-specific ERC2981 royalty receiver override by token id. + mapping(uint256 => address) private tokenRoyaltyReceivers; + + /// @notice Receiver revision when the token-specific receiver was last set. + mapping(uint256 => uint256) private tokenRoyaltyReceiverRevisions; + + /// @notice Collection-wide receiver revision, incremented whenever the default receiver changes. + uint256 private royaltyReceiverRevision; + /// @notice Ensures the collection has not been disabled. modifier ifNotDisabled() { // Atomic guard: disabled collections reject owner-managed writes before any state changes. @@ -195,6 +205,9 @@ contract RareERC1155 is /// @inheritdoc IRareERC1155 function setDefaultRoyaltyReceiver(address _receiver) external onlyOwner ifNotDisabled { _setDefaultRoyaltyConfig(_receiver, defaultRoyaltyPercentage); + unchecked { + ++royaltyReceiverRevision; + } } /// @inheritdoc IRareERC1155 @@ -264,6 +277,26 @@ contract RareERC1155 is return bytes(tokenURI).length > 0 ? tokenURI : super.uri(_tokenId); } + /// @inheritdoc IERC2981Upgradeable + function royaltyInfo(uint256 _tokenId, uint256 _salePrice) + public + view + override(ERC2981Upgradeable, IERC2981Upgradeable) + returns (address, uint256) + { + uint256 royaltyPercentage = + tokenConfigs[_tokenId].exists ? tokenRoyaltyPercentages[_tokenId] : defaultRoyaltyPercentage; + address royaltyReceiver = defaultRoyaltyReceiver; + address tokenRoyaltyReceiver = tokenRoyaltyReceivers[_tokenId]; + + if (tokenRoyaltyReceiverRevisions[_tokenId] == royaltyReceiverRevision && tokenRoyaltyReceiver != address(0)) { + royaltyReceiver = tokenRoyaltyReceiver; + } + + uint256 royaltyAmount = (_salePrice * royaltyPercentage * BASIS_POINTS_PER_PERCENT) / _feeDenominator(); + return (royaltyReceiver, royaltyAmount); + } + /// @inheritdoc IERC165Upgradeable function supportsInterface(bytes4 _interfaceId) public @@ -295,7 +328,8 @@ contract RareERC1155 is // State writes: register token constraints and royalty configuration. tokenConfigs[tokenId] = TokenConfig(_maxSupply, _tokenURI, true); tokenRoyaltyPercentages[tokenId] = defaultRoyaltyPercentage; - _setTokenRoyalty(tokenId, _royaltyReceiver, uint96(defaultRoyaltyPercentage * BASIS_POINTS_PER_PERCENT)); + tokenRoyaltyReceivers[tokenId] = _royaltyReceiver; + tokenRoyaltyReceiverRevisions[tokenId] = royaltyReceiverRevision; // Metadata and domain events: expose the new URI and token config to indexers. emit URI(_tokenURI, tokenId); @@ -304,7 +338,7 @@ contract RareERC1155 is return tokenId; } - /// @notice Updates fallback ERC2981 royalty config. + /// @notice Updates fallback ERC2981 royalty config used for future percentage and receiver changes. /// @param _receiver Royalty receiver address. /// @param _percentage Royalty percentage, expressed as whole percentage points. function _setDefaultRoyaltyConfig(address _receiver, uint256 _percentage) internal { @@ -324,7 +358,8 @@ contract RareERC1155 is function _setTokenRoyaltyReceiver(uint256 _tokenId, address _receiver) internal { if (_receiver == address(0)) revert ZeroAddressUnsupported(); - _setTokenRoyalty(_tokenId, _receiver, uint96(tokenRoyaltyPercentages[_tokenId] * BASIS_POINTS_PER_PERCENT)); + tokenRoyaltyReceivers[_tokenId] = _receiver; + tokenRoyaltyReceiverRevisions[_tokenId] = royaltyReceiverRevision; } /// @notice Validates batch mint input shape and token id ordering. From 6e464106cc6f582ca8bb755d1ec1c22190354bca Mon Sep 17 00:00:00 2001 From: Keegan Date: Tue, 9 Jun 2026 07:42:06 -0400 Subject: [PATCH 15/17] test: add ERC1155 audit coverage --- AUDIT.md | 390 ++ .../RareERC1155MarketplaceGas.t.sol | 1034 ++-- .../RareERC1155MarketplaceInvariants.t.sol | 1019 ++++ .../RareERC1155MarketplaceReentrancy.t.sol | 628 +++ .../RareERC1155MarketplaceSettlement.t.sol | 4933 +++++++++-------- .../token/ERC1155/RareERC1155Invariants.t.sol | 173 + 6 files changed, 5476 insertions(+), 2701 deletions(-) create mode 100644 AUDIT.md create mode 100644 src/test/marketplace/RareERC1155MarketplaceInvariants.t.sol create mode 100644 src/test/marketplace/RareERC1155MarketplaceReentrancy.t.sol create mode 100644 src/test/token/ERC1155/RareERC1155Invariants.t.sol diff --git a/AUDIT.md b/AUDIT.md new file mode 100644 index 0000000..9f09171 --- /dev/null +++ b/AUDIT.md @@ -0,0 +1,390 @@ +# ERC1155 Token and Marketplace Audit Plan + +Last updated: 2026-06-05 + +## Purpose + +This document defines a security audit plan for the RARE Protocol ERC1155 collection system and the ERC1155 marketplace execution stack. It is an audit plan, not a completed audit report. The goal is to give reviewers a precise map of the system, assets at risk, expected invariants, high-risk flows, and verification work required before production deployment or upgrade. + +## Primary Scope + +Token contracts: + +- `src/token/ERC1155/RareERC1155.sol` +- `src/token/ERC1155/IRareERC1155.sol` +- `src/token/ERC1155/RareERC1155ContractFactory.sol` +- `src/token/ERC1155/IRareERC1155ContractFactory.sol` + +Marketplace contracts: + +- `src/marketplace/RareERC1155Marketplace.sol` +- `src/marketplace/RareERC1155MarketplaceStorage.sol` +- `src/marketplace/RareERC1155ExecutionModuleBase.sol` +- `src/marketplace/RareERC1155TradeExecutionModule.sol` +- `src/marketplace/RareERC1155CheckoutExecutionModule.sol` +- `src/marketplace/RareERC1155MarketplacePayments.sol` +- `src/marketplace/IRareERC1155Marketplace.sol` +- `src/marketplace/IRareERC1155MarketplaceTypes.sol` +- `src/marketplace/IRareERC1155TradeExecutionModule.sol` +- `src/marketplace/IRareERC1155CheckoutExecutionModule.sol` + +Integration scope: + +- `MarketConfigV2` dependency bundle and the contracts it points to: marketplace settings, approved token registry, royalty engine, payments, staking settings, staking registry, space operator registry, ERC20 approval manager, and ERC1155 approval manager. +- Deployment and upgrade scripts that initialize or rotate marketplace dependencies and execution modules. +- Existing Foundry tests under `src/test/token/ERC1155` and `src/test/marketplace`, including settlement, checkout, gas, and upgrade-related coverage. + +Out of scope unless requested separately: + +- Full audits of legacy ERC721 marketplace contracts, staking contracts, royalty engine internals, and approval manager internals. Their behavior must still be modeled through mocks and integration assumptions because the ERC1155 marketplace trusts them. +- Platform operator error or misconfiguration, including incorrect deployment parameters, unsafe owner-authorized dependency rotation, incorrect registry administration, operational key management, or governance/timelock process failures. The audit should still verify that contract-level validation and access controls behave as specified. + +## System Model + +The ERC1155 collection is clone-based. `RareERC1155ContractFactory` deploys EIP-1167 clones of `RareERC1155`, then initializes each clone with caller ownership, collection metadata, a creator royalty receiver, and an optional default minter. + +`RareERC1155Marketplace` is the UUPS proxy-facing state owner. It stores marketplace state in an ERC-7201 namespace and routes execution through delegatecall into two module contracts: + +- `RareERC1155TradeExecutionModule` handles direct batch mints, batch listing buys, and offer acceptance. +- `RareERC1155CheckoutExecutionModule` handles best-effort multi-item carts that can fill valid items, skip invalid or failed items, and refund unused ETH. + +`RareERC1155MarketplacePayments` centralizes payment collection, fee checks, split validation, primary payouts, secondary payouts, marketplace fee allocation, royalty payouts, and refunds. + +The most sensitive design choices are: + +- Delegatecall modules share marketplace proxy storage and execution context. +- Checkout intentionally catches per-item failures and continues. +- Offers escrow buyer funds up front and allocate marketplace fees across partial fills. +- ETH payouts and refunds route through `Payments`; ERC20 payouts transfer directly. +- Direct sale minting depends on collection-wide minter approval granted to the marketplace. +- Secondary transfers depend on an ERC1155 approval manager rather than direct marketplace operator approval. + +## Assets and Security Objectives + +Assets at risk: + +- Buyer ETH and ERC20 funds. +- Seller ERC1155 balances. +- Escrowed offer funds and marketplace fee reserves. +- Creator primary-sale proceeds and royalty proceeds. +- Network beneficiary and staking reward fees. +- Collection lifetime mint supply and per-token max supply. +- Marketplace storage integrity across UUPS upgrades and module delegatecalls. +- Marketplace and collection owner authorities. +- Sale, offer, checkout, and token creation event integrity for off-chain indexers. + +Core objectives: + +- No buyer can receive tokens without paying the exact configured gross amount plus required fees. +- No seller can lose tokens without the expected sale proceeds being paid or escrowed according to payment rules. +- No token can be minted above its lifetime max supply, including after burns. +- Marketplace state transitions remain atomic for ordinary trade execution. +- Checkout skips must not leak state, tokens, or funds from failed items. +- Offer escrows must always conserve buyer principal plus remaining marketplace fee. +- Delegatecall modules must not be callable as standalone settlement contracts. +- Upgrades and module rotations must preserve storage layout and cannot accidentally disable critical guards. +- Approved currencies, split recipients, royalties, staking fees, and platform commissions cannot break accounting or liveness. + +## Threat Model + +Auditors should assume the following adversaries: + +- Malicious buyer attempting underpayment, replayed checkout items, ERC20 allowance races, self-purchase bypasses, or reentrancy through token receiver hooks. +- Malicious seller attempting stale listings, revoked approvals, balance manipulation, self-dealing, malicious split recipients, or royalty DoS. +- Malicious collection contract that claims ERC1155 support but returns inconsistent balances, reverts selectively, mints incorrectly, or implements hostile receiver callbacks. +- Malicious ERC20 that charges transfer fees, returns malformed data, reenters through approval manager hooks, or mutates balances unexpectedly. +- Malicious payout recipient that reverts, consumes gas, or attempts reentrancy from fallback functions. +- External dependency contracts returning extreme fee values, zero reward accumulators, excessive royalty arrays, or failing static calls. +- MEV actors racing listing cancellation, offer cancellation, allowance revocation, ownership transfer, sale start, allowlist expiry, and price changes. + +Trusted roles and assumptions: + +- Marketplace owner can upgrade the UUPS implementation and rotate dependencies and execution modules. +- Correct platform operation of privileged owner actions is trusted and excluded from this audit except for contract-level guardrails explicitly implemented in code. +- Collection owner controls token creation, token URI updates, royalty receiver updates, minter approvals, and direct-sale configuration. +- Approved minters have collection-wide mint authority over all existing token ids. +- Approved token registry screens ERC20s, but marketplace code still rejects fee-on-transfer behavior at settlement time. +- `Payments` is expected to prevent ETH recipient DoS by escrowing failed ETH sends. +- Token allowlist roots are intentionally stored per `(collection, tokenId)`, while leaves are address-only: `keccak256(abi.encodePacked(account))`. Reusing the same address allowlist root across multiple tokens is an intentional collection-owner configuration choice, not a cross-token proof replay issue. Future audits should only flag this area if an unauthorized caller can set/reuse a root, if the documented off-chain leaf format diverges from on-chain verification, or if the product requirement changes to require roots cryptographically bound to `(collection, tokenId, account)`. +- Direct-sale setup intentionally allows `price == 0` for free mints, `startTime == 0` for immediately live sales, and `maxMints == 0` for no per-transaction quantity cap. These are collection-owner-controlled drop configuration choices, not missing validation, provided zero-price execution preserves zero gross amount, zero marketplace fee, zero payout, and exact payment checks. +- Creators are intentionally allowed to mint ERC1155 inventory to themselves and later sell that inventory through secondary listing or offer paths. This means a creator can choose a secondary-market sale route instead of the direct-sale mint route, even when that route avoids primary-market platform commission. This is an accepted product tradeoff in favor of creator custody and flexibility, not a security finding, as long as the selected settlement path still charges and distributes the fees required for that path. + +## Audit Workstreams + +### 1. Specification and Architecture Review + +- Build a state-machine diagram for each user-facing flow: collection creation, token creation, minting, direct sale setup, direct sale cancellation, allowlist setup, limit setup, listing setup, listing cancellation, offer creation, offer cancellation, direct mint purchase, listing purchase, offer acceptance, and checkout. +- Confirm intended semantics for best-effort checkout: which failures should skip an item, which failures should revert the whole cart, and what observable event/result data must be emitted. +- Confirm business rules for primary fees, secondary fees, staking fee split, royalties, platform commission, split rounding, allowlist expiry, mint limits, transaction limits, max mints per transaction, and sale/listing expiration. +- Confirm deployment assumptions for UUPS proxy initialization, module deployment, module rotation, and clone factory configuration. + +### 2. Access Control and Authority Review + +- Verify every owner-only marketplace setter validates non-zero and contract-code requirements where appropriate. +- Verify `RareERC1155.renounceOwnership` cannot make creator resolution return zero. +- Verify collection disablement permanently blocks all intended owner-managed writes and minting paths. +- Verify direct sale setup and cancellation require current collection ownership. +- Verify collection ownership transfer after sale setup cannot allow stale direct sale configs to mint under a former owner. +- Verify approved minter behavior is intentionally collection-wide and cannot be confused with per-token sale authorization. +- Verify module contracts reject direct external calls and only execute through marketplace delegatecall. + +### 3. Delegatecall, UUPS, and Storage Review + +- Confirm marketplace, trade module, and checkout module all share the exact `RareERC1155MarketplaceStorage` layout and ERC-7201 storage slot. +- Confirm module immutables, inherited storage, and local state do not collide with proxy state. Execution modules must remain storage-less except for immutables; persistent marketplace fields belong only in the ERC-7201 `MarketplaceStorage` namespace. +- Confirm UUPS initialization cannot be repeated and implementation contracts are locked. +- Diff storage layout against the currently deployed or target-base implementation before upgrade. Run `script/marketplace/check-erc1155-storage-layout.sh`; `RareERC1155Marketplace` should show only OZ upgradeable inherited storage/gaps, while `RareERC1155TradeExecutionModule` and `RareERC1155CheckoutExecutionModule` should show empty storage arrays. +- Verify module rotation cannot point to EOAs, zero addresses, destructed contracts, or contracts with incompatible selectors. +- Add tests proving old offer, listing, limit, and direct-sale state remains readable after implementation/module upgrades. + +### 4. Token Invariants + +Required properties for `RareERC1155`: + +- Token ids start at 1 and are monotonically increasing. +- `maxSupplyForToken(tokenId) == 0` only for non-existent token ids. +- `totalMintedForToken(tokenId)` is monotonic and never decreases on burn. +- `totalMintedForToken(tokenId) <= maxSupplyForToken(tokenId)` for every created token id. +- Minting zero amount, minting to zero address, minting unknown token ids, duplicate batch token ids, unsorted batch token ids, and oversized batches revert. +- `mintTo` and `mintBatchTo` enforce the same mint authority and supply constraints. +- Owner and approved minters can mint; all other accounts cannot. +- Collection-wide royalty receiver updates propagate to all existing token ids while preserving each token's royalty percentage. +- Default royalty percentage updates do not mutate existing token-specific royalty percentages; they only affect fallback royalty info and tokens created afterward. +- Token-specific royalty receiver updates preserve the token-specific royalty percentage until a later collection-wide receiver update. +- ERC165 support includes ERC1155, ERC2981, `IRareERC1155`, and `ITokenCreator`. +- `uri(tokenId)` returns token-specific URI when present and base URI fallback otherwise. +- Disabled collections reject token creation, minting, minter updates, royalty updates, and URI updates while preserving reads, transfers, and burns according to intended policy. + +### 5. Marketplace Accounting Invariants + +Required properties for direct sale mints: + +- Buyer payment equals `sum(price * quantity + marketplaceFee)` for all filled items. +- Zero-price direct-sale mints are valid: gross amount, marketplace fee, payout, and required payment are all zero. +- Per-address mint limits and transaction limits increase only for successful mints. +- Checkout failures roll back limit counter increments for skipped items. +- `maxMints` applies per transaction and across duplicate checkout items for the same token id. +- Transaction limits count one successful mint transaction per `(buyer, collection, tokenId)`, so duplicate direct-sale checkout items for the same token in one checkout consume one transaction-limit unit while mint limits still consume total minted quantity. +- Direct sale seller remains the current collection owner at execution time. +- Allowlist proof verification uses the exact intended leaf domain and cannot be reused across incompatible contexts if domain separation is required. +- Mint balance deltas prove the buyer received exactly the requested quantity. + +Required properties for secondary listing buys: + +- Seller cannot buy from self. +- Sale price, currency, expiration, available quantity, approval, and seller balance are checked at execution time. +- Listing quantity decreases exactly by the filled amount and deletes at zero. +- Failed checkout listing items do not decrease listing quantity or collect payment. +- Transfer balance deltas prove seller lost and buyer received exactly the requested quantity. +- Creator-owned, pre-minted `RareERC1155` inventory is allowed to settle through the secondary listing path. Auditors should not classify primary-market commission avoidance from that creator choice as a protocol bug unless the product requirement changes. + +Required properties for offers: + +- Offer creation escrows gross amount plus marketplace fee and refunds any replaced offer. +- Offer cancellation deletes state before refunding. +- Offer acceptance cannot be performed by the buyer. +- Partial fills reduce quantity and marketplace fee remaining using cumulative allocation, not naive per-fill rounding. +- Final fill deletes all offer fields and pays exactly the remaining marketplace fee. +- Expired offers cannot be accepted but can be cancelled and refunded. +- ERC20 and ETH offer refund paths cannot leave stale offer state that can be double-refunded. + +Required properties for checkout: + +- `filledCount + skippedCount == items.length`. +- `ethSpent + ethRefunded == msg.value` for ETH-denominated filled items and skipped ETH items. +- ERC20 is collected per filled ERC20 item only after payment prechecks pass. +- Mixed ETH and ERC20 carts cannot cross-subsidize failed items. +- Per-item failure stages are stable: validation, payment collection, mint, transfer, payout. +- Reverts from external calls cannot spoof an incorrect failure stage or corrupt result decoding. +- Unknown future item kinds are skipped with an unsupported-kind failure, not executed. +- Events and returned `CheckoutExecution` results are consistent for every item. + +Required properties for payouts: + +- Split ratios must sum to 100 and have no zero recipients or zero ratios. +- Split rounding remainder goes to the last recipient and total payout equals sale amount. +- Primary sale platform commission cannot exceed 100%. +- Secondary royalties cannot exceed sale amount. +- Secondary royalty payouts follow the existing v2 marketplace policy: at most the first five royalty recipients returned by the royalty engine are paid. +- Secondary royalty recipients with nonzero royalty amounts cannot be the zero address, preventing ETH from being forwarded to `Payments` without a withdrawable payee. +- Staking fee cannot exceed marketplace fee. +- Zero-value recipients are skipped for ERC20 payout loops where applicable. +- Failed ETH recipient sends are escrowed through `Payments` instead of reverting the sale. +- ERC20 fee-on-transfer tokens are rejected during payment collection. + +### 6. Reentrancy and External Call Review + +High-priority external call sites: + +- ERC1155 `safeTransferFrom`, `safeBatchTransferFrom`, `balanceOf`, `balanceOfBatch`, `isApprovedForAll`, and `mintBatchTo`. +- ERC20 `balanceOf`, `allowance`, approval manager `transferFrom`, and `safeTransfer`. +- Royalty engine `getRoyalty`. +- Payments `payout` and `refund`. +- Marketplace settings fee calculations and space operator/staking registry calls. +- Collection `owner()` staticcall used for direct sale ownership checks. + +Required tests: + +- Reenter marketplace write functions from ERC1155 receiver callbacks during mints and transfers. +- Reenter marketplace write functions from malicious ETH recipients through payout/refund paths. +- Reenter or mutate balances from malicious ERC20 `balanceOf`, `allowance`, `transfer`, and approval-manager-mediated `transferFrom`. +- Reenter from royalty receiver discovery or malicious royalty engine responses. +- Confirm `nonReentrant` on the marketplace facade still protects delegatecall module execution because delegatecalled code runs in marketplace context. +- Confirm best-effort checkout catches expected per-item failures but does not catch failures that should be whole-transaction invariant violations. + +### 7. Denial-of-Service and Gas Review + +- Measure worst-case gas for `MAX_BATCH_SIZE == 75` trade batches and `MAX_CHECKOUT_SIZE == 50` checkout carts. +- Stress maximum split recipients, maximum royalty recipients from royalty engine, mixed currencies, repeated duplicate direct-sale checkout items, and all-skipped checkout carts. +- Treat long Merkle allowlist proofs as caller-paid gas overhead unless evidence shows a third-party griefing path. Proof verification hashes once per supplied proof element, so an oversized proof can make the caller's own mint/checkout more expensive, but it does not force work onto other users or persistent state. +- Confirm no user can force persistent storage growth without paying expected costs or create unbounded loops over attacker-controlled historical state. +- Confirm payout recipient arrays from royalty engine cannot make settlement exceed block gas in common marketplace flows; ERC1155 settlement truncates royalty recipients to the first five before summing or paying royalties. +- Confirm Payments escrow path bounds recipient gas and preserves liveness for sales and refunds. + +### 8. Static Analysis + +Run and triage: + +- `forge build` +- `forge test --no-match-path src/test/forks/**/*.sol` +- `npm run lint` +- Slither against the in-scope contracts, with explicit review of delegatecall, reentrancy, arbitrary-send, unchecked-transfer, missing-events, and weak-prng findings. +- A second static analyzer such as Aderyn or Semgrep Solidity rules to catch tool-specific gaps. +- Storage layout extraction before and after proposed upgrades, including `script/marketplace/check-erc1155-storage-layout.sh`. + +Expected false positives: + +- Intentional delegatecall from marketplace into trusted execution modules. +- Intentional low-level calls to `Payments`. +- Intentional unchecked loop increments after bounded batch-size validation. +- Address-only Merkle allowlist leaves without `(collection, tokenId)` domain separation; roots are keyed by `(collection, tokenId)`, and intentional root reuse across tokens is owner-controlled. +- Unbounded per-item Merkle proof arrays for mint/checkout allowlists; extra proof elements only add caller-paid calldata and hashing gas, making this self-DoS rather than a marketplace or third-party DoS vector. +- Permissive direct-sale parameters where `price == 0`, `startTime == 0`, or `maxMints == 0`; these intentionally mean free mint, immediately live sale, and unlimited per-transaction quantity respectively. + +False positives must still be documented with the exact invariant or test that makes each pattern safe. + +### 9. Fuzzing and Stateful Invariant Testing + +Implement Foundry invariant suites with actors for buyer, seller, creator, marketplace owner, malicious ERC1155 receiver, malicious ERC20, malicious royalty engine, and rejecting payout recipient. + +Suggested invariant handlers: + +- Token handler: create tokens, approve minters, mint single, mint batch, burn, transfer, disable, update royalty, update URI. +- Marketplace handler: configure direct sales, configure allowlists, configure limits, set listings, cancel listings, make offers, cancel offers, mint direct sale, buy listing, accept offer, checkout mixed carts. +- Admin handler: pause/unpause, rotate dependencies to valid mocks, rotate execution modules to compatible mocks, upgrade proxy in a harness. + +Global invariants: + +- Marketplace ETH plus ERC20 balances equal active offer escrow plus transient checkout balances at transaction end, excluding funds intentionally handed to `Payments`. +- No account receives ERC1155 balance delta without an equal settled payment obligation. +- No seller loses ERC1155 balance delta without payout, escrow, or expected revert. +- Sum of active offer remaining principal and marketplace fee remaining equals escrow owed to buyers. +- Listing quantities never underflow and never become non-zero after delete. +- Checkout skipped items have no persistent side effects. +- Paused marketplace rejects all configured write/execution entrypoints that are intended to pause. +- Direct module calls always revert. + +### 10. Fork and Deployment Validation + +- Run deployment scripts against a local fork with the target mainnet/base addresses. +- Verify proxy initialization arguments, owner, UUPS implementation slot, module addresses, marketplace dependency addresses, and approval manager addresses. +- Simulate module rotation from old settlement architecture to trade/checkout modules if this audit supports an upgrade. +- Replay representative live-style flows on fork: creator collection setup, token creation, direct sale mint, listing buy, offer lifecycle, mixed checkout, payout recipient escrow. +- Confirm ABI generation and frontend-facing interfaces match deployed selectors and events. + +## High-Risk Review Questions by Contract + +`RareERC1155.sol`: + +- Can any approved minter mint unintended token ids after creator approval? +- Can lifetime max supply be bypassed through burns, batch duplication, reentrancy, or malformed receiver hooks? +- Are royalty percentage units and ERC2981 basis points conversions consistently applied? +- Does disabling the contract intentionally leave transfers and burns available? + +`RareERC1155ContractFactory.sol`: + +- Can the factory owner point clones to an incompatible implementation? +- Are clones initialized atomically and impossible to front-run or reinitialize? +- Is the default minter configuration safe for marketplace deployment order? + +`RareERC1155Marketplace.sol`: + +- Does every public write path have the intended pause and reentrancy behavior? +- Do owner dependency and module setters enforce the contract-level guardrails specified in code, excluding platform operator error or intentionally unsafe authorized changes? +- Does delegatecall bubble errors correctly for non-checkout execution? +- Are cancellation functions intentionally callable while paused? + +`RareERC1155MarketplaceStorage.sol`: + +- Is the ERC-7201 slot correct and stable? +- Are batch-size limits sufficient to bound every loop using user-provided arrays? +- Is the documented address-only Merkle allowlist leaf format consistently used off-chain and on-chain, and are only authorized collection owners able to configure per-token roots? +- Are ERC1155 and owner checks robust against malformed contracts? + +`RareERC1155ExecutionModuleBase.sol`: + +- Are shared validation helpers identical between revert-all trade flows and best-effort checkout flows? +- Can `_decodeCheckoutItemExecutionFailed` return memory that is later corrupted or misinterpreted? +- Does marketplace fee allocation for partial offers handle all rounding and final-fill cases? + +`RareERC1155TradeExecutionModule.sol`: + +- Are state writes performed before external calls only where reentrancy protection and rollback semantics make that safe? +- Can listing or offer state be consumed before a transfer/payout failure in a way that creates stuck state? +- Are batch transfer balance checks sufficient for non-standard ERC1155 implementations? + +`RareERC1155CheckoutExecutionModule.sol`: + +- Can a failed checkout item leak payment collection, limit counters, listing decrements, or minted/transferred tokens? +- Are nested delegatecalls to the checkout module necessary and safe under the module rotation model? +- Can failure data spoofing produce misleading stages or suppress critical failures? +- Are ETH refunds correct for mixed-currency carts and all-skipped carts? + +`RareERC1155MarketplacePayments.sol`: + +- Does every payout path conserve value exactly after fees, royalties, staking, platform commission, and splits? +- Are ERC20 transfers compatible only with approved plain ERC20s, and is fee-on-transfer rejection sufficient? +- Can malicious royalty or staking dependencies force revert or gas DoS beyond intended policy? +- Are ETH refunds and payouts safe under the specified `Payments` interface and failure model? + +## Evidence Matrix + +| Property | Manual review | Unit tests | Fuzz/invariant | Fork/deploy | +| ------------------------------------------------ | ------------- | ---------- | -------------- | ----------- | +| ERC1155 max supply cannot be exceeded | Required | Required | Required | Optional | +| Burns do not reopen supply | Required | Required | Required | Optional | +| Clone initialization cannot be hijacked | Required | Required | Optional | Required | +| Direct sale ownership is current at execution | Required | Required | Required | Required | +| Checkout skipped items have no side effects | Required | Required | Required | Optional | +| ETH accounting conserves `msg.value` in checkout | Required | Required | Required | Optional | +| ERC20 fee-on-transfer rejected | Required | Required | Required | Optional | +| Offer partial fee allocation is exact | Required | Required | Required | Optional | +| Delegatecall modules cannot run standalone | Required | Required | Required | Required | +| UUPS/module upgrade preserves storage | Required | Required | Optional | Required | +| Payout recipient DoS does not block ETH sales | Required | Required | Required | Required | +| Pause behavior matches policy | Required | Required | Required | Optional | + +## Deliverables + +Auditors should produce: + +- Architecture and trust-boundary memo. +- Threat model and attack tree notes. +- Findings report with severity, exploit narrative, affected contracts, proof of concept, and remediation guidance. +- Test gap report with proposed unit, fuzz, invariant, fork, and gas tests. +- Static analysis triage log, including documented false positives. +- Storage layout and upgrade safety memo. +- Remediation verification report after fixes. + +## Acceptance Criteria + +Before sign-off: + +- All critical and high findings are fixed or explicitly accepted with owner sign-off. +- All medium findings have remediation, mitigation, or documented risk acceptance. +- In-scope Foundry tests pass. +- New invariant tests cover token supply, checkout side effects, offer escrow accounting, and delegatecall-only modules. +- Static analysis findings are triaged. +- Deployment scripts have been simulated on fork with final addresses. +- Storage layout compatibility is documented for any marketplace upgrade. +- A final smoke test exercises collection creation, token creation, direct mint purchase, listing purchase, offer lifecycle, mixed checkout, failed payout escrow, pause/unpause, and module direct-call rejection. diff --git a/src/test/marketplace/RareERC1155MarketplaceGas.t.sol b/src/test/marketplace/RareERC1155MarketplaceGas.t.sol index dde64dc..6cc358f 100644 --- a/src/test/marketplace/RareERC1155MarketplaceGas.t.sol +++ b/src/test/marketplace/RareERC1155MarketplaceGas.t.sol @@ -20,519 +20,573 @@ import {RareERC1155TradeExecutionModule} from "../../marketplace/RareERC1155Trad import {IRoyaltyEngineV1} from "royalty-registry/IRoyaltyEngineV1.sol"; contract CheckoutGasCurrency is ERC20 { - constructor(address _buyer) ERC20("Checkout Gas Currency", "CGAS") { - _mint(_buyer, 1_000_000_000 ether); - } + constructor(address _buyer) ERC20("Checkout Gas Currency", "CGAS") { + _mint(_buyer, 1_000_000_000 ether); + } } contract CheckoutGasApprovedTokenRegistry { - function isApprovedToken(address) external pure returns (bool) { - return true; - } + function isApprovedToken(address) external pure returns (bool) { + return true; + } } contract CheckoutGasMarketplaceSettings { - function calculateMarketplaceFee(uint256 _amount) external pure returns (uint256) { - return (_amount * 3) / 100; - } + function calculateMarketplaceFee(uint256 _amount) external pure returns (uint256) { + return (_amount * 3) / 100; + } - function getERC721ContractPrimarySaleFeePercentage(address) external pure returns (uint8) { - return 10; - } + function getERC721ContractPrimarySaleFeePercentage(address) external pure returns (uint8) { + return 10; + } } contract CheckoutGasStakingSettings { - function calculateStakingFee(uint256 _amount) external pure returns (uint256) { - return (_amount * 1) / 100; - } + function calculateStakingFee(uint256 _amount) external pure returns (uint256) { + return (_amount * 1) / 100; + } } contract CheckoutGasStakingRegistry { - address private immutable rewardAccumulator; + address private immutable rewardAccumulator; - constructor(address _rewardAccumulator) { - rewardAccumulator = _rewardAccumulator; - } + constructor(address _rewardAccumulator) { + rewardAccumulator = _rewardAccumulator; + } - function getRewardAccumulatorAddressForUser(address) external view returns (address) { - return rewardAccumulator; - } + function getRewardAccumulatorAddressForUser(address) external view returns (address) { + return rewardAccumulator; + } } contract CheckoutGasSpaceOperatorRegistry { - function isApprovedSpaceOperator(address) external pure returns (bool) { - return false; - } + function isApprovedSpaceOperator(address) external pure returns (bool) { + return false; + } } contract CheckoutGasRoyaltyEngine is IRoyaltyEngineV1 { - uint256 private immutable royaltyRecipientCount; - - constructor(uint256 _royaltyRecipientCount) { - royaltyRecipientCount = _royaltyRecipientCount; - } - - function getRoyalty(address, uint256, uint256 _value) - external - view - returns (address payable[] memory recipients, uint256[] memory amounts) - { - return _royalties(_value); - } - - function getRoyaltyView(address, uint256, uint256 _value) - external - view - returns (address payable[] memory recipients, uint256[] memory amounts) - { - return _royalties(_value); - } - - function supportsInterface(bytes4 _interfaceId) external pure returns (bool) { - return _interfaceId == type(IRoyaltyEngineV1).interfaceId || _interfaceId == type(IERC165).interfaceId; - } - - function _royalties(uint256 _value) - private - view - returns (address payable[] memory recipients, uint256[] memory amounts) - { - recipients = new address payable[](royaltyRecipientCount); - amounts = new uint256[](royaltyRecipientCount); - for (uint256 i = 0; i < royaltyRecipientCount; i++) { - recipients[i] = payable(address(uint160(0xA000 + i))); - amounts[i] = (_value * 10) / 100 / royaltyRecipientCount; - } - } + uint256 private immutable royaltyRecipientCount; + + constructor(uint256 _royaltyRecipientCount) { + royaltyRecipientCount = _royaltyRecipientCount; + } + + function getRoyalty( + address, + uint256, + uint256 _value + ) external view returns (address payable[] memory recipients, uint256[] memory amounts) { + return _royalties(_value); + } + + function getRoyaltyView( + address, + uint256, + uint256 _value + ) external view returns (address payable[] memory recipients, uint256[] memory amounts) { + return _royalties(_value); + } + + function supportsInterface(bytes4 _interfaceId) external pure returns (bool) { + return _interfaceId == type(IRoyaltyEngineV1).interfaceId || _interfaceId == type(IERC165).interfaceId; + } + + function _royalties( + uint256 _value + ) private view returns (address payable[] memory recipients, uint256[] memory amounts) { + recipients = new address payable[](royaltyRecipientCount); + amounts = new uint256[](royaltyRecipientCount); + for (uint256 i = 0; i < royaltyRecipientCount; i++) { + recipients[i] = payable(address(uint160(0xA000 + i))); + amounts[i] = (_value * 10) / 100 / royaltyRecipientCount; + } + } } /// @dev Run with `forge test --match-contract RareERC1155MarketplaceGasTest -vv` to print sweep gas logs. contract RareERC1155MarketplaceGasTest is Test { - uint256 private constant PRICE = 1 ether; - uint256 private constant MAX_BATCH_BENCH_ITEMS = 75; - uint256 private constant MAX_CHECKOUT_BENCH_ITEMS = 50; - uint256 private constant MAX_SPLIT_RECIPIENTS = 5; - uint256 private constant MAX_ROYALTY_RECIPIENTS = 5; - - RareERC1155Marketplace private marketplace; - RareERC1155 private token; - CheckoutGasCurrency private currency; - RareERC1155ContractFactory private tokenFactory; - ERC20ApprovalManager private erc20ApprovalManager; - ERC721ApprovalManager private erc721ApprovalManager; - ERC1155ApprovalManager private erc1155ApprovalManager; - - address private deployer = address(0x1000); - address private seller = address(0x2000); - address private buyer = address(0x3000); - address private networkBeneficiary = address(0x4000); - address private rewardAccumulator = address(0x5000); - - function testGas_checkoutPrimaryEthMaxSplits_sweep() public { - uint256[] memory counts = _checkoutBenchmarkCounts(); - for (uint256 i = 0; i < counts.length; i++) { - uint256 count = counts[i]; - _deployFixture(0); - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _preparePrimaryCheckoutItems(count); - _measureCheckout("checkout_primary_eth_max_splits", count, items, _withFee(PRICE) * count, count, 0); - } - } - - function testGas_checkoutSecondaryEthMaxSplitsAndRoyalties_sweep() public { - uint256[] memory counts = _checkoutBenchmarkCounts(); - for (uint256 i = 0; i < counts.length; i++) { - uint256 count = counts[i]; - _deployFixture(MAX_ROYALTY_RECIPIENTS); - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = - _prepareSecondaryCheckoutItems(count, address(0), PRICE); - _measureCheckout( - "checkout_secondary_eth_max_splits_max_royalties", count, items, _withFee(PRICE) * count, count, 0 - ); - } - } - - function testGas_checkoutSecondaryErc20MaxSplitsAndRoyalties_sweep() public { - uint256[] memory counts = _checkoutBenchmarkCounts(); - for (uint256 i = 0; i < counts.length; i++) { - uint256 count = counts[i]; - _deployFixture(MAX_ROYALTY_RECIPIENTS); - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = - _prepareSecondaryCheckoutItems(count, address(currency), PRICE); - - vm.prank(buyer); - currency.approve(address(erc20ApprovalManager), _withFee(PRICE) * count); - - _measureCheckout("checkout_secondary_erc20_max_splits_max_royalties", count, items, 0, count, 0); - } - } - - function testGas_checkoutMixedPrimaryAndSecondaryEth_sweep() public { - uint256[] memory counts = _checkoutBenchmarkCounts(); - for (uint256 i = 0; i < counts.length; i++) { - uint256 count = counts[i]; - _deployFixture(MAX_ROYALTY_RECIPIENTS); - - uint256 primaryCount = count / 2; - uint256 secondaryCount = count - primaryCount; - IRareERC1155MarketplaceTypes.CheckoutItem[] memory primaryItems = _preparePrimaryCheckoutItems(primaryCount); - IRareERC1155MarketplaceTypes.CheckoutItem[] memory secondaryItems = - _prepareSecondaryCheckoutItems(secondaryCount, address(0), PRICE); - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = - _concatCheckoutItems(primaryItems, secondaryItems); - - _measureCheckout("checkout_mixed_primary_secondary_eth", count, items, _withFee(PRICE) * count, count, 0); - } - } - - function testGas_checkoutSkippedSecondaryStaleBalanceThenPrimaryEth_sweep() public { - uint256[] memory counts = _checkoutBenchmarkCounts(); - for (uint256 i = 0; i < counts.length; i++) { - uint256 count = counts[i]; - _deployFixture(MAX_ROYALTY_RECIPIENTS); - - uint256 skippedCount = count - 1; - IRareERC1155MarketplaceTypes.CheckoutItem[] memory skippedItems = - _prepareStaleBalanceSecondaryCheckoutItems(skippedCount, address(0)); - IRareERC1155MarketplaceTypes.CheckoutItem[] memory primaryItems = _preparePrimaryCheckoutItems(1); - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _concatCheckoutItems(skippedItems, primaryItems); - - _measureCheckout( - "checkout_skipped_secondary_stale_balance_then_primary_eth", - count, - items, - _withFee(PRICE), - 1, - skippedCount - ); - } - } - - function testGas_mintDirectSaleBatchEthMaxSplits_sweep() public { - uint256[] memory counts = _batchBenchmarkCounts(); - for (uint256 i = 0; i < counts.length; i++) { - uint256 count = counts[i]; - _deployFixture(0); - uint256[] memory tokenIds = _preparePrimarySales(count); - IRareERC1155MarketplaceTypes.MintRequest[] memory requests = _mintRequests(tokenIds, PRICE); - - vm.prank(buyer); - uint256 gasBefore = gasleft(); - marketplace.mintDirectSaleBatch{value: _withFee(PRICE) * count}(address(token), address(0), requests); - _recordGas("mint_direct_sale_batch_eth_max_splits", count, gasBefore - gasleft()); - } - } - - function testGas_buyBatchEthMaxSplitsAndRoyalties_sweep() public { - uint256[] memory counts = _batchBenchmarkCounts(); - for (uint256 i = 0; i < counts.length; i++) { - uint256 count = counts[i]; - _deployFixture(MAX_ROYALTY_RECIPIENTS); - uint256[] memory tokenIds = _prepareSecondaryListings(count, address(0)); - IRareERC1155MarketplaceTypes.BuyRequest[] memory requests = _buyRequests(tokenIds, PRICE); - - vm.prank(buyer); - uint256 gasBefore = gasleft(); - marketplace.buyBatch{value: _withFee(PRICE) * count}(address(token), seller, address(0), requests); - _recordGas("buy_batch_eth_max_splits_max_royalties", count, gasBefore - gasleft()); - } - } - - function _deployFixture(uint256 _royaltyRecipientCount) private { - deal(deployer, 1_000_000 ether); - deal(seller, 1_000_000 ether); - deal(buyer, 1_000_000 ether); - - vm.startPrank(deployer); - currency = new CheckoutGasCurrency(buyer); - erc20ApprovalManager = new ERC20ApprovalManager(); - erc721ApprovalManager = new ERC721ApprovalManager(); - erc1155ApprovalManager = new ERC1155ApprovalManager(); - RareERC1155TradeExecutionModule tradeExecutionModule = new RareERC1155TradeExecutionModule(); - RareERC1155CheckoutExecutionModule checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); - - address marketplaceSettings = address(new CheckoutGasMarketplaceSettings()); - address stakingSettings = address(new CheckoutGasStakingSettings()); - address stakingRegistry = address(new CheckoutGasStakingRegistry(rewardAccumulator)); - address royaltyEngine = address(new CheckoutGasRoyaltyEngine(_royaltyRecipientCount)); - address spaceOperatorRegistry = address(new CheckoutGasSpaceOperatorRegistry()); - address approvedTokenRegistry = address(new CheckoutGasApprovedTokenRegistry()); - - marketplace = RareERC1155Marketplace( - address( - new ERC1967Proxy( - address(new RareERC1155Marketplace()), - abi.encodeWithSelector( - RareERC1155Marketplace.initialize.selector, - networkBeneficiary, - marketplaceSettings, - spaceOperatorRegistry, - royaltyEngine, - address(new Payments()), - approvedTokenRegistry, - stakingSettings, - stakingRegistry, - address(erc20ApprovalManager), - address(erc721ApprovalManager), - address(erc1155ApprovalManager), - address(tradeExecutionModule), - address(checkoutExecutionModule) - ) - ) - ) - ); - erc20ApprovalManager.grantOperatorRole(address(marketplace)); - erc1155ApprovalManager.grantOperatorRole(address(marketplace)); - - tokenFactory = new RareERC1155ContractFactory(); - tokenFactory.setDefaultMinter(address(marketplace)); - vm.stopPrank(); - - vm.prank(seller); - token = RareERC1155(tokenFactory.createRareERC1155Contract("Gas Editions", "GAS", "ipfs://gas/{id}.json")); - } - - function _preparePrimaryCheckoutItems(uint256 _count) - private - returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) - { - uint256[] memory tokenIds = _preparePrimarySales(_count); - items = new IRareERC1155MarketplaceTypes.CheckoutItem[](_count); - for (uint256 i = 0; i < _count; i++) { - items[i] = _directSaleCheckoutItem(tokenIds[i], PRICE); - } - } - - function _prepareSecondaryCheckoutItems(uint256 _count, address _currencyAddress, uint256 _itemPrice) - private - returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) - { - uint256[] memory tokenIds = _prepareSecondaryListings(_count, _currencyAddress); - items = new IRareERC1155MarketplaceTypes.CheckoutItem[](_count); - for (uint256 i = 0; i < _count; i++) { - items[i] = _listingCheckoutItem(tokenIds[i], _currencyAddress, _itemPrice); - } - } - - function _prepareStaleBalanceSecondaryCheckoutItems(uint256 _count, address _currencyAddress) - private - returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) - { - uint256[] memory tokenIds = _prepareSecondaryListings(_count, _currencyAddress); - if (_count != 0) { - vm.prank(seller); - token.safeBatchTransferFrom(seller, address(0x6000), tokenIds, _amounts(_count, 1), ""); - } - - items = new IRareERC1155MarketplaceTypes.CheckoutItem[](_count); - for (uint256 i = 0; i < _count; i++) { - items[i] = _listingCheckoutItem(tokenIds[i], _currencyAddress, PRICE); - } - } - - function _preparePrimarySales(uint256 _count) private returns (uint256[] memory tokenIds) { - tokenIds = _createTokenIds(_count, 10); - if (_count == 0) return tokenIds; - - vm.prank(seller); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _directSaleRequests(tokenIds, PRICE), - _splitRecipients(MAX_SPLIT_RECIPIENTS), - _splitRatios(MAX_SPLIT_RECIPIENTS) - ); - } - - function _prepareSecondaryListings(uint256 _count, address _currencyAddress) - private - returns (uint256[] memory tokenIds) - { - tokenIds = _createTokenIds(_count, 10); - if (_count == 0) return tokenIds; - - uint256[] memory amounts = _amounts(_count, 1); - vm.startPrank(seller); - token.mintBatchTo(seller, tokenIds, amounts); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - marketplace.setSalePrices( - address(token), - _currencyAddress, - _salePriceRequests(tokenIds, PRICE), - _splitRecipients(MAX_SPLIT_RECIPIENTS), - _splitRatios(MAX_SPLIT_RECIPIENTS) - ); - vm.stopPrank(); - } - - function _createTokenIds(uint256 _count, uint256 _maxSupply) private returns (uint256[] memory tokenIds) { - tokenIds = new uint256[](_count); - vm.startPrank(seller); - for (uint256 i = 0; i < _count; i++) { - tokenIds[i] = token.createToken("ipfs://gas-token.json", _maxSupply, seller); - } - vm.stopPrank(); - } - - function _measureCheckout( - string memory _scenario, - uint256 _count, - IRareERC1155MarketplaceTypes.CheckoutItem[] memory _items, - uint256 _value, - uint256 _expectedFilled, - uint256 _expectedSkipped - ) private { - vm.prank(buyer); - uint256 gasBefore = gasleft(); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _value}(_items); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; - uint256 gasUsed = gasBefore - gasleft(); - - assertEq(summary.filledCount, _expectedFilled); - assertEq(summary.skippedCount, _expectedSkipped); - _recordGas(_scenario, _count, gasUsed); - } - - function _recordGas(string memory _scenario, uint256 _count, uint256 _gasUsed) private { - emit log_string(_scenario); - emit log_named_uint("items", _count); - emit log_named_uint("gas", _gasUsed); - emit log_named_uint("gas_per_item", _gasUsed / _count); - } - - function _checkoutBenchmarkCounts() private pure returns (uint256[] memory counts) { - counts = new uint256[](5); - counts[0] = 1; - counts[1] = 5; - counts[2] = 10; - counts[3] = 20; - counts[4] = MAX_CHECKOUT_BENCH_ITEMS; - } - - function _batchBenchmarkCounts() private pure returns (uint256[] memory counts) { - counts = new uint256[](6); - counts[0] = 1; - counts[1] = 5; - counts[2] = 10; - counts[3] = 20; - counts[4] = 50; - counts[5] = MAX_BATCH_BENCH_ITEMS; - } - - function _concatCheckoutItems( - IRareERC1155MarketplaceTypes.CheckoutItem[] memory _first, - IRareERC1155MarketplaceTypes.CheckoutItem[] memory _second - ) private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) { - items = new IRareERC1155MarketplaceTypes.CheckoutItem[](_first.length + _second.length); - for (uint256 i = 0; i < _first.length; i++) { - items[i] = _first[i]; - } - for (uint256 i = 0; i < _second.length; i++) { - items[_first.length + i] = _second[i]; - } - } - - function _directSaleCheckoutItem(uint256 _tokenId, uint256 _price) - private - view - returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) - { - return IRareERC1155MarketplaceTypes.CheckoutItem({ - itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.DIRECT_SALE_MINT), - contractAddress: address(token), - seller: address(0), - currencyAddress: address(0), - tokenId: _tokenId, - price: _price, - quantity: 1, - proof: new bytes32[](0) - }); - } - - function _listingCheckoutItem(uint256 _tokenId, address _currencyAddress, uint256 _price) - private - view - returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) - { - return IRareERC1155MarketplaceTypes.CheckoutItem({ - itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.LISTING_BUY), - contractAddress: address(token), - seller: seller, - currencyAddress: _currencyAddress, - tokenId: _tokenId, - price: _price, - quantity: 1, - proof: new bytes32[](0) - }); - } - - function _directSaleRequests(uint256[] memory _tokenIds, uint256 _price) - private - pure - returns (IRareERC1155MarketplaceTypes.DirectSaleRequest[] memory requests) - { - requests = new IRareERC1155MarketplaceTypes.DirectSaleRequest[](_tokenIds.length); - for (uint256 i = 0; i < _tokenIds.length; i++) { - requests[i] = IRareERC1155MarketplaceTypes.DirectSaleRequest(_tokenIds[i], _price, 0, 0); - } - } - - function _salePriceRequests(uint256[] memory _tokenIds, uint256 _price) - private - pure - returns (IRareERC1155MarketplaceTypes.SalePriceRequest[] memory requests) - { - requests = new IRareERC1155MarketplaceTypes.SalePriceRequest[](_tokenIds.length); - for (uint256 i = 0; i < _tokenIds.length; i++) { - requests[i] = IRareERC1155MarketplaceTypes.SalePriceRequest(_tokenIds[i], _price, 1, 0); - } - } - - function _mintRequests(uint256[] memory _tokenIds, uint256 _price) - private - pure - returns (IRareERC1155MarketplaceTypes.MintRequest[] memory requests) - { - requests = new IRareERC1155MarketplaceTypes.MintRequest[](_tokenIds.length); - for (uint256 i = 0; i < _tokenIds.length; i++) { - requests[i] = IRareERC1155MarketplaceTypes.MintRequest(_tokenIds[i], _price, 1, new bytes32[](0)); - } - } - - function _buyRequests(uint256[] memory _tokenIds, uint256 _price) - private - pure - returns (IRareERC1155MarketplaceTypes.BuyRequest[] memory requests) - { - requests = new IRareERC1155MarketplaceTypes.BuyRequest[](_tokenIds.length); - for (uint256 i = 0; i < _tokenIds.length; i++) { - requests[i] = IRareERC1155MarketplaceTypes.BuyRequest(_tokenIds[i], _price, 1); - } - } - - function _splitRecipients(uint256 _count) private pure returns (address payable[] memory recipients) { - recipients = new address payable[](_count); - for (uint256 i = 0; i < _count; i++) { - recipients[i] = payable(address(uint160(0xB000 + i))); - } - } - - function _splitRatios(uint256 _count) private pure returns (uint8[] memory ratios) { - ratios = new uint8[](_count); - uint8 ratio = uint8(100 / _count); - for (uint256 i = 0; i < _count; i++) { - ratios[i] = ratio; - } - ratios[_count - 1] += uint8(100 - (ratio * _count)); - } - - function _amounts(uint256 _count, uint256 _amount) private pure returns (uint256[] memory amounts) { - amounts = new uint256[](_count); - for (uint256 i = 0; i < _count; i++) { - amounts[i] = _amount; - } - } - - function _withFee(uint256 _amount) private pure returns (uint256) { - return _amount + ((_amount * 3) / 100); - } + uint256 private constant PRICE = 1 ether; + uint256 private constant MAX_BATCH_BENCH_ITEMS = 75; + uint256 private constant MAX_CHECKOUT_BENCH_ITEMS = 50; + uint256 private constant MAX_SPLIT_RECIPIENTS = 5; + uint256 private constant MAX_ROYALTY_RECIPIENTS = 5; + uint256 private constant BLOCK_GAS_CEILING = 30_000_000; + + RareERC1155Marketplace private marketplace; + RareERC1155 private token; + CheckoutGasCurrency private currency; + RareERC1155ContractFactory private tokenFactory; + ERC20ApprovalManager private erc20ApprovalManager; + ERC721ApprovalManager private erc721ApprovalManager; + ERC1155ApprovalManager private erc1155ApprovalManager; + + address private deployer = address(0x1000); + address private seller = address(0x2000); + address private buyer = address(0x3000); + address private networkBeneficiary = address(0x4000); + address private rewardAccumulator = address(0x5000); + + function testGas_checkoutPrimaryEthMaxSplits_sweep() public { + uint256[] memory counts = _checkoutBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(0); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _preparePrimaryCheckoutItems(count); + _measureCheckout("checkout_primary_eth_max_splits", count, items, _withFee(PRICE) * count, count, 0); + } + } + + function testGas_checkoutSecondaryEthMaxSplitsAndRoyalties_sweep() public { + uint256[] memory counts = _checkoutBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(MAX_ROYALTY_RECIPIENTS); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _prepareSecondaryCheckoutItems( + count, + address(0), + PRICE + ); + _measureCheckout( + "checkout_secondary_eth_max_splits_max_royalties", + count, + items, + _withFee(PRICE) * count, + count, + 0 + ); + } + } + + function testGas_checkoutSecondaryErc20MaxSplitsAndRoyalties_sweep() public { + uint256[] memory counts = _checkoutBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(MAX_ROYALTY_RECIPIENTS); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _prepareSecondaryCheckoutItems( + count, + address(currency), + PRICE + ); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), _withFee(PRICE) * count); + + _measureCheckout("checkout_secondary_erc20_max_splits_max_royalties", count, items, 0, count, 0); + } + } + + function testGas_checkoutMixedPrimaryAndSecondaryEth_sweep() public { + uint256[] memory counts = _checkoutBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(MAX_ROYALTY_RECIPIENTS); + + uint256 primaryCount = count / 2; + uint256 secondaryCount = count - primaryCount; + IRareERC1155MarketplaceTypes.CheckoutItem[] memory primaryItems = _preparePrimaryCheckoutItems(primaryCount); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory secondaryItems = _prepareSecondaryCheckoutItems( + secondaryCount, + address(0), + PRICE + ); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _concatCheckoutItems(primaryItems, secondaryItems); + + _measureCheckout("checkout_mixed_primary_secondary_eth", count, items, _withFee(PRICE) * count, count, 0); + } + } + + function testGas_checkoutSkippedSecondaryStaleBalanceThenPrimaryEth_sweep() public { + uint256[] memory counts = _checkoutBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(MAX_ROYALTY_RECIPIENTS); + + uint256 skippedCount = count - 1; + IRareERC1155MarketplaceTypes.CheckoutItem[] memory skippedItems = _prepareStaleBalanceSecondaryCheckoutItems( + skippedCount, + address(0) + ); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory primaryItems = _preparePrimaryCheckoutItems(1); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _concatCheckoutItems(skippedItems, primaryItems); + + _measureCheckout( + "checkout_skipped_secondary_stale_balance_then_primary_eth", + count, + items, + _withFee(PRICE), + 1, + skippedCount + ); + } + } + + function testGas_checkoutAllSkippedFiftyItemCartUnderBlockGas() public { + _deployFixture(0); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _prepareStaleBalanceSecondaryCheckoutItems( + MAX_CHECKOUT_BENCH_ITEMS, + address(0) + ); + + uint256 gasUsed = _measureCheckout( + "checkout_all_skipped_secondary_stale_balance_eth", + MAX_CHECKOUT_BENCH_ITEMS, + items, + _withFee(PRICE) * MAX_CHECKOUT_BENCH_ITEMS, + 0, + MAX_CHECKOUT_BENCH_ITEMS + ); + + _assertBelowBlockGas(gasUsed); + } + + function testGas_checkoutFiftyItemFiveRoyaltyRecipientCartUnderBlockGas() public { + _deployFixture(MAX_ROYALTY_RECIPIENTS); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _prepareSecondaryCheckoutItems( + MAX_CHECKOUT_BENCH_ITEMS, + address(0), + PRICE + ); + + uint256 gasUsed = _measureCheckout( + "checkout_secondary_eth_50_items_5_royalty_recipients", + MAX_CHECKOUT_BENCH_ITEMS, + items, + _withFee(PRICE) * MAX_CHECKOUT_BENCH_ITEMS, + MAX_CHECKOUT_BENCH_ITEMS, + 0 + ); + + _assertBelowBlockGas(gasUsed); + } + + function testGas_mintDirectSaleBatchEthMaxSplits_sweep() public { + uint256[] memory counts = _batchBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(0); + uint256[] memory tokenIds = _preparePrimarySales(count); + IRareERC1155MarketplaceTypes.MintRequest[] memory requests = _mintRequests(tokenIds, PRICE); + + vm.prank(buyer); + uint256 gasBefore = gasleft(); + marketplace.mintDirectSaleBatch{value: _withFee(PRICE) * count}(address(token), address(0), requests); + _recordGas("mint_direct_sale_batch_eth_max_splits", count, gasBefore - gasleft()); + } + } + + function testGas_buyBatchEthMaxSplitsAndRoyalties_sweep() public { + uint256[] memory counts = _batchBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(MAX_ROYALTY_RECIPIENTS); + uint256[] memory tokenIds = _prepareSecondaryListings(count, address(0)); + IRareERC1155MarketplaceTypes.BuyRequest[] memory requests = _buyRequests(tokenIds, PRICE); + + vm.prank(buyer); + uint256 gasBefore = gasleft(); + marketplace.buyBatch{value: _withFee(PRICE) * count}(address(token), seller, address(0), requests); + _recordGas("buy_batch_eth_max_splits_max_royalties", count, gasBefore - gasleft()); + } + } + + function _deployFixture(uint256 _royaltyRecipientCount) private { + deal(deployer, 1_000_000 ether); + deal(seller, 1_000_000 ether); + deal(buyer, 1_000_000 ether); + + vm.startPrank(deployer); + currency = new CheckoutGasCurrency(buyer); + erc20ApprovalManager = new ERC20ApprovalManager(); + erc721ApprovalManager = new ERC721ApprovalManager(); + erc1155ApprovalManager = new ERC1155ApprovalManager(); + RareERC1155TradeExecutionModule tradeExecutionModule = new RareERC1155TradeExecutionModule(); + RareERC1155CheckoutExecutionModule checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); + + address marketplaceSettings = address(new CheckoutGasMarketplaceSettings()); + address stakingSettings = address(new CheckoutGasStakingSettings()); + address stakingRegistry = address(new CheckoutGasStakingRegistry(rewardAccumulator)); + address royaltyEngine = address(new CheckoutGasRoyaltyEngine(_royaltyRecipientCount)); + address spaceOperatorRegistry = address(new CheckoutGasSpaceOperatorRegistry()); + address approvedTokenRegistry = address(new CheckoutGasApprovedTokenRegistry()); + + marketplace = RareERC1155Marketplace( + address( + new ERC1967Proxy( + address(new RareERC1155Marketplace()), + abi.encodeWithSelector( + RareERC1155Marketplace.initialize.selector, + networkBeneficiary, + marketplaceSettings, + spaceOperatorRegistry, + royaltyEngine, + address(new Payments()), + approvedTokenRegistry, + stakingSettings, + stakingRegistry, + address(erc20ApprovalManager), + address(erc721ApprovalManager), + address(erc1155ApprovalManager), + address(tradeExecutionModule), + address(checkoutExecutionModule) + ) + ) + ) + ); + erc20ApprovalManager.grantOperatorRole(address(marketplace)); + erc1155ApprovalManager.grantOperatorRole(address(marketplace)); + + tokenFactory = new RareERC1155ContractFactory(); + tokenFactory.setDefaultMinter(address(marketplace)); + vm.stopPrank(); + + vm.prank(seller); + token = RareERC1155(tokenFactory.createRareERC1155Contract("Gas Editions", "GAS", "ipfs://gas/{id}.json")); + } + + function _preparePrimaryCheckoutItems( + uint256 _count + ) private returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) { + uint256[] memory tokenIds = _preparePrimarySales(_count); + items = new IRareERC1155MarketplaceTypes.CheckoutItem[](_count); + for (uint256 i = 0; i < _count; i++) { + items[i] = _directSaleCheckoutItem(tokenIds[i], PRICE); + } + } + + function _prepareSecondaryCheckoutItems( + uint256 _count, + address _currencyAddress, + uint256 _itemPrice + ) private returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) { + uint256[] memory tokenIds = _prepareSecondaryListings(_count, _currencyAddress); + items = new IRareERC1155MarketplaceTypes.CheckoutItem[](_count); + for (uint256 i = 0; i < _count; i++) { + items[i] = _listingCheckoutItem(tokenIds[i], _currencyAddress, _itemPrice); + } + } + + function _prepareStaleBalanceSecondaryCheckoutItems( + uint256 _count, + address _currencyAddress + ) private returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) { + uint256[] memory tokenIds = _prepareSecondaryListings(_count, _currencyAddress); + if (_count != 0) { + vm.prank(seller); + token.safeBatchTransferFrom(seller, address(0x6000), tokenIds, _amounts(_count, 1), ""); + } + + items = new IRareERC1155MarketplaceTypes.CheckoutItem[](_count); + for (uint256 i = 0; i < _count; i++) { + items[i] = _listingCheckoutItem(tokenIds[i], _currencyAddress, PRICE); + } + } + + function _preparePrimarySales(uint256 _count) private returns (uint256[] memory tokenIds) { + tokenIds = _createTokenIds(_count, 10); + if (_count == 0) return tokenIds; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _directSaleRequests(tokenIds, PRICE), + _splitRecipients(MAX_SPLIT_RECIPIENTS), + _splitRatios(MAX_SPLIT_RECIPIENTS) + ); + } + + function _prepareSecondaryListings( + uint256 _count, + address _currencyAddress + ) private returns (uint256[] memory tokenIds) { + tokenIds = _createTokenIds(_count, 10); + if (_count == 0) return tokenIds; + + uint256[] memory amounts = _amounts(_count, 1); + vm.startPrank(seller); + token.mintBatchTo(seller, tokenIds, amounts); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + marketplace.setSalePrices( + address(token), + _currencyAddress, + _salePriceRequests(tokenIds, PRICE), + _splitRecipients(MAX_SPLIT_RECIPIENTS), + _splitRatios(MAX_SPLIT_RECIPIENTS) + ); + vm.stopPrank(); + } + + function _createTokenIds(uint256 _count, uint256 _maxSupply) private returns (uint256[] memory tokenIds) { + tokenIds = new uint256[](_count); + vm.startPrank(seller); + for (uint256 i = 0; i < _count; i++) { + tokenIds[i] = token.createToken("ipfs://gas-token.json", _maxSupply, seller); + } + vm.stopPrank(); + } + + function _measureCheckout( + string memory _scenario, + uint256 _count, + IRareERC1155MarketplaceTypes.CheckoutItem[] memory _items, + uint256 _value, + uint256 _expectedFilled, + uint256 _expectedSkipped + ) private returns (uint256 gasUsed) { + vm.prank(buyer); + uint256 gasBefore = gasleft(); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _value}(_items); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + gasUsed = gasBefore - gasleft(); + + assertEq(summary.filledCount, _expectedFilled); + assertEq(summary.skippedCount, _expectedSkipped); + _recordGas(_scenario, _count, gasUsed); + } + + function _assertBelowBlockGas(uint256 _gasUsed) private { + assertLt(_gasUsed, BLOCK_GAS_CEILING); + } + + function _recordGas(string memory _scenario, uint256 _count, uint256 _gasUsed) private { + emit log_string(_scenario); + emit log_named_uint("items", _count); + emit log_named_uint("gas", _gasUsed); + emit log_named_uint("gas_per_item", _gasUsed / _count); + } + + function _checkoutBenchmarkCounts() private pure returns (uint256[] memory counts) { + counts = new uint256[](5); + counts[0] = 1; + counts[1] = 5; + counts[2] = 10; + counts[3] = 20; + counts[4] = MAX_CHECKOUT_BENCH_ITEMS; + } + + function _batchBenchmarkCounts() private pure returns (uint256[] memory counts) { + counts = new uint256[](6); + counts[0] = 1; + counts[1] = 5; + counts[2] = 10; + counts[3] = 20; + counts[4] = 50; + counts[5] = MAX_BATCH_BENCH_ITEMS; + } + + function _concatCheckoutItems( + IRareERC1155MarketplaceTypes.CheckoutItem[] memory _first, + IRareERC1155MarketplaceTypes.CheckoutItem[] memory _second + ) private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) { + items = new IRareERC1155MarketplaceTypes.CheckoutItem[](_first.length + _second.length); + for (uint256 i = 0; i < _first.length; i++) { + items[i] = _first[i]; + } + for (uint256 i = 0; i < _second.length; i++) { + items[_first.length + i] = _second[i]; + } + } + + function _directSaleCheckoutItem( + uint256 _tokenId, + uint256 _price + ) private view returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.DIRECT_SALE_MINT), + contractAddress: address(token), + seller: address(0), + currencyAddress: address(0), + tokenId: _tokenId, + price: _price, + quantity: 1, + proof: new bytes32[](0) + }); + } + + function _listingCheckoutItem( + uint256 _tokenId, + address _currencyAddress, + uint256 _price + ) private view returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.LISTING_BUY), + contractAddress: address(token), + seller: seller, + currencyAddress: _currencyAddress, + tokenId: _tokenId, + price: _price, + quantity: 1, + proof: new bytes32[](0) + }); + } + + function _directSaleRequests( + uint256[] memory _tokenIds, + uint256 _price + ) private pure returns (IRareERC1155MarketplaceTypes.DirectSaleRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.DirectSaleRequest[](_tokenIds.length); + for (uint256 i = 0; i < _tokenIds.length; i++) { + requests[i] = IRareERC1155MarketplaceTypes.DirectSaleRequest(_tokenIds[i], _price, 0, 0); + } + } + + function _salePriceRequests( + uint256[] memory _tokenIds, + uint256 _price + ) private pure returns (IRareERC1155MarketplaceTypes.SalePriceRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.SalePriceRequest[](_tokenIds.length); + for (uint256 i = 0; i < _tokenIds.length; i++) { + requests[i] = IRareERC1155MarketplaceTypes.SalePriceRequest(_tokenIds[i], _price, 1, 0); + } + } + + function _mintRequests( + uint256[] memory _tokenIds, + uint256 _price + ) private pure returns (IRareERC1155MarketplaceTypes.MintRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.MintRequest[](_tokenIds.length); + for (uint256 i = 0; i < _tokenIds.length; i++) { + requests[i] = IRareERC1155MarketplaceTypes.MintRequest(_tokenIds[i], _price, 1, new bytes32[](0)); + } + } + + function _buyRequests( + uint256[] memory _tokenIds, + uint256 _price + ) private pure returns (IRareERC1155MarketplaceTypes.BuyRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.BuyRequest[](_tokenIds.length); + for (uint256 i = 0; i < _tokenIds.length; i++) { + requests[i] = IRareERC1155MarketplaceTypes.BuyRequest(_tokenIds[i], _price, 1); + } + } + + function _splitRecipients(uint256 _count) private pure returns (address payable[] memory recipients) { + recipients = new address payable[](_count); + for (uint256 i = 0; i < _count; i++) { + recipients[i] = payable(address(uint160(0xB000 + i))); + } + } + + function _splitRatios(uint256 _count) private pure returns (uint8[] memory ratios) { + ratios = new uint8[](_count); + uint8 ratio = uint8(100 / _count); + for (uint256 i = 0; i < _count; i++) { + ratios[i] = ratio; + } + ratios[_count - 1] += uint8(100 - (ratio * _count)); + } + + function _amounts(uint256 _count, uint256 _amount) private pure returns (uint256[] memory amounts) { + amounts = new uint256[](_count); + for (uint256 i = 0; i < _count; i++) { + amounts[i] = _amount; + } + } + + function _withFee(uint256 _amount) private pure returns (uint256) { + return _amount + ((_amount * 3) / 100); + } } diff --git a/src/test/marketplace/RareERC1155MarketplaceInvariants.t.sol b/src/test/marketplace/RareERC1155MarketplaceInvariants.t.sol new file mode 100644 index 0000000..c090964 --- /dev/null +++ b/src/test/marketplace/RareERC1155MarketplaceInvariants.t.sol @@ -0,0 +1,1019 @@ +// SPDX-License-Identifier: AGPL-3.0-only +pragma solidity ^0.8.0; + +import "forge-std/StdInvariant.sol"; +import "forge-std/Test.sol"; + +import {ERC20} from "openzeppelin-contracts/token/ERC20/ERC20.sol"; +import {IERC1155Receiver} from "openzeppelin-contracts/token/ERC1155/IERC1155Receiver.sol"; +import {IERC165} from "openzeppelin-contracts/utils/introspection/IERC165.sol"; +import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; + +import {IApprovedTokenRegistry} from "../../registry/interfaces/IApprovedTokenRegistry.sol"; +import {IMarketplaceSettings} from "../../marketplace/IMarketplaceSettings.sol"; +import {IStakingSettings} from "../../marketplace/IStakingSettings.sol"; +import {IRareStakingRegistry} from "../../staking/registry/IRareStakingRegistry.sol"; +import {ISpaceOperatorRegistry} from "../../registry/interfaces/ISpaceOperatorRegistry.sol"; +import {Payments} from "../../payments/Payments.sol"; +import {RareERC1155} from "../../token/ERC1155/RareERC1155.sol"; +import {RareERC1155ContractFactory} from "../../token/ERC1155/RareERC1155ContractFactory.sol"; +import {ERC20ApprovalManager} from "../../v2/approver/ERC20/ERC20ApprovalManager.sol"; +import {ERC721ApprovalManager} from "../../v2/approver/ERC721/ERC721ApprovalManager.sol"; +import {ERC1155ApprovalManager} from "../../v2/approver/ERC1155/ERC1155ApprovalManager.sol"; +import {IRareERC1155MarketplaceTypes} from "../../marketplace/IRareERC1155MarketplaceTypes.sol"; +import {RareERC1155CheckoutExecutionModule} from "../../marketplace/RareERC1155CheckoutExecutionModule.sol"; +import {RareERC1155Marketplace} from "../../marketplace/RareERC1155Marketplace.sol"; +import {RareERC1155TradeExecutionModule} from "../../marketplace/RareERC1155TradeExecutionModule.sol"; +import {IRoyaltyEngineV1} from "royalty-registry/IRoyaltyEngineV1.sol"; + +contract MarketplaceInvariantCurrency is ERC20 { + constructor() ERC20("Invariant Currency", "ICUR") {} + + function mint(address _to, uint256 _amount) external { + _mint(_to, _amount); + } +} + +contract RejectingERC1155Receiver is IERC1155Receiver { + receive() external payable { + revert("reject eth"); + } + + function onERC1155Received(address, address, uint256, uint256, bytes calldata) external pure returns (bytes4) { + revert("reject erc1155"); + } + + function onERC1155BatchReceived( + address, + address, + uint256[] calldata, + uint256[] calldata, + bytes calldata + ) external pure returns (bytes4) { + revert("reject erc1155 batch"); + } + + function supportsInterface(bytes4 _interfaceId) external pure returns (bool) { + return _interfaceId == type(IERC165).interfaceId || _interfaceId == type(IERC1155Receiver).interfaceId; + } +} + +contract RejectingPayoutRecipient { + receive() external payable { + revert("reject eth"); + } +} + +contract RareERC1155MarketplaceHandler is Test { + struct OfferKey { + uint256 tokenId; + address buyer; + address currencyAddress; + } + + struct ListingKey { + uint256 tokenId; + address seller; + } + + RareERC1155Marketplace public marketplace; + RareERC1155 public token; + MarketplaceInvariantCurrency public currency; + + address private collectionOwner; + address private rejectingPayoutRecipient; + address private marketplaceSettings; + address private stakingSettings; + address private stakingRegistry; + address private royaltyEngine; + address private spaceOperatorRegistry; + + address[3] private buyers; + address[2] private sellers; + uint256[3] private tokenIds; + + OfferKey[] private offerKeys; + ListingKey[] private listingKeys; + mapping(bytes32 => uint256) private offerKeyIndexPlusOne; + mapping(bytes32 => uint256) private listingKeyIndexPlusOne; + + uint256 public ghostEthEscrowOwed; + mapping(address => uint256) public ghostErc20EscrowOwed; + uint256 public ghostTokensReceivedByBuyers; + uint256 public ghostTokensRemovedFromSellers; + uint256 public ghostTokensMinted; + + uint256 public initialBuyerTokenBalanceSum; + uint256 public initialSellerTokenBalanceSum; + uint256 public initialTokenSupplySum; + + constructor( + RareERC1155Marketplace _marketplace, + RareERC1155 _token, + MarketplaceInvariantCurrency _currencyToken, + address _collectionOwner, + address _rejectingPayoutRecipient, + address _marketplaceSettings, + address _stakingSettings, + address _stakingRegistry, + address _royaltyEngine, + address _spaceOperatorRegistry, + address[3] memory _buyers, + address[2] memory _sellers, + uint256[3] memory _tokenIds + ) { + marketplace = _marketplace; + token = _token; + currency = _currencyToken; + collectionOwner = _collectionOwner; + rejectingPayoutRecipient = _rejectingPayoutRecipient; + marketplaceSettings = _marketplaceSettings; + stakingSettings = _stakingSettings; + stakingRegistry = _stakingRegistry; + royaltyEngine = _royaltyEngine; + spaceOperatorRegistry = _spaceOperatorRegistry; + buyers = _buyers; + sellers = _sellers; + tokenIds = _tokenIds; + + initialBuyerTokenBalanceSum = buyerTokenBalanceSum(); + initialSellerTokenBalanceSum = sellerTokenBalanceSum(); + initialTokenSupplySum = tokenSupplySum(); + } + + function makeOffer( + uint256 _buyerSeed, + uint256 _currencySeed, + uint256 _tokenSeed, + uint256 _priceSeed, + uint256 _qtySeed + ) external { + address buyer = _buyerForSeed(_buyerSeed); + address currencyAddress = _currencyForSeed(_currencySeed); + uint256 tokenId = _tokenIdForSeed(_tokenSeed); + uint256 price = _priceForSeed(_priceSeed); + uint256 quantity = _quantityForSeed(_qtySeed); + uint256 grossAmount = price * quantity; + + _mockOfferFees(grossAmount); + + vm.prank(buyer); + if (currencyAddress == address(0)) { + try + marketplace.makeOffer{value: _withFee(grossAmount)}( + address(token), + tokenId, + currencyAddress, + price, + quantity, + 0 + ) + { + _trackOffer(tokenId, buyer, currencyAddress); + _syncEscrowGhosts(); + } catch {} + } else { + try marketplace.makeOffer(address(token), tokenId, currencyAddress, price, quantity, 0) { + _trackOffer(tokenId, buyer, currencyAddress); + _syncEscrowGhosts(); + } catch {} + } + } + + function acceptOffer(uint256 _sellerSeed, uint256 _offerSeed, uint256 _qtySeed, uint256 _splitSeed) external { + (bool found, uint256 keyIndex) = _activeOfferIndex(_offerSeed); + if (!found) return; + + OfferKey memory key = offerKeys[keyIndex]; + IRareERC1155MarketplaceTypes.Offer memory offer = marketplace.getOffer( + address(token), + key.tokenId, + key.buyer, + key.currencyAddress + ); + address seller = _sellerForSeed(_sellerSeed); + uint256 sellerBalance = token.balanceOf(seller, key.tokenId); + if (sellerBalance == 0) return; + + uint256 quantity = _bounded(_qtySeed, 1, _min(offer.quantity, sellerBalance)); + uint256 grossAmount = offer.price * quantity; + _mockSecondaryPayout(key.tokenId, grossAmount, seller); + + uint256 buyerBalanceBefore = token.balanceOf(key.buyer, key.tokenId); + uint256 sellerBalanceBefore = token.balanceOf(seller, key.tokenId); + + vm.prank(seller); + try + marketplace.acceptOffer( + address(token), + key.tokenId, + key.buyer, + key.currencyAddress, + offer.price, + quantity, + _splitRecipients(seller, _splitSeed), + _splitRatios() + ) + { + _recordSecondaryTransfer(key.buyer, seller, key.tokenId, buyerBalanceBefore, sellerBalanceBefore); + _syncEscrowGhosts(); + } catch {} + } + + function cancelOffer(uint256 _offerSeed) external { + if (offerKeys.length == 0) return; + + OfferKey memory key = offerKeys[_offerSeed % offerKeys.length]; + vm.prank(key.buyer); + try marketplace.cancelOffer(address(token), key.tokenId, key.currencyAddress) { + _syncEscrowGhosts(); + } catch {} + } + + function setListing( + uint256 _sellerSeed, + uint256 _currencySeed, + uint256 _tokenSeed, + uint256 _priceSeed, + uint256 _qtySeed, + uint256 _splitSeed + ) external { + address seller = _sellerForSeed(_sellerSeed); + uint256 tokenId = _tokenIdForSeed(_tokenSeed); + uint256 balance = token.balanceOf(seller, tokenId); + if (balance == 0) return; + + uint256 quantity = _bounded(_qtySeed, 1, _min(balance, 5)); + uint256 price = _priceForSeed(_priceSeed); + address currencyAddress = _currencyForSeed(_currencySeed); + + vm.prank(seller); + try + marketplace.setSalePrices( + address(token), + currencyAddress, + _singleSalePriceRequest(tokenId, price, quantity), + _splitRecipients(seller, _splitSeed), + _splitRatios() + ) + { + _trackListing(tokenId, seller); + } catch {} + } + + function cancelListing(uint256 _listingSeed) external { + if (listingKeys.length == 0) return; + + ListingKey memory key = listingKeys[_listingSeed % listingKeys.length]; + vm.prank(key.seller); + try marketplace.cancelSalePrices(address(token), _singleTokenIds(key.tokenId)) {} catch {} + } + + function buyBatch(uint256 _buyerSeed, uint256 _listingSeed, uint256 _qtySeed) external { + (bool found, uint256 keyIndex) = _activeListingIndex(_listingSeed); + if (!found) return; + + ListingKey memory key = listingKeys[keyIndex]; + IRareERC1155MarketplaceTypes.SalePrice memory salePrice = marketplace.getSalePrice( + address(token), + key.tokenId, + key.seller + ); + address buyer = _buyerForSeed(_buyerSeed); + uint256 sellerBalance = token.balanceOf(key.seller, key.tokenId); + if (sellerBalance == 0) return; + + uint256 quantity = _bounded(_qtySeed, 1, _min(salePrice.quantity, sellerBalance)); + uint256 grossAmount = salePrice.price * quantity; + _mockSecondaryPayout(key.tokenId, grossAmount, key.seller); + + uint256 buyerBalanceBefore = token.balanceOf(buyer, key.tokenId); + uint256 sellerBalanceBefore = token.balanceOf(key.seller, key.tokenId); + + vm.prank(buyer); + if (salePrice.currencyAddress == address(0)) { + try + marketplace.buyBatch{value: _withFee(grossAmount)}( + address(token), + key.seller, + salePrice.currencyAddress, + _singleBuyRequest(key.tokenId, salePrice.price, quantity) + ) + { + _recordSecondaryTransfer(buyer, key.seller, key.tokenId, buyerBalanceBefore, sellerBalanceBefore); + } catch {} + } else { + try + marketplace.buyBatch( + address(token), + key.seller, + salePrice.currencyAddress, + _singleBuyRequest(key.tokenId, salePrice.price, quantity) + ) + { + _recordSecondaryTransfer(buyer, key.seller, key.tokenId, buyerBalanceBefore, sellerBalanceBefore); + } catch {} + } + } + + function prepareDirectSale( + uint256 _currencySeed, + uint256 _tokenSeed, + uint256 _priceSeed, + uint256 _maxMintSeed, + uint256 _splitSeed + ) external { + _prepareDirectSaleConfig( + _tokenIdForSeed(_tokenSeed), + _currencyForSeed(_currencySeed), + _priceForSeed(_priceSeed), + _bounded(_maxMintSeed, 1, 4), + _splitSeed + ); + } + + function cancelDirectSale(uint256 _tokenSeed) external { + vm.prank(collectionOwner); + try marketplace.cancelMintDirectSales(address(token), _singleTokenIds(_tokenIdForSeed(_tokenSeed))) {} catch {} + } + + function checkoutMixedCart( + uint256 _buyerSeed, + uint256 _sellerSeed, + uint256 _tokenSeed, + uint256 _priceSeed, + uint256 _qtySeed, + uint256 _splitSeed + ) external { + address buyer = _buyerForSeed(_buyerSeed); + uint256 listingTokenId = _tokenIdForSeed(_tokenSeed); + (bool listed, address seller, uint256 sellerBalance) = _sellerWithBalance(_sellerSeed, listingTokenId); + if (!listed) return; + + address listingCurrency = _currencyForSeed(_priceSeed); + address directCurrency = listingCurrency == address(0) ? address(currency) : address(0); + uint256 listingQuantity = _bounded(_qtySeed, 1, _min(sellerBalance, 2)); + uint256 listingPrice = _priceForSeed(_priceSeed); + + vm.prank(seller); + try + marketplace.setSalePrices( + address(token), + listingCurrency, + _singleSalePriceRequest(listingTokenId, listingPrice, listingQuantity), + _splitRecipients(seller, _splitSeed), + _splitRatios() + ) + { + _trackListing(listingTokenId, seller); + } catch { + return; + } + + uint256 directTokenId = _tokenIdForSeed(_tokenSeed + 1); + uint256 directPrice = _priceForSeed(_priceSeed + 1); + uint256 directQuantity = _bounded(_qtySeed + 1, 1, 2); + _prepareDirectSaleConfig(directTokenId, directCurrency, directPrice, directQuantity, _splitSeed + 1); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](3); + items[0] = _listingCheckoutItem(listingTokenId, seller, listingCurrency, listingPrice, listingQuantity); + items[1] = _directSaleCheckoutItem(directTokenId, directCurrency, directPrice, directQuantity); + items[2] = _unsupportedCheckoutItem(); + + uint256 ethValue = 0; + if (listingCurrency == address(0)) ethValue += _withFee(listingPrice * listingQuantity); + if (directCurrency == address(0)) ethValue += _withFee(directPrice * directQuantity); + ethValue += 1 wei; + + vm.prank(buyer); + try marketplace.checkout{value: ethValue}(items) returns ( + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution + ) { + _recordCheckoutFills(execution, buyer); + _syncEscrowGhosts(); + } catch {} + } + + function trackedOfferCount() external view returns (uint256) { + return offerKeys.length; + } + + function trackedOfferKey( + uint256 _index + ) external view returns (uint256 tokenId, address buyer, address currencyAddress) { + OfferKey memory key = offerKeys[_index]; + return (key.tokenId, key.buyer, key.currencyAddress); + } + + function trackedListingCount() external view returns (uint256) { + return listingKeys.length; + } + + function trackedListingKey(uint256 _index) external view returns (uint256 tokenId, address seller) { + ListingKey memory key = listingKeys[_index]; + return (key.tokenId, key.seller); + } + + function buyerTokenBalanceSum() public view returns (uint256 sum) { + for (uint256 i = 0; i < buyers.length; i++) { + for (uint256 j = 0; j < tokenIds.length; j++) { + sum += token.balanceOf(buyers[i], tokenIds[j]); + } + } + } + + function sellerTokenBalanceSum() public view returns (uint256 sum) { + for (uint256 i = 0; i < sellers.length; i++) { + for (uint256 j = 0; j < tokenIds.length; j++) { + sum += token.balanceOf(sellers[i], tokenIds[j]); + } + } + } + + function tokenSupplySum() public view returns (uint256 sum) { + for (uint256 i = 0; i < tokenIds.length; i++) { + sum += token.totalSupply(tokenIds[i]); + } + } + + function _recordCheckoutFills( + IRareERC1155MarketplaceTypes.CheckoutExecution memory _execution, + address _buyer + ) private { + for (uint256 i = 0; i < _execution.items.length; i++) { + IRareERC1155MarketplaceTypes.CheckoutItemResult memory result = _execution.items[i]; + if (!result.filled) continue; + + if (result.itemKind == uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.DIRECT_SALE_MINT)) { + ghostTokensMinted += result.quantity; + ghostTokensReceivedByBuyers += result.quantity; + _buyer; + continue; + } + + if (result.itemKind == uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.LISTING_BUY)) { + ghostTokensRemovedFromSellers += result.quantity; + ghostTokensReceivedByBuyers += result.quantity; + } + } + } + + function _recordSecondaryTransfer( + address _buyer, + address _seller, + uint256 _tokenId, + uint256 _buyerBalanceBefore, + uint256 _sellerBalanceBefore + ) private { + uint256 buyerDelta = token.balanceOf(_buyer, _tokenId) - _buyerBalanceBefore; + uint256 sellerDelta = _sellerBalanceBefore - token.balanceOf(_seller, _tokenId); + ghostTokensReceivedByBuyers += buyerDelta; + ghostTokensRemovedFromSellers += sellerDelta; + } + + function _syncEscrowGhosts() private { + ghostEthEscrowOwed = 0; + ghostErc20EscrowOwed[address(currency)] = 0; + + for (uint256 i = 0; i < offerKeys.length; i++) { + OfferKey memory key = offerKeys[i]; + IRareERC1155MarketplaceTypes.Offer memory offer = marketplace.getOffer( + address(token), + key.tokenId, + key.buyer, + key.currencyAddress + ); + uint256 escrowOwed = (offer.price * offer.quantity) + offer.marketplaceFeeRemaining; + if (key.currencyAddress == address(0)) { + ghostEthEscrowOwed += escrowOwed; + } else { + ghostErc20EscrowOwed[key.currencyAddress] += escrowOwed; + } + } + } + + function _trackOffer(uint256 _tokenId, address _buyer, address _currencyAddress) private { + bytes32 keyHash = keccak256(abi.encode(_tokenId, _buyer, _currencyAddress)); + if (offerKeyIndexPlusOne[keyHash] != 0) return; + + offerKeys.push(OfferKey({tokenId: _tokenId, buyer: _buyer, currencyAddress: _currencyAddress})); + offerKeyIndexPlusOne[keyHash] = offerKeys.length; + } + + function _trackListing(uint256 _tokenId, address _seller) private { + bytes32 keyHash = keccak256(abi.encode(_tokenId, _seller)); + if (listingKeyIndexPlusOne[keyHash] != 0) return; + + listingKeys.push(ListingKey({tokenId: _tokenId, seller: _seller})); + listingKeyIndexPlusOne[keyHash] = listingKeys.length; + } + + function _activeOfferIndex(uint256 _seed) private view returns (bool found, uint256 keyIndex) { + uint256 activeCount = 0; + for (uint256 i = 0; i < offerKeys.length; i++) { + OfferKey memory key = offerKeys[i]; + if (marketplace.getOffer(address(token), key.tokenId, key.buyer, key.currencyAddress).quantity != 0) { + activeCount++; + } + } + if (activeCount == 0) return (false, 0); + + uint256 target = _seed % activeCount; + uint256 current = 0; + for (uint256 i = 0; i < offerKeys.length; i++) { + OfferKey memory key = offerKeys[i]; + if (marketplace.getOffer(address(token), key.tokenId, key.buyer, key.currencyAddress).quantity == 0) { + continue; + } + if (current == target) return (true, i); + current++; + } + } + + function _activeListingIndex(uint256 _seed) private view returns (bool found, uint256 keyIndex) { + uint256 activeCount = 0; + for (uint256 i = 0; i < listingKeys.length; i++) { + ListingKey memory key = listingKeys[i]; + if (marketplace.getSalePrice(address(token), key.tokenId, key.seller).quantity != 0) activeCount++; + } + if (activeCount == 0) return (false, 0); + + uint256 target = _seed % activeCount; + uint256 current = 0; + for (uint256 i = 0; i < listingKeys.length; i++) { + ListingKey memory key = listingKeys[i]; + if (marketplace.getSalePrice(address(token), key.tokenId, key.seller).quantity == 0) continue; + if (current == target) return (true, i); + current++; + } + } + + function _sellerWithBalance( + uint256 _sellerSeed, + uint256 _tokenId + ) private view returns (bool found, address seller, uint256 balance) { + for (uint256 i = 0; i < sellers.length; i++) { + seller = sellers[(_sellerSeed + i) % sellers.length]; + balance = token.balanceOf(seller, _tokenId); + if (balance != 0) return (true, seller, balance); + } + } + + function _prepareDirectSaleConfig( + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _maxMints, + uint256 _splitSeed + ) private { + vm.prank(collectionOwner); + try + marketplace.prepareMintDirectSales( + address(token), + _currencyAddress, + _singleDirectSaleRequest(_tokenId, _price, 0, _maxMints), + _splitRecipients(collectionOwner, _splitSeed), + _splitRatios() + ) + {} catch {} + } + + function _mockOfferFees(uint256 _amount) private { + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, _amount), + abi.encode(_fee(_amount)) + ); + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, _amount), + abi.encode(_stakingFee(_amount)) + ); + } + + function _mockSecondaryPayout(uint256 _tokenId, uint256 _amount, address _seller) private { + _mockOfferFees(_amount); + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, _seller), + abi.encode(address(0)) + ); + + address payable[] memory receivers = new address payable[](0); + uint256[] memory royalties = new uint256[](0); + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), _tokenId, _amount), + abi.encode(receivers, royalties) + ); + } + + function _mockPrimaryPayout(uint256 _amount, address _seller) private { + _mockOfferFees(_amount); + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, _seller), + abi.encode(false) + ); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, address(token)), + abi.encode(uint256(10)) + ); + } + + function _directSaleCheckoutItem( + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _quantity + ) private returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + _mockPrimaryPayout(_price * _quantity, collectionOwner); + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.DIRECT_SALE_MINT), + contractAddress: address(token), + seller: collectionOwner, + currencyAddress: _currencyAddress, + tokenId: _tokenId, + price: _price, + quantity: _quantity, + proof: new bytes32[](0) + }); + } + + function _listingCheckoutItem( + uint256 _tokenId, + address _seller, + address _currencyAddress, + uint256 _price, + uint256 _quantity + ) private returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + _mockSecondaryPayout(_tokenId, _price * _quantity, _seller); + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.LISTING_BUY), + contractAddress: address(token), + seller: _seller, + currencyAddress: _currencyAddress, + tokenId: _tokenId, + price: _price, + quantity: _quantity, + proof: new bytes32[](0) + }); + } + + function _unsupportedCheckoutItem() private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: type(uint8).max, + contractAddress: address(0), + seller: address(0), + currencyAddress: address(0), + tokenId: 0, + price: 0, + quantity: 0, + proof: new bytes32[](0) + }); + } + + function _singleSalePriceRequest( + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.SalePriceRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.SalePriceRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.SalePriceRequest(_tokenId, _price, _quantity, 0); + } + + function _singleDirectSaleRequest( + uint256 _tokenId, + uint256 _price, + uint256 _startTime, + uint256 _maxMints + ) private pure returns (IRareERC1155MarketplaceTypes.DirectSaleRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.DirectSaleRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.DirectSaleRequest(_tokenId, _price, _startTime, _maxMints); + } + + function _singleBuyRequest( + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.BuyRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.BuyRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.BuyRequest(_tokenId, _price, _quantity); + } + + function _singleTokenIds(uint256 _tokenId) private pure returns (uint256[] memory tokenIdList) { + tokenIdList = new uint256[](1); + tokenIdList[0] = _tokenId; + } + + function _splitRecipients( + address _seller, + uint256 _splitSeed + ) private view returns (address payable[] memory recipients) { + recipients = new address payable[](1); + recipients[0] = payable(_splitSeed % 4 == 0 ? rejectingPayoutRecipient : _seller); + } + + function _splitRatios() private pure returns (uint8[] memory ratios) { + ratios = new uint8[](1); + ratios[0] = 100; + } + + function _buyerForSeed(uint256 _seed) private view returns (address) { + return buyers[_seed % buyers.length]; + } + + function _sellerForSeed(uint256 _seed) private view returns (address) { + return sellers[_seed % sellers.length]; + } + + function _tokenIdForSeed(uint256 _seed) private view returns (uint256) { + return tokenIds[_seed % tokenIds.length]; + } + + function _currencyForSeed(uint256 _seed) private view returns (address) { + return _seed % 2 == 0 ? address(0) : address(currency); + } + + function _priceForSeed(uint256 _seed) private pure returns (uint256) { + return 0.001 ether + ((_seed % 50) * 0.001 ether); + } + + function _quantityForSeed(uint256 _seed) private pure returns (uint256) { + return _bounded(_seed, 1, 3); + } + + function _withFee(uint256 _amount) private pure returns (uint256) { + return _amount + _fee(_amount); + } + + function _fee(uint256 _amount) private pure returns (uint256) { + return (_amount * 3) / 100; + } + + function _stakingFee(uint256 _amount) private pure returns (uint256) { + return (_amount * 1) / 100; + } + + function _bounded(uint256 _seed, uint256 _minValue, uint256 _maxValue) private pure returns (uint256) { + return _minValue + (_seed % (_maxValue - _minValue + 1)); + } + + function _min(uint256 _a, uint256 _b) private pure returns (uint256) { + return _a < _b ? _a : _b; + } +} + +contract RareERC1155MarketplaceInvariantTest is StdInvariant, Test { + RareERC1155Marketplace private marketplace; + RareERC1155MarketplaceHandler private handler; + RareERC1155 private token; + MarketplaceInvariantCurrency private currency; + RareERC1155ContractFactory private tokenFactory; + ERC20ApprovalManager private erc20ApprovalManager; + ERC721ApprovalManager private erc721ApprovalManager; + ERC1155ApprovalManager private erc1155ApprovalManager; + + address private deployer = address(0x1000); + address private seller = address(0x2000); + address private sellerTwo = address(0x2001); + address private buyer = address(0x3000); + address private buyerTwo = address(0x3001); + address private networkBeneficiary = address(0x5000); + + address private marketplaceSettings = address(0x7100); + address private stakingSettings = address(0x7200); + address private stakingRegistry = address(0x7300); + address private royaltyEngine = address(0x7400); + address private spaceOperatorRegistry = address(0x7500); + address private approvedTokenRegistry = address(0x7600); + + uint256[3] private tokenIds; + + function setUp() public { + RejectingERC1155Receiver rejectingBuyer = new RejectingERC1155Receiver(); + RejectingPayoutRecipient rejectingPayoutRecipient = new RejectingPayoutRecipient(); + + deal(deployer, 1_000 ether); + deal(seller, 1_000 ether); + deal(sellerTwo, 1_000 ether); + deal(buyer, 1_000 ether); + deal(buyerTwo, 1_000 ether); + deal(address(rejectingBuyer), 1_000 ether); + + vm.startPrank(deployer); + currency = new MarketplaceInvariantCurrency(); + erc20ApprovalManager = new ERC20ApprovalManager(); + erc721ApprovalManager = new ERC721ApprovalManager(); + erc1155ApprovalManager = new ERC1155ApprovalManager(); + RareERC1155TradeExecutionModule tradeExecutionModule = new RareERC1155TradeExecutionModule(); + RareERC1155CheckoutExecutionModule checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); + Payments payments = new Payments(); + marketplace = RareERC1155Marketplace( + address( + new ERC1967Proxy( + address(new RareERC1155Marketplace()), + _initData(address(payments), address(tradeExecutionModule), address(checkoutExecutionModule)) + ) + ) + ); + erc20ApprovalManager.grantOperatorRole(address(marketplace)); + erc1155ApprovalManager.grantOperatorRole(address(marketplace)); + + tokenFactory = new RareERC1155ContractFactory(); + tokenFactory.setDefaultMinter(address(marketplace)); + vm.stopPrank(); + + vm.prank(seller); + token = RareERC1155(tokenFactory.createRareERC1155Contract("Rare Editions", "RED", "ipfs://base/{id}.json")); + + vm.startPrank(seller); + tokenIds[0] = token.createToken("ipfs://token/1.json", 10_000, seller); + tokenIds[1] = token.createToken("ipfs://token/2.json", 10_000, seller); + tokenIds[2] = token.createToken("ipfs://token/3.json", 10_000, seller); + for (uint256 i = 0; i < tokenIds.length; i++) { + token.mintTo(seller, tokenIds[i], 120); + token.mintTo(sellerTwo, tokenIds[i], 120); + } + token.setApprovalForAll(address(erc1155ApprovalManager), true); + vm.stopPrank(); + + vm.prank(sellerTwo); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _fundAndApproveCurrency(buyer); + _fundAndApproveCurrency(buyerTwo); + _fundAndApproveCurrency(address(rejectingBuyer)); + + vm.etch(marketplaceSettings, address(marketplace).code); + vm.etch(stakingSettings, address(marketplace).code); + vm.etch(stakingRegistry, address(marketplace).code); + vm.etch(royaltyEngine, address(marketplace).code); + vm.etch(spaceOperatorRegistry, address(marketplace).code); + vm.etch(approvedTokenRegistry, address(marketplace).code); + + vm.mockCall( + approvedTokenRegistry, + abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(currency)), + abi.encode(true) + ); + + address[3] memory buyers = [buyer, buyerTwo, address(rejectingBuyer)]; + address[2] memory sellers = [seller, sellerTwo]; + handler = new RareERC1155MarketplaceHandler( + marketplace, + token, + currency, + seller, + address(rejectingPayoutRecipient), + marketplaceSettings, + stakingSettings, + stakingRegistry, + royaltyEngine, + spaceOperatorRegistry, + buyers, + sellers, + tokenIds + ); + + targetContract(address(handler)); + bytes4[] memory selectors = new bytes4[](9); + selectors[0] = RareERC1155MarketplaceHandler.makeOffer.selector; + selectors[1] = RareERC1155MarketplaceHandler.acceptOffer.selector; + selectors[2] = RareERC1155MarketplaceHandler.cancelOffer.selector; + selectors[3] = RareERC1155MarketplaceHandler.setListing.selector; + selectors[4] = RareERC1155MarketplaceHandler.cancelListing.selector; + selectors[5] = RareERC1155MarketplaceHandler.buyBatch.selector; + selectors[6] = RareERC1155MarketplaceHandler.prepareDirectSale.selector; + selectors[7] = RareERC1155MarketplaceHandler.cancelDirectSale.selector; + selectors[8] = RareERC1155MarketplaceHandler.checkoutMixedCart.selector; + targetSelector(FuzzSelector({addr: address(handler), selectors: selectors})); + } + + function invariant_ethEscrowConserved() public { + assertGe(address(marketplace).balance, handler.ghostEthEscrowOwed()); + } + + function invariant_erc20EscrowConserved() public { + assertGe(currency.balanceOf(address(marketplace)), handler.ghostErc20EscrowOwed(address(currency))); + } + + function invariant_tokensMatchPayments() public { + assertEq( + handler.ghostTokensReceivedByBuyers(), + handler.ghostTokensRemovedFromSellers() + handler.ghostTokensMinted() + ); + + assertEq( + handler.buyerTokenBalanceSum(), + handler.initialBuyerTokenBalanceSum() + handler.ghostTokensReceivedByBuyers() + ); + + uint256 sellerBalanceSum = handler.sellerTokenBalanceSum(); + assertGe(handler.initialSellerTokenBalanceSum(), sellerBalanceSum); + assertEq(handler.initialSellerTokenBalanceSum() - sellerBalanceSum, handler.ghostTokensRemovedFromSellers()); + + assertEq(handler.tokenSupplySum(), handler.initialTokenSupplySum() + handler.ghostTokensMinted()); + } + + function invariant_noZeroQuantityListings() public { + uint256 listingCount = handler.trackedListingCount(); + for (uint256 i = 0; i < listingCount; i++) { + (uint256 tokenId, address listedSeller) = handler.trackedListingKey(i); + IRareERC1155MarketplaceTypes.SalePrice memory salePrice = marketplace.getSalePrice( + address(token), + tokenId, + listedSeller + ); + + if (salePrice.quantity == 0) { + assertEq(salePrice.price, 0); + assertEq(salePrice.expirationTime, 0); + assertEq(salePrice.splitRecipients.length, 0); + assertEq(salePrice.splitRatios.length, 0); + } else { + assertGt(salePrice.price, 0); + } + } + } + + function invariant_offerStructConsistency() public { + uint256 offerCount = handler.trackedOfferCount(); + uint256 ethEscrowOwed = 0; + uint256 erc20EscrowOwed = 0; + + for (uint256 i = 0; i < offerCount; i++) { + (uint256 tokenId, address offerBuyer, address currencyAddress) = handler.trackedOfferKey(i); + IRareERC1155MarketplaceTypes.Offer memory offer = marketplace.getOffer( + address(token), + tokenId, + offerBuyer, + currencyAddress + ); + + if (offer.quantity == 0) { + assertEq(offer.currencyAddress, address(0)); + assertEq(offer.price, 0); + assertEq(offer.initialQuantity, 0); + assertEq(offer.marketplaceFeeRemaining, 0); + assertEq(offer.marketplaceFeeTotal, 0); + assertEq(offer.stakingFeeRemaining, 0); + assertEq(offer.stakingFeeTotal, 0); + assertEq(offer.expirationTime, 0); + continue; + } + + assertEq(offer.currencyAddress, currencyAddress); + assertGt(offer.price, 0); + assertGe(offer.initialQuantity, offer.quantity); + assertLe(offer.marketplaceFeeRemaining, offer.marketplaceFeeTotal); + assertLe(offer.stakingFeeRemaining, offer.stakingFeeTotal); + assertLe(offer.stakingFeeRemaining, offer.marketplaceFeeRemaining); + assertLe(offer.stakingFeeTotal, offer.marketplaceFeeTotal); + + uint256 escrowOwed = (offer.price * offer.quantity) + offer.marketplaceFeeRemaining; + if (currencyAddress == address(0)) { + ethEscrowOwed += escrowOwed; + } else { + erc20EscrowOwed += escrowOwed; + } + } + + assertEq(ethEscrowOwed, handler.ghostEthEscrowOwed()); + assertEq(erc20EscrowOwed, handler.ghostErc20EscrowOwed(address(currency))); + } + + function _fundAndApproveCurrency(address _account) private { + currency.mint(_account, 1_000_000 ether); + vm.prank(_account); + currency.approve(address(erc20ApprovalManager), type(uint256).max); + } + + function _initData( + address _payments, + address _tradeExecutionModule, + address _checkoutExecutionModule + ) private view returns (bytes memory) { + return + abi.encodeWithSelector( + RareERC1155Marketplace.initialize.selector, + networkBeneficiary, + marketplaceSettings, + spaceOperatorRegistry, + royaltyEngine, + _payments, + approvedTokenRegistry, + stakingSettings, + stakingRegistry, + address(erc20ApprovalManager), + address(erc721ApprovalManager), + address(erc1155ApprovalManager), + _tradeExecutionModule, + _checkoutExecutionModule + ); + } +} diff --git a/src/test/marketplace/RareERC1155MarketplaceReentrancy.t.sol b/src/test/marketplace/RareERC1155MarketplaceReentrancy.t.sol new file mode 100644 index 0000000..2658a78 --- /dev/null +++ b/src/test/marketplace/RareERC1155MarketplaceReentrancy.t.sol @@ -0,0 +1,628 @@ +// SPDX-License-Identifier: AGPL-3.0-only +pragma solidity ^0.8.0; + +import "forge-std/Test.sol"; + +import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import {IERC1155Receiver} from "openzeppelin-contracts/token/ERC1155/IERC1155Receiver.sol"; +import {IERC165} from "openzeppelin-contracts/utils/introspection/IERC165.sol"; + +import {Payments} from "../../payments/Payments.sol"; +import {RareERC1155} from "../../token/ERC1155/RareERC1155.sol"; +import {RareERC1155ContractFactory} from "../../token/ERC1155/RareERC1155ContractFactory.sol"; +import {ERC20ApprovalManager} from "../../v2/approver/ERC20/ERC20ApprovalManager.sol"; +import {ERC721ApprovalManager} from "../../v2/approver/ERC721/ERC721ApprovalManager.sol"; +import {ERC1155ApprovalManager} from "../../v2/approver/ERC1155/ERC1155ApprovalManager.sol"; +import {IRareERC1155MarketplaceTypes} from "../../marketplace/IRareERC1155MarketplaceTypes.sol"; +import {RareERC1155CheckoutExecutionModule} from "../../marketplace/RareERC1155CheckoutExecutionModule.sol"; +import {RareERC1155Marketplace} from "../../marketplace/RareERC1155Marketplace.sol"; +import {RareERC1155TradeExecutionModule} from "../../marketplace/RareERC1155TradeExecutionModule.sol"; +import {IRoyaltyEngineV1} from "royalty-registry/IRoyaltyEngineV1.sol"; + +contract ReentrancyMarketplaceSettings { + function calculateMarketplaceFee(uint256 _amount) external pure returns (uint256) { + return (_amount * 3) / 100; + } + + function getERC721ContractPrimarySaleFeePercentage(address) external pure returns (uint8) { + return 10; + } +} + +contract ReentrancyStakingSettings { + function calculateStakingFee(uint256 _amount) external pure returns (uint256) { + return (_amount * 1) / 100; + } +} + +contract ReentrancyStakingRegistry { + function getRewardAccumulatorAddressForUser(address) external pure returns (address) { + return address(0); + } +} + +contract ReentrancySpaceOperatorRegistry { + function isApprovedSpaceOperator(address) external pure returns (bool) { + return false; + } + + function getPlatformCommission(address) external pure returns (uint8) { + return 0; + } +} + +contract ReentrancyApprovedTokenRegistry { + mapping(address => bool) private approvedTokens; + + function setApprovedToken(address _token, bool _approved) external { + approvedTokens[_token] = _approved; + } + + function isApprovedToken(address _token) external view returns (bool) { + return approvedTokens[_token]; + } +} + +contract ReenteringERC1155Receiver is IERC1155Receiver { + RareERC1155Marketplace private immutable target; + bytes private reentryCall; + uint256 private reentryValue; + + bool public reentryReverted; + + constructor(RareERC1155Marketplace _target) { + target = _target; + } + + receive() external payable { + _attemptReentry(); + } + + function setReentry(bytes calldata _reentryCall, uint256 _reentryValue) external { + reentryCall = _reentryCall; + reentryValue = _reentryValue; + reentryReverted = false; + } + + function onERC1155Received(address, address, uint256, uint256, bytes calldata) external returns (bytes4) { + _attemptReentry(); + return this.onERC1155Received.selector; + } + + function onERC1155BatchReceived( + address, + address, + uint256[] calldata, + uint256[] calldata, + bytes calldata + ) external returns (bytes4) { + _attemptReentry(); + return this.onERC1155BatchReceived.selector; + } + + function supportsInterface(bytes4 _interfaceId) external pure returns (bool) { + return _interfaceId == type(IERC165).interfaceId || _interfaceId == type(IERC1155Receiver).interfaceId; + } + + function _attemptReentry() private { + if (reentryCall.length == 0) return; + + (bool success, ) = address(target).call{value: reentryValue}(reentryCall); + reentryReverted = !success; + } +} + +contract ReenteringRoyaltyEngine is IRoyaltyEngineV1, IERC1155Receiver { + RareERC1155Marketplace private target; + bytes private reentryCall; + bool private revertAfterReentry; + + function setTarget(RareERC1155Marketplace _target) external { + target = _target; + } + + function setReentry(bytes calldata _reentryCall, bool _revertAfterReentry) external { + reentryCall = _reentryCall; + revertAfterReentry = _revertAfterReentry; + } + + function getRoyalty( + address, + uint256, + uint256 + ) external returns (address payable[] memory recipients, uint256[] memory amounts) { + if (reentryCall.length != 0) { + (bool success, ) = address(target).call(reentryCall); + if (revertAfterReentry) { + if (!success) revert("royalty reentry blocked"); + revert("royalty reentry unexpectedly succeeded"); + } + } + + recipients = new address payable[](0); + amounts = new uint256[](0); + } + + function getRoyaltyView( + address, + uint256, + uint256 + ) external pure returns (address payable[] memory recipients, uint256[] memory amounts) { + recipients = new address payable[](0); + amounts = new uint256[](0); + } + + function onERC1155Received(address, address, uint256, uint256, bytes calldata) external pure returns (bytes4) { + return this.onERC1155Received.selector; + } + + function onERC1155BatchReceived( + address, + address, + uint256[] calldata, + uint256[] calldata, + bytes calldata + ) external pure returns (bytes4) { + return this.onERC1155BatchReceived.selector; + } + + function supportsInterface(bytes4 _interfaceId) external pure returns (bool) { + return + _interfaceId == type(IERC165).interfaceId || + _interfaceId == type(IRoyaltyEngineV1).interfaceId || + _interfaceId == type(IERC1155Receiver).interfaceId; + } +} + +contract ReenteringERC20 is IERC1155Receiver { + enum Hook { + NONE, + BALANCE_OF_REVERT, + ALLOWANCE_REVERT + } + + string public constant name = "Reentering ERC20"; + string public constant symbol = "RE20"; + uint8 public constant decimals = 18; + uint256 public totalSupply; + + RareERC1155Marketplace private target; + bytes private reentryCall; + Hook private hook; + + mapping(address => uint256) private balances; + mapping(address => mapping(address => uint256)) private allowances; + + function setReentry(RareERC1155Marketplace _target, bytes calldata _reentryCall, Hook _hook) external { + target = _target; + reentryCall = _reentryCall; + hook = _hook; + } + + function mint(address _account, uint256 _amount) external { + balances[_account] += _amount; + totalSupply += _amount; + } + + function approve(address _spender, uint256 _amount) external returns (bool) { + allowances[msg.sender][_spender] = _amount; + return true; + } + + function balanceOf(address _account) external returns (uint256) { + if (hook == Hook.BALANCE_OF_REVERT) { + _reenterAndRevert("balanceOf reentry blocked"); + } + + return balances[_account]; + } + + function allowance(address _owner, address _spender) external returns (uint256) { + if (hook == Hook.ALLOWANCE_REVERT) { + _reenterAndRevert("allowance reentry blocked"); + } + + return allowances[_owner][_spender]; + } + + function transfer(address _to, uint256 _amount) external returns (bool) { + balances[msg.sender] -= _amount; + balances[_to] += _amount; + return true; + } + + function transferFrom(address _from, address _to, uint256 _amount) external returns (bool) { + uint256 currentAllowance = allowances[_from][msg.sender]; + require(currentAllowance >= _amount, "ERC20: insufficient allowance"); + + allowances[_from][msg.sender] = currentAllowance - _amount; + balances[_from] -= _amount; + balances[_to] += _amount; + return true; + } + + function onERC1155Received(address, address, uint256, uint256, bytes calldata) external pure returns (bytes4) { + return this.onERC1155Received.selector; + } + + function onERC1155BatchReceived( + address, + address, + uint256[] calldata, + uint256[] calldata, + bytes calldata + ) external pure returns (bytes4) { + return this.onERC1155BatchReceived.selector; + } + + function supportsInterface(bytes4 _interfaceId) external pure returns (bool) { + return _interfaceId == type(IERC165).interfaceId || _interfaceId == type(IERC1155Receiver).interfaceId; + } + + function _reenterAndRevert(string memory _reason) private { + (bool success, ) = address(target).call(reentryCall); + if (success) revert("reentry unexpectedly succeeded"); + revert(_reason); + } +} + +contract RareERC1155MarketplaceReentrancyTest is Test { + RareERC1155Marketplace private marketplace; + Payments private payments; + RareERC1155 private token; + RareERC1155ContractFactory private tokenFactory; + ERC20ApprovalManager private erc20ApprovalManager; + ERC721ApprovalManager private erc721ApprovalManager; + ERC1155ApprovalManager private erc1155ApprovalManager; + ReentrancyApprovedTokenRegistry private approvedTokenRegistry; + ReenteringRoyaltyEngine private royaltyEngine; + + address private deployer = address(0x1000); + address private seller = address(0x2000); + address private buyer = address(0x3000); + address private networkBeneficiary = address(0x5000); + + ReentrancyMarketplaceSettings private marketplaceSettings; + ReentrancyStakingSettings private stakingSettings; + ReentrancyStakingRegistry private stakingRegistry; + ReentrancySpaceOperatorRegistry private spaceOperatorRegistry; + + uint256 private tokenId; + uint256 private tokenIdTwo; + uint256 private tokenIdThree; + + function setUp() public { + deal(deployer, 100 ether); + deal(seller, 100 ether); + deal(buyer, 100 ether); + + vm.startPrank(deployer); + marketplaceSettings = new ReentrancyMarketplaceSettings(); + stakingSettings = new ReentrancyStakingSettings(); + stakingRegistry = new ReentrancyStakingRegistry(); + spaceOperatorRegistry = new ReentrancySpaceOperatorRegistry(); + approvedTokenRegistry = new ReentrancyApprovedTokenRegistry(); + royaltyEngine = new ReenteringRoyaltyEngine(); + + erc20ApprovalManager = new ERC20ApprovalManager(); + erc721ApprovalManager = new ERC721ApprovalManager(); + erc1155ApprovalManager = new ERC1155ApprovalManager(); + RareERC1155TradeExecutionModule tradeExecutionModule = new RareERC1155TradeExecutionModule(); + RareERC1155CheckoutExecutionModule checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); + payments = new Payments(); + + marketplace = RareERC1155Marketplace( + address( + new ERC1967Proxy( + address(new RareERC1155Marketplace()), + _initData(address(tradeExecutionModule), address(checkoutExecutionModule)) + ) + ) + ); + royaltyEngine.setTarget(marketplace); + erc20ApprovalManager.grantOperatorRole(address(marketplace)); + erc1155ApprovalManager.grantOperatorRole(address(marketplace)); + + tokenFactory = new RareERC1155ContractFactory(); + tokenFactory.setDefaultMinter(address(marketplace)); + vm.stopPrank(); + + vm.prank(seller); + token = RareERC1155(tokenFactory.createRareERC1155Contract("Rare Editions", "RED", "ipfs://base/{id}.json")); + + vm.startPrank(seller); + tokenId = token.createToken("ipfs://token/1.json", 100, seller); + tokenIdTwo = token.createToken("ipfs://token/2.json", 100, seller); + tokenIdThree = token.createToken("ipfs://token/3.json", 100, seller); + token.mintTo(seller, tokenId, 10); + token.mintTo(seller, tokenIdTwo, 10); + token.mintTo(seller, tokenIdThree, 10); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + vm.stopPrank(); + } + + function test_reentry_mintHookCannotReenterCheckout() public { + uint256 supplyBefore = token.totalSupply(tokenId); + ReenteringERC1155Receiver receiver = new ReenteringERC1155Receiver(marketplace); + + _prepareDirectSale(tokenId, 0, 2, payable(seller)); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory reentryItems = _singleCheckoutItem( + _directSaleCheckoutItem(tokenId, 0, 1) + ); + receiver.setReentry(abi.encodeWithSelector(marketplace.checkout.selector, reentryItems), 0); + + vm.prank(address(receiver)); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(reentryItems); + + assertEq(execution.summary.filledCount, 1); + assertTrue(receiver.reentryReverted()); + assertEq(token.balanceOf(address(receiver), tokenId), 1); + assertEq(token.totalSupply(tokenId), supplyBefore + 1); + assertEq(address(marketplace).balance, 0); + } + + function test_reentry_ethPayoutRecipientCannotReenter() public { + uint256 price = 1 ether; + ReenteringERC1155Receiver payoutRecipient = new ReenteringERC1155Receiver(marketplace); + + _prepareDirectSale(tokenIdTwo, 0, 2, payable(seller)); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory reentryItems = _singleCheckoutItem( + _directSaleCheckoutItem(tokenIdTwo, 0, 1) + ); + payoutRecipient.setReentry(abi.encodeWithSelector(marketplace.checkout.selector, reentryItems), 0); + + _setListing(tokenId, address(0), price, 1, payable(address(payoutRecipient))); + + vm.prank(buyer); + marketplace.buyBatch{value: _withFee(price)}( + address(token), + seller, + address(0), + _singleBuyRequest(tokenId, price, 1) + ); + + assertTrue(payoutRecipient.reentryReverted()); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(address(payoutRecipient), tokenIdTwo), 0); + assertEq(token.totalSupply(tokenIdTwo), 10); + assertEq(address(marketplace).balance, 0); + } + + function test_reentry_maliciousERC20BalanceOfCannotMutateState() public { + uint256 price = 1 ether; + ReenteringERC20 maliciousCurrency = new ReenteringERC20(); + approvedTokenRegistry.setApprovedToken(address(maliciousCurrency), true); + maliciousCurrency.mint(buyer, 100 ether); + + vm.prank(buyer); + maliciousCurrency.approve(address(erc20ApprovalManager), type(uint256).max); + + _prepareDirectSale(tokenIdTwo, 0, 2, payable(seller)); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory reentryItems = _singleCheckoutItem( + _directSaleCheckoutItem(tokenIdTwo, 0, 1) + ); + maliciousCurrency.setReentry( + marketplace, + abi.encodeWithSelector(marketplace.checkout.selector, reentryItems), + ReenteringERC20.Hook.BALANCE_OF_REVERT + ); + + _setListing(tokenId, address(maliciousCurrency), price, 1, payable(seller)); + + vm.expectRevert("balanceOf reentry blocked"); + vm.prank(buyer); + marketplace.buyBatch(address(token), seller, address(maliciousCurrency), _singleBuyRequest(tokenId, price, 1)); + + IRareERC1155MarketplaceTypes.SalePrice memory salePrice = marketplace.getSalePrice(address(token), tokenId, seller); + assertEq(salePrice.quantity, 1); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(address(maliciousCurrency), tokenIdTwo), 0); + + maliciousCurrency.setReentry( + marketplace, + abi.encodeWithSelector(marketplace.checkout.selector, reentryItems), + ReenteringERC20.Hook.ALLOWANCE_REVERT + ); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _singleCheckoutItem( + _listingCheckoutItem(tokenId, seller, address(maliciousCurrency), price, 1) + ); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(items); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq( + uint8(execution.items[0].failureStage), + uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYMENT_COLLECTION) + ); + assertEq(execution.items[0].reason, IRareERC1155MarketplaceTypes.InsufficientCheckoutERC20Allowance.selector); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(address(maliciousCurrency), tokenIdTwo), 0); + assertEq(maliciousCurrency.balanceOf(address(marketplace)), 0); + } + + function test_reentry_royaltyEngineCannotReenter() public { + uint256 price = 1 ether; + bytes memory royaltyRevertData = abi.encodeWithSignature("Error(string)", "royalty reentry blocked"); + + _setListing(tokenId, address(0), price, 1, payable(seller)); + _prepareDirectSale(tokenIdTwo, 0, 1, payable(seller)); + _prepareDirectSale(tokenIdThree, 0, 1, payable(seller)); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory royaltyReentryItems = _singleCheckoutItem( + _directSaleCheckoutItem(tokenIdThree, 0, 1) + ); + royaltyEngine.setReentry(abi.encodeWithSelector(marketplace.checkout.selector, royaltyReentryItems), true); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _listingCheckoutItem(tokenId, seller, address(0), price, 1); + items[1] = _directSaleCheckoutItem(tokenIdTwo, 0, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 1); + assertEq(execution.summary.ethRefunded, _withFee(price)); + assertEq(uint8(execution.items[0].failureStage), uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT)); + assertEq(execution.items[0].reason, bytes4(0x08c379a0)); + assertEq(execution.items[0].failureData, royaltyRevertData); + + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(seller, tokenId), 10); + assertEq(token.balanceOf(buyer, tokenIdTwo), 1); + assertEq(token.balanceOf(address(royaltyEngine), tokenIdThree), 0); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); + assertEq(address(marketplace).balance, 0); + } + + function _prepareDirectSale( + uint256 _tokenId, + uint256 _price, + uint256 _maxMints, + address payable _splitRecipient + ) private { + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(_tokenId, _price, 0, _maxMints), + _singleSplitRecipients(_splitRecipient), + _singleSplitRatios() + ); + } + + function _setListing( + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + address payable _splitRecipient + ) private { + vm.prank(seller); + marketplace.setSalePrices( + address(token), + _currencyAddress, + _singleSalePriceRequest(_tokenId, _price, _quantity), + _singleSplitRecipients(_splitRecipient), + _singleSplitRatios() + ); + } + + function _directSaleCheckoutItem( + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private view returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.DIRECT_SALE_MINT), + contractAddress: address(token), + seller: seller, + currencyAddress: address(0), + tokenId: _tokenId, + price: _price, + quantity: _quantity, + proof: new bytes32[](0) + }); + } + + function _listingCheckoutItem( + uint256 _tokenId, + address _seller, + address _currencyAddress, + uint256 _price, + uint256 _quantity + ) private view returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.LISTING_BUY), + contractAddress: address(token), + seller: _seller, + currencyAddress: _currencyAddress, + tokenId: _tokenId, + price: _price, + quantity: _quantity, + proof: new bytes32[](0) + }); + } + + function _singleCheckoutItem( + IRareERC1155MarketplaceTypes.CheckoutItem memory _item + ) private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) { + items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _item; + } + + function _singleDirectSaleRequest( + uint256 _tokenId, + uint256 _price, + uint256 _startTime, + uint256 _maxMints + ) private pure returns (IRareERC1155MarketplaceTypes.DirectSaleRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.DirectSaleRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.DirectSaleRequest(_tokenId, _price, _startTime, _maxMints); + } + + function _singleSalePriceRequest( + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.SalePriceRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.SalePriceRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.SalePriceRequest(_tokenId, _price, _quantity, 0); + } + + function _singleBuyRequest( + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.BuyRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.BuyRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.BuyRequest(_tokenId, _price, _quantity); + } + + function _singleSplitRecipients( + address payable _recipient + ) private pure returns (address payable[] memory recipients) { + recipients = new address payable[](1); + recipients[0] = _recipient; + } + + function _singleSplitRatios() private pure returns (uint8[] memory ratios) { + ratios = new uint8[](1); + ratios[0] = 100; + } + + function _withFee(uint256 _amount) private pure returns (uint256) { + return _amount + ((_amount * 3) / 100); + } + + function _initData( + address _tradeExecutionModule, + address _checkoutExecutionModule + ) private view returns (bytes memory) { + return + abi.encodeWithSelector( + RareERC1155Marketplace.initialize.selector, + networkBeneficiary, + address(marketplaceSettings), + address(spaceOperatorRegistry), + address(royaltyEngine), + address(payments), + address(approvedTokenRegistry), + address(stakingSettings), + address(stakingRegistry), + address(erc20ApprovalManager), + address(erc721ApprovalManager), + address(erc1155ApprovalManager), + _tradeExecutionModule, + _checkoutExecutionModule + ); + } +} diff --git a/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol b/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol index d5c3459..2ac07f6 100644 --- a/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol +++ b/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol @@ -26,2246 +26,2757 @@ import {RareERC1155TradeExecutionModule} from "../../marketplace/RareERC1155Trad import {IRoyaltyEngineV1} from "royalty-registry/IRoyaltyEngineV1.sol"; contract CheckoutCurrency is ERC20 { - constructor() ERC20("Checkout Currency", "CCUR") { - _mint(msg.sender, 1_000_000_000 ether); - } + constructor() ERC20("Checkout Currency", "CCUR") { + _mint(msg.sender, 1_000_000_000 ether); + } } contract CheckoutRejectZeroTransferCurrency is CheckoutCurrency { - function transfer(address _to, uint256 _amount) public override returns (bool) { - if (_amount == 0) revert("zero transfer"); - return super.transfer(_to, _amount); - } + function transfer(address _to, uint256 _amount) public override returns (bool) { + if (_amount == 0) revert("zero transfer"); + return super.transfer(_to, _amount); + } } contract CheckoutNoOpERC1155 is IERC1155 { - mapping(address => mapping(uint256 => uint256)) private balances; - mapping(address => mapping(address => bool)) private operatorApprovals; - - function supportsInterface(bytes4 _interfaceId) external pure override returns (bool) { - return _interfaceId == type(IERC165).interfaceId || _interfaceId == type(IERC1155).interfaceId; - } - - function setBalance(address _account, uint256 _tokenId, uint256 _amount) external { - balances[_account][_tokenId] = _amount; - } - - function balanceOf(address _account, uint256 _tokenId) external view override returns (uint256) { - return balances[_account][_tokenId]; - } - - function balanceOfBatch(address[] calldata _accounts, uint256[] calldata _ids) - external - view - override - returns (uint256[] memory) - { - uint256[] memory batchBalances = new uint256[](_accounts.length); - for (uint256 i = 0; i < _accounts.length; i++) { - batchBalances[i] = balances[_accounts[i]][_ids[i]]; - } - return batchBalances; - } - - function setApprovalForAll(address _operator, bool _approved) external override { - operatorApprovals[msg.sender][_operator] = _approved; - } - - function isApprovedForAll(address _account, address _operator) external view override returns (bool) { - return operatorApprovals[_account][_operator]; - } - - function safeTransferFrom(address, address, uint256, uint256, bytes calldata) external override {} - - function safeBatchTransferFrom(address, address, uint256[] calldata, uint256[] calldata, bytes calldata) - external - override - {} + mapping(address => mapping(uint256 => uint256)) private balances; + mapping(address => mapping(address => bool)) private operatorApprovals; + + function supportsInterface(bytes4 _interfaceId) external pure override returns (bool) { + return _interfaceId == type(IERC165).interfaceId || _interfaceId == type(IERC1155).interfaceId; + } + + function setBalance(address _account, uint256 _tokenId, uint256 _amount) external { + balances[_account][_tokenId] = _amount; + } + + function balanceOf(address _account, uint256 _tokenId) external view override returns (uint256) { + return balances[_account][_tokenId]; + } + + function balanceOfBatch( + address[] calldata _accounts, + uint256[] calldata _ids + ) external view override returns (uint256[] memory) { + uint256[] memory batchBalances = new uint256[](_accounts.length); + for (uint256 i = 0; i < _accounts.length; i++) { + batchBalances[i] = balances[_accounts[i]][_ids[i]]; + } + return batchBalances; + } + + function setApprovalForAll(address _operator, bool _approved) external override { + operatorApprovals[msg.sender][_operator] = _approved; + } + + function isApprovedForAll(address _account, address _operator) external view override returns (bool) { + return operatorApprovals[_account][_operator]; + } + + function safeTransferFrom(address, address, uint256, uint256, bytes calldata) external override {} + + function safeBatchTransferFrom( + address, + address, + uint256[] calldata, + uint256[] calldata, + bytes calldata + ) external override {} } contract CheckoutToggleERC1155 is IERC1155 { - mapping(address => mapping(uint256 => uint256)) private balances; - mapping(address => mapping(address => bool)) private operatorApprovals; - - address private contractOwner; - bool private revertOwner; - bool private revertSupportsInterface; - bool private revertApproval; - bool private revertBalance; - - constructor(address _owner) { - contractOwner = _owner; - } - - function setRevertOwner(bool _revertOwner) external { - revertOwner = _revertOwner; - } - - function setRevertSupportsInterface(bool _revertSupportsInterface) external { - revertSupportsInterface = _revertSupportsInterface; - } - - function setRevertApproval(bool _revertApproval) external { - revertApproval = _revertApproval; - } - - function setRevertBalance(bool _revertBalance) external { - revertBalance = _revertBalance; - } - - function owner() external view returns (address) { - if (revertOwner) revert("owner unavailable"); - return contractOwner; - } - - function maxSupplyForToken(uint256) external pure returns (uint256) { - return 100; - } - - function mintBatchTo(address _receiver, uint256[] calldata _tokenIds, uint256[] calldata _amounts) public virtual { - for (uint256 i = 0; i < _tokenIds.length; i++) { - balances[_receiver][_tokenIds[i]] += _amounts[i]; - } - } - - function setBalance(address _account, uint256 _tokenId, uint256 _amount) external { - balances[_account][_tokenId] = _amount; - } - - function supportsInterface(bytes4 _interfaceId) external view override returns (bool) { - if (revertSupportsInterface) revert("supports unavailable"); - return _interfaceId == type(IERC165).interfaceId || _interfaceId == type(IERC1155).interfaceId; - } - - function balanceOf(address _account, uint256 _tokenId) external view override returns (uint256) { - if (revertBalance) revert("balance unavailable"); - return balances[_account][_tokenId]; - } - - function balanceOfBatch(address[] calldata _accounts, uint256[] calldata _ids) - external - view - override - returns (uint256[] memory batchBalances) - { - batchBalances = new uint256[](_accounts.length); - for (uint256 i = 0; i < _accounts.length; i++) { - batchBalances[i] = balances[_accounts[i]][_ids[i]]; - } - } - - function setApprovalForAll(address _operator, bool _approved) external override { - operatorApprovals[msg.sender][_operator] = _approved; - } - - function isApprovedForAll(address _account, address _operator) external view override returns (bool) { - if (revertApproval) revert("approval unavailable"); - return operatorApprovals[_account][_operator]; - } - - function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _amount, bytes calldata) - external - override - { - balances[_from][_id] -= _amount; - balances[_to][_id] += _amount; - } - - function safeBatchTransferFrom( - address _from, - address _to, - uint256[] calldata _ids, - uint256[] calldata _amounts, - bytes calldata - ) external override { - for (uint256 i = 0; i < _ids.length; i++) { - balances[_from][_ids[i]] -= _amounts[i]; - balances[_to][_ids[i]] += _amounts[i]; - } - } + mapping(address => mapping(uint256 => uint256)) private balances; + mapping(address => mapping(address => bool)) private operatorApprovals; + + address private contractOwner; + bool private revertOwner; + bool private revertSupportsInterface; + bool private revertApproval; + bool private revertBalance; + + constructor(address _owner) { + contractOwner = _owner; + } + + function setRevertOwner(bool _revertOwner) external { + revertOwner = _revertOwner; + } + + function setRevertSupportsInterface(bool _revertSupportsInterface) external { + revertSupportsInterface = _revertSupportsInterface; + } + + function setRevertApproval(bool _revertApproval) external { + revertApproval = _revertApproval; + } + + function setRevertBalance(bool _revertBalance) external { + revertBalance = _revertBalance; + } + + function owner() external view returns (address) { + if (revertOwner) revert("owner unavailable"); + return contractOwner; + } + + function maxSupplyForToken(uint256) external pure returns (uint256) { + return 100; + } + + function mintBatchTo(address _receiver, uint256[] calldata _tokenIds, uint256[] calldata _amounts) public virtual { + for (uint256 i = 0; i < _tokenIds.length; i++) { + balances[_receiver][_tokenIds[i]] += _amounts[i]; + } + } + + function setBalance(address _account, uint256 _tokenId, uint256 _amount) external { + balances[_account][_tokenId] = _amount; + } + + function supportsInterface(bytes4 _interfaceId) external view override returns (bool) { + if (revertSupportsInterface) revert("supports unavailable"); + return _interfaceId == type(IERC165).interfaceId || _interfaceId == type(IERC1155).interfaceId; + } + + function balanceOf(address _account, uint256 _tokenId) external view override returns (uint256) { + if (revertBalance) revert("balance unavailable"); + return balances[_account][_tokenId]; + } + + function balanceOfBatch( + address[] calldata _accounts, + uint256[] calldata _ids + ) external view override returns (uint256[] memory batchBalances) { + batchBalances = new uint256[](_accounts.length); + for (uint256 i = 0; i < _accounts.length; i++) { + batchBalances[i] = balances[_accounts[i]][_ids[i]]; + } + } + + function setApprovalForAll(address _operator, bool _approved) external override { + operatorApprovals[msg.sender][_operator] = _approved; + } + + function isApprovedForAll(address _account, address _operator) external view override returns (bool) { + if (revertApproval) revert("approval unavailable"); + return operatorApprovals[_account][_operator]; + } + + function safeTransferFrom( + address _from, + address _to, + uint256 _id, + uint256 _amount, + bytes calldata + ) external override { + balances[_from][_id] -= _amount; + balances[_to][_id] += _amount; + } + + function safeBatchTransferFrom( + address _from, + address _to, + uint256[] calldata _ids, + uint256[] calldata _amounts, + bytes calldata + ) external override { + for (uint256 i = 0; i < _ids.length; i++) { + balances[_from][_ids[i]] -= _amounts[i]; + balances[_to][_ids[i]] += _amounts[i]; + } + } } contract CheckoutReentrantERC1155 is CheckoutToggleERC1155 { - RareERC1155Marketplace private marketplace; - bool public reentryBlocked; - - constructor(address _owner, RareERC1155Marketplace _marketplace) CheckoutToggleERC1155(_owner) { - marketplace = _marketplace; - } - - function mintBatchTo(address _receiver, uint256[] calldata _tokenIds, uint256[] calldata _amounts) public override { - IRareERC1155MarketplaceTypes.CheckoutItem[] memory unsupportedItems = - new IRareERC1155MarketplaceTypes.CheckoutItem[](1); - unsupportedItems[0] = IRareERC1155MarketplaceTypes.CheckoutItem({ - itemKind: type(uint8).max, - contractAddress: address(0), - seller: address(0), - currencyAddress: address(0), - tokenId: 0, - price: 0, - quantity: 0, - proof: new bytes32[](0) - }); - (bool success,) = - address(marketplace).call(abi.encodeWithSelector(marketplace.checkout.selector, unsupportedItems)); - reentryBlocked = !success; - super.mintBatchTo(_receiver, _tokenIds, _amounts); - } + RareERC1155Marketplace private marketplace; + bool public reentryBlocked; + + constructor(address _owner, RareERC1155Marketplace _marketplace) CheckoutToggleERC1155(_owner) { + marketplace = _marketplace; + } + + function mintBatchTo(address _receiver, uint256[] calldata _tokenIds, uint256[] calldata _amounts) public override { + IRareERC1155MarketplaceTypes.CheckoutItem[] + memory unsupportedItems = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + unsupportedItems[0] = IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: type(uint8).max, + contractAddress: address(0), + seller: address(0), + currencyAddress: address(0), + tokenId: 0, + price: 0, + quantity: 0, + proof: new bytes32[](0) + }); + (bool success, ) = address(marketplace).call( + abi.encodeWithSelector(marketplace.checkout.selector, unsupportedItems) + ); + reentryBlocked = !success; + super.mintBatchTo(_receiver, _tokenIds, _amounts); + } } contract CheckoutNoOpMintERC1155 is CheckoutToggleERC1155 { - constructor(address _owner) CheckoutToggleERC1155(_owner) {} + constructor(address _owner) CheckoutToggleERC1155(_owner) {} - function mintBatchTo(address, uint256[] calldata, uint256[] calldata) public pure override {} + function mintBatchTo(address, uint256[] calldata, uint256[] calldata) public pure override {} } contract CheckoutPaymentObservingERC1155 is CheckoutToggleERC1155 { - ERC20 private currency; - address private marketplace; + ERC20 private currency; + address private marketplace; - uint256 public marketplaceCurrencyBalanceAtMint; + uint256 public marketplaceCurrencyBalanceAtMint; - constructor(address _owner, ERC20 _currency, address _marketplace) CheckoutToggleERC1155(_owner) { - currency = _currency; - marketplace = _marketplace; - } + constructor(address _owner, ERC20 _currency, address _marketplace) CheckoutToggleERC1155(_owner) { + currency = _currency; + marketplace = _marketplace; + } - function mintBatchTo(address _receiver, uint256[] calldata _tokenIds, uint256[] calldata _amounts) public override { - marketplaceCurrencyBalanceAtMint = currency.balanceOf(marketplace); - super.mintBatchTo(_receiver, _tokenIds, _amounts); - } + function mintBatchTo(address _receiver, uint256[] calldata _tokenIds, uint256[] calldata _amounts) public override { + marketplaceCurrencyBalanceAtMint = currency.balanceOf(marketplace); + super.mintBatchTo(_receiver, _tokenIds, _amounts); + } } contract RejectETH { - receive() external payable { - revert("reject eth"); - } + receive() external payable { + revert("reject eth"); + } } contract CheckoutFailureDecoderHarness is RareERC1155CheckoutExecutionModule { - function checkoutExecutionFailure(bytes memory _revertData) - external - pure - returns (IRareERC1155MarketplaceTypes.CheckoutFailureStage stage, bytes memory failureData) - { - return _checkoutExecutionFailure(_revertData); - } + function checkoutExecutionFailure( + bytes memory _revertData + ) external pure returns (IRareERC1155MarketplaceTypes.CheckoutFailureStage stage, bytes memory failureData) { + return _checkoutExecutionFailure(_revertData); + } } contract RareERC1155MarketplaceSettlementTest is Test { - event MintDirectSaleCancelled(address indexed contractAddress, uint256 indexed tokenId); - - RareERC1155Marketplace private marketplace; - RareERC1155TradeExecutionModule private tradeExecutionModule; - RareERC1155CheckoutExecutionModule private checkoutExecutionModule; - Payments private payments; - RareERC1155 private token; - CheckoutCurrency private currency; - RareERC1155ContractFactory private tokenFactory; - ERC20ApprovalManager private erc20ApprovalManager; - ERC721ApprovalManager private erc721ApprovalManager; - ERC1155ApprovalManager private erc1155ApprovalManager; - - address private deployer = address(0x1000); - address private seller = address(0x2000); - address private sellerTwo = address(0x2500); - address private buyer = address(0x3000); - address private royaltyReceiver = address(0x4000); - address private networkBeneficiary = address(0x5000); - address private rewardAccumulator = address(0x6000); - - address private marketplaceSettings = address(0x7100); - address private stakingSettings = address(0x7200); - address private stakingRegistry = address(0x7300); - address private royaltyEngine = address(0x7400); - address private spaceOperatorRegistry = address(0x7500); - address private approvedTokenRegistry = address(0x7600); - - uint256 private tokenId; - - function setUp() public { - deal(deployer, 100 ether); - deal(seller, 100 ether); - deal(sellerTwo, 100 ether); - deal(buyer, 100 ether); - - vm.startPrank(deployer); - currency = new CheckoutCurrency(); - currency.transfer(buyer, 1_000_000 ether); - erc20ApprovalManager = new ERC20ApprovalManager(); - erc721ApprovalManager = new ERC721ApprovalManager(); - erc1155ApprovalManager = new ERC1155ApprovalManager(); - tradeExecutionModule = new RareERC1155TradeExecutionModule(); - checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); - payments = new Payments(); - marketplace = RareERC1155Marketplace( - address( - new ERC1967Proxy( - address(new RareERC1155Marketplace()), - _initData(address(payments), address(tradeExecutionModule), address(checkoutExecutionModule)) - ) - ) - ); - erc20ApprovalManager.grantOperatorRole(address(marketplace)); - erc1155ApprovalManager.grantOperatorRole(address(marketplace)); - - tokenFactory = new RareERC1155ContractFactory(); - tokenFactory.setDefaultMinter(address(marketplace)); - vm.stopPrank(); - - vm.prank(seller); - token = RareERC1155(tokenFactory.createRareERC1155Contract("Rare Editions", "RED", "ipfs://base/{id}.json")); - - vm.prank(seller); - tokenId = token.createToken("ipfs://token/1.json", 20, seller); - - vm.etch(marketplaceSettings, address(marketplace).code); - vm.etch(stakingSettings, address(marketplace).code); - vm.etch(stakingRegistry, address(marketplace).code); - vm.etch(royaltyEngine, address(marketplace).code); - vm.etch(spaceOperatorRegistry, address(marketplace).code); - vm.etch(approvedTokenRegistry, address(marketplace).code); - } - - function testBuyListingThroughTradeExecutionModule() public { - uint256 price = 1 ether; - uint256 quantity = 2; - - vm.prank(seller); - token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(quantity)); - - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - - vm.prank(seller); - marketplace.setSalePrices( - address(token), - address(0), - _singleSalePriceRequest(tokenId, price, quantity), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - - _mockSecondaryPayout(price * quantity, seller); - - vm.prank(buyer); - marketplace.buyBatch{value: _withFee(price * quantity)}( - address(token), seller, address(0), _singleBuyRequest(tokenId, price, quantity) - ); - - assertEq(token.balanceOf(buyer, tokenId), quantity); - assertEq(token.balanceOf(seller, tokenId), 0); - assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 0); - } - - function testBuyListingAcceptsMaxRoyaltyRecipients() public { - uint256 price = 1 ether; - - vm.prank(seller); - token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); - - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - - vm.prank(seller); - marketplace.setSalePrices( - address(token), - address(0), - _singleSalePriceRequest(tokenId, price, 1), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - - _mockSecondaryPayoutWithRoyalties( - address(token), tokenId, price, seller, _royaltyReceivers(5), _royaltyAmounts(price, 5) - ); - - uint256 sellerBalanceBefore = seller.balance; - uint256 firstRoyaltyBalanceBefore = address(0x4101).balance; - - vm.prank(buyer); - marketplace.buyBatch{value: _withFee(price)}( - address(token), seller, address(0), _singleBuyRequest(tokenId, price, 1) - ); - - assertEq(token.balanceOf(buyer, tokenId), 1); - assertEq(seller.balance, sellerBalanceBefore + ((price * 85) / 100)); - assertEq(address(0x4101).balance, firstRoyaltyBalanceBefore + ((price * 1) / 100)); - } - - function testCheckoutListingTruncatesRoyaltyRecipientsAndFills() public { - uint256 price = 1 ether; - - vm.prank(seller); - token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); - - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - - vm.prank(seller); - marketplace.setSalePrices( - address(token), - address(0), - _singleSalePriceRequest(tokenId, price, 1), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - - _mockSecondaryPayoutWithRoyalties( - address(token), tokenId, price, seller, _royaltyReceivers(6), _royaltyAmounts(price, 6) - ); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); - items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); - - uint256 sellerBalanceBefore = seller.balance; - uint256 firstRoyaltyBalanceBefore = address(0x4101).balance; - uint256 fifthRoyaltyBalanceBefore = address(0x4105).balance; - uint256 sixthRoyaltyBalanceBefore = address(0x4106).balance; - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = - marketplace.checkout{value: _withFee(price)}(items); - - assertEq(execution.summary.filledCount, 1); - assertEq(execution.summary.skippedCount, 0); - assertTrue(execution.items[0].filled); - assertEq(token.balanceOf(buyer, tokenId), 1); - assertEq(seller.balance, sellerBalanceBefore + ((price * 85) / 100)); - assertEq(address(0x4101).balance, firstRoyaltyBalanceBefore + ((price * 1) / 100)); - assertEq(address(0x4105).balance, fifthRoyaltyBalanceBefore + ((price * 5) / 100)); - assertEq(address(0x4106).balance, sixthRoyaltyBalanceBefore); - } - - function testBuyListingRejectsZeroAddressEthRoyaltyRecipient() public { - uint256 price = 1 ether; - - vm.prank(seller); - token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); - - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - - vm.prank(seller); - marketplace.setSalePrices( - address(token), - address(0), - _singleSalePriceRequest(tokenId, price, 1), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - - _mockSecondaryPayoutWithRoyalties( - address(token), tokenId, price, seller, _zeroAddressRoyaltyReceivers(), _singleRoyaltyAmounts(price) - ); - - vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.RoyaltyRecipientCannotBeZero.selector, 0)); - marketplace.buyBatch{value: _withFee(price)}( - address(token), seller, address(0), _singleBuyRequest(tokenId, price, 1) - ); - - assertEq(token.balanceOf(seller, tokenId), 1); - assertEq(token.balanceOf(buyer, tokenId), 0); - assertEq(address(payments).balance, 0); - } - - function testBuyListingRejectsZeroAddressERC20RoyaltyRecipient() public { - uint256 price = 1 ether; - - vm.prank(seller); - token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); - - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - - _mockApprovedCurrency(address(currency)); - - vm.prank(seller); - marketplace.setSalePrices( - address(token), - address(currency), - _singleSalePriceRequest(tokenId, price, 1), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - - _mockSecondaryPayoutWithRoyalties( - address(token), tokenId, price, seller, _zeroAddressRoyaltyReceivers(), _singleRoyaltyAmounts(price) - ); - - vm.prank(buyer); - currency.approve(address(erc20ApprovalManager), _withFee(price)); - - vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.RoyaltyRecipientCannotBeZero.selector, 0)); - marketplace.buyBatch(address(token), seller, address(currency), _singleBuyRequest(tokenId, price, 1)); - - assertEq(token.balanceOf(seller, tokenId), 1); - assertEq(token.balanceOf(buyer, tokenId), 0); - assertEq(currency.balanceOf(address(marketplace)), 0); - } - - function testBuyListingSkipsZeroValueERC20MarketplaceFeeRecipient() public { - CheckoutRejectZeroTransferCurrency rejectingCurrency = new CheckoutRejectZeroTransferCurrency(); - uint256 price = 100; - - rejectingCurrency.transfer(buyer, _withFee(price)); - - vm.prank(seller); - token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); - - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - - _mockApprovedCurrency(address(rejectingCurrency)); - - vm.prank(seller); - marketplace.setSalePrices( - address(token), - address(rejectingCurrency), - _singleSalePriceRequest(tokenId, price, 1), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, price), - abi.encode(_fee(price)) - ); - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, seller), - abi.encode(rewardAccumulator) - ); - vm.mockCall( - stakingSettings, abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, price), abi.encode(0) - ); - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), - abi.encode(new address payable[](0), new uint256[](0)) - ); - - vm.prank(buyer); - rejectingCurrency.approve(address(erc20ApprovalManager), _withFee(price)); - - vm.prank(buyer); - marketplace.buyBatch(address(token), seller, address(rejectingCurrency), _singleBuyRequest(tokenId, price, 1)); - - assertEq(token.balanceOf(buyer, tokenId), 1); - assertEq(rejectingCurrency.balanceOf(rewardAccumulator), 0); - } - - function testAcceptOfferThroughTradeExecutionModule() public { - uint256 price = 1 ether; - uint256 offerQuantity = 2; - - vm.prank(seller); - token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(offerQuantity)); - - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - - _mockMarketplaceFee(price * offerQuantity, seller); - vm.prank(buyer); - marketplace.makeOffer{value: _withFee(price * offerQuantity)}( - address(token), tokenId, address(0), price, offerQuantity, 0 - ); - - _mockSecondaryPayout(price, seller); - vm.prank(seller); - marketplace.acceptOffer( - address(token), tokenId, buyer, address(0), price, 1, _singleSplitRecipients(seller), _singleSplitRatios() - ); - - IRareERC1155MarketplaceTypes.Offer memory offer = - marketplace.getOffer(address(token), tokenId, buyer, address(0)); - assertEq(offer.quantity, 1); - assertEq(offer.initialQuantity, offerQuantity); - assertEq(offer.marketplaceFeeRemaining, _fee(price)); - assertEq(offer.marketplaceFeeTotal, _fee(price * offerQuantity)); - assertEq(offer.stakingFeeRemaining, _stakingFee(price)); - assertEq(offer.stakingFeeTotal, _stakingFee(price * offerQuantity)); - assertEq(token.balanceOf(buyer, tokenId), 1); - assertEq(token.balanceOf(seller, tokenId), 1); - } - - function testAcceptOfferUsesOfferTimeStakingFeeAfterSettingsRotation() public { - uint256 price = 1 ether; - uint256 offerQuantity = 2; - - vm.prank(seller); - token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(offerQuantity)); - - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - - _mockMarketplaceFee(price * offerQuantity, seller); - vm.prank(buyer); - marketplace.makeOffer{value: _withFee(price * offerQuantity)}( - address(token), tokenId, address(0), price, offerQuantity, 0 - ); - - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, price), - abi.encode(_fee(price) + 1) - ); - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), - abi.encode(new address payable[](0), new uint256[](0)) - ); - - vm.prank(seller); - marketplace.acceptOffer( - address(token), tokenId, buyer, address(0), price, 1, _singleSplitRecipients(seller), _singleSplitRatios() - ); - - IRareERC1155MarketplaceTypes.Offer memory offer = - marketplace.getOffer(address(token), tokenId, buyer, address(0)); - assertEq(offer.quantity, 1); - assertEq(offer.marketplaceFeeRemaining, _fee(price)); - assertEq(offer.stakingFeeRemaining, _stakingFee(price)); - assertEq(networkBeneficiary.balance, _fee(price) - _stakingFee(price)); - assertEq(rewardAccumulator.balance, _stakingFee(price)); - assertEq(token.balanceOf(buyer, tokenId), 1); - assertEq(token.balanceOf(seller, tokenId), 1); - } - - function testPartialOfferFillsAllocateMarketplaceFeeCumulatively() public { - uint256 price = 1; - uint256 offerQuantity = 100; - uint256 fillQuantity = 34; - - vm.prank(seller); - uint256 highQuantityTokenId = token.createToken("ipfs://token/high-quantity.json", offerQuantity, seller); - - vm.prank(seller); - token.mintBatchTo(seller, _singleTokenIds(highQuantityTokenId), _singleAmounts(fillQuantity)); - - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - - _mockMarketplaceFee(price * offerQuantity, seller); - vm.prank(buyer); - marketplace.makeOffer{value: _withFee(price * offerQuantity)}( - address(token), highQuantityTokenId, address(0), price, offerQuantity, 0 - ); - - _mockSecondaryPayoutFor(address(token), highQuantityTokenId, price, seller); - for (uint256 i = 0; i < fillQuantity; i++) { - vm.prank(seller); - marketplace.acceptOffer( - address(token), - highQuantityTokenId, - buyer, - address(0), - price, - 1, - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - } - - IRareERC1155MarketplaceTypes.Offer memory offer = - marketplace.getOffer(address(token), highQuantityTokenId, buyer, address(0)); - assertEq(offer.quantity, offerQuantity - fillQuantity); - assertEq(offer.initialQuantity, offerQuantity); - assertEq(offer.marketplaceFeeRemaining, _fee(price * offerQuantity) - 1); - assertEq(offer.marketplaceFeeTotal, _fee(price * offerQuantity)); - assertEq(offer.stakingFeeRemaining, _stakingFee(price * offerQuantity)); - assertEq(offer.stakingFeeTotal, _stakingFee(price * offerQuantity)); - assertEq(networkBeneficiary.balance, 1); - assertEq(rewardAccumulator.balance, 0); - - vm.prank(buyer); - marketplace.cancelOffer(address(token), highQuantityTokenId, address(0)); - - assertEq(buyer.balance, 100 ether - fillQuantity - 1); - assertEq(seller.balance, 100 ether + fillQuantity); - assertEq(marketplace.getOffer(address(token), highQuantityTokenId, buyer, address(0)).quantity, 0); - } - - function testMintDirectSaleThroughTradeExecutionModule() public { - uint256 price = 1 ether; - uint256 quantity = 2; - - vm.prank(seller); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(tokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - - _mockPrimaryPayout(price * quantity, seller); - - vm.prank(buyer); - marketplace.mintDirectSaleBatch{value: _withFee(price * quantity)}( - address(token), address(0), _singleMintRequest(tokenId, price, quantity) - ); - - assertEq(token.balanceOf(buyer, tokenId), quantity); - assertEq(marketplace.getTokenMintsPerAddress(address(token), tokenId, buyer), 0); - } - - function testPrepareMintDirectSaleRejectsNonERC1155Contract() public { - uint256 price = 1 ether; - RejectETH invalidToken = new RejectETH(); - - vm.prank(seller); - vm.expectRevert( - abi.encodeWithSelector(IRareERC1155MarketplaceTypes.InvalidERC1155Contract.selector, address(invalidToken)) - ); - marketplace.prepareMintDirectSales( - address(invalidToken), - address(0), - _singleDirectSaleRequest(tokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - } - - function testCancelMintDirectSalesClearsDirectSaleConfig() public { - uint256 price = 1 ether; - - vm.prank(seller); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(tokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - - vm.expectEmit(true, true, false, false); - emit MintDirectSaleCancelled(address(token), tokenId); - - vm.prank(seller); - marketplace.cancelMintDirectSales(address(token), _singleTokenIds(tokenId)); - - IRareERC1155MarketplaceTypes.DirectSaleConfig memory config = - marketplace.getDirectSaleConfig(address(token), tokenId); - assertEq(config.seller, address(0)); - assertEq(config.currencyAddress, address(0)); - assertEq(config.price, 0); - assertEq(config.startTime, 0); - assertEq(config.maxMints, 0); - assertEq(config.splitRecipients.length, 0); - assertEq(config.splitRatios.length, 0); - - vm.prank(buyer); - vm.expectRevert( - abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.DirectSaleNotConfigured.selector, address(token), tokenId - ) - ); - marketplace.mintDirectSaleBatch(address(token), address(0), _singleMintRequest(tokenId, price, 1)); - } - - function testCancelMintDirectSalesRejectsNonContractOwner() public { - uint256 price = 1 ether; - - vm.prank(seller); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(tokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - - vm.prank(buyer); - vm.expectRevert( - abi.encodeWithSelector(IRareERC1155MarketplaceTypes.NotContractOwner.selector, address(token), buyer) - ); - marketplace.cancelMintDirectSales(address(token), _singleTokenIds(tokenId)); - } - - function testMintDirectSaleRevertsWhenMintDoesNotIncreaseBuyerBalance() public { - uint256 price = 1 ether; - uint256 noOpTokenId = 91; - uint256 quantity = 2; - CheckoutNoOpMintERC1155 noOpToken = new CheckoutNoOpMintERC1155(seller); - - vm.prank(seller); - marketplace.prepareMintDirectSales( - address(noOpToken), - address(0), - _singleDirectSaleRequest(noOpTokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - _mockMarketplaceFee(price * quantity, seller); - - vm.prank(buyer); - vm.expectRevert( - abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector, - address(noOpToken), - noOpTokenId, - buyer, - quantity - ) - ); - marketplace.mintDirectSaleBatch{value: _withFee(price * quantity)}( - address(noOpToken), address(0), _singleMintRequest(noOpTokenId, price, quantity) - ); - - assertEq(noOpToken.balanceOf(buyer, noOpTokenId), 0); - } - - function testMintDirectSaleBatchRevertsWithSharedValidationReason() public { - uint256 price = 1 ether; - - vm.prank(seller); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(tokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - - vm.prank(buyer); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.PriceMismatch.selector, price + 1, price)); - marketplace.mintDirectSaleBatch(address(token), address(0), _singleMintRequest(tokenId, price + 1, 1)); - } - - function testBuyBatchRevertsWithSharedValidationReason() public { - uint256 price = 1 ether; - - vm.prank(seller); - token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); - - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - - vm.prank(seller); - marketplace.setSalePrices( - address(token), - address(0), - _singleSalePriceRequest(tokenId, price, 1), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - - vm.prank(buyer); - vm.expectRevert( - abi.encodeWithSelector(IRareERC1155MarketplaceTypes.QuantityExceedsSalePriceQuantity.selector, 2, 1) - ); - marketplace.buyBatch(address(token), seller, address(0), _singleBuyRequest(tokenId, price, 2)); - } - - function testMarketplaceUsesSeparateBatchAndCheckoutCaps() public { - assertEq(marketplace.MAX_BATCH_SIZE(), 75); - assertEq(marketplace.MAX_CHECKOUT_SIZE(), 50); - - IRareERC1155MarketplaceTypes.MintRequest[] memory mintRequests = - new IRareERC1155MarketplaceTypes.MintRequest[](76); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.BatchSizeExceeded.selector, 76, 75)); - marketplace.mintDirectSaleBatch(address(token), address(0), mintRequests); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory checkoutItems = - new IRareERC1155MarketplaceTypes.CheckoutItem[](51); - vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.BatchSizeExceeded.selector, 51, 50)); - marketplace.checkout(checkoutItems); - } - - function testCheckoutFillsMixedDirectSaleAndListingAcrossCurrencies() public { - uint256 mintPrice = 1 ether; - uint256 listingPrice = 2 ether; - - vm.prank(seller); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(tokenId, mintPrice, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - _mockPrimaryPayoutFor(address(token), mintPrice, seller); - - vm.prank(sellerTwo); - RareERC1155 otherToken = - RareERC1155(tokenFactory.createRareERC1155Contract("Other Editions", "OED", "ipfs://other/{id}.json")); - vm.prank(sellerTwo); - uint256 otherTokenId = otherToken.createToken("ipfs://other/1.json", 10, sellerTwo); - vm.prank(sellerTwo); - otherToken.mintBatchTo(sellerTwo, _singleTokenIds(otherTokenId), _singleAmounts(1)); - vm.prank(sellerTwo); - otherToken.setApprovalForAll(address(erc1155ApprovalManager), true); - - _mockApprovedCurrency(address(currency)); - vm.prank(sellerTwo); - marketplace.setSalePrices( - address(otherToken), - address(currency), - _singleSalePriceRequest(otherTokenId, listingPrice, 1), - _singleSplitRecipients(sellerTwo), - _singleSplitRatios() - ); - _mockSecondaryPayoutFor(address(otherToken), otherTokenId, listingPrice, sellerTwo); - - vm.prank(buyer); - currency.approve(address(erc20ApprovalManager), _withFee(listingPrice)); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); - items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, mintPrice, 1); - items[1] = - _listingCheckoutItem(address(otherToken), sellerTwo, address(currency), otherTokenId, listingPrice, 1); - - uint256 buyerCurrencyBefore = currency.balanceOf(buyer); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = - marketplace.checkout{value: _withFee(mintPrice)}(items); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; - - assertEq(summary.filledCount, 2); - assertEq(summary.skippedCount, 0); - assertEq(summary.ethSpent, _withFee(mintPrice)); - assertEq(summary.ethRefunded, 0); - assertEq(token.balanceOf(buyer, tokenId), 1); - assertEq(otherToken.balanceOf(buyer, otherTokenId), 1); - assertEq(otherToken.balanceOf(sellerTwo, otherTokenId), 0); - assertEq(currency.balanceOf(buyer), buyerCurrencyBefore - _withFee(listingPrice)); - assertEq(currency.balanceOf(address(marketplace)), 0); - assertEq(address(marketplace).balance, 0); - } - - function testCheckoutDirectSaleMintResolvesSellerFromConfig() public { - uint256 price = 1 ether; - - vm.prank(seller); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(tokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - _mockPrimaryPayout(price, seller); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); - items[0] = _directSaleCheckoutItem(address(token), sellerTwo, address(0), tokenId, price, 1); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = - marketplace.checkout{value: _withFee(price)}(items); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; - - assertEq(summary.filledCount, 1); - assertEq(summary.skippedCount, 0); - assertEq(summary.ethSpent, _withFee(price)); - assertEq(token.balanceOf(buyer, tokenId), 1); - } - - function testCheckoutAggregatesDirectSaleMaxMintsAcrossDuplicateItems() public { - uint256 price = 1 ether; - uint256 maxMints = 1; - - vm.prank(seller); - uint256 limitedTokenId = token.createToken("ipfs://token/max-mints.json", 2, seller); - - vm.prank(seller); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(limitedTokenId, price, 0, maxMints), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - _mockPrimaryPayoutFor(address(token), price, seller); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); - items[0] = _directSaleCheckoutItem(address(token), seller, address(0), limitedTokenId, price, 1); - items[1] = _directSaleCheckoutItem(address(token), seller, address(0), limitedTokenId, price, 1); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = - marketplace.checkout{value: _withFee(price) * 2}(items); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; - - assertEq(summary.filledCount, 1); - assertEq(summary.skippedCount, 1); - assertEq(summary.ethSpent, _withFee(price)); - assertEq(summary.ethRefunded, _withFee(price)); - assertEq(token.balanceOf(buyer, limitedTokenId), 1); - assertTrue(execution.items[0].filled); - _assertSkipped( - execution.items[1], - IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, - IRareERC1155MarketplaceTypes.MaxMintExceeded.selector - ); - assertEq( - execution.items[1].failureData, - abi.encodeWithSelector(IRareERC1155MarketplaceTypes.MaxMintExceeded.selector, 2, maxMints) - ); - } - - function testCheckoutCountsDuplicateDirectSaleItemsAsOneTransactionLimitUse() public { - uint256 price = 1 ether; - - vm.startPrank(seller); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(tokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - marketplace.setTokenMintLimits(address(token), _singleTokenLimitRequest(tokenId, 2)); - marketplace.setTokenTxLimits(address(token), _singleTokenLimitRequest(tokenId, 1)); - vm.stopPrank(); - _mockPrimaryPayoutFor(address(token), price, seller); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); - items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); - items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = - marketplace.checkout{value: _withFee(price) * 2}(items); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; - - assertEq(summary.filledCount, 2); - assertEq(summary.skippedCount, 0); - assertEq(summary.ethSpent, _withFee(price) * 2); - assertEq(summary.ethRefunded, 0); - assertEq(token.balanceOf(buyer, tokenId), 2); - assertTrue(execution.items[0].filled); - assertTrue(execution.items[1].filled); - assertEq(marketplace.getTokenMintsPerAddress(address(token), tokenId, buyer), 2); - assertEq(marketplace.getTokenTxsPerAddress(address(token), tokenId, buyer), 1); - } - - function testCheckoutSkipsInvalidItemsAndRefundsUnusedETH() public { - uint256 mintPrice = 1 ether; - uint256 listingPrice = 2 ether; - uint256 refundAmount = 0.5 ether; - - vm.prank(seller); - token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - vm.prank(seller); - marketplace.setSalePrices( - address(token), - address(0), - _singleSalePriceRequest(tokenId, listingPrice, 1), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - - vm.prank(seller); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(tokenId, mintPrice, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - _mockPrimaryPayoutFor(address(token), mintPrice, seller); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); - items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, listingPrice + 1, 1); - items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, mintPrice, 1); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = - marketplace.checkout{value: _withFee(mintPrice) + refundAmount}(items); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; - - assertEq(summary.filledCount, 1); - assertEq(summary.skippedCount, 1); - assertEq(summary.ethSpent, _withFee(mintPrice)); - assertEq(summary.ethRefunded, refundAmount); - assertEq(token.balanceOf(buyer, tokenId), 1); - assertEq(token.balanceOf(seller, tokenId), 1); - assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); - assertEq(address(marketplace).balance, 0); - } - - function testCheckoutSkipsSoldOutDirectSaleMintAndRollsBackLimitCounters() public { - uint256 price = 1 ether; - - vm.startPrank(seller); - uint256 soldOutTokenId = token.createToken("ipfs://token/sold-out-primary.json", 1, seller); - token.mintBatchTo(seller, _singleTokenIds(soldOutTokenId), _singleAmounts(1)); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(soldOutTokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - marketplace.setTokenMintLimits(address(token), _singleTokenLimitRequest(soldOutTokenId, 5)); - marketplace.setTokenTxLimits(address(token), _singleTokenLimitRequest(soldOutTokenId, 5)); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(tokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - vm.stopPrank(); - - _mockPrimaryPayoutFor(address(token), price, seller); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); - items[0] = _directSaleCheckoutItem(address(token), seller, address(0), soldOutTokenId, price, 1); - items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = - marketplace.checkout{value: _withFee(price)}(items); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; - - assertEq(summary.filledCount, 1); - assertEq(summary.skippedCount, 1); - assertEq(summary.ethSpent, _withFee(price)); - assertEq(token.balanceOf(buyer, soldOutTokenId), 0); - assertEq(token.balanceOf(buyer, tokenId), 1); - assertEq(marketplace.getTokenMintsPerAddress(address(token), soldOutTokenId, buyer), 0); - assertEq(marketplace.getTokenTxsPerAddress(address(token), soldOutTokenId, buyer), 0); - } - - function testCheckoutSkipsDirectSaleMintWhenMarketplaceMinterApprovalRevoked() public { - uint256 price = 1 ether; - - vm.startPrank(seller); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(tokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - token.setMinterApproval(address(marketplace), false); - token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - marketplace.setSalePrices( - address(token), - address(0), - _singleSalePriceRequest(tokenId, price, 1), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - vm.stopPrank(); - - _mockSecondaryPayout(price, seller); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); - items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); - items[1] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = - marketplace.checkout{value: _withFee(price)}(items); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; - - assertEq(summary.filledCount, 1); - assertEq(summary.skippedCount, 1); - assertEq(summary.ethSpent, _withFee(price)); - assertEq(token.balanceOf(buyer, tokenId), 1); - assertEq(token.totalMintedForToken(tokenId), 1); - assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 0); - } - - function testCheckoutSkipsAdditionalValidationFailuresBeforeSuccessfulFill() public { - uint256 price = 1 ether; - uint256 expensivePrice = 20 ether; - - vm.startPrank(seller); - uint256 soldOutTokenId = token.createToken("ipfs://token/sold-out.json", 5, seller); - uint256 expiredTokenId = token.createToken("ipfs://token/expired.json", 5, seller); - uint256 expensiveTokenId = token.createToken("ipfs://token/expensive.json", 5, seller); - uint256 allowlistTokenId = token.createToken("ipfs://token/allowlist.json", 5, seller); - token.mintBatchTo( - seller, - _tokenIds(soldOutTokenId, expiredTokenId, expensiveTokenId), - _amounts(uint256(1), uint256(1), uint256(1)) - ); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - marketplace.setSalePrices( - address(token), - address(0), - _singleSalePriceRequest(soldOutTokenId, price, 1), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - marketplace.setSalePrices( - address(token), - address(0), - _singleExpiringSalePriceRequest(expiredTokenId, price, 1, block.timestamp + 1), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - marketplace.setSalePrices( - address(token), - address(0), - _singleSalePriceRequest(expensiveTokenId, expensivePrice, 1), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(allowlistTokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - marketplace.setTokenAllowListConfigs( - address(token), - _singleAllowListConfigRequest( - allowlistTokenId, keccak256(abi.encodePacked(address(0xdead))), block.timestamp + 1 days - ) - ); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(tokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - vm.stopPrank(); - - _mockMarketplaceFee(expensivePrice, seller); - _mockPrimaryPayoutFor(address(token), price, seller); - - vm.warp(block.timestamp + 2); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](5); - items[0] = _listingCheckoutItem(address(token), seller, address(0), soldOutTokenId, price, 2); - items[1] = _listingCheckoutItem(address(token), seller, address(0), expiredTokenId, price, 1); - items[2] = _listingCheckoutItem(address(token), seller, address(0), expensiveTokenId, expensivePrice, 1); - items[3] = _directSaleCheckoutItem(address(token), seller, address(0), allowlistTokenId, price, 1); - items[4] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = - marketplace.checkout{value: _withFee(price)}(items); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; - - assertEq(summary.filledCount, 1); - assertEq(summary.skippedCount, 4); - assertEq(summary.ethSpent, _withFee(price)); - assertEq(summary.ethRefunded, 0); - assertEq(token.balanceOf(buyer, tokenId), 1); - assertEq(token.balanceOf(buyer, soldOutTokenId), 0); - assertEq(token.balanceOf(buyer, expiredTokenId), 0); - assertEq(token.balanceOf(buyer, expensiveTokenId), 0); - assertEq(token.balanceOf(buyer, allowlistTokenId), 0); - assertEq(token.balanceOf(seller, soldOutTokenId), 1); - assertEq(token.balanceOf(seller, expiredTokenId), 1); - assertEq(token.balanceOf(seller, expensiveTokenId), 1); - } - - function testCheckoutSkipsInsufficientERC20AllowanceWithoutPullingFunds() public { - uint256 mintPrice = 1 ether; - uint256 listingPrice = 2 ether; - - vm.prank(seller); - uint256 listedTokenId = token.createToken("ipfs://token/2.json", 5, seller); - vm.prank(seller); - token.mintBatchTo(seller, _singleTokenIds(listedTokenId), _singleAmounts(1)); - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - - _mockApprovedCurrency(address(currency)); - _mockMarketplaceFee(listingPrice, seller); - vm.prank(seller); - marketplace.setSalePrices( - address(token), - address(currency), - _singleSalePriceRequest(listedTokenId, listingPrice, 1), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - - vm.prank(seller); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(tokenId, mintPrice, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - _mockPrimaryPayoutFor(address(token), mintPrice, seller); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); - items[0] = _listingCheckoutItem(address(token), seller, address(currency), listedTokenId, listingPrice, 1); - items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, mintPrice, 1); - - uint256 buyerCurrencyBefore = currency.balanceOf(buyer); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = - marketplace.checkout{value: _withFee(mintPrice)}(items); - IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; - - assertEq(summary.filledCount, 1); - assertEq(summary.skippedCount, 1); - assertEq(summary.ethSpent, _withFee(mintPrice)); - assertEq(currency.balanceOf(buyer), buyerCurrencyBefore); - assertEq(token.balanceOf(buyer, listedTokenId), 0); - assertEq(token.balanceOf(seller, listedTokenId), 1); - assertEq(marketplace.getSalePrice(address(token), listedTokenId, seller).quantity, 1); - assertEq(token.balanceOf(buyer, tokenId), 1); - } - - function testCheckoutSucceedsWhenEveryItemIsSkipped() public { - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); - items[0] = _unsupportedCheckoutItem(); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(items); - - assertEq(execution.summary.filledCount, 0); - assertEq(execution.summary.skippedCount, 1); - assertEq(execution.items.length, 1); - assertEq( - uint8(execution.items[0].failureStage), uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION) - ); - assertEq(execution.items[0].reason, IRareERC1155MarketplaceTypes.UnsupportedCheckoutItemKind.selector); - assertEq( - execution.items[0].failureData, - abi.encodeWithSelector(IRareERC1155MarketplaceTypes.UnsupportedCheckoutItemKind.selector, items[0].itemKind) - ); - } - - function testCheckoutSkipsListingWhenCurrencyIsNoLongerApproved() public { - uint256 price = 1 ether; - - vm.prank(seller); - token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); - - vm.prank(seller); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - - _mockApprovedCurrency(address(currency)); - vm.prank(seller); - marketplace.setSalePrices( - address(token), - address(currency), - _singleSalePriceRequest(tokenId, price, 1), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - - vm.clearMockedCalls(); - vm.mockCall( - approvedTokenRegistry, - abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(currency)), - abi.encode(false) - ); - - vm.prank(buyer); - currency.approve(address(erc20ApprovalManager), _withFee(price)); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); - items[0] = _listingCheckoutItem(address(token), seller, address(currency), tokenId, price, 1); - - uint256 buyerCurrencyBefore = currency.balanceOf(buyer); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(items); - - assertEq(execution.summary.filledCount, 0); - assertEq(execution.summary.skippedCount, 1); - assertEq(currency.balanceOf(buyer), buyerCurrencyBefore); - assertEq(token.balanceOf(buyer, tokenId), 0); - assertEq(token.balanceOf(seller, tokenId), 1); - assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); - _assertSkipped( - execution.items[0], - IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, - IRareERC1155MarketplaceTypes.CurrencyNotApproved.selector - ); - assertEq( - execution.items[0].failureData, - abi.encodeWithSelector(IRareERC1155MarketplaceTypes.CurrencyNotApproved.selector, address(currency)) - ); - } - - function testCheckoutSkipsTransferFailure() public { - CheckoutNoOpERC1155 brokenToken = new CheckoutNoOpERC1155(); - uint256 brokenTokenId = 88; - uint256 price = 1 ether; - - brokenToken.setBalance(seller, brokenTokenId, 1); - vm.prank(seller); - brokenToken.setApprovalForAll(address(erc1155ApprovalManager), true); - - vm.prank(seller); - marketplace.setSalePrices( - address(brokenToken), - address(0), - _singleSalePriceRequest(brokenTokenId, price, 1), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - _mockMarketplaceFee(price, seller); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); - items[0] = _listingCheckoutItem(address(brokenToken), seller, address(0), brokenTokenId, price, 1); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = - marketplace.checkout{value: _withFee(price)}(items); - - assertEq(execution.summary.filledCount, 0); - assertEq(execution.summary.skippedCount, 1); - assertEq(execution.summary.ethSpent, 0); - assertEq(execution.summary.ethRefunded, _withFee(price)); - assertEq( - uint8(execution.items[0].failureStage), uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER) - ); - assertEq(execution.items[0].reason, IRareERC1155MarketplaceTypes.InvalidERC1155Transfer.selector); - assertEq( - execution.items[0].failureData, - abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.InvalidERC1155Transfer.selector, - address(brokenToken), - brokenTokenId, - seller, - buyer, - 1 - ) - ); - - assertEq(brokenToken.balanceOf(seller, brokenTokenId), 1); - assertEq(brokenToken.balanceOf(buyer, brokenTokenId), 0); - assertEq(marketplace.getSalePrice(address(brokenToken), brokenTokenId, seller).quantity, 1); - } - - function testCheckoutSkipsDirectSaleMintWhenMintDoesNotIncreaseBuyerBalance() public { - uint256 price = 1 ether; - uint256 noOpTokenId = 92; - CheckoutNoOpMintERC1155 noOpToken = new CheckoutNoOpMintERC1155(seller); - - vm.prank(seller); - marketplace.prepareMintDirectSales( - address(noOpToken), - address(0), - _singleDirectSaleRequest(noOpTokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - _mockMarketplaceFee(price, seller); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); - items[0] = _directSaleCheckoutItem(address(noOpToken), seller, address(0), noOpTokenId, price, 1); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = - marketplace.checkout{value: _withFee(price)}(items); - - assertEq(execution.summary.filledCount, 0); - assertEq(execution.summary.skippedCount, 1); - assertEq(execution.summary.ethSpent, 0); - assertEq(execution.summary.ethRefunded, _withFee(price)); - _assertSkipped( - execution.items[0], - IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT, - IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector - ); - assertEq( - execution.items[0].failureData, - abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector, address(noOpToken), noOpTokenId, buyer, 1 - ) - ); - assertEq(noOpToken.balanceOf(buyer, noOpTokenId), 0); - } - - function testCheckoutValidationRevertsBecomeValidationSkipsAndContinue() public { - uint256 price = 1 ether; - uint256 ownerRevertTokenId = 101; - uint256 supportsRevertTokenId = 102; - uint256 approvalRevertTokenId = 103; - uint256 balanceRevertTokenId = 104; - - CheckoutToggleERC1155 ownerRevertToken = new CheckoutToggleERC1155(seller); - vm.prank(seller); - marketplace.prepareMintDirectSales( - address(ownerRevertToken), - address(0), - _singleDirectSaleRequest(ownerRevertTokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - ownerRevertToken.setRevertOwner(true); - - CheckoutToggleERC1155 supportsRevertToken = _listedToggleToken(supportsRevertTokenId, price); - supportsRevertToken.setRevertSupportsInterface(true); - - CheckoutToggleERC1155 approvalRevertToken = _listedToggleToken(approvalRevertTokenId, price); - approvalRevertToken.setRevertApproval(true); - - CheckoutToggleERC1155 balanceRevertToken = _listedToggleToken(balanceRevertTokenId, price); - balanceRevertToken.setRevertBalance(true); - - vm.prank(seller); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(tokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - _mockPrimaryPayoutFor(address(token), price, seller); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](5); - items[0] = _directSaleCheckoutItem(address(ownerRevertToken), seller, address(0), ownerRevertTokenId, price, 1); - items[1] = - _listingCheckoutItem(address(supportsRevertToken), seller, address(0), supportsRevertTokenId, price, 1); - items[2] = - _listingCheckoutItem(address(approvalRevertToken), seller, address(0), approvalRevertTokenId, price, 1); - items[3] = _listingCheckoutItem(address(balanceRevertToken), seller, address(0), balanceRevertTokenId, price, 1); - items[4] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = - marketplace.checkout{value: _withFee(price)}(items); - - assertEq(execution.summary.filledCount, 1); - assertEq(execution.summary.skippedCount, 4); - assertEq(token.balanceOf(buyer, tokenId), 1); - _assertSkipped( - execution.items[0], - IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, - IRareERC1155MarketplaceTypes.ContractHasNoOwner.selector - ); - _assertSkipped( - execution.items[1], - IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, - IRareERC1155MarketplaceTypes.InvalidERC1155Contract.selector - ); - _assertSkipped( - execution.items[2], - IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, - IRareERC1155MarketplaceTypes.MarketplaceNotApproved.selector - ); - _assertSkipped( - execution.items[3], - IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, - IRareERC1155MarketplaceTypes.InsufficientTokenBalance.selector - ); - assertTrue(execution.items[4].filled); - } - - function testCheckoutSkipsPayoutFailureAndContinues() public { - uint256 price = 1 ether; - uint256 primaryTokenId; - - vm.startPrank(seller); - token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - marketplace.setSalePrices( - address(token), - address(0), - _singleSalePriceRequest(tokenId, price, 1), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - primaryTokenId = token.createToken("ipfs://token/primary-after-payout-fail.json", 20, seller); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(primaryTokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - vm.stopPrank(); - - _mockMarketplaceFee(price, seller); - _mockPrimaryPayoutFor(address(token), price, seller); - bytes memory royaltyRevertData = abi.encodeWithSignature("Error(string)", "royalty failed"); - vm.mockCallRevert( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), - royaltyRevertData - ); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); - items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); - items[1] = _directSaleCheckoutItem(address(token), seller, address(0), primaryTokenId, price, 1); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = - marketplace.checkout{value: _withFee(price)}(items); - - assertEq(execution.summary.filledCount, 1); - assertEq(execution.summary.skippedCount, 1); - assertEq(token.balanceOf(buyer, tokenId), 0); - assertEq(token.balanceOf(buyer, primaryTokenId), 1); - assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); - _assertSkipped(execution.items[0], IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT, bytes4(0x08c379a0)); - assertEq(execution.items[0].failureData, royaltyRevertData); - assertTrue(execution.items[1].filled); - } - - function testCheckoutPayoutFailureCannotSpoofFailureStage() public { - uint256 price = 1 ether; - bytes memory spoofedPayoutRevertData = abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, - IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, - abi.encodeWithSelector(IRareERC1155MarketplaceTypes.PriceMismatch.selector, price + 1, price) - ); - - vm.startPrank(seller); - token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); - token.setApprovalForAll(address(erc1155ApprovalManager), true); - marketplace.setSalePrices( - address(token), - address(0), - _singleSalePriceRequest(tokenId, price, 1), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - vm.stopPrank(); - - _mockMarketplaceFee(price, seller); - vm.mockCallRevert( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), - spoofedPayoutRevertData - ); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); - items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = - marketplace.checkout{value: _withFee(price)}(items); - - assertEq(execution.summary.filledCount, 0); - assertEq(execution.summary.skippedCount, 1); - assertEq(execution.summary.ethSpent, 0); - assertEq(execution.summary.ethRefunded, _withFee(price)); - assertEq(token.balanceOf(buyer, tokenId), 0); - assertEq(token.balanceOf(seller, tokenId), 1); - assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); - _assertSkipped( - execution.items[0], - IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT, - IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector - ); - assertEq(execution.items[0].failureData, spoofedPayoutRevertData); - } - - function testCheckoutExecutionFailureDecodesStructuredStage() public { - CheckoutFailureDecoderHarness harness = new CheckoutFailureDecoderHarness(); - bytes memory mintFailureData = abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector, address(token), tokenId, buyer, 1 - ); - bytes memory revertData = abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, - IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT, - mintFailureData - ); - - (IRareERC1155MarketplaceTypes.CheckoutFailureStage stage, bytes memory failureData) = - harness.checkoutExecutionFailure(revertData); - - assertEq(uint8(stage), uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT)); - assertEq(failureData, mintFailureData); - } - - function testCheckoutExecutionFailureFallsBackToUnknownForRawRevertData() public { - bytes memory revertData = abi.encodeWithSignature("Error(string)", "unexpected failure"); - - _assertUnknownCheckoutFailure(revertData); - } - - function testCheckoutExecutionFailureFallsBackToUnknownForMalformedStructuredPayloads() public { - bytes memory shortPayload = abi.encodePacked( - IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, - bytes32(uint256(uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT))) - ); - _assertUnknownCheckoutFailure(shortPayload); - - bytes memory invalidStagePayload = abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, uint256(255), bytes("stage") - ); - _assertUnknownCheckoutFailure(invalidStagePayload); - - bytes memory invalidOffsetPayload = abi.encodePacked( - IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, - bytes32(uint256(uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT))), - bytes32(uint256(96)), - bytes32(uint256(0)) - ); - _assertUnknownCheckoutFailure(invalidOffsetPayload); - - bytes memory invalidLengthPayload = abi.encodePacked( - IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, - bytes32(uint256(uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT))), - bytes32(uint256(64)), - bytes32(uint256(1)) - ); - _assertUnknownCheckoutFailure(invalidLengthPayload); - } - - function testCheckoutEthRecipientRejectionEscrowsInPayments() public { - uint256 price = 1 ether; - RejectETH rejectRecipient = new RejectETH(); - address payable[] memory splitRecipients = new address payable[](1); - splitRecipients[0] = payable(address(rejectRecipient)); - - vm.prank(seller); - marketplace.prepareMintDirectSales( - address(token), - address(0), - _singleDirectSaleRequest(tokenId, price, 0, 0), - splitRecipients, - _singleSplitRatios() - ); - _mockPrimaryPayoutFor(address(token), price, seller); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); - items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = - marketplace.checkout{value: _withFee(price)}(items); - - assertEq(execution.summary.filledCount, 1); - assertEq(execution.summary.skippedCount, 0); - assertEq(token.balanceOf(buyer, tokenId), 1); - assertEq(payments.payments(address(rejectRecipient)), price - ((price * 10) / 100)); - } - - function testCheckoutItemExecutionKeepsMarketplaceReentrancyGuard() public { - uint256 price = 1 ether; - uint256 reentrantTokenId = 77; - CheckoutReentrantERC1155 reentrantToken = new CheckoutReentrantERC1155(seller, marketplace); - - vm.prank(seller); - marketplace.prepareMintDirectSales( - address(reentrantToken), - address(0), - _singleDirectSaleRequest(reentrantTokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - _mockPrimaryPayoutFor(address(reentrantToken), price, seller); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); - items[0] = _directSaleCheckoutItem(address(reentrantToken), seller, address(0), reentrantTokenId, price, 1); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = - marketplace.checkout{value: _withFee(price)}(items); - - assertEq(execution.summary.filledCount, 1); - assertTrue(reentrantToken.reentryBlocked()); - assertEq(reentrantToken.balanceOf(buyer, reentrantTokenId), 1); - } - - function testCheckoutDirectSaleMintCollectsERC20BeforeMint() public { - uint256 price = 1 ether; - uint256 observedTokenId = 78; - CheckoutPaymentObservingERC1155 observingToken = - new CheckoutPaymentObservingERC1155(seller, currency, address(marketplace)); - - _mockApprovedCurrency(address(currency)); - vm.prank(seller); - marketplace.prepareMintDirectSales( - address(observingToken), - address(currency), - _singleDirectSaleRequest(observedTokenId, price, 0, 0), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - _mockPrimaryPayoutFor(address(observingToken), price, seller); - - vm.prank(buyer); - currency.approve(address(erc20ApprovalManager), _withFee(price)); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); - items[0] = - _directSaleCheckoutItem(address(observingToken), seller, address(currency), observedTokenId, price, 1); - - vm.prank(buyer); - IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(items); - - assertEq(execution.summary.filledCount, 1); - assertEq(observingToken.marketplaceCurrencyBalanceAtMint(), _withFee(price)); - assertEq(observingToken.balanceOf(buyer, observedTokenId), 1); - assertEq(currency.balanceOf(address(marketplace)), 0); - } - - function testDirectCallsToExecutionModulesRevert() public { - IRareERC1155MarketplaceTypes.BuyRequest[] memory requests = new IRareERC1155MarketplaceTypes.BuyRequest[](1); - requests[0] = IRareERC1155MarketplaceTypes.BuyRequest(tokenId, 1 ether, 1); - - vm.expectRevert(IRareERC1155MarketplaceTypes.DirectModuleCallUnsupported.selector); - tradeExecutionModule.buyBatch(address(token), seller, address(0), requests); - - IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](0); - - vm.expectRevert(IRareERC1155MarketplaceTypes.DirectModuleCallUnsupported.selector); - checkoutExecutionModule.checkout(items); - - vm.expectRevert(IRareERC1155MarketplaceTypes.DirectModuleCallUnsupported.selector); - checkoutExecutionModule.executeCheckoutItem( - _unsupportedCheckoutItem(), 0, address(0), 0, 0, new address payable[](0), new uint8[](0) - ); - - vm.expectRevert(IRareERC1155MarketplaceTypes.DirectModuleCallUnsupported.selector); - checkoutExecutionModule.executeCheckoutPayout( - _unsupportedCheckoutItem(), seller, 0, 0, new address payable[](0), new uint8[](0) - ); - - (bool success,) = address(marketplace) - .call( - abi.encodeWithSelector( - IRareERC1155CheckoutExecutionModule.executeCheckoutItem.selector, - _unsupportedCheckoutItem(), - 0, - address(0), - 0, - 0, - new address payable[](0), - new uint8[](0) - ) - ); - assertFalse(success); - } - - function testOwnerCanUpdateTradeExecutionModule() public { - vm.prank(deployer); - RareERC1155TradeExecutionModule newTradeExecutionModule = new RareERC1155TradeExecutionModule(); - - vm.prank(deployer); - marketplace.setTradeExecutionModule(address(newTradeExecutionModule)); - - assertEq(marketplace.getTradeExecutionModule(), address(newTradeExecutionModule)); - } - - function testOwnerCanUpdateCheckoutExecutionModule() public { - vm.prank(deployer); - RareERC1155CheckoutExecutionModule newCheckoutExecutionModule = new RareERC1155CheckoutExecutionModule(); - - vm.prank(deployer); - marketplace.setCheckoutExecutionModule(address(newCheckoutExecutionModule)); - - assertEq(marketplace.getCheckoutExecutionModule(), address(newCheckoutExecutionModule)); - } - - function testSetTokenAllowListConfigsRevertsWhenPaused() public { - vm.prank(deployer); - marketplace.setContractPaused(true); - - vm.prank(seller); - vm.expectRevert(IRareERC1155MarketplaceTypes.ContractPaused.selector); - marketplace.setTokenAllowListConfigs( - address(token), - _singleAllowListConfigRequest(tokenId, keccak256(abi.encodePacked(buyer)), block.timestamp + 1 days) - ); - } - - function testSetTokenAllowListConfigsRevertsWhenActiveEndTimestampNotFuture() public { - uint256 currentTime = block.timestamp; - - vm.prank(seller); - vm.expectRevert( - abi.encodeWithSelector( - IRareERC1155MarketplaceTypes.AllowListEndTimestampInvalid.selector, currentTime, currentTime - ) - ); - marketplace.setTokenAllowListConfigs( - address(token), _singleAllowListConfigRequest(tokenId, keccak256(abi.encodePacked(buyer)), currentTime) - ); - } - - function testSetTokenAllowListConfigsAllowsDisablingWithZeroRoot() public { - vm.startPrank(seller); - marketplace.setTokenAllowListConfigs( - address(token), - _singleAllowListConfigRequest(tokenId, keccak256(abi.encodePacked(buyer)), block.timestamp + 1 days) - ); - marketplace.setTokenAllowListConfigs(address(token), _singleAllowListConfigRequest(tokenId, bytes32(0), 0)); - vm.stopPrank(); - - IRareERC1155MarketplaceTypes.AllowListConfig memory config = - marketplace.getTokenAllowListConfig(address(token), tokenId); - assertEq(config.root, bytes32(0)); - assertEq(config.endTimestamp, 0); - } - - function testSetTokenMintLimitsRevertsWhenPaused() public { - vm.prank(deployer); - marketplace.setContractPaused(true); - - vm.prank(seller); - vm.expectRevert(IRareERC1155MarketplaceTypes.ContractPaused.selector); - marketplace.setTokenMintLimits(address(token), _singleTokenLimitRequest(tokenId, 5)); - } - - function testSetTokenTxLimitsRevertsWhenPaused() public { - vm.prank(deployer); - marketplace.setContractPaused(true); - - vm.prank(seller); - vm.expectRevert(IRareERC1155MarketplaceTypes.ContractPaused.selector); - marketplace.setTokenTxLimits(address(token), _singleTokenLimitRequest(tokenId, 5)); - } - - function _initData(address _payments, address _tradeExecutionModule, address _checkoutExecutionModule) - private - view - returns (bytes memory) - { - return abi.encodeWithSelector( - RareERC1155Marketplace.initialize.selector, - networkBeneficiary, - marketplaceSettings, - spaceOperatorRegistry, - royaltyEngine, - _payments, - approvedTokenRegistry, - stakingSettings, - stakingRegistry, - address(erc20ApprovalManager), - address(erc721ApprovalManager), - address(erc1155ApprovalManager), - _tradeExecutionModule, - _checkoutExecutionModule - ); - } - - function _singleSalePriceRequest(uint256 _tokenId, uint256 _price, uint256 _quantity) - private - pure - returns (IRareERC1155MarketplaceTypes.SalePriceRequest[] memory) - { - IRareERC1155MarketplaceTypes.SalePriceRequest[] memory requests = - new IRareERC1155MarketplaceTypes.SalePriceRequest[](1); - requests[0] = IRareERC1155MarketplaceTypes.SalePriceRequest(_tokenId, _price, _quantity, 0); - return requests; - } - - function _singleExpiringSalePriceRequest( - uint256 _tokenId, - uint256 _price, - uint256 _quantity, - uint256 _expirationTime - ) private pure returns (IRareERC1155MarketplaceTypes.SalePriceRequest[] memory) { - IRareERC1155MarketplaceTypes.SalePriceRequest[] memory requests = - new IRareERC1155MarketplaceTypes.SalePriceRequest[](1); - requests[0] = IRareERC1155MarketplaceTypes.SalePriceRequest(_tokenId, _price, _quantity, _expirationTime); - return requests; - } - - function _singleDirectSaleRequest(uint256 _tokenId, uint256 _price, uint256 _startTime, uint256 _maxMints) - private - pure - returns (IRareERC1155MarketplaceTypes.DirectSaleRequest[] memory) - { - IRareERC1155MarketplaceTypes.DirectSaleRequest[] memory requests = - new IRareERC1155MarketplaceTypes.DirectSaleRequest[](1); - requests[0] = IRareERC1155MarketplaceTypes.DirectSaleRequest(_tokenId, _price, _startTime, _maxMints); - return requests; - } - - function _singleAllowListConfigRequest(uint256 _tokenId, bytes32 _root, uint256 _endTimestamp) - private - pure - returns (IRareERC1155MarketplaceTypes.AllowListConfigRequest[] memory) - { - IRareERC1155MarketplaceTypes.AllowListConfigRequest[] memory requests = - new IRareERC1155MarketplaceTypes.AllowListConfigRequest[](1); - requests[0] = IRareERC1155MarketplaceTypes.AllowListConfigRequest(_tokenId, _root, _endTimestamp); - return requests; - } - - function _singleTokenLimitRequest(uint256 _tokenId, uint256 _limit) - private - pure - returns (IRareERC1155MarketplaceTypes.TokenLimitRequest[] memory) - { - IRareERC1155MarketplaceTypes.TokenLimitRequest[] memory requests = - new IRareERC1155MarketplaceTypes.TokenLimitRequest[](1); - requests[0] = IRareERC1155MarketplaceTypes.TokenLimitRequest(_tokenId, _limit); - return requests; - } - - function _singleMintRequest(uint256 _tokenId, uint256 _price, uint256 _quantity) - private - pure - returns (IRareERC1155MarketplaceTypes.MintRequest[] memory) - { - bytes32[] memory proof = new bytes32[](0); - IRareERC1155MarketplaceTypes.MintRequest[] memory requests = new IRareERC1155MarketplaceTypes.MintRequest[](1); - requests[0] = IRareERC1155MarketplaceTypes.MintRequest(_tokenId, _price, _quantity, proof); - return requests; - } - - function _singleBuyRequest(uint256 _tokenId, uint256 _price, uint256 _quantity) - private - pure - returns (IRareERC1155MarketplaceTypes.BuyRequest[] memory) - { - IRareERC1155MarketplaceTypes.BuyRequest[] memory requests = new IRareERC1155MarketplaceTypes.BuyRequest[](1); - requests[0] = IRareERC1155MarketplaceTypes.BuyRequest(_tokenId, _price, _quantity); - return requests; - } - - function _directSaleCheckoutItem( - address _contractAddress, - address _seller, - address _currencyAddress, - uint256 _tokenId, - uint256 _price, - uint256 _quantity - ) private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { - return IRareERC1155MarketplaceTypes.CheckoutItem({ - itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.DIRECT_SALE_MINT), - contractAddress: _contractAddress, - seller: _seller, - currencyAddress: _currencyAddress, - tokenId: _tokenId, - price: _price, - quantity: _quantity, - proof: new bytes32[](0) - }); - } - - function _listingCheckoutItem( - address _contractAddress, - address _seller, - address _currencyAddress, - uint256 _tokenId, - uint256 _price, - uint256 _quantity - ) private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { - return IRareERC1155MarketplaceTypes.CheckoutItem({ - itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.LISTING_BUY), - contractAddress: _contractAddress, - seller: _seller, - currencyAddress: _currencyAddress, - tokenId: _tokenId, - price: _price, - quantity: _quantity, - proof: new bytes32[](0) - }); - } - - function _unsupportedCheckoutItem() private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { - return IRareERC1155MarketplaceTypes.CheckoutItem({ - itemKind: type(uint8).max, - contractAddress: address(0), - seller: address(0), - currencyAddress: address(0), - tokenId: 0, - price: 0, - quantity: 0, - proof: new bytes32[](0) - }); - } - - function _listedToggleToken(uint256 _tokenId, uint256 _price) private returns (CheckoutToggleERC1155 toggleToken) { - toggleToken = new CheckoutToggleERC1155(seller); - toggleToken.setBalance(seller, _tokenId, 1); - vm.prank(seller); - toggleToken.setApprovalForAll(address(erc1155ApprovalManager), true); - vm.prank(seller); - marketplace.setSalePrices( - address(toggleToken), - address(0), - _singleSalePriceRequest(_tokenId, _price, 1), - _singleSplitRecipients(seller), - _singleSplitRatios() - ); - } - - function _assertSkipped( - IRareERC1155MarketplaceTypes.CheckoutItemResult memory _result, - IRareERC1155MarketplaceTypes.CheckoutFailureStage _stage, - bytes4 _reason - ) private { - assertFalse(_result.filled); - assertEq(uint8(_result.failureStage), uint8(_stage)); - assertEq(_result.reason, _reason); - } - - function _assertUnknownCheckoutFailure(bytes memory _revertData) private { - CheckoutFailureDecoderHarness harness = new CheckoutFailureDecoderHarness(); - - (IRareERC1155MarketplaceTypes.CheckoutFailureStage stage, bytes memory failureData) = - harness.checkoutExecutionFailure(_revertData); - - assertEq(uint8(stage), uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.UNKNOWN)); - assertEq(failureData, _revertData); - } - - function _singleSplitRecipients(address _recipient) private pure returns (address payable[] memory recipients) { - recipients = new address payable[](1); - recipients[0] = payable(_recipient); - } - - function _singleSplitRatios() private pure returns (uint8[] memory ratios) { - ratios = new uint8[](1); - ratios[0] = 100; - } - - function _singleTokenIds(uint256 _tokenId) private pure returns (uint256[] memory tokenIds) { - tokenIds = new uint256[](1); - tokenIds[0] = _tokenId; - } - - function _tokenIds(uint256 _firstTokenId, uint256 _secondTokenId, uint256 _thirdTokenId) - private - pure - returns (uint256[] memory tokenIds) - { - tokenIds = new uint256[](3); - tokenIds[0] = _firstTokenId; - tokenIds[1] = _secondTokenId; - tokenIds[2] = _thirdTokenId; - } - - function _singleAmounts(uint256 _amount) private pure returns (uint256[] memory amounts) { - amounts = new uint256[](1); - amounts[0] = _amount; - } - - function _amounts(uint256 _firstAmount, uint256 _secondAmount, uint256 _thirdAmount) - private - pure - returns (uint256[] memory amounts) - { - amounts = new uint256[](3); - amounts[0] = _firstAmount; - amounts[1] = _secondAmount; - amounts[2] = _thirdAmount; - } - - function _mockSecondaryPayout(uint256 _amount, address _seller) private { - _mockSecondaryPayoutFor(address(token), tokenId, _amount, _seller); - } - - function _mockSecondaryPayoutFor(address _contractAddress, uint256 _tokenId, uint256 _amount, address _seller) - private - { - address payable[] memory receivers = new address payable[](1); - uint256[] memory royalties = new uint256[](1); - receivers[0] = payable(royaltyReceiver); - royalties[0] = (_amount * 10) / 100; - - _mockSecondaryPayoutWithRoyalties(_contractAddress, _tokenId, _amount, _seller, receivers, royalties); - } - - function _mockSecondaryPayoutWithRoyalties( - address _contractAddress, - uint256 _tokenId, - uint256 _amount, - address _seller, - address payable[] memory _receivers, - uint256[] memory _royalties - ) private { - _mockMarketplaceFee(_amount, _seller); - vm.mockCall( - royaltyEngine, - abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, _contractAddress, _tokenId, _amount), - abi.encode(_receivers, _royalties) - ); - } - - function _royaltyReceivers(uint256 _count) private pure returns (address payable[] memory receivers) { - address payable[6] memory allReceivers = [ - payable(address(0x4101)), - payable(address(0x4102)), - payable(address(0x4103)), - payable(address(0x4104)), - payable(address(0x4105)), - payable(address(0x4106)) - ]; - receivers = new address payable[](_count); - for (uint256 i = 0; i < _count; i++) { - receivers[i] = allReceivers[i]; - } - } - - function _royaltyAmounts(uint256 _amount, uint256 _count) private pure returns (uint256[] memory royalties) { - royalties = new uint256[](_count); - for (uint256 i = 0; i < _count; i++) { - royalties[i] = (_amount * (i + 1)) / 100; - } - } - - function _zeroAddressRoyaltyReceivers() private pure returns (address payable[] memory receivers) { - receivers = new address payable[](1); - receivers[0] = payable(address(0)); - } - - function _singleRoyaltyAmounts(uint256 _amount) private pure returns (uint256[] memory royalties) { - royalties = new uint256[](1); - royalties[0] = (_amount * 10) / 100; - } - - function _mockApprovedCurrency(address _currencyAddress) private { - vm.mockCall( - approvedTokenRegistry, - abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, _currencyAddress), - abi.encode(true) - ); - } - - function _mockMarketplaceFee(uint256 _amount, address _seller) private { - _mockApprovedCurrency(address(0)); - vm.mockCall( - marketplaceSettings, - abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, _amount), - abi.encode(_fee(_amount)) - ); - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, _seller), - abi.encode(rewardAccumulator) - ); - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, _amount), - abi.encode((_amount * 1) / 100) - ); - } - - function _mockPrimaryPayout(uint256 _amount, address _seller) private { - _mockPrimaryPayoutFor(address(token), _amount, _seller); - } - - function _mockPrimaryPayoutFor(address _contractAddress, uint256 _amount, address _seller) private { - _mockMarketplaceFee(_amount, _seller); - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSignature("isApprovedSpaceOperator(address)", _seller), - abi.encode(false) - ); - vm.mockCall( - marketplaceSettings, - abi.encodeWithSignature("getERC721ContractPrimarySaleFeePercentage(address)", _contractAddress), - abi.encode(uint256(10)) - ); - } - - function _withFee(uint256 _amount) private pure returns (uint256) { - return _amount + _fee(_amount); - } - - function _fee(uint256 _amount) private pure returns (uint256) { - return (_amount * 3) / 100; - } - - function _stakingFee(uint256 _amount) private pure returns (uint256) { - return (_amount * 1) / 100; - } + event MintDirectSaleCancelled(address indexed contractAddress, uint256 indexed tokenId); + + RareERC1155Marketplace private marketplace; + RareERC1155TradeExecutionModule private tradeExecutionModule; + RareERC1155CheckoutExecutionModule private checkoutExecutionModule; + Payments private payments; + RareERC1155 private token; + CheckoutCurrency private currency; + RareERC1155ContractFactory private tokenFactory; + ERC20ApprovalManager private erc20ApprovalManager; + ERC721ApprovalManager private erc721ApprovalManager; + ERC1155ApprovalManager private erc1155ApprovalManager; + + address private deployer = address(0x1000); + address private seller = address(0x2000); + address private sellerTwo = address(0x2500); + address private buyer = address(0x3000); + address private royaltyReceiver = address(0x4000); + address private networkBeneficiary = address(0x5000); + address private rewardAccumulator = address(0x6000); + + address private marketplaceSettings = address(0x7100); + address private stakingSettings = address(0x7200); + address private stakingRegistry = address(0x7300); + address private royaltyEngine = address(0x7400); + address private spaceOperatorRegistry = address(0x7500); + address private approvedTokenRegistry = address(0x7600); + + uint256 private tokenId; + + function setUp() public { + deal(deployer, 100 ether); + deal(seller, 100 ether); + deal(sellerTwo, 100 ether); + deal(buyer, 100 ether); + + vm.startPrank(deployer); + currency = new CheckoutCurrency(); + currency.transfer(buyer, 1_000_000 ether); + erc20ApprovalManager = new ERC20ApprovalManager(); + erc721ApprovalManager = new ERC721ApprovalManager(); + erc1155ApprovalManager = new ERC1155ApprovalManager(); + tradeExecutionModule = new RareERC1155TradeExecutionModule(); + checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); + payments = new Payments(); + marketplace = RareERC1155Marketplace( + address( + new ERC1967Proxy( + address(new RareERC1155Marketplace()), + _initData(address(payments), address(tradeExecutionModule), address(checkoutExecutionModule)) + ) + ) + ); + erc20ApprovalManager.grantOperatorRole(address(marketplace)); + erc1155ApprovalManager.grantOperatorRole(address(marketplace)); + + tokenFactory = new RareERC1155ContractFactory(); + tokenFactory.setDefaultMinter(address(marketplace)); + vm.stopPrank(); + + vm.prank(seller); + token = RareERC1155(tokenFactory.createRareERC1155Contract("Rare Editions", "RED", "ipfs://base/{id}.json")); + + vm.prank(seller); + tokenId = token.createToken("ipfs://token/1.json", 20, seller); + + vm.etch(marketplaceSettings, address(marketplace).code); + vm.etch(stakingSettings, address(marketplace).code); + vm.etch(stakingRegistry, address(marketplace).code); + vm.etch(royaltyEngine, address(marketplace).code); + vm.etch(spaceOperatorRegistry, address(marketplace).code); + vm.etch(approvedTokenRegistry, address(marketplace).code); + } + + function testBuyListingThroughTradeExecutionModule() public { + uint256 price = 1 ether; + uint256 quantity = 2; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(quantity)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, quantity), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockSecondaryPayout(price * quantity, seller); + + vm.prank(buyer); + marketplace.buyBatch{value: _withFee(price * quantity)}( + address(token), + seller, + address(0), + _singleBuyRequest(tokenId, price, quantity) + ); + + assertEq(token.balanceOf(buyer, tokenId), quantity); + assertEq(token.balanceOf(seller, tokenId), 0); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 0); + } + + function testBuyListingAcceptsMaxRoyaltyRecipients() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockSecondaryPayoutWithRoyalties( + address(token), + tokenId, + price, + seller, + _royaltyReceivers(5), + _royaltyAmounts(price, 5) + ); + + uint256 sellerBalanceBefore = seller.balance; + uint256 firstRoyaltyBalanceBefore = address(0x4101).balance; + + vm.prank(buyer); + marketplace.buyBatch{value: _withFee(price)}( + address(token), + seller, + address(0), + _singleBuyRequest(tokenId, price, 1) + ); + + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(seller.balance, sellerBalanceBefore + ((price * 85) / 100)); + assertEq(address(0x4101).balance, firstRoyaltyBalanceBefore + ((price * 1) / 100)); + } + + function testCheckoutListingTruncatesRoyaltyRecipientsAndFills() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockSecondaryPayoutWithRoyalties( + address(token), + tokenId, + price, + seller, + _royaltyReceivers(6), + _royaltyAmounts(price, 6) + ); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + uint256 sellerBalanceBefore = seller.balance; + uint256 firstRoyaltyBalanceBefore = address(0x4101).balance; + uint256 fifthRoyaltyBalanceBefore = address(0x4105).balance; + uint256 sixthRoyaltyBalanceBefore = address(0x4106).balance; + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 0); + assertTrue(execution.items[0].filled); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(seller.balance, sellerBalanceBefore + ((price * 85) / 100)); + assertEq(address(0x4101).balance, firstRoyaltyBalanceBefore + ((price * 1) / 100)); + assertEq(address(0x4105).balance, fifthRoyaltyBalanceBefore + ((price * 5) / 100)); + assertEq(address(0x4106).balance, sixthRoyaltyBalanceBefore); + } + + function testBuyListingRejectsZeroAddressEthRoyaltyRecipient() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockSecondaryPayoutWithRoyalties( + address(token), + tokenId, + price, + seller, + _zeroAddressRoyaltyReceivers(), + _singleRoyaltyAmounts(price) + ); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.RoyaltyRecipientCannotBeZero.selector, 0)); + marketplace.buyBatch{value: _withFee(price)}( + address(token), + seller, + address(0), + _singleBuyRequest(tokenId, price, 1) + ); + + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(address(payments).balance, 0); + } + + function testBuyListingRejectsZeroAddressERC20RoyaltyRecipient() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockApprovedCurrency(address(currency)); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(currency), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockSecondaryPayoutWithRoyalties( + address(token), + tokenId, + price, + seller, + _zeroAddressRoyaltyReceivers(), + _singleRoyaltyAmounts(price) + ); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), _withFee(price)); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.RoyaltyRecipientCannotBeZero.selector, 0)); + marketplace.buyBatch(address(token), seller, address(currency), _singleBuyRequest(tokenId, price, 1)); + + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(currency.balanceOf(address(marketplace)), 0); + } + + function testBuyListingSkipsZeroValueERC20MarketplaceFeeRecipient() public { + CheckoutRejectZeroTransferCurrency rejectingCurrency = new CheckoutRejectZeroTransferCurrency(); + uint256 price = 100; + + rejectingCurrency.transfer(buyer, _withFee(price)); + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockApprovedCurrency(address(rejectingCurrency)); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(rejectingCurrency), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, price), + abi.encode(_fee(price)) + ); + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, seller), + abi.encode(rewardAccumulator) + ); + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, price), + abi.encode(0) + ); + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), + abi.encode(new address payable[](0), new uint256[](0)) + ); + + vm.prank(buyer); + rejectingCurrency.approve(address(erc20ApprovalManager), _withFee(price)); + + vm.prank(buyer); + marketplace.buyBatch(address(token), seller, address(rejectingCurrency), _singleBuyRequest(tokenId, price, 1)); + + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(rejectingCurrency.balanceOf(rewardAccumulator), 0); + } + + function testAcceptOfferThroughTradeExecutionModule() public { + uint256 price = 1 ether; + uint256 offerQuantity = 2; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(offerQuantity)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockMarketplaceFee(price * offerQuantity, seller); + vm.prank(buyer); + marketplace.makeOffer{value: _withFee(price * offerQuantity)}( + address(token), + tokenId, + address(0), + price, + offerQuantity, + 0 + ); + + _mockSecondaryPayout(price, seller); + vm.prank(seller); + marketplace.acceptOffer( + address(token), + tokenId, + buyer, + address(0), + price, + 1, + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + IRareERC1155MarketplaceTypes.Offer memory offer = marketplace.getOffer(address(token), tokenId, buyer, address(0)); + assertEq(offer.quantity, 1); + assertEq(offer.initialQuantity, offerQuantity); + assertEq(offer.marketplaceFeeRemaining, _fee(price)); + assertEq(offer.marketplaceFeeTotal, _fee(price * offerQuantity)); + assertEq(offer.stakingFeeRemaining, _stakingFee(price)); + assertEq(offer.stakingFeeTotal, _stakingFee(price * offerQuantity)); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(seller, tokenId), 1); + } + + function testAcceptOfferUsesOfferTimeStakingFeeAfterSettingsRotation() public { + uint256 price = 1 ether; + uint256 offerQuantity = 2; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(offerQuantity)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockMarketplaceFee(price * offerQuantity, seller); + vm.prank(buyer); + marketplace.makeOffer{value: _withFee(price * offerQuantity)}( + address(token), + tokenId, + address(0), + price, + offerQuantity, + 0 + ); + + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, price), + abi.encode(_fee(price) + 1) + ); + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), + abi.encode(new address payable[](0), new uint256[](0)) + ); + + vm.prank(seller); + marketplace.acceptOffer( + address(token), + tokenId, + buyer, + address(0), + price, + 1, + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + IRareERC1155MarketplaceTypes.Offer memory offer = marketplace.getOffer(address(token), tokenId, buyer, address(0)); + assertEq(offer.quantity, 1); + assertEq(offer.marketplaceFeeRemaining, _fee(price)); + assertEq(offer.stakingFeeRemaining, _stakingFee(price)); + assertEq(networkBeneficiary.balance, _fee(price) - _stakingFee(price)); + assertEq(rewardAccumulator.balance, _stakingFee(price)); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(seller, tokenId), 1); + } + + function testPartialOfferFillsAllocateMarketplaceFeeCumulatively() public { + uint256 price = 1; + uint256 offerQuantity = 100; + uint256 fillQuantity = 34; + + vm.prank(seller); + uint256 highQuantityTokenId = token.createToken("ipfs://token/high-quantity.json", offerQuantity, seller); + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(highQuantityTokenId), _singleAmounts(fillQuantity)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockMarketplaceFee(price * offerQuantity, seller); + vm.prank(buyer); + marketplace.makeOffer{value: _withFee(price * offerQuantity)}( + address(token), + highQuantityTokenId, + address(0), + price, + offerQuantity, + 0 + ); + + _mockSecondaryPayoutFor(address(token), highQuantityTokenId, price, seller); + for (uint256 i = 0; i < fillQuantity; i++) { + vm.prank(seller); + marketplace.acceptOffer( + address(token), + highQuantityTokenId, + buyer, + address(0), + price, + 1, + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + } + + IRareERC1155MarketplaceTypes.Offer memory offer = marketplace.getOffer( + address(token), + highQuantityTokenId, + buyer, + address(0) + ); + assertEq(offer.quantity, offerQuantity - fillQuantity); + assertEq(offer.initialQuantity, offerQuantity); + assertEq(offer.marketplaceFeeRemaining, _fee(price * offerQuantity) - 1); + assertEq(offer.marketplaceFeeTotal, _fee(price * offerQuantity)); + assertEq(offer.stakingFeeRemaining, _stakingFee(price * offerQuantity)); + assertEq(offer.stakingFeeTotal, _stakingFee(price * offerQuantity)); + assertEq(networkBeneficiary.balance, 1); + assertEq(rewardAccumulator.balance, 0); + + vm.prank(buyer); + marketplace.cancelOffer(address(token), highQuantityTokenId, address(0)); + + assertEq(buyer.balance, 100 ether - fillQuantity - 1); + assertEq(seller.balance, 100 ether + fillQuantity); + assertEq(marketplace.getOffer(address(token), highQuantityTokenId, buyer, address(0)).quantity, 0); + } + + function testOfferEscrowTracksRemainingQuantityAndFeesAcrossPartialFills() public { + uint256 price = 1 ether; + uint256 offerQuantity = 3; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(offerQuantity)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockMarketplaceFee(price * offerQuantity, seller); + vm.prank(buyer); + marketplace.makeOffer{value: _withFee(price * offerQuantity)}( + address(token), + tokenId, + address(0), + price, + offerQuantity, + 0 + ); + + assertEq(address(marketplace).balance, _withFee(price * offerQuantity)); + + _mockSecondaryPayout(price, seller); + vm.prank(seller); + marketplace.acceptOffer( + address(token), + tokenId, + buyer, + address(0), + price, + 1, + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + IRareERC1155MarketplaceTypes.Offer memory offer = marketplace.getOffer(address(token), tokenId, buyer, address(0)); + assertEq(offer.quantity, 2); + assertEq(offer.initialQuantity, offerQuantity); + assertEq(offer.marketplaceFeeRemaining, _fee(price * 2)); + assertEq(offer.stakingFeeRemaining, _stakingFee(price * 2)); + assertEq(address(marketplace).balance, _withFee(price * 2)); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(seller, tokenId), 2); + + _mockSecondaryPayout(price * 2, seller); + vm.prank(seller); + marketplace.acceptOffer( + address(token), + tokenId, + buyer, + address(0), + price, + 2, + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + offer = marketplace.getOffer(address(token), tokenId, buyer, address(0)); + assertEq(offer.quantity, 0); + assertEq(offer.initialQuantity, 0); + assertEq(offer.marketplaceFeeRemaining, 0); + assertEq(offer.stakingFeeRemaining, 0); + assertEq(address(marketplace).balance, 0); + assertEq(token.balanceOf(buyer, tokenId), offerQuantity); + assertEq(token.balanceOf(seller, tokenId), 0); + } + + function testListingQuantityConservationAcrossPartialFillsAndCancel() public { + uint256 price = 1 ether; + uint256 mintedQuantity = 5; + uint256 listedQuantity = 4; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(mintedQuantity)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, listedQuantity), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockSecondaryPayout(price, seller); + vm.prank(buyer); + marketplace.buyBatch{value: _withFee(price)}( + address(token), + seller, + address(0), + _singleBuyRequest(tokenId, price, 1) + ); + + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, listedQuantity - 1); + assertEq(token.balanceOf(seller, tokenId), mintedQuantity - 1); + assertEq(token.balanceOf(buyer, tokenId), 1); + + _mockSecondaryPayout(price * 2, seller); + vm.prank(buyer); + marketplace.buyBatch{value: _withFee(price * 2)}( + address(token), + seller, + address(0), + _singleBuyRequest(tokenId, price, 2) + ); + + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, listedQuantity - 3); + assertEq(token.balanceOf(seller, tokenId), mintedQuantity - 3); + assertEq(token.balanceOf(buyer, tokenId), 3); + + vm.prank(seller); + marketplace.cancelSalePrices(address(token), _singleTokenIds(tokenId)); + + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 0); + assertEq(token.balanceOf(seller, tokenId), mintedQuantity - 3); + assertEq(token.balanceOf(buyer, tokenId), 3); + } + + function testMintDirectSaleThroughTradeExecutionModule() public { + uint256 price = 1 ether; + uint256 quantity = 2; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockPrimaryPayout(price * quantity, seller); + + vm.prank(buyer); + marketplace.mintDirectSaleBatch{value: _withFee(price * quantity)}( + address(token), + address(0), + _singleMintRequest(tokenId, price, quantity) + ); + + assertEq(token.balanceOf(buyer, tokenId), quantity); + assertEq(marketplace.getTokenMintsPerAddress(address(token), tokenId, buyer), 0); + } + + function testPrepareMintDirectSaleRejectsNonERC1155Contract() public { + uint256 price = 1 ether; + RejectETH invalidToken = new RejectETH(); + + vm.prank(seller); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.InvalidERC1155Contract.selector, address(invalidToken)) + ); + marketplace.prepareMintDirectSales( + address(invalidToken), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + } + + function testCancelMintDirectSalesClearsDirectSaleConfig() public { + uint256 price = 1 ether; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.expectEmit(true, true, false, false); + emit MintDirectSaleCancelled(address(token), tokenId); + + vm.prank(seller); + marketplace.cancelMintDirectSales(address(token), _singleTokenIds(tokenId)); + + IRareERC1155MarketplaceTypes.DirectSaleConfig memory config = marketplace.getDirectSaleConfig( + address(token), + tokenId + ); + assertEq(config.seller, address(0)); + assertEq(config.currencyAddress, address(0)); + assertEq(config.price, 0); + assertEq(config.startTime, 0); + assertEq(config.maxMints, 0); + assertEq(config.splitRecipients.length, 0); + assertEq(config.splitRatios.length, 0); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.DirectSaleNotConfigured.selector, address(token), tokenId) + ); + marketplace.mintDirectSaleBatch(address(token), address(0), _singleMintRequest(tokenId, price, 1)); + } + + function testCancelMintDirectSalesRejectsNonContractOwner() public { + uint256 price = 1 ether; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.NotContractOwner.selector, address(token), buyer) + ); + marketplace.cancelMintDirectSales(address(token), _singleTokenIds(tokenId)); + } + + function testCancelMintDirectSalesRevertsWhenOwnerReadReverts() public { + uint256 price = 1 ether; + uint256 revertingOwnerTokenId = 89; + CheckoutToggleERC1155 revertingOwnerToken = new CheckoutToggleERC1155(seller); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(revertingOwnerToken), + address(0), + _singleDirectSaleRequest(revertingOwnerTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + revertingOwnerToken.setRevertOwner(true); + + vm.prank(seller); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.ContractHasNoOwner.selector, address(revertingOwnerToken)) + ); + marketplace.cancelMintDirectSales(address(revertingOwnerToken), _singleTokenIds(revertingOwnerTokenId)); + } + + function testMintDirectSaleRevertsWhenMintDoesNotIncreaseBuyerBalance() public { + uint256 price = 1 ether; + uint256 noOpTokenId = 91; + uint256 quantity = 2; + CheckoutNoOpMintERC1155 noOpToken = new CheckoutNoOpMintERC1155(seller); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(noOpToken), + address(0), + _singleDirectSaleRequest(noOpTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockMarketplaceFee(price * quantity, seller); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector, + address(noOpToken), + noOpTokenId, + buyer, + quantity + ) + ); + marketplace.mintDirectSaleBatch{value: _withFee(price * quantity)}( + address(noOpToken), + address(0), + _singleMintRequest(noOpTokenId, price, quantity) + ); + + assertEq(noOpToken.balanceOf(buyer, noOpTokenId), 0); + } + + function testMintDirectSaleBatchRevertsWithSharedValidationReason() public { + uint256 price = 1 ether; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.PriceMismatch.selector, price + 1, price)); + marketplace.mintDirectSaleBatch(address(token), address(0), _singleMintRequest(tokenId, price + 1, 1)); + } + + function testBuyBatchRevertsWithSharedValidationReason() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.QuantityExceedsSalePriceQuantity.selector, 2, 1) + ); + marketplace.buyBatch(address(token), seller, address(0), _singleBuyRequest(tokenId, price, 2)); + } + + function testMarketplaceUsesSeparateBatchAndCheckoutCaps() public { + assertEq(marketplace.MAX_BATCH_SIZE(), 75); + assertEq(marketplace.MAX_CHECKOUT_SIZE(), 50); + + IRareERC1155MarketplaceTypes.MintRequest[] memory mintRequests = new IRareERC1155MarketplaceTypes.MintRequest[](76); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.BatchSizeExceeded.selector, 76, 75)); + marketplace.mintDirectSaleBatch(address(token), address(0), mintRequests); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory checkoutItems = new IRareERC1155MarketplaceTypes.CheckoutItem[]( + 51 + ); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.BatchSizeExceeded.selector, 51, 50)); + marketplace.checkout(checkoutItems); + } + + function testCheckoutFillsMixedDirectSaleAndListingAcrossCurrencies() public { + uint256 mintPrice = 1 ether; + uint256 listingPrice = 2 ether; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, mintPrice, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), mintPrice, seller); + + vm.prank(sellerTwo); + RareERC1155 otherToken = RareERC1155( + tokenFactory.createRareERC1155Contract("Other Editions", "OED", "ipfs://other/{id}.json") + ); + vm.prank(sellerTwo); + uint256 otherTokenId = otherToken.createToken("ipfs://other/1.json", 10, sellerTwo); + vm.prank(sellerTwo); + otherToken.mintBatchTo(sellerTwo, _singleTokenIds(otherTokenId), _singleAmounts(1)); + vm.prank(sellerTwo); + otherToken.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockApprovedCurrency(address(currency)); + vm.prank(sellerTwo); + marketplace.setSalePrices( + address(otherToken), + address(currency), + _singleSalePriceRequest(otherTokenId, listingPrice, 1), + _singleSplitRecipients(sellerTwo), + _singleSplitRatios() + ); + _mockSecondaryPayoutFor(address(otherToken), otherTokenId, listingPrice, sellerTwo); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), _withFee(listingPrice)); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, mintPrice, 1); + items[1] = _listingCheckoutItem(address(otherToken), sellerTwo, address(currency), otherTokenId, listingPrice, 1); + + uint256 buyerCurrencyBefore = currency.balanceOf(buyer); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(mintPrice)}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 2); + assertEq(summary.skippedCount, 0); + assertEq(summary.ethSpent, _withFee(mintPrice)); + assertEq(summary.ethRefunded, 0); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(otherToken.balanceOf(buyer, otherTokenId), 1); + assertEq(otherToken.balanceOf(sellerTwo, otherTokenId), 0); + assertEq(currency.balanceOf(buyer), buyerCurrencyBefore - _withFee(listingPrice)); + assertEq(currency.balanceOf(address(marketplace)), 0); + assertEq(address(marketplace).balance, 0); + } + + function testCheckoutDirectSaleMintResolvesSellerFromConfig() public { + uint256 price = 1 ether; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayout(price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(token), sellerTwo, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 0); + assertEq(summary.ethSpent, _withFee(price)); + assertEq(token.balanceOf(buyer, tokenId), 1); + } + + function testCheckoutAggregatesDirectSaleMaxMintsAcrossDuplicateItems() public { + uint256 price = 1 ether; + uint256 maxMints = 1; + + vm.prank(seller); + uint256 limitedTokenId = token.createToken("ipfs://token/max-mints.json", 2, seller); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(limitedTokenId, price, 0, maxMints), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), limitedTokenId, price, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), limitedTokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price) * 2}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 1); + assertEq(summary.ethSpent, _withFee(price)); + assertEq(summary.ethRefunded, _withFee(price)); + assertEq(token.balanceOf(buyer, limitedTokenId), 1); + assertTrue(execution.items[0].filled); + _assertSkipped( + execution.items[1], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.MaxMintExceeded.selector + ); + assertEq( + execution.items[1].failureData, + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.MaxMintExceeded.selector, 2, maxMints) + ); + } + + function testCheckoutCountsDuplicateDirectSaleItemsAsOneTransactionLimitUse() public { + uint256 price = 1 ether; + + vm.startPrank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.setTokenMintLimits(address(token), _singleTokenLimitRequest(tokenId, 2)); + marketplace.setTokenTxLimits(address(token), _singleTokenLimitRequest(tokenId, 1)); + vm.stopPrank(); + _mockPrimaryPayoutFor(address(token), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price) * 2}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 2); + assertEq(summary.skippedCount, 0); + assertEq(summary.ethSpent, _withFee(price) * 2); + assertEq(summary.ethRefunded, 0); + assertEq(token.balanceOf(buyer, tokenId), 2); + assertTrue(execution.items[0].filled); + assertTrue(execution.items[1].filled); + assertEq(marketplace.getTokenMintsPerAddress(address(token), tokenId, buyer), 2); + assertEq(marketplace.getTokenTxsPerAddress(address(token), tokenId, buyer), 1); + } + + function testCheckoutCannotDoubleFillSingleUnitListingInSameCart() public { + uint256 price = 1 ether; + + vm.startPrank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + + _mockSecondaryPayout(price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + items[1] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price) * 2}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 1); + assertEq(summary.ethSpent, _withFee(price)); + assertEq(summary.ethRefunded, _withFee(price)); + assertTrue(execution.items[0].filled); + _assertSkipped( + execution.items[1], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.SalePriceDoesNotExist.selector + ); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(seller, tokenId), 0); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 0); + assertEq(address(marketplace).balance, 0); + } + + function testCheckoutSkipsInvalidItemsAndRefundsUnusedETH() public { + uint256 mintPrice = 1 ether; + uint256 listingPrice = 2 ether; + uint256 refundAmount = 0.5 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, listingPrice, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, mintPrice, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), mintPrice, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, listingPrice + 1, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, mintPrice, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{ + value: _withFee(mintPrice) + refundAmount + }(items); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 1); + assertEq(summary.ethSpent, _withFee(mintPrice)); + assertEq(summary.ethRefunded, refundAmount); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); + assertEq(address(marketplace).balance, 0); + } + + function testCheckoutSkipsSoldOutDirectSaleMintAndRollsBackLimitCounters() public { + uint256 price = 1 ether; + + vm.startPrank(seller); + uint256 soldOutTokenId = token.createToken("ipfs://token/sold-out-primary.json", 1, seller); + token.mintBatchTo(seller, _singleTokenIds(soldOutTokenId), _singleAmounts(1)); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(soldOutTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.setTokenMintLimits(address(token), _singleTokenLimitRequest(soldOutTokenId, 5)); + marketplace.setTokenTxLimits(address(token), _singleTokenLimitRequest(soldOutTokenId, 5)); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + + _mockPrimaryPayoutFor(address(token), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), soldOutTokenId, price, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 1); + assertEq(summary.ethSpent, _withFee(price)); + assertEq(token.balanceOf(buyer, soldOutTokenId), 0); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(marketplace.getTokenMintsPerAddress(address(token), soldOutTokenId, buyer), 0); + assertEq(marketplace.getTokenTxsPerAddress(address(token), soldOutTokenId, buyer), 0); + } + + function testCheckoutSkipsDirectSaleMintWhenMarketplaceMinterApprovalRevoked() public { + uint256 price = 1 ether; + + vm.startPrank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + token.setMinterApproval(address(marketplace), false); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + + _mockSecondaryPayout(price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + items[1] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 1); + assertEq(summary.ethSpent, _withFee(price)); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.totalMintedForToken(tokenId), 1); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 0); + } + + function testCheckoutSkipsAdditionalValidationFailuresBeforeSuccessfulFill() public { + uint256 price = 1 ether; + uint256 expensivePrice = 20 ether; + + vm.startPrank(seller); + uint256 soldOutTokenId = token.createToken("ipfs://token/sold-out.json", 5, seller); + uint256 expiredTokenId = token.createToken("ipfs://token/expired.json", 5, seller); + uint256 expensiveTokenId = token.createToken("ipfs://token/expensive.json", 5, seller); + uint256 allowlistTokenId = token.createToken("ipfs://token/allowlist.json", 5, seller); + token.mintBatchTo( + seller, + _tokenIds(soldOutTokenId, expiredTokenId, expensiveTokenId), + _amounts(uint256(1), uint256(1), uint256(1)) + ); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(soldOutTokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.setSalePrices( + address(token), + address(0), + _singleExpiringSalePriceRequest(expiredTokenId, price, 1, block.timestamp + 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(expensiveTokenId, expensivePrice, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(allowlistTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.setTokenAllowListConfigs( + address(token), + _singleAllowListConfigRequest( + allowlistTokenId, + keccak256(abi.encodePacked(address(0xdead))), + block.timestamp + 1 days + ) + ); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + + _mockMarketplaceFee(expensivePrice, seller); + _mockPrimaryPayoutFor(address(token), price, seller); + + vm.warp(block.timestamp + 2); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](5); + items[0] = _listingCheckoutItem(address(token), seller, address(0), soldOutTokenId, price, 2); + items[1] = _listingCheckoutItem(address(token), seller, address(0), expiredTokenId, price, 1); + items[2] = _listingCheckoutItem(address(token), seller, address(0), expensiveTokenId, expensivePrice, 1); + items[3] = _directSaleCheckoutItem(address(token), seller, address(0), allowlistTokenId, price, 1); + items[4] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 4); + assertEq(summary.ethSpent, _withFee(price)); + assertEq(summary.ethRefunded, 0); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(buyer, soldOutTokenId), 0); + assertEq(token.balanceOf(buyer, expiredTokenId), 0); + assertEq(token.balanceOf(buyer, expensiveTokenId), 0); + assertEq(token.balanceOf(buyer, allowlistTokenId), 0); + assertEq(token.balanceOf(seller, soldOutTokenId), 1); + assertEq(token.balanceOf(seller, expiredTokenId), 1); + assertEq(token.balanceOf(seller, expensiveTokenId), 1); + } + + function testCheckoutSkipsInsufficientERC20AllowanceWithoutPullingFunds() public { + uint256 mintPrice = 1 ether; + uint256 listingPrice = 2 ether; + + vm.prank(seller); + uint256 listedTokenId = token.createToken("ipfs://token/2.json", 5, seller); + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(listedTokenId), _singleAmounts(1)); + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockApprovedCurrency(address(currency)); + _mockMarketplaceFee(listingPrice, seller); + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(currency), + _singleSalePriceRequest(listedTokenId, listingPrice, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, mintPrice, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), mintPrice, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _listingCheckoutItem(address(token), seller, address(currency), listedTokenId, listingPrice, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, mintPrice, 1); + + uint256 buyerCurrencyBefore = currency.balanceOf(buyer); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(mintPrice)}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 1); + assertEq(summary.ethSpent, _withFee(mintPrice)); + assertEq(currency.balanceOf(buyer), buyerCurrencyBefore); + assertEq(token.balanceOf(buyer, listedTokenId), 0); + assertEq(token.balanceOf(seller, listedTokenId), 1); + assertEq(marketplace.getSalePrice(address(token), listedTokenId, seller).quantity, 1); + assertEq(token.balanceOf(buyer, tokenId), 1); + } + + function testCheckoutFreeEthDirectSalePaysZeroAndSkipsPayout() public { + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, 0, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, 0, 1); + + vm.expectCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, uint256(0)), + uint64(0) + ); + vm.expectCall( + spaceOperatorRegistry, + abi.encodeWithSignature("isApprovedSpaceOperator(address)", seller), + uint64(0) + ); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: 0}(items); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 0); + assertEq(execution.summary.ethSpent, 0); + assertEq(execution.summary.ethRefunded, 0); + assertEq(execution.items[0].totalPaid, 0); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(address(marketplace).balance, 0); + } + + function testCheckoutFreeERC20DirectSalePaysZeroAndSkipsPayout() public { + _mockApprovedCurrency(address(currency)); + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(currency), + _singleDirectSaleRequest(tokenId, 0, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), 1 ether); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(token), seller, address(currency), tokenId, 0, 1); + + uint256 buyerCurrencyBefore = currency.balanceOf(buyer); + uint256 buyerAllowanceBefore = currency.allowance(buyer, address(erc20ApprovalManager)); + + vm.expectCall( + address(erc20ApprovalManager), + abi.encodeWithSelector( + ERC20ApprovalManager.transferFrom.selector, + address(currency), + buyer, + address(marketplace), + 0 + ), + uint64(0) + ); + vm.expectCall( + spaceOperatorRegistry, + abi.encodeWithSignature("isApprovedSpaceOperator(address)", seller), + uint64(0) + ); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: 0}(items); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 0); + assertEq(execution.summary.ethSpent, 0); + assertEq(execution.summary.ethRefunded, 0); + assertEq(execution.items[0].totalPaid, 0); + assertEq(currency.balanceOf(buyer), buyerCurrencyBefore); + assertEq(currency.allowance(buyer, address(erc20ApprovalManager)), buyerAllowanceBefore); + assertEq(currency.balanceOf(address(marketplace)), 0); + assertEq(token.balanceOf(buyer, tokenId), 1); + } + + function testCheckoutMixedFreeAndPaidEthDirectSalesConservesETH() public { + uint256 paidPrice = 1 ether; + + vm.prank(seller); + uint256 paidTokenId = token.createToken("ipfs://token/paid-direct-sale.json", 20, seller); + + vm.startPrank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, 0, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(paidTokenId, paidPrice, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + _mockPrimaryPayoutFor(address(token), paidPrice, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, 0, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), paidTokenId, paidPrice, 1); + + uint256 buyerBalanceBefore = buyer.balance; + uint256 sellerBalanceBefore = seller.balance; + uint256 networkBalanceBefore = networkBeneficiary.balance; + uint256 rewardBalanceBefore = rewardAccumulator.balance; + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(paidPrice)}( + items + ); + + assertEq(execution.summary.filledCount, 2); + assertEq(execution.summary.skippedCount, 0); + assertEq(execution.summary.ethSpent, _withFee(paidPrice)); + assertEq(execution.summary.ethRefunded, 0); + assertEq(execution.items[0].totalPaid, 0); + assertEq(execution.items[1].totalPaid, _withFee(paidPrice)); + assertEq(buyer.balance, buyerBalanceBefore - _withFee(paidPrice)); + assertEq(seller.balance, sellerBalanceBefore + ((paidPrice * 90) / 100)); + assertEq(networkBeneficiary.balance, networkBalanceBefore + ((paidPrice * 12) / 100)); + assertEq(rewardAccumulator.balance, rewardBalanceBefore + _stakingFee(paidPrice)); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(buyer, paidTokenId), 1); + assertEq(address(marketplace).balance, 0); + } + + function testCheckoutSucceedsWhenEveryItemIsSkipped() public { + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _unsupportedCheckoutItem(); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(items); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq(execution.items.length, 1); + assertEq( + uint8(execution.items[0].failureStage), + uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION) + ); + assertEq(execution.items[0].reason, IRareERC1155MarketplaceTypes.UnsupportedCheckoutItemKind.selector); + assertEq( + execution.items[0].failureData, + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.UnsupportedCheckoutItemKind.selector, items[0].itemKind) + ); + } + + function testCheckoutSucceedsWhenEveryERC20ItemIsSkippedWithoutPullingFunds() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockApprovedCurrency(address(currency)); + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(currency), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.clearMockedCalls(); + vm.mockCall( + approvedTokenRegistry, + abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(currency)), + abi.encode(false) + ); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), _withFee(price)); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _listingCheckoutItem(address(token), seller, address(currency), tokenId, price, 1); + + uint256 buyerCurrencyBefore = currency.balanceOf(buyer); + uint256 buyerAllowanceBefore = currency.allowance(buyer, address(erc20ApprovalManager)); + + vm.expectCall( + address(erc20ApprovalManager), + abi.encodeWithSelector( + ERC20ApprovalManager.transferFrom.selector, + address(currency), + buyer, + address(marketplace), + _withFee(price) + ), + uint64(0) + ); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(items); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq(execution.summary.ethSpent, 0); + assertEq(execution.summary.ethRefunded, 0); + assertEq(currency.balanceOf(buyer), buyerCurrencyBefore); + assertEq(currency.allowance(buyer, address(erc20ApprovalManager)), buyerAllowanceBefore); + assertEq(currency.balanceOf(address(marketplace)), 0); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); + _assertSkipped( + execution.items[0], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.CurrencyNotApproved.selector + ); + } + + function testCheckoutSkipsListingWhenCurrencyIsNoLongerApproved() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockApprovedCurrency(address(currency)); + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(currency), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.clearMockedCalls(); + vm.mockCall( + approvedTokenRegistry, + abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(currency)), + abi.encode(false) + ); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), _withFee(price)); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _listingCheckoutItem(address(token), seller, address(currency), tokenId, price, 1); + + uint256 buyerCurrencyBefore = currency.balanceOf(buyer); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(items); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq(currency.balanceOf(buyer), buyerCurrencyBefore); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); + _assertSkipped( + execution.items[0], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.CurrencyNotApproved.selector + ); + assertEq( + execution.items[0].failureData, + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.CurrencyNotApproved.selector, address(currency)) + ); + } + + function testCheckoutSkipsTransferFailure() public { + CheckoutNoOpERC1155 brokenToken = new CheckoutNoOpERC1155(); + uint256 brokenTokenId = 88; + uint256 price = 1 ether; + + brokenToken.setBalance(seller, brokenTokenId, 1); + vm.prank(seller); + brokenToken.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(brokenToken), + address(0), + _singleSalePriceRequest(brokenTokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockMarketplaceFee(price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _listingCheckoutItem(address(brokenToken), seller, address(0), brokenTokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq(execution.summary.ethSpent, 0); + assertEq(execution.summary.ethRefunded, _withFee(price)); + assertEq(uint8(execution.items[0].failureStage), uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER)); + assertEq(execution.items[0].reason, IRareERC1155MarketplaceTypes.InvalidERC1155Transfer.selector); + assertEq( + execution.items[0].failureData, + abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InvalidERC1155Transfer.selector, + address(brokenToken), + brokenTokenId, + seller, + buyer, + 1 + ) + ); + + assertEq(brokenToken.balanceOf(seller, brokenTokenId), 1); + assertEq(brokenToken.balanceOf(buyer, brokenTokenId), 0); + assertEq(marketplace.getSalePrice(address(brokenToken), brokenTokenId, seller).quantity, 1); + } + + function testCheckoutSkipsDirectSaleMintWhenMintDoesNotIncreaseBuyerBalance() public { + uint256 price = 1 ether; + uint256 noOpTokenId = 92; + CheckoutNoOpMintERC1155 noOpToken = new CheckoutNoOpMintERC1155(seller); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(noOpToken), + address(0), + _singleDirectSaleRequest(noOpTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockMarketplaceFee(price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(noOpToken), seller, address(0), noOpTokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq(execution.summary.ethSpent, 0); + assertEq(execution.summary.ethRefunded, _withFee(price)); + _assertSkipped( + execution.items[0], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT, + IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector + ); + assertEq( + execution.items[0].failureData, + abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector, + address(noOpToken), + noOpTokenId, + buyer, + 1 + ) + ); + assertEq(noOpToken.balanceOf(buyer, noOpTokenId), 0); + } + + function testCheckoutValidationRevertsBecomeValidationSkipsAndContinue() public { + uint256 price = 1 ether; + uint256 ownerRevertTokenId = 101; + uint256 supportsRevertTokenId = 102; + uint256 approvalRevertTokenId = 103; + uint256 balanceRevertTokenId = 104; + + CheckoutToggleERC1155 ownerRevertToken = new CheckoutToggleERC1155(seller); + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(ownerRevertToken), + address(0), + _singleDirectSaleRequest(ownerRevertTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + ownerRevertToken.setRevertOwner(true); + + CheckoutToggleERC1155 supportsRevertToken = _listedToggleToken(supportsRevertTokenId, price); + supportsRevertToken.setRevertSupportsInterface(true); + + CheckoutToggleERC1155 approvalRevertToken = _listedToggleToken(approvalRevertTokenId, price); + approvalRevertToken.setRevertApproval(true); + + CheckoutToggleERC1155 balanceRevertToken = _listedToggleToken(balanceRevertTokenId, price); + balanceRevertToken.setRevertBalance(true); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](5); + items[0] = _directSaleCheckoutItem(address(ownerRevertToken), seller, address(0), ownerRevertTokenId, price, 1); + items[1] = _listingCheckoutItem(address(supportsRevertToken), seller, address(0), supportsRevertTokenId, price, 1); + items[2] = _listingCheckoutItem(address(approvalRevertToken), seller, address(0), approvalRevertTokenId, price, 1); + items[3] = _listingCheckoutItem(address(balanceRevertToken), seller, address(0), balanceRevertTokenId, price, 1); + items[4] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 4); + assertEq(token.balanceOf(buyer, tokenId), 1); + _assertSkipped( + execution.items[0], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.ContractHasNoOwner.selector + ); + _assertSkipped( + execution.items[1], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.InvalidERC1155Contract.selector + ); + _assertSkipped( + execution.items[2], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.MarketplaceNotApproved.selector + ); + _assertSkipped( + execution.items[3], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.InsufficientTokenBalance.selector + ); + assertTrue(execution.items[4].filled); + } + + function testCheckoutSkipsPayoutFailureAndContinues() public { + uint256 price = 1 ether; + uint256 primaryTokenId; + + vm.startPrank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + primaryTokenId = token.createToken("ipfs://token/primary-after-payout-fail.json", 20, seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(primaryTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + + _mockMarketplaceFee(price, seller); + _mockPrimaryPayoutFor(address(token), price, seller); + bytes memory royaltyRevertData = abi.encodeWithSignature("Error(string)", "royalty failed"); + vm.mockCallRevert( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), + royaltyRevertData + ); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), primaryTokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 1); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(buyer, primaryTokenId), 1); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); + _assertSkipped(execution.items[0], IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT, bytes4(0x08c379a0)); + assertEq(execution.items[0].failureData, royaltyRevertData); + assertTrue(execution.items[1].filled); + } + + function testCheckoutPayoutFailureCannotSpoofFailureStage() public { + uint256 price = 1 ether; + bytes memory spoofedPayoutRevertData = abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.PriceMismatch.selector, price + 1, price) + ); + + vm.startPrank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + + _mockMarketplaceFee(price, seller); + vm.mockCallRevert( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), + spoofedPayoutRevertData + ); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq(execution.summary.ethSpent, 0); + assertEq(execution.summary.ethRefunded, _withFee(price)); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); + _assertSkipped( + execution.items[0], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT, + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector + ); + assertEq(execution.items[0].failureData, spoofedPayoutRevertData); + } + + function testCheckoutExecutionFailureDecodesStructuredStage() public { + CheckoutFailureDecoderHarness harness = new CheckoutFailureDecoderHarness(); + bytes memory mintFailureData = abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector, + address(token), + tokenId, + buyer, + 1 + ); + bytes memory revertData = abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, + IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT, + mintFailureData + ); + + (IRareERC1155MarketplaceTypes.CheckoutFailureStage stage, bytes memory failureData) = harness + .checkoutExecutionFailure(revertData); + + assertEq(uint8(stage), uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT)); + assertEq(failureData, mintFailureData); + } + + function testCheckoutExecutionFailureFallsBackToUnknownForRawRevertData() public { + bytes memory revertData = abi.encodeWithSignature("Error(string)", "unexpected failure"); + + _assertUnknownCheckoutFailure(revertData); + } + + function testCheckoutExecutionFailureFallsBackToUnknownForMalformedStructuredPayloads() public { + bytes memory shortPayload = abi.encodePacked( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, + bytes32(uint256(uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT))) + ); + _assertUnknownCheckoutFailure(shortPayload); + + bytes memory invalidStagePayload = abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, + uint256(255), + bytes("stage") + ); + _assertUnknownCheckoutFailure(invalidStagePayload); + + bytes memory invalidOffsetPayload = abi.encodePacked( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, + bytes32(uint256(uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT))), + bytes32(uint256(96)), + bytes32(uint256(0)) + ); + _assertUnknownCheckoutFailure(invalidOffsetPayload); + + bytes memory invalidLengthPayload = abi.encodePacked( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, + bytes32(uint256(uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT))), + bytes32(uint256(64)), + bytes32(uint256(1)) + ); + _assertUnknownCheckoutFailure(invalidLengthPayload); + } + + function testCheckoutEthRecipientRejectionEscrowsInPayments() public { + uint256 price = 1 ether; + RejectETH rejectRecipient = new RejectETH(); + address payable[] memory splitRecipients = new address payable[](1); + splitRecipients[0] = payable(address(rejectRecipient)); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + splitRecipients, + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 0); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(payments.payments(address(rejectRecipient)), price - ((price * 10) / 100)); + } + + function testCheckoutItemExecutionKeepsMarketplaceReentrancyGuard() public { + uint256 price = 1 ether; + uint256 reentrantTokenId = 77; + CheckoutReentrantERC1155 reentrantToken = new CheckoutReentrantERC1155(seller, marketplace); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(reentrantToken), + address(0), + _singleDirectSaleRequest(reentrantTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(reentrantToken), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(reentrantToken), seller, address(0), reentrantTokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 1); + assertTrue(reentrantToken.reentryBlocked()); + assertEq(reentrantToken.balanceOf(buyer, reentrantTokenId), 1); + } + + function testCheckoutDirectSaleMintCollectsERC20BeforeMint() public { + uint256 price = 1 ether; + uint256 observedTokenId = 78; + CheckoutPaymentObservingERC1155 observingToken = new CheckoutPaymentObservingERC1155( + seller, + currency, + address(marketplace) + ); + + _mockApprovedCurrency(address(currency)); + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(observingToken), + address(currency), + _singleDirectSaleRequest(observedTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(observingToken), price, seller); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), _withFee(price)); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(observingToken), seller, address(currency), observedTokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(items); + + assertEq(execution.summary.filledCount, 1); + assertEq(observingToken.marketplaceCurrencyBalanceAtMint(), _withFee(price)); + assertEq(observingToken.balanceOf(buyer, observedTokenId), 1); + assertEq(currency.balanceOf(address(marketplace)), 0); + } + + function testDirectCallsToExecutionModulesRevert() public { + IRareERC1155MarketplaceTypes.BuyRequest[] memory requests = new IRareERC1155MarketplaceTypes.BuyRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.BuyRequest(tokenId, 1 ether, 1); + + vm.expectRevert(IRareERC1155MarketplaceTypes.DirectModuleCallUnsupported.selector); + tradeExecutionModule.buyBatch(address(token), seller, address(0), requests); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](0); + + vm.expectRevert(IRareERC1155MarketplaceTypes.DirectModuleCallUnsupported.selector); + checkoutExecutionModule.checkout(items); + + vm.expectRevert(IRareERC1155MarketplaceTypes.DirectModuleCallUnsupported.selector); + checkoutExecutionModule.executeCheckoutItem( + _unsupportedCheckoutItem(), + 0, + address(0), + 0, + 0, + new address payable[](0), + new uint8[](0) + ); + + vm.expectRevert(IRareERC1155MarketplaceTypes.DirectModuleCallUnsupported.selector); + checkoutExecutionModule.executeCheckoutPayout( + _unsupportedCheckoutItem(), + seller, + 0, + 0, + new address payable[](0), + new uint8[](0) + ); + + (bool success, ) = address(marketplace).call( + abi.encodeWithSelector( + IRareERC1155CheckoutExecutionModule.executeCheckoutItem.selector, + _unsupportedCheckoutItem(), + 0, + address(0), + 0, + 0, + new address payable[](0), + new uint8[](0) + ) + ); + assertFalse(success); + } + + function testOwnerCanUpdateTradeExecutionModule() public { + vm.prank(deployer); + RareERC1155TradeExecutionModule newTradeExecutionModule = new RareERC1155TradeExecutionModule(); + + vm.prank(deployer); + marketplace.setTradeExecutionModule(address(newTradeExecutionModule)); + + assertEq(marketplace.getTradeExecutionModule(), address(newTradeExecutionModule)); + } + + function testOwnerCanUpdateCheckoutExecutionModule() public { + vm.prank(deployer); + RareERC1155CheckoutExecutionModule newCheckoutExecutionModule = new RareERC1155CheckoutExecutionModule(); + + vm.prank(deployer); + marketplace.setCheckoutExecutionModule(address(newCheckoutExecutionModule)); + + assertEq(marketplace.getCheckoutExecutionModule(), address(newCheckoutExecutionModule)); + } + + function testSetTokenAllowListConfigsRevertsWhenPaused() public { + vm.prank(deployer); + marketplace.setContractPaused(true); + + vm.prank(seller); + vm.expectRevert(IRareERC1155MarketplaceTypes.ContractPaused.selector); + marketplace.setTokenAllowListConfigs( + address(token), + _singleAllowListConfigRequest(tokenId, keccak256(abi.encodePacked(buyer)), block.timestamp + 1 days) + ); + } + + function testSetTokenAllowListConfigsRevertsWhenActiveEndTimestampNotFuture() public { + uint256 currentTime = block.timestamp; + + vm.prank(seller); + vm.expectRevert( + abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.AllowListEndTimestampInvalid.selector, + currentTime, + currentTime + ) + ); + marketplace.setTokenAllowListConfigs( + address(token), + _singleAllowListConfigRequest(tokenId, keccak256(abi.encodePacked(buyer)), currentTime) + ); + } + + function testSetTokenAllowListConfigsAllowsDisablingWithZeroRoot() public { + vm.startPrank(seller); + marketplace.setTokenAllowListConfigs( + address(token), + _singleAllowListConfigRequest(tokenId, keccak256(abi.encodePacked(buyer)), block.timestamp + 1 days) + ); + marketplace.setTokenAllowListConfigs(address(token), _singleAllowListConfigRequest(tokenId, bytes32(0), 0)); + vm.stopPrank(); + + IRareERC1155MarketplaceTypes.AllowListConfig memory config = marketplace.getTokenAllowListConfig( + address(token), + tokenId + ); + assertEq(config.root, bytes32(0)); + assertEq(config.endTimestamp, 0); + } + + function testSetTokenMintLimitsRevertsWhenPaused() public { + vm.prank(deployer); + marketplace.setContractPaused(true); + + vm.prank(seller); + vm.expectRevert(IRareERC1155MarketplaceTypes.ContractPaused.selector); + marketplace.setTokenMintLimits(address(token), _singleTokenLimitRequest(tokenId, 5)); + } + + function testSetTokenTxLimitsRevertsWhenPaused() public { + vm.prank(deployer); + marketplace.setContractPaused(true); + + vm.prank(seller); + vm.expectRevert(IRareERC1155MarketplaceTypes.ContractPaused.selector); + marketplace.setTokenTxLimits(address(token), _singleTokenLimitRequest(tokenId, 5)); + } + + function _initData( + address _payments, + address _tradeExecutionModule, + address _checkoutExecutionModule + ) private view returns (bytes memory) { + return + abi.encodeWithSelector( + RareERC1155Marketplace.initialize.selector, + networkBeneficiary, + marketplaceSettings, + spaceOperatorRegistry, + royaltyEngine, + _payments, + approvedTokenRegistry, + stakingSettings, + stakingRegistry, + address(erc20ApprovalManager), + address(erc721ApprovalManager), + address(erc1155ApprovalManager), + _tradeExecutionModule, + _checkoutExecutionModule + ); + } + + function _singleSalePriceRequest( + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.SalePriceRequest[] memory) { + IRareERC1155MarketplaceTypes.SalePriceRequest[] + memory requests = new IRareERC1155MarketplaceTypes.SalePriceRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.SalePriceRequest(_tokenId, _price, _quantity, 0); + return requests; + } + + function _singleExpiringSalePriceRequest( + uint256 _tokenId, + uint256 _price, + uint256 _quantity, + uint256 _expirationTime + ) private pure returns (IRareERC1155MarketplaceTypes.SalePriceRequest[] memory) { + IRareERC1155MarketplaceTypes.SalePriceRequest[] + memory requests = new IRareERC1155MarketplaceTypes.SalePriceRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.SalePriceRequest(_tokenId, _price, _quantity, _expirationTime); + return requests; + } + + function _singleDirectSaleRequest( + uint256 _tokenId, + uint256 _price, + uint256 _startTime, + uint256 _maxMints + ) private pure returns (IRareERC1155MarketplaceTypes.DirectSaleRequest[] memory) { + IRareERC1155MarketplaceTypes.DirectSaleRequest[] + memory requests = new IRareERC1155MarketplaceTypes.DirectSaleRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.DirectSaleRequest(_tokenId, _price, _startTime, _maxMints); + return requests; + } + + function _singleAllowListConfigRequest( + uint256 _tokenId, + bytes32 _root, + uint256 _endTimestamp + ) private pure returns (IRareERC1155MarketplaceTypes.AllowListConfigRequest[] memory) { + IRareERC1155MarketplaceTypes.AllowListConfigRequest[] + memory requests = new IRareERC1155MarketplaceTypes.AllowListConfigRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.AllowListConfigRequest(_tokenId, _root, _endTimestamp); + return requests; + } + + function _singleTokenLimitRequest( + uint256 _tokenId, + uint256 _limit + ) private pure returns (IRareERC1155MarketplaceTypes.TokenLimitRequest[] memory) { + IRareERC1155MarketplaceTypes.TokenLimitRequest[] + memory requests = new IRareERC1155MarketplaceTypes.TokenLimitRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.TokenLimitRequest(_tokenId, _limit); + return requests; + } + + function _singleMintRequest( + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.MintRequest[] memory) { + bytes32[] memory proof = new bytes32[](0); + IRareERC1155MarketplaceTypes.MintRequest[] memory requests = new IRareERC1155MarketplaceTypes.MintRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.MintRequest(_tokenId, _price, _quantity, proof); + return requests; + } + + function _singleBuyRequest( + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.BuyRequest[] memory) { + IRareERC1155MarketplaceTypes.BuyRequest[] memory requests = new IRareERC1155MarketplaceTypes.BuyRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.BuyRequest(_tokenId, _price, _quantity); + return requests; + } + + function _directSaleCheckoutItem( + address _contractAddress, + address _seller, + address _currencyAddress, + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.DIRECT_SALE_MINT), + contractAddress: _contractAddress, + seller: _seller, + currencyAddress: _currencyAddress, + tokenId: _tokenId, + price: _price, + quantity: _quantity, + proof: new bytes32[](0) + }); + } + + function _listingCheckoutItem( + address _contractAddress, + address _seller, + address _currencyAddress, + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.LISTING_BUY), + contractAddress: _contractAddress, + seller: _seller, + currencyAddress: _currencyAddress, + tokenId: _tokenId, + price: _price, + quantity: _quantity, + proof: new bytes32[](0) + }); + } + + function _unsupportedCheckoutItem() private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: type(uint8).max, + contractAddress: address(0), + seller: address(0), + currencyAddress: address(0), + tokenId: 0, + price: 0, + quantity: 0, + proof: new bytes32[](0) + }); + } + + function _listedToggleToken(uint256 _tokenId, uint256 _price) private returns (CheckoutToggleERC1155 toggleToken) { + toggleToken = new CheckoutToggleERC1155(seller); + toggleToken.setBalance(seller, _tokenId, 1); + vm.prank(seller); + toggleToken.setApprovalForAll(address(erc1155ApprovalManager), true); + vm.prank(seller); + marketplace.setSalePrices( + address(toggleToken), + address(0), + _singleSalePriceRequest(_tokenId, _price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + } + + function _assertSkipped( + IRareERC1155MarketplaceTypes.CheckoutItemResult memory _result, + IRareERC1155MarketplaceTypes.CheckoutFailureStage _stage, + bytes4 _reason + ) private { + assertFalse(_result.filled); + assertEq(uint8(_result.failureStage), uint8(_stage)); + assertEq(_result.reason, _reason); + } + + function _assertUnknownCheckoutFailure(bytes memory _revertData) private { + CheckoutFailureDecoderHarness harness = new CheckoutFailureDecoderHarness(); + + (IRareERC1155MarketplaceTypes.CheckoutFailureStage stage, bytes memory failureData) = harness + .checkoutExecutionFailure(_revertData); + + assertEq(uint8(stage), uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.UNKNOWN)); + assertEq(failureData, _revertData); + } + + function _singleSplitRecipients(address _recipient) private pure returns (address payable[] memory recipients) { + recipients = new address payable[](1); + recipients[0] = payable(_recipient); + } + + function _singleSplitRatios() private pure returns (uint8[] memory ratios) { + ratios = new uint8[](1); + ratios[0] = 100; + } + + function _singleTokenIds(uint256 _tokenId) private pure returns (uint256[] memory tokenIds) { + tokenIds = new uint256[](1); + tokenIds[0] = _tokenId; + } + + function _tokenIds( + uint256 _firstTokenId, + uint256 _secondTokenId, + uint256 _thirdTokenId + ) private pure returns (uint256[] memory tokenIds) { + tokenIds = new uint256[](3); + tokenIds[0] = _firstTokenId; + tokenIds[1] = _secondTokenId; + tokenIds[2] = _thirdTokenId; + } + + function _singleAmounts(uint256 _amount) private pure returns (uint256[] memory amounts) { + amounts = new uint256[](1); + amounts[0] = _amount; + } + + function _amounts( + uint256 _firstAmount, + uint256 _secondAmount, + uint256 _thirdAmount + ) private pure returns (uint256[] memory amounts) { + amounts = new uint256[](3); + amounts[0] = _firstAmount; + amounts[1] = _secondAmount; + amounts[2] = _thirdAmount; + } + + function _mockSecondaryPayout(uint256 _amount, address _seller) private { + _mockSecondaryPayoutFor(address(token), tokenId, _amount, _seller); + } + + function _mockSecondaryPayoutFor( + address _contractAddress, + uint256 _tokenId, + uint256 _amount, + address _seller + ) private { + address payable[] memory receivers = new address payable[](1); + uint256[] memory royalties = new uint256[](1); + receivers[0] = payable(royaltyReceiver); + royalties[0] = (_amount * 10) / 100; + + _mockSecondaryPayoutWithRoyalties(_contractAddress, _tokenId, _amount, _seller, receivers, royalties); + } + + function _mockSecondaryPayoutWithRoyalties( + address _contractAddress, + uint256 _tokenId, + uint256 _amount, + address _seller, + address payable[] memory _receivers, + uint256[] memory _royalties + ) private { + _mockMarketplaceFee(_amount, _seller); + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, _contractAddress, _tokenId, _amount), + abi.encode(_receivers, _royalties) + ); + } + + function _royaltyReceivers(uint256 _count) private pure returns (address payable[] memory receivers) { + address payable[6] memory allReceivers = [ + payable(address(0x4101)), + payable(address(0x4102)), + payable(address(0x4103)), + payable(address(0x4104)), + payable(address(0x4105)), + payable(address(0x4106)) + ]; + receivers = new address payable[](_count); + for (uint256 i = 0; i < _count; i++) { + receivers[i] = allReceivers[i]; + } + } + + function _royaltyAmounts(uint256 _amount, uint256 _count) private pure returns (uint256[] memory royalties) { + royalties = new uint256[](_count); + for (uint256 i = 0; i < _count; i++) { + royalties[i] = (_amount * (i + 1)) / 100; + } + } + + function _zeroAddressRoyaltyReceivers() private pure returns (address payable[] memory receivers) { + receivers = new address payable[](1); + receivers[0] = payable(address(0)); + } + + function _singleRoyaltyAmounts(uint256 _amount) private pure returns (uint256[] memory royalties) { + royalties = new uint256[](1); + royalties[0] = (_amount * 10) / 100; + } + + function _mockApprovedCurrency(address _currencyAddress) private { + vm.mockCall( + approvedTokenRegistry, + abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, _currencyAddress), + abi.encode(true) + ); + } + + function _mockMarketplaceFee(uint256 _amount, address _seller) private { + _mockApprovedCurrency(address(0)); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, _amount), + abi.encode(_fee(_amount)) + ); + vm.mockCall( + stakingRegistry, + abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, _seller), + abi.encode(rewardAccumulator) + ); + vm.mockCall( + stakingSettings, + abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, _amount), + abi.encode((_amount * 1) / 100) + ); + } + + function _mockPrimaryPayout(uint256 _amount, address _seller) private { + _mockPrimaryPayoutFor(address(token), _amount, _seller); + } + + function _mockPrimaryPayoutFor(address _contractAddress, uint256 _amount, address _seller) private { + _mockMarketplaceFee(_amount, _seller); + vm.mockCall( + spaceOperatorRegistry, + abi.encodeWithSignature("isApprovedSpaceOperator(address)", _seller), + abi.encode(false) + ); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSignature("getERC721ContractPrimarySaleFeePercentage(address)", _contractAddress), + abi.encode(uint256(10)) + ); + } + + function _withFee(uint256 _amount) private pure returns (uint256) { + return _amount + _fee(_amount); + } + + function _fee(uint256 _amount) private pure returns (uint256) { + return (_amount * 3) / 100; + } + + function _stakingFee(uint256 _amount) private pure returns (uint256) { + return (_amount * 1) / 100; + } } diff --git a/src/test/token/ERC1155/RareERC1155Invariants.t.sol b/src/test/token/ERC1155/RareERC1155Invariants.t.sol new file mode 100644 index 0000000..37bb5ca --- /dev/null +++ b/src/test/token/ERC1155/RareERC1155Invariants.t.sol @@ -0,0 +1,173 @@ +// SPDX-License-Identifier: AGPL-3.0-only +pragma solidity ^0.8.0; + +import "forge-std/StdInvariant.sol"; +import "forge-std/Test.sol"; + +import {RareERC1155} from "../../../token/ERC1155/RareERC1155.sol"; +import {RareERC1155ContractFactory} from "../../../token/ERC1155/RareERC1155ContractFactory.sol"; + +contract RareERC1155SupplyHandler is Test { + RareERC1155 private token; + + address private minter; + address[4] private holders; + mapping(uint256 => uint256) private expectedLifetimeMinted; + + constructor(RareERC1155 _token, address _minter) { + token = _token; + minter = _minter; + holders = [address(0x101), address(0x102), address(0x103), address(0x104)]; + } + + function mintTo(uint256 _tokenSeed, uint256 _receiverSeed, uint256 _amount) external { + uint256 tokenId = _tokenId(_tokenSeed); + uint256 amount = _bounded(_amount, 1, 30); + + if (token.totalMintedForToken(tokenId) + amount > token.maxSupplyForToken(tokenId)) { + vm.prank(minter); + vm.expectRevert(); + token.mintTo(_holder(_receiverSeed), tokenId, amount); + return; + } + + vm.prank(minter); + token.mintTo(_holder(_receiverSeed), tokenId, amount); + expectedLifetimeMinted[tokenId] += amount; + } + + function mintBatch(uint256 _receiverSeed, uint256 _amountA, uint256 _amountB, uint256 _amountC) external { + uint256[] memory tokenIds = new uint256[](3); + uint256[] memory amounts = new uint256[](3); + tokenIds[0] = 1; + tokenIds[1] = 2; + tokenIds[2] = 3; + amounts[0] = _bounded(_amountA, 1, 30); + amounts[1] = _bounded(_amountB, 1, 30); + amounts[2] = _bounded(_amountC, 1, 30); + + bool exceedsMaxSupply = false; + for (uint256 i = 0; i < tokenIds.length; i++) { + if (token.totalMintedForToken(tokenIds[i]) + amounts[i] > token.maxSupplyForToken(tokenIds[i])) { + exceedsMaxSupply = true; + } + } + + if (exceedsMaxSupply) { + vm.prank(minter); + vm.expectRevert(); + token.mintBatchTo(_holder(_receiverSeed), tokenIds, amounts); + return; + } + + vm.prank(minter); + token.mintBatchTo(_holder(_receiverSeed), tokenIds, amounts); + for (uint256 i = 0; i < tokenIds.length; i++) { + expectedLifetimeMinted[tokenIds[i]] += amounts[i]; + } + } + + function burn(uint256 _holderSeed, uint256 _tokenSeed, uint256 _amount) external { + address tokenHolder = _holder(_holderSeed); + uint256 tokenId = _tokenId(_tokenSeed); + uint256 balance = token.balanceOf(tokenHolder, tokenId); + if (balance == 0) return; + + vm.prank(tokenHolder); + token.burn(tokenHolder, tokenId, _bounded(_amount, 1, balance)); + } + + function transfer(uint256 _fromSeed, uint256 _toSeed, uint256 _tokenSeed, uint256 _amount) external { + address from = _holder(_fromSeed); + address to = _holder(_toSeed); + uint256 tokenId = _tokenId(_tokenSeed); + uint256 balance = token.balanceOf(from, tokenId); + if (balance == 0) return; + + vm.prank(from); + token.safeTransferFrom(from, to, tokenId, _bounded(_amount, 1, balance), ""); + } + + function expectedMinted(uint256 _id) external view returns (uint256) { + return expectedLifetimeMinted[_id]; + } + + function holder(uint256 _index) external view returns (address) { + return holders[_index]; + } + + function holderCount() external pure returns (uint256) { + return 4; + } + + function _tokenId(uint256 _seed) private pure returns (uint256) { + return (_seed % 3) + 1; + } + + function _holder(uint256 _seed) private view returns (address) { + return holders[_seed % holders.length]; + } + + function _bounded(uint256 _seed, uint256 _min, uint256 _max) private pure returns (uint256) { + return _min + (_seed % (_max - _min + 1)); + } +} + +contract RareERC1155SupplyInvariantTest is StdInvariant, Test { + RareERC1155 private token; + RareERC1155SupplyHandler private handler; + + address private owner = address(0x1111); + address private minter = address(0x2222); + + function setUp() public { + RareERC1155ContractFactory factory = new RareERC1155ContractFactory(); + factory.setDefaultMinter(minter); + + vm.prank(owner); + token = RareERC1155(factory.createRareERC1155Contract("Rare Editions", "RARE1155", "ipfs://base/{id}.json")); + + vm.startPrank(owner); + assertEq(token.createToken("ipfs://token/1.json", 40, owner), 1); + assertEq(token.createToken("ipfs://token/2.json", 50, owner), 2); + assertEq(token.createToken("ipfs://token/3.json", 60, owner), 3); + vm.stopPrank(); + + handler = new RareERC1155SupplyHandler(token, minter); + targetContract(address(handler)); + bytes4[] memory selectors = new bytes4[](4); + selectors[0] = RareERC1155SupplyHandler.mintTo.selector; + selectors[1] = RareERC1155SupplyHandler.mintBatch.selector; + selectors[2] = RareERC1155SupplyHandler.burn.selector; + selectors[3] = RareERC1155SupplyHandler.transfer.selector; + targetSelector(FuzzSelector({addr: address(handler), selectors: selectors})); + } + + function invariant_lifetimeMintedNeverExceedsMaxSupply() public { + for (uint256 tokenId = 1; tokenId <= 3; tokenId++) { + assertLe(token.totalMintedForToken(tokenId), token.maxSupplyForToken(tokenId)); + } + } + + function invariant_totalSupplyNeverExceedsLifetimeMinted() public { + for (uint256 tokenId = 1; tokenId <= 3; tokenId++) { + assertLe(token.totalSupply(tokenId), token.totalMintedForToken(tokenId)); + } + } + + function invariant_lifetimeMintedIsNotReducedByBurnsOrTransfers() public { + for (uint256 tokenId = 1; tokenId <= 3; tokenId++) { + assertEq(token.totalMintedForToken(tokenId), handler.expectedMinted(tokenId)); + } + } + + function invariant_totalSupplyMatchesTrackedHolderBalances() public { + for (uint256 tokenId = 1; tokenId <= 3; tokenId++) { + uint256 trackedBalances = 0; + for (uint256 i = 0; i < handler.holderCount(); i++) { + trackedBalances += token.balanceOf(handler.holder(i), tokenId); + } + assertEq(token.totalSupply(tokenId), trackedBalances); + } + } +} From fcf9b9a1b9348d2e857816a1e5a5e1a7c571aee0 Mon Sep 17 00:00:00 2001 From: Keegan Date: Tue, 9 Jun 2026 13:29:43 -0400 Subject: [PATCH 16/17] Reduce ERC1155 marketplace size --- script/NetworkConfig.s.sol | 16 ++-- .../RareERC1155MarketplaceDeploy.s.sol | 9 -- .../ERC1155/RareERC1155SystemDeploy.s.sol | 9 -- src/marketplace/IRareERC1155Marketplace.sol | 6 -- .../IRareERC1155MarketplaceTypes.sol | 3 - .../RareERC1155CheckoutExecutionModule.sol | 26 ++---- .../RareERC1155ExecutionModuleBase.sol | 17 +--- src/marketplace/RareERC1155Marketplace.sol | 74 ++++++---------- .../RareERC1155MarketplacePayments.sol | 88 ++----------------- .../RareERC1155MarketplaceStorage.sol | 3 - .../RareERC1155TradeExecutionModule.sol | 12 +-- .../RareERC1155MarketplaceGas.t.sol | 30 ------- .../RareERC1155MarketplaceInvariants.t.sol | 50 +---------- .../RareERC1155MarketplaceReentrancy.t.sol | 32 ------- .../RareERC1155MarketplaceSettlement.t.sol | 75 ++-------------- 15 files changed, 64 insertions(+), 386 deletions(-) diff --git a/script/NetworkConfig.s.sol b/script/NetworkConfig.s.sol index 3939f42..b161f41 100644 --- a/script/NetworkConfig.s.sol +++ b/script/NetworkConfig.s.sol @@ -220,15 +220,15 @@ library NetworkConfig { config.marketUtilsV2 = _addr(0xD159af05670A6A5bBaB9e086717667C75351Ba3e); config.erc20ApprovalManager = _addr(0x4619eB29e84392CE91C27FC936A5c94d1D14b93f); config.erc721ApprovalManager = _addr(0x5fa0a461d3a2Ea3bFDf03e8BD37CAbB4ae84205E); - config.erc1155ApprovalManager = _addr(0x6Fe80fd6Dba387D757729853d20B5E3fb77dF6f6); - config.rareErc1155TradeExecutionModule = _addr(0xC0E10eB14a6049ff7c2526F328850A9692c1780C); - config.rareErc1155CheckoutExecutionModule = _addr(0x32bfa0038618B9b182e0E468cAe8eAE45D5e77A5); - config.rareErc1155MarketplaceImplementation = _addr(0x396edB49c290e159168d8d4d1262D3DC8027213a); - config.rareErc1155MarketplaceProxy = _addr(0x8416851Cc48901E5dDfC7A75Faf015F06C166d51); - config.rareErc1155ContractFactory = _addr(0x1c6468dBf0BD8C56226cD4ADa70850bB5329FF18); - config.rareErc1155Implementation = _addr(0xC46c6e978E504AFe258E7Dec26cf84145157BA70); + config.erc1155ApprovalManager = _addr(0xcD26069837682aeD8Ba20852AD17b8f64a860906); + config.rareErc1155TradeExecutionModule = _addr(0xcac913ED2530639Eed7F9776876E5BCCEaFE71F0); + config.rareErc1155CheckoutExecutionModule = _addr(0x8513256A682a1849051a139c26420bf713eae0bF); + config.rareErc1155MarketplaceImplementation = _addr(0x154ca5088b07c6dF323D3E13ed48F2D8B3d082A7); + config.rareErc1155MarketplaceProxy = _addr(0xb26DE57230913a44F37AcE78F5b7eB2Efec474eE); + config.rareErc1155ContractFactory = _addr(0xF8FF48ca6022138C58e2eDD680a02d7Cd394B957); + config.rareErc1155Implementation = _addr(0x8442874bD9bC64286C1b01EedEb98cd70F467E84); config.rareErc1155ContractFactoryOwner = _addr(0x3B9C3C5EA16E7d3c9C0bb293a549aFa4066dc162); - config.rareErc1155ContractFactoryDefaultMinter = _addr(0x8416851Cc48901E5dDfC7A75Faf015F06C166d51); + config.rareErc1155ContractFactoryDefaultMinter = _addr(0xb26DE57230913a44F37AcE78F5b7eB2Efec474eE); config.approvalManagerAdmin = _addr(0x3B9C3C5EA16E7d3c9C0bb293a549aFa4066dc162); config.rareBatchAuctionHouseProxy = _addr(0x293AE7701A7830B1d38A7608EdF86A106d9E2645); config.rareBatchAuctionHouseLogic = _addr(0xc0D9CB069d7CfFb963A1527968bF28370A978BB6); diff --git a/script/marketplace/RareERC1155MarketplaceDeploy.s.sol b/script/marketplace/RareERC1155MarketplaceDeploy.s.sol index b16a015..203a42e 100644 --- a/script/marketplace/RareERC1155MarketplaceDeploy.s.sol +++ b/script/marketplace/RareERC1155MarketplaceDeploy.s.sol @@ -28,12 +28,9 @@ contract RareERC1155MarketplaceDeploy is RareERC1155ExecutionModuleScriptGuard { address networkBeneficiary = _required(config.networkBeneficiary, "networkBeneficiary"); address marketplaceSettings = _required(config.marketplaceSettingsV3, "marketplaceSettingsV3"); - address spaceOperatorRegistry = _required(config.spaceOperatorRegistry, "spaceOperatorRegistry"); address royaltyEngine = _required(config.royaltyEngineManifold, "royaltyEngineManifold"); address payments = _required(config.payments, "payments"); address approvedTokenRegistry = _required(config.approvedTokenRegistry, "approvedTokenRegistry"); - address stakingSettings = marketplaceSettings; - address stakingRegistry = _required(config.stakingRegistry, "stakingRegistry"); address erc20ApprovalManager = _required(config.erc20ApprovalManager, "erc20ApprovalManager"); address erc721ApprovalManager = _required(config.erc721ApprovalManager, "erc721ApprovalManager"); address erc1155ApprovalManager = _required(config.erc1155ApprovalManager, "erc1155ApprovalManager"); @@ -48,12 +45,9 @@ contract RareERC1155MarketplaceDeploy is RareERC1155ExecutionModuleScriptGuard { RareERC1155Marketplace.initialize.selector, networkBeneficiary, marketplaceSettings, - spaceOperatorRegistry, royaltyEngine, payments, approvedTokenRegistry, - stakingSettings, - stakingRegistry, erc20ApprovalManager, erc721ApprovalManager, erc1155ApprovalManager, @@ -70,12 +64,9 @@ contract RareERC1155MarketplaceDeploy is RareERC1155ExecutionModuleScriptGuard { console.log("Chain ID:", block.chainid); console.log("Network beneficiary:", networkBeneficiary); console.log("Marketplace settings:", marketplaceSettings); - console.log("Space operator registry:", spaceOperatorRegistry); console.log("Royalty engine:", royaltyEngine); console.log("Payments:", payments); console.log("Approved token registry:", approvedTokenRegistry); - console.log("Staking settings:", stakingSettings); - console.log("Staking registry:", stakingRegistry); console.log("ERC20ApprovalManager:", erc20ApprovalManager); console.log("ERC721ApprovalManager:", erc721ApprovalManager); console.log("ERC1155ApprovalManager:", erc1155ApprovalManager); diff --git a/script/token/ERC1155/RareERC1155SystemDeploy.s.sol b/script/token/ERC1155/RareERC1155SystemDeploy.s.sol index 2eaf80c..70e15fe 100644 --- a/script/token/ERC1155/RareERC1155SystemDeploy.s.sol +++ b/script/token/ERC1155/RareERC1155SystemDeploy.s.sol @@ -30,12 +30,9 @@ contract RareERC1155SystemDeploy is RareERC1155ExecutionModuleScriptGuard { address networkBeneficiary = _required(config.networkBeneficiary, "networkBeneficiary"); address marketplaceSettings = _required(config.marketplaceSettingsV3, "marketplaceSettingsV3"); - address spaceOperatorRegistry = _required(config.spaceOperatorRegistry, "spaceOperatorRegistry"); address royaltyEngine = _required(config.royaltyEngineManifold, "royaltyEngineManifold"); address payments = _required(config.payments, "payments"); address approvedTokenRegistry = _required(config.approvedTokenRegistry, "approvedTokenRegistry"); - address stakingSettings = marketplaceSettings; - address stakingRegistry = _required(config.stakingRegistry, "stakingRegistry"); address erc20ApprovalManager = _required(config.erc20ApprovalManager, "erc20ApprovalManager"); address erc721ApprovalManager = _required(config.erc721ApprovalManager, "erc721ApprovalManager"); @@ -51,12 +48,9 @@ contract RareERC1155SystemDeploy is RareERC1155ExecutionModuleScriptGuard { RareERC1155Marketplace.initialize.selector, networkBeneficiary, marketplaceSettings, - spaceOperatorRegistry, royaltyEngine, payments, approvedTokenRegistry, - stakingSettings, - stakingRegistry, erc20ApprovalManager, erc721ApprovalManager, erc1155ApprovalManager, @@ -77,12 +71,9 @@ contract RareERC1155SystemDeploy is RareERC1155ExecutionModuleScriptGuard { console.log("Deployer:", deployer); console.log("Network beneficiary:", networkBeneficiary); console.log("Marketplace settings:", marketplaceSettings); - console.log("Space operator registry:", spaceOperatorRegistry); console.log("Royalty engine:", royaltyEngine); console.log("Payments:", payments); console.log("Approved token registry:", approvedTokenRegistry); - console.log("Staking settings:", stakingSettings); - console.log("Staking registry:", stakingRegistry); console.log("ERC20ApprovalManager:", erc20ApprovalManager); console.log("ERC721ApprovalManager:", erc721ApprovalManager); console.log("ERC1155ApprovalManager:", erc1155ApprovalManager); diff --git a/src/marketplace/IRareERC1155Marketplace.sol b/src/marketplace/IRareERC1155Marketplace.sol index 246cd84..05446cb 100644 --- a/src/marketplace/IRareERC1155Marketplace.sol +++ b/src/marketplace/IRareERC1155Marketplace.sol @@ -12,12 +12,9 @@ interface IRareERC1155Marketplace is IRareERC1155MarketplaceTypes { function initialize( address _networkBeneficiary, address _marketplaceSettings, - address _spaceOperatorRegistry, address _royaltyEngine, address _payments, address _approvedTokenRegistry, - address _stakingSettings, - address _stakingRegistry, address _erc20ApprovalManager, address _erc721ApprovalManager, address _erc1155ApprovalManager, @@ -149,12 +146,9 @@ interface IRareERC1155Marketplace is IRareERC1155MarketplaceTypes { function setNetworkBeneficiary(address _networkBeneficiary) external; function setMarketplaceSettings(address _marketplaceSettings) external; - function setSpaceOperatorRegistry(address _spaceOperatorRegistry) external; function setRoyaltyEngine(address _royaltyEngine) external; function setPayments(address _payments) external; function setApprovedTokenRegistry(address _approvedTokenRegistry) external; - function setStakingSettings(address _stakingSettings) external; - function setStakingRegistry(address _stakingRegistry) external; function setERC20ApprovalManager(address _erc20ApprovalManager) external; function setERC721ApprovalManager(address _erc721ApprovalManager) external; function setERC1155ApprovalManager(address _erc1155ApprovalManager) external; diff --git a/src/marketplace/IRareERC1155MarketplaceTypes.sol b/src/marketplace/IRareERC1155MarketplaceTypes.sol index 717f39c..f93b8c5 100644 --- a/src/marketplace/IRareERC1155MarketplaceTypes.sol +++ b/src/marketplace/IRareERC1155MarketplaceTypes.sol @@ -43,8 +43,6 @@ interface IRareERC1155MarketplaceTypes { uint256 initialQuantity; uint256 marketplaceFeeRemaining; uint256 marketplaceFeeTotal; - uint256 stakingFeeRemaining; - uint256 stakingFeeTotal; uint256 expirationTime; } @@ -332,7 +330,6 @@ interface IRareERC1155MarketplaceTypes { error MsgValueMustBeZero(); error RoyaltiesExceedSaleAmount(uint256 _royalties, uint256 _saleAmount); error RoyaltyRecipientCannotBeZero(uint256 _index); - error StakingFeeExceedsMarketplaceFee(uint256 _marketplaceFee, uint256 _stakingFee); error PlatformCommissionExceeded(uint256 _platformCommission, uint256 _maxPlatformCommission); error SplitRecipientsRequired(); error SplitRecipientsExceededMax(uint256 _recipientsLength, uint256 _maxRecipients); diff --git a/src/marketplace/RareERC1155CheckoutExecutionModule.sol b/src/marketplace/RareERC1155CheckoutExecutionModule.sol index 3b03db5..310b65f 100644 --- a/src/marketplace/RareERC1155CheckoutExecutionModule.sol +++ b/src/marketplace/RareERC1155CheckoutExecutionModule.sol @@ -120,6 +120,7 @@ contract RareERC1155CheckoutExecutionModule is IRareERC1155CheckoutExecutionModu address payable[] calldata _splitRecipients, uint8[] calldata _splitRatios ) external payable onlyDelegateCall { + _seller; MarketplaceStorage storage $ = _marketplaceStorage(); if (_item.itemKind == uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { $.marketConfig @@ -128,7 +129,6 @@ contract RareERC1155CheckoutExecutionModule is IRareERC1155CheckoutExecutionModu _item.currencyAddress, _grossAmount, _marketplaceFee, - _seller, _splitRecipients, _splitRatios ); @@ -142,7 +142,6 @@ contract RareERC1155CheckoutExecutionModule is IRareERC1155CheckoutExecutionModu _item.currencyAddress, _grossAmount, _marketplaceFee, - _seller, _splitRecipients, _splitRatios ); @@ -163,9 +162,10 @@ contract RareERC1155CheckoutExecutionModule is IRareERC1155CheckoutExecutionModu result = _baseCheckoutItemResult(_itemIndex, _item); newRemainingEth = _remainingEth; - bool directSaleMintTxAlreadyRecorded = _checkoutDirectSaleMintAggregateQuantity( - _directSaleMintAggregates, _directSaleMintAggregateCount, _item.contractAddress, _item.tokenId - ) != 0; + bool directSaleMintTxAlreadyRecorded = + _checkoutDirectSaleMintAggregateQuantity( + _directSaleMintAggregates, _directSaleMintAggregateCount, _item.contractAddress, _item.tokenId + ) != 0; (bool valid, bytes memory failureData, CheckoutFillContext memory context) = _validateCheckoutItem($, _item, directSaleMintTxAlreadyRecorded); if (context.seller != address(0)) result.seller = context.seller; @@ -314,11 +314,7 @@ contract RareERC1155CheckoutExecutionModule is IRareERC1155CheckoutExecutionModu MarketplaceStorage storage $, CheckoutItem calldata _item, bool _directSaleMintTxAlreadyRecorded - ) - internal - view - returns (bool valid, bytes memory failureData, CheckoutFillContext memory context) - { + ) internal view returns (bool valid, bytes memory failureData, CheckoutFillContext memory context) { if (_item.itemKind == uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { return _validateCheckoutDirectSaleMint($, _item, _directSaleMintTxAlreadyRecorded); } @@ -333,11 +329,7 @@ contract RareERC1155CheckoutExecutionModule is IRareERC1155CheckoutExecutionModu MarketplaceStorage storage $, CheckoutItem calldata _item, bool _txLimitAlreadyConsumed - ) - internal - view - returns (bool valid, bytes memory failureData, CheckoutFillContext memory context) - { + ) internal view returns (bool valid, bytes memory failureData, CheckoutFillContext memory context) { if (!_checkoutCurrencyApproved($.marketConfig, _item.currencyAddress)) { return (false, abi.encodeWithSelector(CurrencyNotApproved.selector, _item.currencyAddress), context); } @@ -644,8 +636,8 @@ contract RareERC1155CheckoutExecutionModule is IRareERC1155CheckoutExecutionModu if ($.tokenTxLimit[_item.contractAddress][_item.tokenId] == 0) return; if ( _checkoutDirectSaleMintAggregateQuantity( - _directSaleMintAggregates, _directSaleMintAggregateCount, _item.contractAddress, _item.tokenId - ) != 0 + _directSaleMintAggregates, _directSaleMintAggregateCount, _item.contractAddress, _item.tokenId + ) != 0 ) { return; } diff --git a/src/marketplace/RareERC1155ExecutionModuleBase.sol b/src/marketplace/RareERC1155ExecutionModuleBase.sol index 8b72b21..1e528da 100644 --- a/src/marketplace/RareERC1155ExecutionModuleBase.sol +++ b/src/marketplace/RareERC1155ExecutionModuleBase.sol @@ -339,24 +339,18 @@ abstract contract RareERC1155ExecutionModuleBase is RareERC1155MarketplaceStorag ); } - function _allocateOfferFees(Offer storage _offer, uint256 _quantity) - internal - returns (uint256 marketplaceFee, uint256 stakingFee) - { + function _allocateOfferFees(Offer storage _offer, uint256 _quantity) internal returns (uint256 marketplaceFee) { uint256 remainingQuantity = _offer.quantity; if (_quantity == remainingQuantity) { marketplaceFee = _offer.marketplaceFeeRemaining; - stakingFee = _offer.stakingFeeRemaining; delete _offer.currencyAddress; delete _offer.price; delete _offer.quantity; delete _offer.initialQuantity; delete _offer.marketplaceFeeRemaining; delete _offer.marketplaceFeeTotal; - delete _offer.stakingFeeRemaining; - delete _offer.stakingFeeTotal; delete _offer.expirationTime; - return (marketplaceFee, stakingFee); + return marketplaceFee; } uint256 marketplaceFeeTotal = _offer.marketplaceFeeTotal; @@ -367,15 +361,8 @@ abstract contract RareERC1155ExecutionModuleBase is RareERC1155MarketplaceStorag uint256 marketplaceFeeDueAfter = Math.mulDiv(marketplaceFeeTotal, filledQuantityAfter, initialQuantity); marketplaceFee = marketplaceFeeDueAfter - marketplaceFeePaidBefore; - uint256 stakingFeeTotal = _offer.stakingFeeTotal; - if (stakingFeeTotal != 0) { - uint256 stakingFeePaidBefore = stakingFeeTotal - _offer.stakingFeeRemaining; - uint256 stakingFeeDueAfter = Math.mulDiv(stakingFeeTotal, marketplaceFeeDueAfter, marketplaceFeeTotal); - stakingFee = stakingFeeDueAfter - stakingFeePaidBefore; - } _offer.quantity = remainingQuantity - _quantity; _offer.marketplaceFeeRemaining -= marketplaceFee; - _offer.stakingFeeRemaining -= stakingFee; } } diff --git a/src/marketplace/RareERC1155Marketplace.sol b/src/marketplace/RareERC1155Marketplace.sol index 79214c2..3a9d158 100644 --- a/src/marketplace/RareERC1155Marketplace.sol +++ b/src/marketplace/RareERC1155Marketplace.sol @@ -6,13 +6,19 @@ import {OwnableUpgradeable} from "openzeppelin-contracts-upgradeable/access/Owna import {ReentrancyGuardUpgradeable} from "openzeppelin-contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; import {UUPSUpgradeable} from "openzeppelin-contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import {IApprovedTokenRegistry} from "../registry/interfaces/IApprovedTokenRegistry.sol"; +import {IPayments} from "../payments/IPayments.sol"; import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; +import {IERC20ApprovalManager} from "../v2/approver/ERC20/IERC20ApprovalManager.sol"; +import {IERC721ApprovalManager} from "../v2/approver/ERC721/IERC721ApprovalManager.sol"; import {IERC1155ApprovalManager} from "../v2/approver/ERC1155/IERC1155ApprovalManager.sol"; +import {IMarketplaceSettings} from "./IMarketplaceSettings.sol"; import {IRareERC1155CheckoutExecutionModule} from "./IRareERC1155CheckoutExecutionModule.sol"; import {IRareERC1155Marketplace} from "./IRareERC1155Marketplace.sol"; import {IRareERC1155TradeExecutionModule} from "./IRareERC1155TradeExecutionModule.sol"; import {RareERC1155MarketplacePayments} from "./RareERC1155MarketplacePayments.sol"; import {RareERC1155MarketplaceStorage} from "./RareERC1155MarketplaceStorage.sol"; +import {IRoyaltyEngineV1} from "royalty-registry/IRoyaltyEngineV1.sol"; /// @author SuperRare Labs Inc. /// @title RareERC1155Marketplace @@ -42,12 +48,9 @@ contract RareERC1155Marketplace is function initialize( address _networkBeneficiary, address _marketplaceSettings, - address _spaceOperatorRegistry, address _royaltyEngine, address _payments, address _approvedTokenRegistry, - address _stakingSettings, - address _stakingRegistry, address _erc20ApprovalManager, address _erc721ApprovalManager, address _erc1155ApprovalManager, @@ -56,12 +59,9 @@ contract RareERC1155Marketplace is ) external initializer { _validateMarketConfigAddress(_networkBeneficiary, NETWORK_BENEFICIARY_FIELD); _validateMarketConfigAddress(_marketplaceSettings, MARKETPLACE_SETTINGS_FIELD); - _validateMarketConfigAddress(_spaceOperatorRegistry, SPACE_OPERATOR_REGISTRY_FIELD); _validateMarketConfigAddress(_royaltyEngine, ROYALTY_ENGINE_FIELD); _validateMarketConfigAddress(_payments, PAYMENTS_FIELD); _validateMarketConfigAddress(_approvedTokenRegistry, APPROVED_TOKEN_REGISTRY_FIELD); - _validateMarketConfigAddress(_stakingSettings, STAKING_SETTINGS_FIELD); - _validateMarketConfigAddress(_stakingRegistry, STAKING_REGISTRY_FIELD); _validateApprovalManager(_erc20ApprovalManager); _validateApprovalManager(_erc721ApprovalManager); _validateApprovalManager(_erc1155ApprovalManager); @@ -69,18 +69,14 @@ contract RareERC1155Marketplace is _validateExecutionModule(_checkoutExecutionModule); MarketplaceStorage storage $ = _marketplaceStorage(); - $.marketConfig = MarketConfigV2.generateMarketConfig( - _networkBeneficiary, - _marketplaceSettings, - _spaceOperatorRegistry, - _royaltyEngine, - _payments, - _approvedTokenRegistry, - _stakingSettings, - _stakingRegistry, - _erc20ApprovalManager, - _erc721ApprovalManager - ); + MarketConfigV2.Config storage config = $.marketConfig; + config.networkBeneficiary = _networkBeneficiary; + config.marketplaceSettings = IMarketplaceSettings(_marketplaceSettings); + config.royaltyEngine = IRoyaltyEngineV1(_royaltyEngine); + config.payments = IPayments(_payments); + config.approvedTokenRegistry = IApprovedTokenRegistry(_approvedTokenRegistry); + config.erc20ApprovalManager = IERC20ApprovalManager(_erc20ApprovalManager); + config.erc721ApprovalManager = IERC721ApprovalManager(_erc721ApprovalManager); $.erc1155ApprovalManager = IERC1155ApprovalManager(_erc1155ApprovalManager); $.tradeExecutionModule = _tradeExecutionModule; $.checkoutExecutionModule = _checkoutExecutionModule; @@ -109,11 +105,12 @@ contract RareERC1155Marketplace is _marketplaceStorage().marketConfig.checkIfCurrencyIsApproved(_currencyAddress); RareERC1155MarketplacePayments.checkSplits(_splitRecipients, _splitRatios); + MarketplaceStorage storage $ = _marketplaceStorage(); for (uint256 i = 0; i < _requests.length; i++) { uint256 tokenId = _requests[i].tokenId; _revertIfTokenNotFound(_contractAddress, tokenId); - _marketplaceStorage().directSaleConfigs[_contractAddress][tokenId] = DirectSaleConfig({ + $.directSaleConfigs[_contractAddress][tokenId] = DirectSaleConfig({ seller: msg.sender, currencyAddress: _currencyAddress, price: _requests[i].price, @@ -165,6 +162,7 @@ contract RareERC1155Marketplace is } _validateAllowListConfigRequests(_requests); + MarketplaceStorage storage $ = _marketplaceStorage(); for (uint256 i = 0; i < _requests.length; i++) { uint256 tokenId = _requests[i].tokenId; bytes32 root = _requests[i].root; @@ -175,8 +173,7 @@ contract RareERC1155Marketplace is revert AllowListEndTimestampInvalid(endTimestamp, block.timestamp); } - _marketplaceStorage().tokenAllowlistRoots[_contractAddress][tokenId] = - AllowListConfig({root: root, endTimestamp: endTimestamp}); + $.tokenAllowlistRoots[_contractAddress][tokenId] = AllowListConfig({root: root, endTimestamp: endTimestamp}); emit SetTokenAllowListConfig(_contractAddress, tokenId, root, endTimestamp); } } @@ -191,10 +188,11 @@ contract RareERC1155Marketplace is } _validateTokenLimitRequests(_requests); + MarketplaceStorage storage $ = _marketplaceStorage(); for (uint256 i = 0; i < _requests.length; i++) { uint256 tokenId = _requests[i].tokenId; _revertIfTokenNotFound(_contractAddress, tokenId); - _marketplaceStorage().tokenMintLimit[_contractAddress][tokenId] = _requests[i].limit; + $.tokenMintLimit[_contractAddress][tokenId] = _requests[i].limit; emit TokenMintLimitSet(_contractAddress, tokenId, _requests[i].limit); } } @@ -209,10 +207,11 @@ contract RareERC1155Marketplace is } _validateTokenLimitRequests(_requests); + MarketplaceStorage storage $ = _marketplaceStorage(); for (uint256 i = 0; i < _requests.length; i++) { uint256 tokenId = _requests[i].tokenId; _revertIfTokenNotFound(_contractAddress, tokenId); - _marketplaceStorage().tokenTxLimit[_contractAddress][tokenId] = _requests[i].limit; + $.tokenTxLimit[_contractAddress][tokenId] = _requests[i].limit; emit TokenTxLimitSet(_contractAddress, tokenId, _requests[i].limit); } } @@ -277,13 +276,14 @@ contract RareERC1155Marketplace is function cancelSalePrices(address _contractAddress, uint256[] calldata _tokenIds) external nonReentrant { _validateTokenIds(_tokenIds); + MarketplaceStorage storage $ = _marketplaceStorage(); for (uint256 i = 0; i < _tokenIds.length; i++) { uint256 tokenId = _tokenIds[i]; - if (_marketplaceStorage().salePrices[_contractAddress][tokenId][msg.sender].quantity == 0) { + if ($.salePrices[_contractAddress][tokenId][msg.sender].quantity == 0) { continue; } - delete _marketplaceStorage().salePrices[_contractAddress][tokenId][msg.sender]; + delete $.salePrices[_contractAddress][tokenId][msg.sender]; emit SalePriceCancelled(msg.sender, _contractAddress, tokenId); } } @@ -307,10 +307,6 @@ contract RareERC1155Marketplace is uint256 grossAmount = _price * _quantity; uint256 marketplaceFee = $.marketConfig.marketplaceSettings.calculateMarketplaceFee(grossAmount); - uint256 stakingFee = $.marketConfig.stakingSettings.calculateStakingFee(grossAmount); - if (stakingFee > marketplaceFee) { - revert StakingFeeExceedsMarketplaceFee(marketplaceFee, stakingFee); - } $.marketConfig.checkAmountAndTransfer(_currencyAddress, grossAmount + marketplaceFee); Offer memory previousOffer = $.offers[_contractAddress][_tokenId][msg.sender][_currencyAddress]; @@ -321,8 +317,6 @@ contract RareERC1155Marketplace is initialQuantity: _quantity, marketplaceFeeRemaining: marketplaceFee, marketplaceFeeTotal: marketplaceFee, - stakingFeeRemaining: stakingFee, - stakingFeeTotal: stakingFee, expirationTime: _expirationTime }); @@ -528,12 +522,6 @@ contract RareERC1155Marketplace is emit MarketplaceDependencyUpdated(MARKETPLACE_SETTINGS_FIELD, _marketplaceSettings); } - function setSpaceOperatorRegistry(address _spaceOperatorRegistry) external onlyOwner { - _validateMarketConfigAddress(_spaceOperatorRegistry, SPACE_OPERATOR_REGISTRY_FIELD); - _marketplaceStorage().marketConfig.updateSpaceOperatorRegistry(_spaceOperatorRegistry); - emit MarketplaceDependencyUpdated(SPACE_OPERATOR_REGISTRY_FIELD, _spaceOperatorRegistry); - } - function setRoyaltyEngine(address _royaltyEngine) external onlyOwner { _validateMarketConfigAddress(_royaltyEngine, ROYALTY_ENGINE_FIELD); _marketplaceStorage().marketConfig.updateRoyaltyEngine(_royaltyEngine); @@ -552,18 +540,6 @@ contract RareERC1155Marketplace is emit MarketplaceDependencyUpdated(APPROVED_TOKEN_REGISTRY_FIELD, _approvedTokenRegistry); } - function setStakingSettings(address _stakingSettings) external onlyOwner { - _validateMarketConfigAddress(_stakingSettings, STAKING_SETTINGS_FIELD); - _marketplaceStorage().marketConfig.updateStakingSettings(_stakingSettings); - emit MarketplaceDependencyUpdated(STAKING_SETTINGS_FIELD, _stakingSettings); - } - - function setStakingRegistry(address _stakingRegistry) external onlyOwner { - _validateMarketConfigAddress(_stakingRegistry, STAKING_REGISTRY_FIELD); - _marketplaceStorage().marketConfig.updateStakingRegistry(_stakingRegistry); - emit MarketplaceDependencyUpdated(STAKING_REGISTRY_FIELD, _stakingRegistry); - } - function setERC20ApprovalManager(address _erc20ApprovalManager) external onlyOwner { _validateApprovalManager(_erc20ApprovalManager); _marketplaceStorage().marketConfig.updateERC20ApprovalManager(_erc20ApprovalManager); diff --git a/src/marketplace/RareERC1155MarketplacePayments.sol b/src/marketplace/RareERC1155MarketplacePayments.sol index 7802459..6775c60 100644 --- a/src/marketplace/RareERC1155MarketplacePayments.sol +++ b/src/marketplace/RareERC1155MarketplacePayments.sol @@ -80,17 +80,15 @@ library RareERC1155MarketplacePayments { address _currencyAddress, uint256 _amount, uint256 _marketplaceFee, - address _seller, address payable[] memory _splitRecipients, uint8[] memory _splitRatios ) public { uint256 remainingAmount = _amount; - payoutMarketplaceFee(_config, _currencyAddress, _amount, _marketplaceFee, _seller); + payoutMarketplaceFee(_config, _currencyAddress, _marketplaceFee); - uint256 platformCommission = _config.spaceOperatorRegistry.isApprovedSpaceOperator(_seller) - ? _config.spaceOperatorRegistry.getPlatformCommission(_seller) - : _config.marketplaceSettings.getERC721ContractPrimarySaleFeePercentage(_contractAddress); + uint256 platformCommission = + _config.marketplaceSettings.getERC721ContractPrimarySaleFeePercentage(_contractAddress); if (platformCommission > 100) { revert IRareERC1155MarketplaceTypes.PlatformCommissionExceeded(platformCommission, 100); } @@ -117,40 +115,12 @@ library RareERC1155MarketplacePayments { address _currencyAddress, uint256 _amount, uint256 _marketplaceFee, - address _seller, - address payable[] memory _splitRecipients, - uint8[] memory _splitRatios - ) public { - uint256 stakingFee = _marketplaceFee == 0 ? 0 : _config.stakingSettings.calculateStakingFee(_amount); - payoutSecondaryWithStakingFee( - _config, - _contractAddress, - _tokenId, - _currencyAddress, - _amount, - _marketplaceFee, - stakingFee, - _seller, - _splitRecipients, - _splitRatios - ); - } - - function payoutSecondaryWithStakingFee( - MarketConfigV2.Config storage _config, - address _contractAddress, - uint256 _tokenId, - address _currencyAddress, - uint256 _amount, - uint256 _marketplaceFee, - uint256 _stakingFee, - address _seller, address payable[] memory _splitRecipients, uint8[] memory _splitRatios ) public { uint256 remainingAmount = _amount; - payoutMarketplaceFeeWithStakingFee(_config, _currencyAddress, _marketplaceFee, _stakingFee, _seller); + payoutMarketplaceFee(_config, _currencyAddress, _marketplaceFee); (address payable[] memory receivers, uint256[] memory royalties) = _config.royaltyEngine.getRoyalty(_contractAddress, _tokenId, _amount); @@ -176,59 +146,17 @@ library RareERC1155MarketplacePayments { function payoutMarketplaceFee( MarketConfigV2.Config storage _config, address _currencyAddress, - uint256 _amount, - uint256 _marketplaceFee, - address _seller + uint256 _marketplaceFee ) public { if (_marketplaceFee == 0) { return; } - uint256 stakingFee = _config.stakingSettings.calculateStakingFee(_amount); - payoutMarketplaceFeeWithStakingFee(_config, _currencyAddress, _marketplaceFee, stakingFee, _seller); - } - - function payoutMarketplaceFeeWithStakingFee( - MarketConfigV2.Config storage _config, - address _currencyAddress, - uint256 _marketplaceFee, - uint256 _stakingFee, - address _seller - ) public { - if (_marketplaceFee == 0) { - return; - } - - if (_stakingFee > _marketplaceFee) { - revert IRareERC1155MarketplaceTypes.StakingFeeExceedsMarketplaceFee(_marketplaceFee, _stakingFee); - } - - address payable[] memory recipients = new address payable[](2); + address payable[] memory recipients = new address payable[](1); recipients[0] = payable(_config.networkBeneficiary); - recipients[1] = payable(_config.stakingRegistry.getRewardAccumulatorAddressForUser(_seller)); - recipients[1] = recipients[1] == address(0) ? payable(_config.networkBeneficiary) : recipients[1]; - - uint256[] memory amounts = new uint256[](2); - amounts[0] = _marketplaceFee - _stakingFee; - amounts[1] = _stakingFee; - - if (amounts[0] == 0) { - address payable[] memory stakingRecipients = new address payable[](1); - stakingRecipients[0] = recipients[1]; - uint256[] memory stakingAmounts = new uint256[](1); - stakingAmounts[0] = amounts[1]; - performPayouts(_config, _currencyAddress, _marketplaceFee, stakingRecipients, stakingAmounts); - return; - } - if (amounts[1] == 0) { - address payable[] memory marketplaceRecipients = new address payable[](1); - marketplaceRecipients[0] = recipients[0]; - uint256[] memory marketplaceAmounts = new uint256[](1); - marketplaceAmounts[0] = amounts[0]; - performPayouts(_config, _currencyAddress, _marketplaceFee, marketplaceRecipients, marketplaceAmounts); - return; - } + uint256[] memory amounts = new uint256[](1); + amounts[0] = _marketplaceFee; performPayouts(_config, _currencyAddress, _marketplaceFee, recipients, amounts); } diff --git a/src/marketplace/RareERC1155MarketplaceStorage.sol b/src/marketplace/RareERC1155MarketplaceStorage.sol index 5a66b91..09a4c49 100644 --- a/src/marketplace/RareERC1155MarketplaceStorage.sol +++ b/src/marketplace/RareERC1155MarketplaceStorage.sol @@ -20,12 +20,9 @@ abstract contract RareERC1155MarketplaceStorage is IRareERC1155MarketplaceTypes bytes32 internal constant NETWORK_BENEFICIARY_FIELD = "NETWORK_BENEFICIARY"; bytes32 internal constant MARKETPLACE_SETTINGS_FIELD = "MARKETPLACE_SETTINGS"; - bytes32 internal constant SPACE_OPERATOR_REGISTRY_FIELD = "SPACE_OPERATOR_REGISTRY"; bytes32 internal constant ROYALTY_ENGINE_FIELD = "ROYALTY_ENGINE"; bytes32 internal constant PAYMENTS_FIELD = "PAYMENTS"; bytes32 internal constant APPROVED_TOKEN_REGISTRY_FIELD = "APPROVED_TOKEN_REGISTRY"; - bytes32 internal constant STAKING_SETTINGS_FIELD = "STAKING_SETTINGS"; - bytes32 internal constant STAKING_REGISTRY_FIELD = "STAKING_REGISTRY"; bytes32 internal constant ERC20_APPROVAL_MANAGER_FIELD = "ERC20_APPROVAL_MANAGER"; bytes32 internal constant ERC721_APPROVAL_MANAGER_FIELD = "ERC721_APPROVAL_MANAGER"; bytes32 internal constant ERC1155_APPROVAL_MANAGER_FIELD = "ERC1155_APPROVAL_MANAGER"; diff --git a/src/marketplace/RareERC1155TradeExecutionModule.sol b/src/marketplace/RareERC1155TradeExecutionModule.sol index 236a456..20c34d2 100644 --- a/src/marketplace/RareERC1155TradeExecutionModule.sol +++ b/src/marketplace/RareERC1155TradeExecutionModule.sol @@ -87,7 +87,6 @@ contract RareERC1155TradeExecutionModule is IRareERC1155TradeExecutionModule, Ra _currencyAddress, payoutContexts[i].grossAmount, payoutContexts[i].marketplaceFee, - payoutContexts[i].seller, payoutContexts[i].splitRecipients, payoutContexts[i].splitRatios ); @@ -178,7 +177,6 @@ contract RareERC1155TradeExecutionModule is IRareERC1155TradeExecutionModule, Ra _currencyAddress, payoutContexts[i].grossAmount, payoutContexts[i].marketplaceFee, - _seller, payoutContexts[i].splitRecipients, payoutContexts[i].splitRatios ); @@ -233,7 +231,7 @@ contract RareERC1155TradeExecutionModule is IRareERC1155TradeExecutionModule, Ra RareERC1155MarketplacePayments.checkSplits(_splitRecipients, _splitRatios); if (_input.quantity == 0) revert QuantityCannotBeZero(); - (uint256 grossAmount, uint256 marketplaceFee, uint256 stakingFee) = _validateAndApplyOfferFill(_input); + (uint256 grossAmount, uint256 marketplaceFee) = _validateAndApplyOfferFill(_input); MarketplaceStorage storage $ = _marketplaceStorage(); IERC1155 erc1155 = IERC1155(_input.contractAddress); @@ -244,14 +242,12 @@ contract RareERC1155TradeExecutionModule is IRareERC1155TradeExecutionModule, Ra _safeTransferFrom(_input.contractAddress, msg.sender, _input.buyer, _input.tokenId, _input.quantity); $.marketConfig - .payoutSecondaryWithStakingFee( + .payoutSecondary( _input.contractAddress, _input.tokenId, _input.currencyAddress, grossAmount, marketplaceFee, - stakingFee, - msg.sender, _splitRecipients, _splitRatios ); @@ -269,7 +265,7 @@ contract RareERC1155TradeExecutionModule is IRareERC1155TradeExecutionModule, Ra function _validateAndApplyOfferFill(AcceptOfferInput memory _input) internal - returns (uint256 grossAmount, uint256 marketplaceFee, uint256 stakingFee) + returns (uint256 grossAmount, uint256 marketplaceFee) { Offer storage offer = _marketplaceStorage() .offers[_input.contractAddress][_input.tokenId][_input.buyer][_input.currencyAddress]; @@ -289,7 +285,7 @@ contract RareERC1155TradeExecutionModule is IRareERC1155TradeExecutionModule, Ra if (_input.quantity > offer.quantity) revert QuantityExceedsOfferQuantity(_input.quantity, offer.quantity); grossAmount = _input.price * _input.quantity; - (marketplaceFee, stakingFee) = _allocateOfferFees(offer, _input.quantity); + marketplaceFee = _allocateOfferFees(offer, _input.quantity); } function _safeTransferFrom( diff --git a/src/test/marketplace/RareERC1155MarketplaceGas.t.sol b/src/test/marketplace/RareERC1155MarketplaceGas.t.sol index 6cc358f..85e96d5 100644 --- a/src/test/marketplace/RareERC1155MarketplaceGas.t.sol +++ b/src/test/marketplace/RareERC1155MarketplaceGas.t.sol @@ -41,30 +41,6 @@ contract CheckoutGasMarketplaceSettings { } } -contract CheckoutGasStakingSettings { - function calculateStakingFee(uint256 _amount) external pure returns (uint256) { - return (_amount * 1) / 100; - } -} - -contract CheckoutGasStakingRegistry { - address private immutable rewardAccumulator; - - constructor(address _rewardAccumulator) { - rewardAccumulator = _rewardAccumulator; - } - - function getRewardAccumulatorAddressForUser(address) external view returns (address) { - return rewardAccumulator; - } -} - -contract CheckoutGasSpaceOperatorRegistry { - function isApprovedSpaceOperator(address) external pure returns (bool) { - return false; - } -} - contract CheckoutGasRoyaltyEngine is IRoyaltyEngineV1 { uint256 private immutable royaltyRecipientCount; @@ -304,10 +280,7 @@ contract RareERC1155MarketplaceGasTest is Test { RareERC1155CheckoutExecutionModule checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); address marketplaceSettings = address(new CheckoutGasMarketplaceSettings()); - address stakingSettings = address(new CheckoutGasStakingSettings()); - address stakingRegistry = address(new CheckoutGasStakingRegistry(rewardAccumulator)); address royaltyEngine = address(new CheckoutGasRoyaltyEngine(_royaltyRecipientCount)); - address spaceOperatorRegistry = address(new CheckoutGasSpaceOperatorRegistry()); address approvedTokenRegistry = address(new CheckoutGasApprovedTokenRegistry()); marketplace = RareERC1155Marketplace( @@ -318,12 +291,9 @@ contract RareERC1155MarketplaceGasTest is Test { RareERC1155Marketplace.initialize.selector, networkBeneficiary, marketplaceSettings, - spaceOperatorRegistry, royaltyEngine, address(new Payments()), approvedTokenRegistry, - stakingSettings, - stakingRegistry, address(erc20ApprovalManager), address(erc721ApprovalManager), address(erc1155ApprovalManager), diff --git a/src/test/marketplace/RareERC1155MarketplaceInvariants.t.sol b/src/test/marketplace/RareERC1155MarketplaceInvariants.t.sol index c090964..6aab729 100644 --- a/src/test/marketplace/RareERC1155MarketplaceInvariants.t.sol +++ b/src/test/marketplace/RareERC1155MarketplaceInvariants.t.sol @@ -11,9 +11,6 @@ import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.so import {IApprovedTokenRegistry} from "../../registry/interfaces/IApprovedTokenRegistry.sol"; import {IMarketplaceSettings} from "../../marketplace/IMarketplaceSettings.sol"; -import {IStakingSettings} from "../../marketplace/IStakingSettings.sol"; -import {IRareStakingRegistry} from "../../staking/registry/IRareStakingRegistry.sol"; -import {ISpaceOperatorRegistry} from "../../registry/interfaces/ISpaceOperatorRegistry.sol"; import {Payments} from "../../payments/Payments.sol"; import {RareERC1155} from "../../token/ERC1155/RareERC1155.sol"; import {RareERC1155ContractFactory} from "../../token/ERC1155/RareERC1155ContractFactory.sol"; @@ -83,10 +80,7 @@ contract RareERC1155MarketplaceHandler is Test { address private collectionOwner; address private rejectingPayoutRecipient; address private marketplaceSettings; - address private stakingSettings; - address private stakingRegistry; address private royaltyEngine; - address private spaceOperatorRegistry; address[3] private buyers; address[2] private sellers; @@ -114,10 +108,7 @@ contract RareERC1155MarketplaceHandler is Test { address _collectionOwner, address _rejectingPayoutRecipient, address _marketplaceSettings, - address _stakingSettings, - address _stakingRegistry, address _royaltyEngine, - address _spaceOperatorRegistry, address[3] memory _buyers, address[2] memory _sellers, uint256[3] memory _tokenIds @@ -128,10 +119,7 @@ contract RareERC1155MarketplaceHandler is Test { collectionOwner = _collectionOwner; rejectingPayoutRecipient = _rejectingPayoutRecipient; marketplaceSettings = _marketplaceSettings; - stakingSettings = _stakingSettings; - stakingRegistry = _stakingRegistry; royaltyEngine = _royaltyEngine; - spaceOperatorRegistry = _spaceOperatorRegistry; buyers = _buyers; sellers = _sellers; tokenIds = _tokenIds; @@ -584,20 +572,11 @@ contract RareERC1155MarketplaceHandler is Test { abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, _amount), abi.encode(_fee(_amount)) ); - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, _amount), - abi.encode(_stakingFee(_amount)) - ); } function _mockSecondaryPayout(uint256 _tokenId, uint256 _amount, address _seller) private { + _seller; _mockOfferFees(_amount); - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, _seller), - abi.encode(address(0)) - ); address payable[] memory receivers = new address payable[](0); uint256[] memory royalties = new uint256[](0); @@ -609,12 +588,8 @@ contract RareERC1155MarketplaceHandler is Test { } function _mockPrimaryPayout(uint256 _amount, address _seller) private { + _seller; _mockOfferFees(_amount); - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSelector(ISpaceOperatorRegistry.isApprovedSpaceOperator.selector, _seller), - abi.encode(false) - ); vm.mockCall( marketplaceSettings, abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, address(token)), @@ -755,10 +730,6 @@ contract RareERC1155MarketplaceHandler is Test { return (_amount * 3) / 100; } - function _stakingFee(uint256 _amount) private pure returns (uint256) { - return (_amount * 1) / 100; - } - function _bounded(uint256 _seed, uint256 _minValue, uint256 _maxValue) private pure returns (uint256) { return _minValue + (_seed % (_maxValue - _minValue + 1)); } @@ -786,10 +757,7 @@ contract RareERC1155MarketplaceInvariantTest is StdInvariant, Test { address private networkBeneficiary = address(0x5000); address private marketplaceSettings = address(0x7100); - address private stakingSettings = address(0x7200); - address private stakingRegistry = address(0x7300); address private royaltyEngine = address(0x7400); - address private spaceOperatorRegistry = address(0x7500); address private approvedTokenRegistry = address(0x7600); uint256[3] private tokenIds; @@ -850,10 +818,7 @@ contract RareERC1155MarketplaceInvariantTest is StdInvariant, Test { _fundAndApproveCurrency(address(rejectingBuyer)); vm.etch(marketplaceSettings, address(marketplace).code); - vm.etch(stakingSettings, address(marketplace).code); - vm.etch(stakingRegistry, address(marketplace).code); vm.etch(royaltyEngine, address(marketplace).code); - vm.etch(spaceOperatorRegistry, address(marketplace).code); vm.etch(approvedTokenRegistry, address(marketplace).code); vm.mockCall( @@ -871,10 +836,7 @@ contract RareERC1155MarketplaceInvariantTest is StdInvariant, Test { seller, address(rejectingPayoutRecipient), marketplaceSettings, - stakingSettings, - stakingRegistry, royaltyEngine, - spaceOperatorRegistry, buyers, sellers, tokenIds @@ -961,8 +923,6 @@ contract RareERC1155MarketplaceInvariantTest is StdInvariant, Test { assertEq(offer.initialQuantity, 0); assertEq(offer.marketplaceFeeRemaining, 0); assertEq(offer.marketplaceFeeTotal, 0); - assertEq(offer.stakingFeeRemaining, 0); - assertEq(offer.stakingFeeTotal, 0); assertEq(offer.expirationTime, 0); continue; } @@ -971,9 +931,6 @@ contract RareERC1155MarketplaceInvariantTest is StdInvariant, Test { assertGt(offer.price, 0); assertGe(offer.initialQuantity, offer.quantity); assertLe(offer.marketplaceFeeRemaining, offer.marketplaceFeeTotal); - assertLe(offer.stakingFeeRemaining, offer.stakingFeeTotal); - assertLe(offer.stakingFeeRemaining, offer.marketplaceFeeRemaining); - assertLe(offer.stakingFeeTotal, offer.marketplaceFeeTotal); uint256 escrowOwed = (offer.price * offer.quantity) + offer.marketplaceFeeRemaining; if (currencyAddress == address(0)) { @@ -1003,12 +960,9 @@ contract RareERC1155MarketplaceInvariantTest is StdInvariant, Test { RareERC1155Marketplace.initialize.selector, networkBeneficiary, marketplaceSettings, - spaceOperatorRegistry, royaltyEngine, _payments, approvedTokenRegistry, - stakingSettings, - stakingRegistry, address(erc20ApprovalManager), address(erc721ApprovalManager), address(erc1155ApprovalManager), diff --git a/src/test/marketplace/RareERC1155MarketplaceReentrancy.t.sol b/src/test/marketplace/RareERC1155MarketplaceReentrancy.t.sol index 2658a78..2782a8e 100644 --- a/src/test/marketplace/RareERC1155MarketplaceReentrancy.t.sol +++ b/src/test/marketplace/RareERC1155MarketplaceReentrancy.t.sol @@ -29,28 +29,6 @@ contract ReentrancyMarketplaceSettings { } } -contract ReentrancyStakingSettings { - function calculateStakingFee(uint256 _amount) external pure returns (uint256) { - return (_amount * 1) / 100; - } -} - -contract ReentrancyStakingRegistry { - function getRewardAccumulatorAddressForUser(address) external pure returns (address) { - return address(0); - } -} - -contract ReentrancySpaceOperatorRegistry { - function isApprovedSpaceOperator(address) external pure returns (bool) { - return false; - } - - function getPlatformCommission(address) external pure returns (uint8) { - return 0; - } -} - contract ReentrancyApprovedTokenRegistry { mapping(address => bool) private approvedTokens; @@ -283,10 +261,6 @@ contract RareERC1155MarketplaceReentrancyTest is Test { address private networkBeneficiary = address(0x5000); ReentrancyMarketplaceSettings private marketplaceSettings; - ReentrancyStakingSettings private stakingSettings; - ReentrancyStakingRegistry private stakingRegistry; - ReentrancySpaceOperatorRegistry private spaceOperatorRegistry; - uint256 private tokenId; uint256 private tokenIdTwo; uint256 private tokenIdThree; @@ -298,9 +272,6 @@ contract RareERC1155MarketplaceReentrancyTest is Test { vm.startPrank(deployer); marketplaceSettings = new ReentrancyMarketplaceSettings(); - stakingSettings = new ReentrancyStakingSettings(); - stakingRegistry = new ReentrancyStakingRegistry(); - spaceOperatorRegistry = new ReentrancySpaceOperatorRegistry(); approvedTokenRegistry = new ReentrancyApprovedTokenRegistry(); royaltyEngine = new ReenteringRoyaltyEngine(); @@ -612,12 +583,9 @@ contract RareERC1155MarketplaceReentrancyTest is Test { RareERC1155Marketplace.initialize.selector, networkBeneficiary, address(marketplaceSettings), - address(spaceOperatorRegistry), address(royaltyEngine), address(payments), address(approvedTokenRegistry), - address(stakingSettings), - address(stakingRegistry), address(erc20ApprovalManager), address(erc721ApprovalManager), address(erc1155ApprovalManager), diff --git a/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol b/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol index 2ac07f6..d8ba832 100644 --- a/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol +++ b/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol @@ -10,8 +10,6 @@ import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.so import {IApprovedTokenRegistry} from "../../registry/interfaces/IApprovedTokenRegistry.sol"; import {IMarketplaceSettings} from "../../marketplace/IMarketplaceSettings.sol"; -import {IStakingSettings} from "../../marketplace/IStakingSettings.sol"; -import {IRareStakingRegistry} from "../../staking/registry/IRareStakingRegistry.sol"; import {Payments} from "../../payments/Payments.sol"; import {RareERC1155} from "../../token/ERC1155/RareERC1155.sol"; import {RareERC1155ContractFactory} from "../../token/ERC1155/RareERC1155ContractFactory.sol"; @@ -276,10 +274,7 @@ contract RareERC1155MarketplaceSettlementTest is Test { address private rewardAccumulator = address(0x6000); address private marketplaceSettings = address(0x7100); - address private stakingSettings = address(0x7200); - address private stakingRegistry = address(0x7300); address private royaltyEngine = address(0x7400); - address private spaceOperatorRegistry = address(0x7500); address private approvedTokenRegistry = address(0x7600); uint256 private tokenId; @@ -321,10 +316,7 @@ contract RareERC1155MarketplaceSettlementTest is Test { tokenId = token.createToken("ipfs://token/1.json", 20, seller); vm.etch(marketplaceSettings, address(marketplace).code); - vm.etch(stakingSettings, address(marketplace).code); - vm.etch(stakingRegistry, address(marketplace).code); vm.etch(royaltyEngine, address(marketplace).code); - vm.etch(spaceOperatorRegistry, address(marketplace).code); vm.etch(approvedTokenRegistry, address(marketplace).code); } @@ -565,16 +557,6 @@ contract RareERC1155MarketplaceSettlementTest is Test { abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, price), abi.encode(_fee(price)) ); - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, seller), - abi.encode(rewardAccumulator) - ); - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, price), - abi.encode(0) - ); vm.mockCall( royaltyEngine, abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), @@ -630,13 +612,11 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(offer.initialQuantity, offerQuantity); assertEq(offer.marketplaceFeeRemaining, _fee(price)); assertEq(offer.marketplaceFeeTotal, _fee(price * offerQuantity)); - assertEq(offer.stakingFeeRemaining, _stakingFee(price)); - assertEq(offer.stakingFeeTotal, _stakingFee(price * offerQuantity)); assertEq(token.balanceOf(buyer, tokenId), 1); assertEq(token.balanceOf(seller, tokenId), 1); } - function testAcceptOfferUsesOfferTimeStakingFeeAfterSettingsRotation() public { + function testAcceptOfferIgnoresStakingFeeAfterSettingsRotation() public { uint256 price = 1 ether; uint256 offerQuantity = 2; @@ -657,11 +637,6 @@ contract RareERC1155MarketplaceSettlementTest is Test { 0 ); - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, price), - abi.encode(_fee(price) + 1) - ); vm.mockCall( royaltyEngine, abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), @@ -683,9 +658,8 @@ contract RareERC1155MarketplaceSettlementTest is Test { IRareERC1155MarketplaceTypes.Offer memory offer = marketplace.getOffer(address(token), tokenId, buyer, address(0)); assertEq(offer.quantity, 1); assertEq(offer.marketplaceFeeRemaining, _fee(price)); - assertEq(offer.stakingFeeRemaining, _stakingFee(price)); - assertEq(networkBeneficiary.balance, _fee(price) - _stakingFee(price)); - assertEq(rewardAccumulator.balance, _stakingFee(price)); + assertEq(networkBeneficiary.balance, _fee(price)); + assertEq(rewardAccumulator.balance, 0); assertEq(token.balanceOf(buyer, tokenId), 1); assertEq(token.balanceOf(seller, tokenId), 1); } @@ -740,8 +714,6 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(offer.initialQuantity, offerQuantity); assertEq(offer.marketplaceFeeRemaining, _fee(price * offerQuantity) - 1); assertEq(offer.marketplaceFeeTotal, _fee(price * offerQuantity)); - assertEq(offer.stakingFeeRemaining, _stakingFee(price * offerQuantity)); - assertEq(offer.stakingFeeTotal, _stakingFee(price * offerQuantity)); assertEq(networkBeneficiary.balance, 1); assertEq(rewardAccumulator.balance, 0); @@ -793,7 +765,6 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(offer.quantity, 2); assertEq(offer.initialQuantity, offerQuantity); assertEq(offer.marketplaceFeeRemaining, _fee(price * 2)); - assertEq(offer.stakingFeeRemaining, _stakingFee(price * 2)); assertEq(address(marketplace).balance, _withFee(price * 2)); assertEq(token.balanceOf(buyer, tokenId), 1); assertEq(token.balanceOf(seller, tokenId), 2); @@ -815,7 +786,6 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(offer.quantity, 0); assertEq(offer.initialQuantity, 0); assertEq(offer.marketplaceFeeRemaining, 0); - assertEq(offer.stakingFeeRemaining, 0); assertEq(address(marketplace).balance, 0); assertEq(token.balanceOf(buyer, tokenId), offerQuantity); assertEq(token.balanceOf(seller, tokenId), 0); @@ -1603,12 +1573,6 @@ contract RareERC1155MarketplaceSettlementTest is Test { abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, uint256(0)), uint64(0) ); - vm.expectCall( - spaceOperatorRegistry, - abi.encodeWithSignature("isApprovedSpaceOperator(address)", seller), - uint64(0) - ); - vm.prank(buyer); IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: 0}(items); @@ -1652,12 +1616,6 @@ contract RareERC1155MarketplaceSettlementTest is Test { ), uint64(0) ); - vm.expectCall( - spaceOperatorRegistry, - abi.encodeWithSignature("isApprovedSpaceOperator(address)", seller), - uint64(0) - ); - vm.prank(buyer); IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: 0}(items); @@ -1718,8 +1676,8 @@ contract RareERC1155MarketplaceSettlementTest is Test { assertEq(execution.items[1].totalPaid, _withFee(paidPrice)); assertEq(buyer.balance, buyerBalanceBefore - _withFee(paidPrice)); assertEq(seller.balance, sellerBalanceBefore + ((paidPrice * 90) / 100)); - assertEq(networkBeneficiary.balance, networkBalanceBefore + ((paidPrice * 12) / 100)); - assertEq(rewardAccumulator.balance, rewardBalanceBefore + _stakingFee(paidPrice)); + assertEq(networkBeneficiary.balance, networkBalanceBefore + ((paidPrice * 13) / 100)); + assertEq(rewardAccumulator.balance, rewardBalanceBefore); assertEq(token.balanceOf(buyer, tokenId), 1); assertEq(token.balanceOf(buyer, paidTokenId), 1); assertEq(address(marketplace).balance, 0); @@ -2433,12 +2391,9 @@ contract RareERC1155MarketplaceSettlementTest is Test { RareERC1155Marketplace.initialize.selector, networkBeneficiary, marketplaceSettings, - spaceOperatorRegistry, royaltyEngine, _payments, approvedTokenRegistry, - stakingSettings, - stakingRegistry, address(erc20ApprovalManager), address(erc721ApprovalManager), address(erc1155ApprovalManager), @@ -2732,22 +2687,13 @@ contract RareERC1155MarketplaceSettlementTest is Test { } function _mockMarketplaceFee(uint256 _amount, address _seller) private { + _seller; _mockApprovedCurrency(address(0)); vm.mockCall( marketplaceSettings, abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, _amount), abi.encode(_fee(_amount)) ); - vm.mockCall( - stakingRegistry, - abi.encodeWithSelector(IRareStakingRegistry.getRewardAccumulatorAddressForUser.selector, _seller), - abi.encode(rewardAccumulator) - ); - vm.mockCall( - stakingSettings, - abi.encodeWithSelector(IStakingSettings.calculateStakingFee.selector, _amount), - abi.encode((_amount * 1) / 100) - ); } function _mockPrimaryPayout(uint256 _amount, address _seller) private { @@ -2756,11 +2702,6 @@ contract RareERC1155MarketplaceSettlementTest is Test { function _mockPrimaryPayoutFor(address _contractAddress, uint256 _amount, address _seller) private { _mockMarketplaceFee(_amount, _seller); - vm.mockCall( - spaceOperatorRegistry, - abi.encodeWithSignature("isApprovedSpaceOperator(address)", _seller), - abi.encode(false) - ); vm.mockCall( marketplaceSettings, abi.encodeWithSignature("getERC721ContractPrimarySaleFeePercentage(address)", _contractAddress), @@ -2775,8 +2716,4 @@ contract RareERC1155MarketplaceSettlementTest is Test { function _fee(uint256 _amount) private pure returns (uint256) { return (_amount * 3) / 100; } - - function _stakingFee(uint256 _amount) private pure returns (uint256) { - return (_amount * 1) / 100; - } } From c7c97d64310f06cda42caa0e9a318d82740665ce Mon Sep 17 00:00:00 2001 From: Keegan Date: Fri, 12 Jun 2026 15:23:11 -0400 Subject: [PATCH 17/17] chore: add ERC1155 network config addresses --- script/NetworkConfig.s.sol | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/script/NetworkConfig.s.sol b/script/NetworkConfig.s.sol index b161f41..3f78b47 100644 --- a/script/NetworkConfig.s.sol +++ b/script/NetworkConfig.s.sol @@ -352,6 +352,17 @@ library NetworkConfig { config.payments = _addr(0xCe898D2308cEB524299C4657e63CBB720d07Ff7C); config.rareGovToken = _addr(0x8b21bC8571d11F7AdB705ad8F6f6BD1deb79cE01); config.approvedTokenRegistry = _addr(0x0eF69420ff32aB9c6D948eAc2fa88f3E67D0D239); + config.erc20ApprovalManager = _addr(0x1104B5dA0fc1C08011a90557CA9b495c29D9BBaa); + config.erc721ApprovalManager = _addr(0xaDf5459B9B6B3021aef027EC23E68C4011303F5B); + config.erc1155ApprovalManager = _addr(0xDCEA787A109b2627a895EEb49FCe2D1dA63aA8E4); + config.rareErc1155TradeExecutionModule = _addr(0xae2a455f05D83D0B8e51a22E2b5452BE39219398); + config.rareErc1155CheckoutExecutionModule = _addr(0xf1361B8fe3b721A821292BdD4a43f3cc949DdF28); + config.rareErc1155MarketplaceImplementation = _addr(0x90406F0c92256055EeACBDFEaa39d348b0DB8BF5); + config.rareErc1155MarketplaceProxy = _addr(0xc0D9CB069d7CfFb963A1527968bF28370A978BB6); + config.rareErc1155ContractFactory = _addr(0x293AE7701A7830B1d38A7608EdF86A106d9E2645); + config.rareErc1155Implementation = _addr(0x9DF98290b6ad210CFE31e1b349E9807D7F016FDe); + config.rareErc1155ContractFactoryOwner = _addr(0x3B9C3C5EA16E7d3c9C0bb293a549aFa4066dc162); + config.rareErc1155ContractFactoryDefaultMinter = _addr(0xc0D9CB069d7CfFb963A1527968bF28370A978BB6); config.baseL2BridgeProxy = _addr(0xca491bb62A7730E97F500510132C47633DDD0229); config.baseL2BridgeImplementation = _addr(0x38302C717F793dD7EA5C0a2F215494409EaD3ce0); config.rareGovTokenL2Proxy = _addr(0x8b21bC8571d11F7AdB705ad8F6f6BD1deb79cE01); @@ -397,8 +408,6 @@ library NetworkConfig { config.season1Claim = address(0); config.season3Claim = address(0); config.marketUtilsV2 = address(0); - config.erc20ApprovalManager = address(0); - config.erc721ApprovalManager = address(0); config.rareBatchAuctionHouseProxy = address(0); config.rareBatchAuctionHouseLogic = address(0); config.rareBatchListingMarketplaceImplementation = address(0);